0nmcp 2.9.2 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/catalog.js CHANGED
@@ -255,20 +255,82 @@ export const SERVICE_CATALOG = {
255
255
  slack: {
256
256
  name: "Slack",
257
257
  type: "communication",
258
- description: "Team messaging — channels, direct messages, notifications",
258
+ description: "Team messaging — channels, messages, threads, users, files, reactions, bookmarks, reminders, canvases, search, scheduled messages, pins",
259
259
  baseUrl: "https://slack.com/api",
260
+ mcpServer: "https://mcp.slack.com/mcp",
260
261
  authType: "bot_token",
261
262
  credentialKeys: ["botToken"],
262
263
  capabilities: [
263
- { name: "send_message", actions: ["send"], description: "Post messages to channels" },
264
- { name: "manage_channels", actions: ["list", "create"], description: "List and create channels" },
265
- { name: "manage_users", actions: ["list"], description: "List workspace users" },
266
- ],
267
- endpoints: {
268
- send_message: { method: "POST", path: "/chat.postMessage", body: { channel: "", text: "" } },
269
- list_channels: { method: "GET", path: "/conversations.list" },
270
- list_users: { method: "GET", path: "/users.list" },
271
- create_channel: { method: "POST", path: "/conversations.create", body: { name: "" } },
264
+ { name: "send_message", actions: ["send", "update", "delete", "schedule"], description: "Post, update, delete, and schedule messages" },
265
+ { name: "manage_channels", actions: ["list", "create", "archive", "rename", "set_topic", "set_purpose", "invite", "kick"], description: "Full channel lifecycle management" },
266
+ { name: "manage_threads", actions: ["reply", "list_replies"], description: "Thread replies and conversation management" },
267
+ { name: "manage_users", actions: ["list", "get", "set_status"], description: "List users, get profiles, set status" },
268
+ { name: "manage_files", actions: ["upload", "list", "delete", "share"], description: "Upload, list, delete, and share files" },
269
+ { name: "manage_reactions", actions: ["add", "remove", "list"], description: "Emoji reactions on messages" },
270
+ { name: "manage_pins", actions: ["add", "remove", "list"], description: "Pin and unpin messages in channels" },
271
+ { name: "manage_bookmarks", actions: ["add", "remove", "list"], description: "Channel bookmarks" },
272
+ { name: "manage_reminders", actions: ["add", "list", "delete"], description: "Set and manage reminders" },
273
+ { name: "search", actions: ["messages", "files", "users"], description: "Search across messages, files, and users" },
274
+ { name: "manage_canvases", actions: ["create", "update", "read"], description: "Create and edit Slack canvases" },
275
+ ],
276
+ endpoints: {
277
+ // Messages
278
+ send_message: { method: "POST", path: "/chat.postMessage", body: { channel: "", text: "" } },
279
+ update_message: { method: "POST", path: "/chat.update", body: { channel: "", ts: "", text: "" } },
280
+ delete_message: { method: "POST", path: "/chat.delete", body: { channel: "", ts: "" } },
281
+ schedule_message: { method: "POST", path: "/chat.scheduleMessage", body: { channel: "", text: "", post_at: 0 } },
282
+ get_permalink: { method: "GET", path: "/chat.getPermalink", query: ["channel", "message_ts"] },
283
+ // Threads
284
+ reply_to_thread: { method: "POST", path: "/chat.postMessage", body: { channel: "", thread_ts: "", text: "" } },
285
+ get_thread_replies: { method: "GET", path: "/conversations.replies", query: ["channel", "ts"] },
286
+ // Channels
287
+ list_channels: { method: "GET", path: "/conversations.list", query: ["types", "limit", "cursor"] },
288
+ create_channel: { method: "POST", path: "/conversations.create", body: { name: "" } },
289
+ archive_channel: { method: "POST", path: "/conversations.archive", body: { channel: "" } },
290
+ unarchive_channel: { method: "POST", path: "/conversations.unarchive", body: { channel: "" } },
291
+ rename_channel: { method: "POST", path: "/conversations.rename", body: { channel: "", name: "" } },
292
+ set_channel_topic: { method: "POST", path: "/conversations.setTopic", body: { channel: "", topic: "" } },
293
+ set_channel_purpose: { method: "POST", path: "/conversations.setPurpose", body: { channel: "", purpose: "" } },
294
+ invite_to_channel: { method: "POST", path: "/conversations.invite", body: { channel: "", users: "" } },
295
+ kick_from_channel: { method: "POST", path: "/conversations.kick", body: { channel: "", user: "" } },
296
+ channel_history: { method: "GET", path: "/conversations.history", query: ["channel", "limit", "oldest", "latest"] },
297
+ channel_info: { method: "GET", path: "/conversations.info", query: ["channel"] },
298
+ join_channel: { method: "POST", path: "/conversations.join", body: { channel: "" } },
299
+ leave_channel: { method: "POST", path: "/conversations.leave", body: { channel: "" } },
300
+ // Users
301
+ list_users: { method: "GET", path: "/users.list", query: ["limit", "cursor"] },
302
+ get_user: { method: "GET", path: "/users.info", query: ["user"] },
303
+ get_user_profile: { method: "GET", path: "/users.profile.get", query: ["user"] },
304
+ set_user_status: { method: "POST", path: "/users.profile.set", body: { profile: { status_text: "", status_emoji: "" } } },
305
+ // Files
306
+ upload_file: { method: "POST", path: "/files.upload", body: { channels: "", filename: "", content: "" } },
307
+ list_files: { method: "GET", path: "/files.list", query: ["channel", "types", "count"] },
308
+ delete_file: { method: "POST", path: "/files.delete", body: { file: "" } },
309
+ share_file: { method: "POST", path: "/files.sharedPublicURL", body: { file: "" } },
310
+ // Reactions
311
+ add_reaction: { method: "POST", path: "/reactions.add", body: { channel: "", timestamp: "", name: "" } },
312
+ remove_reaction: { method: "POST", path: "/reactions.remove", body: { channel: "", timestamp: "", name: "" } },
313
+ list_reactions: { method: "GET", path: "/reactions.get", query: ["channel", "timestamp"] },
314
+ // Pins
315
+ pin_message: { method: "POST", path: "/pins.add", body: { channel: "", timestamp: "" } },
316
+ unpin_message: { method: "POST", path: "/pins.remove", body: { channel: "", timestamp: "" } },
317
+ list_pins: { method: "GET", path: "/pins.list", query: ["channel"] },
318
+ // Bookmarks
319
+ add_bookmark: { method: "POST", path: "/bookmarks.add", body: { channel_id: "", title: "", type: "link", link: "" } },
320
+ remove_bookmark: { method: "POST", path: "/bookmarks.remove", body: { bookmark_id: "", channel_id: "" } },
321
+ list_bookmarks: { method: "GET", path: "/bookmarks.list", query: ["channel_id"] },
322
+ // Reminders
323
+ add_reminder: { method: "POST", path: "/reminders.add", body: { text: "", time: "" } },
324
+ list_reminders: { method: "GET", path: "/reminders.list" },
325
+ delete_reminder: { method: "POST", path: "/reminders.delete", body: { reminder: "" } },
326
+ // Search
327
+ search_messages: { method: "GET", path: "/search.messages", query: ["query", "count", "sort", "sort_dir"] },
328
+ search_files: { method: "GET", path: "/search.files", query: ["query", "count"] },
329
+ // Canvases
330
+ create_canvas: { method: "POST", path: "/canvases.create", body: { title: "", document_content: { type: "markdown", markdown: "" } } },
331
+ update_canvas: { method: "POST", path: "/canvases.edit", body: { canvas_id: "", changes: [] } },
332
+ // Team info
333
+ get_team_info: { method: "GET", path: "/team.info" },
272
334
  },
273
335
  authHeader: (creds) => ({
274
336
  "Authorization": `Bearer ${creds.botToken}`,
@@ -1244,35 +1306,94 @@ export const SERVICE_CATALOG = {
1244
1306
  square: {
1245
1307
  name: "Square",
1246
1308
  type: "payments",
1247
- description: "Payments and commerce payments, customers, orders, catalog, inventory",
1309
+ description: "Payments, commerce, POS, invoices, subscriptions, loyalty, gift cards, bookings, team, locations — full Square ecosystem",
1248
1310
  baseUrl: "https://connect.squareup.com/v2",
1249
1311
  authType: "access_token",
1250
1312
  credentialKeys: ["accessToken"],
1251
1313
  capabilities: [
1252
- { name: "manage_payments", actions: ["create", "list", "get", "refund"], description: "Process and manage payments" },
1253
- { name: "manage_customers", actions: ["create", "list", "get", "update", "delete"], description: "Manage customer directory" },
1254
- { name: "manage_orders", actions: ["create", "list", "get"], description: "Create and manage orders" },
1255
- { name: "manage_catalog", actions: ["create", "list", "search"], description: "Manage product catalog" },
1256
- { name: "manage_inventory", actions: ["get", "adjust"], description: "Track and adjust inventory" },
1257
- ],
1258
- endpoints: {
1314
+ { name: "manage_payments", actions: ["create", "list", "get", "refund", "complete"], description: "Process payments, refunds, and completions" },
1315
+ { name: "manage_customers", actions: ["create", "list", "get", "update", "delete", "search"], description: "Full customer directory management" },
1316
+ { name: "manage_orders", actions: ["create", "list", "get", "update", "pay"], description: "Create, manage, and pay orders" },
1317
+ { name: "manage_catalog", actions: ["create", "list", "search", "update", "delete"], description: "Product catalog lifecycle" },
1318
+ { name: "manage_inventory", actions: ["get", "adjust", "transfer"], description: "Inventory tracking and transfers" },
1319
+ { name: "manage_invoices", actions: ["create", "list", "get", "update", "publish", "cancel"], description: "Create and send invoices" },
1320
+ { name: "manage_subscriptions", actions: ["create", "list", "get", "update", "cancel"], description: "Recurring billing subscriptions" },
1321
+ { name: "manage_loyalty", actions: ["create_account", "list_accounts", "accumulate", "redeem"], description: "Loyalty program management" },
1322
+ { name: "manage_gift_cards", actions: ["create", "list", "get", "link", "unlink"], description: "Gift card operations" },
1323
+ { name: "manage_bookings", actions: ["create", "list", "get", "update", "cancel"], description: "Appointment scheduling" },
1324
+ { name: "manage_team", actions: ["create", "list", "get", "update"], description: "Team member management" },
1325
+ { name: "manage_locations", actions: ["list", "get", "create", "update"], description: "Multi-location management" },
1326
+ ],
1327
+ endpoints: {
1328
+ // Payments
1259
1329
  create_payment: { method: "POST", path: "/payments", body: { source_id: "", idempotency_key: "", amount_money: { amount: 0, currency: "USD" } } },
1260
1330
  list_payments: { method: "GET", path: "/payments", query: ["begin_time", "end_time", "sort_order", "cursor", "limit"] },
1261
1331
  get_payment: { method: "GET", path: "/payments/{paymentId}" },
1332
+ complete_payment: { method: "POST", path: "/payments/{paymentId}/complete" },
1262
1333
  create_refund: { method: "POST", path: "/refunds", body: { idempotency_key: "", payment_id: "", amount_money: {} } },
1334
+ list_refunds: { method: "GET", path: "/refunds", query: ["begin_time", "end_time", "cursor", "limit"] },
1335
+ // Customers
1263
1336
  create_customer: { method: "POST", path: "/customers", body: { given_name: "", family_name: "", email_address: "" } },
1264
1337
  list_customers: { method: "GET", path: "/customers", query: ["cursor", "limit", "sort_field", "sort_order"] },
1265
1338
  get_customer: { method: "GET", path: "/customers/{customerId}" },
1266
1339
  update_customer: { method: "PUT", path: "/customers/{customerId}", body: {} },
1267
1340
  delete_customer: { method: "DELETE", path: "/customers/{customerId}" },
1341
+ search_customers: { method: "POST", path: "/customers/search", body: { query: {} } },
1342
+ // Orders
1268
1343
  create_order: { method: "POST", path: "/orders", body: { order: { location_id: "", line_items: [] }, idempotency_key: "" } },
1269
- list_orders: { method: "POST", path: "/orders/search", body: { location_ids: [], query: {} } },
1344
+ search_orders: { method: "POST", path: "/orders/search", body: { location_ids: [], query: {} } },
1270
1345
  get_order: { method: "GET", path: "/orders/{orderId}" },
1346
+ update_order: { method: "PUT", path: "/orders/{orderId}", body: { order: {} } },
1347
+ pay_order: { method: "POST", path: "/orders/{orderId}/pay", body: { idempotency_key: "" } },
1348
+ // Catalog
1271
1349
  create_catalog_object:{ method: "POST", path: "/catalog/object", body: { idempotency_key: "", object: {} } },
1272
1350
  list_catalog: { method: "GET", path: "/catalog/list", query: ["types", "cursor"] },
1273
1351
  search_catalog: { method: "POST", path: "/catalog/search", body: { object_types: [], query: {} } },
1352
+ update_catalog_object:{ method: "POST", path: "/catalog/object", body: { idempotency_key: "", object: {} } },
1353
+ delete_catalog_object:{ method: "DELETE", path: "/catalog/object/{objectId}" },
1354
+ // Inventory
1274
1355
  get_inventory: { method: "POST", path: "/inventory/counts/batch-retrieve", body: { catalog_object_ids: [] } },
1275
1356
  adjust_inventory: { method: "POST", path: "/inventory/changes/batch-create", body: { idempotency_key: "", changes: [] } },
1357
+ transfer_inventory: { method: "POST", path: "/inventory/transfers/batch-create", body: { idempotency_key: "", transfers: [] } },
1358
+ // Invoices
1359
+ create_invoice: { method: "POST", path: "/invoices", body: { invoice: {}, idempotency_key: "" } },
1360
+ list_invoices: { method: "GET", path: "/invoices", query: ["location_id", "cursor", "limit"] },
1361
+ get_invoice: { method: "GET", path: "/invoices/{invoiceId}" },
1362
+ update_invoice: { method: "PUT", path: "/invoices/{invoiceId}", body: { invoice: {} } },
1363
+ publish_invoice: { method: "POST", path: "/invoices/{invoiceId}/publish", body: { version: 0, idempotency_key: "" } },
1364
+ cancel_invoice: { method: "POST", path: "/invoices/{invoiceId}/cancel" },
1365
+ // Subscriptions
1366
+ create_subscription: { method: "POST", path: "/subscriptions", body: { idempotency_key: "", location_id: "", plan_variation_id: "", customer_id: "" } },
1367
+ list_subscriptions: { method: "POST", path: "/subscriptions/search", body: { query: {} } },
1368
+ get_subscription: { method: "GET", path: "/subscriptions/{subscriptionId}" },
1369
+ update_subscription: { method: "PUT", path: "/subscriptions/{subscriptionId}", body: {} },
1370
+ cancel_subscription: { method: "POST", path: "/subscriptions/{subscriptionId}/cancel" },
1371
+ // Loyalty
1372
+ create_loyalty_account: { method: "POST", path: "/loyalty/accounts", body: { account: {}, idempotency_key: "" } },
1373
+ search_loyalty_accounts:{ method: "POST", path: "/loyalty/accounts/search", body: { query: {} } },
1374
+ accumulate_loyalty: { method: "POST", path: "/loyalty/accounts/{accountId}/accumulate", body: { accumulate_points: {}, idempotency_key: "" } },
1375
+ redeem_loyalty: { method: "POST", path: "/loyalty/rewards", body: { reward: {}, idempotency_key: "" } },
1376
+ // Gift Cards
1377
+ create_gift_card: { method: "POST", path: "/gift-cards", body: { idempotency_key: "", location_id: "", type: "DIGITAL" } },
1378
+ list_gift_cards: { method: "GET", path: "/gift-cards", query: ["type", "state", "cursor", "limit"] },
1379
+ get_gift_card: { method: "GET", path: "/gift-cards/{giftCardId}" },
1380
+ link_gift_card: { method: "POST", path: "/gift-cards/{giftCardId}/link-customer", body: { customer_id: "" } },
1381
+ // Bookings
1382
+ create_booking: { method: "POST", path: "/bookings", body: { booking: {}, idempotency_key: "" } },
1383
+ list_bookings: { method: "GET", path: "/bookings", query: ["limit", "cursor", "team_member_id", "location_id", "start_at_min", "start_at_max"] },
1384
+ get_booking: { method: "GET", path: "/bookings/{bookingId}" },
1385
+ update_booking: { method: "PUT", path: "/bookings/{bookingId}", body: { booking: {} } },
1386
+ cancel_booking: { method: "POST", path: "/bookings/{bookingId}/cancel" },
1387
+ // Team
1388
+ create_team_member: { method: "POST", path: "/team-members", body: { idempotency_key: "", team_member: {} } },
1389
+ search_team_members: { method: "POST", path: "/team-members/search", body: { query: {} } },
1390
+ get_team_member: { method: "GET", path: "/team-members/{teamMemberId}" },
1391
+ update_team_member: { method: "PUT", path: "/team-members/{teamMemberId}", body: { team_member: {} } },
1392
+ // Locations
1393
+ list_locations: { method: "GET", path: "/locations" },
1394
+ get_location: { method: "GET", path: "/locations/{locationId}" },
1395
+ create_location: { method: "POST", path: "/locations", body: { location: {} } },
1396
+ update_location: { method: "PUT", path: "/locations/{locationId}", body: { location: {} } },
1276
1397
  },
1277
1398
  authHeader: (creds) => ({
1278
1399
  "Authorization": `Bearer ${creds.accessToken}`,
@@ -1281,6 +1402,85 @@ export const SERVICE_CATALOG = {
1281
1402
  }),
1282
1403
  },
1283
1404
 
1405
+ // ── WooCommerce ──────────────────────────────────────────────
1406
+ woocommerce: {
1407
+ name: "WooCommerce",
1408
+ type: "ecommerce",
1409
+ description: "WordPress e-commerce — products, orders, customers, coupons, categories, reports, shipping, taxes, refunds",
1410
+ baseUrl: "https://{siteUrl}/wp-json/wc/v3",
1411
+ authType: "basic",
1412
+ credentialKeys: ["siteUrl", "consumerKey", "consumerSecret"],
1413
+ capabilities: [
1414
+ { name: "manage_products", actions: ["create", "list", "get", "update", "delete"], description: "Full product lifecycle management" },
1415
+ { name: "manage_orders", actions: ["create", "list", "get", "update", "delete"], description: "Order processing and fulfillment" },
1416
+ { name: "manage_customers", actions: ["create", "list", "get", "update", "delete"], description: "Customer directory" },
1417
+ { name: "manage_coupons", actions: ["create", "list", "get", "update", "delete"], description: "Discount coupon management" },
1418
+ { name: "manage_categories", actions: ["create", "list", "get", "update", "delete"], description: "Product categories" },
1419
+ { name: "manage_shipping", actions: ["list_zones", "list_methods"], description: "Shipping configuration" },
1420
+ { name: "manage_reports", actions: ["sales", "top_sellers", "coupons"], description: "Sales and performance reports" },
1421
+ { name: "manage_refunds", actions: ["create", "list"], description: "Order refunds" },
1422
+ ],
1423
+ endpoints: {
1424
+ // Products
1425
+ create_product: { method: "POST", path: "/products", body: { name: "", type: "simple", regular_price: "" } },
1426
+ list_products: { method: "GET", path: "/products", query: ["per_page", "page", "search", "status", "category", "sku", "orderby", "order"] },
1427
+ get_product: { method: "GET", path: "/products/{productId}" },
1428
+ update_product: { method: "PUT", path: "/products/{productId}", body: {} },
1429
+ delete_product: { method: "DELETE", path: "/products/{productId}", query: ["force"] },
1430
+ // Product Variations
1431
+ list_variations: { method: "GET", path: "/products/{productId}/variations" },
1432
+ create_variation: { method: "POST", path: "/products/{productId}/variations", body: { regular_price: "" } },
1433
+ update_variation: { method: "PUT", path: "/products/{productId}/variations/{variationId}", body: {} },
1434
+ // Product Categories
1435
+ create_category: { method: "POST", path: "/products/categories", body: { name: "" } },
1436
+ list_categories: { method: "GET", path: "/products/categories", query: ["per_page", "page", "search"] },
1437
+ get_category: { method: "GET", path: "/products/categories/{categoryId}" },
1438
+ update_category: { method: "PUT", path: "/products/categories/{categoryId}", body: {} },
1439
+ delete_category: { method: "DELETE", path: "/products/categories/{categoryId}" },
1440
+ // Orders
1441
+ create_order: { method: "POST", path: "/orders", body: { payment_method: "", billing: {}, line_items: [] } },
1442
+ list_orders: { method: "GET", path: "/orders", query: ["per_page", "page", "status", "customer", "after", "before", "orderby", "order"] },
1443
+ get_order: { method: "GET", path: "/orders/{orderId}" },
1444
+ update_order: { method: "PUT", path: "/orders/{orderId}", body: {} },
1445
+ delete_order: { method: "DELETE", path: "/orders/{orderId}" },
1446
+ // Order Notes
1447
+ create_order_note: { method: "POST", path: "/orders/{orderId}/notes", body: { note: "" } },
1448
+ list_order_notes: { method: "GET", path: "/orders/{orderId}/notes" },
1449
+ // Refunds
1450
+ create_refund: { method: "POST", path: "/orders/{orderId}/refunds", body: { amount: "", reason: "" } },
1451
+ list_refunds: { method: "GET", path: "/orders/{orderId}/refunds" },
1452
+ // Customers
1453
+ create_customer: { method: "POST", path: "/customers", body: { email: "", first_name: "", last_name: "" } },
1454
+ list_customers: { method: "GET", path: "/customers", query: ["per_page", "page", "search", "role", "orderby", "order"] },
1455
+ get_customer: { method: "GET", path: "/customers/{customerId}" },
1456
+ update_customer: { method: "PUT", path: "/customers/{customerId}", body: {} },
1457
+ delete_customer: { method: "DELETE", path: "/customers/{customerId}" },
1458
+ // Coupons
1459
+ create_coupon: { method: "POST", path: "/coupons", body: { code: "", discount_type: "percent", amount: "" } },
1460
+ list_coupons: { method: "GET", path: "/coupons", query: ["per_page", "page", "search"] },
1461
+ get_coupon: { method: "GET", path: "/coupons/{couponId}" },
1462
+ update_coupon: { method: "PUT", path: "/coupons/{couponId}", body: {} },
1463
+ delete_coupon: { method: "DELETE", path: "/coupons/{couponId}" },
1464
+ // Shipping
1465
+ list_shipping_zones: { method: "GET", path: "/shipping/zones" },
1466
+ list_shipping_methods:{ method: "GET", path: "/shipping/zones/{zoneId}/methods" },
1467
+ // Reports
1468
+ sales_report: { method: "GET", path: "/reports/sales", query: ["period", "date_min", "date_max"] },
1469
+ top_sellers_report: { method: "GET", path: "/reports/top_sellers", query: ["period"] },
1470
+ coupons_report: { method: "GET", path: "/reports/coupons/totals" },
1471
+ // Taxes
1472
+ list_tax_classes: { method: "GET", path: "/taxes/classes" },
1473
+ list_tax_rates: { method: "GET", path: "/taxes" },
1474
+ // Settings
1475
+ list_settings: { method: "GET", path: "/settings" },
1476
+ get_setting_group: { method: "GET", path: "/settings/{group}" },
1477
+ },
1478
+ authHeader: (creds) => ({
1479
+ "Authorization": `Basic ${Buffer.from(`${creds.consumerKey}:${creds.consumerSecret}`).toString('base64')}`,
1480
+ "Content-Type": "application/json",
1481
+ }),
1482
+ },
1483
+
1284
1484
  // ── TikTok Ads ──────────────────────────────────────────────
1285
1485
  tiktok_ads: {
1286
1486
  name: "TikTok Ads",
@@ -1539,38 +1739,142 @@ export const SERVICE_CATALOG = {
1539
1739
  pipedrive: {
1540
1740
  name: "Pipedrive",
1541
1741
  type: "crm",
1542
- description: "Sales CRM — deals, persons, organizations, activities, pipelines, notes",
1742
+ description: "Sales CRM — deals, persons, organizations, activities, pipelines, products, leads, goals, projects, files, mail, webhooks, subscriptions, notes, stages, users",
1543
1743
  baseUrl: "https://api.pipedrive.com/v1",
1544
1744
  authType: "api_key",
1545
1745
  credentialKeys: ["apiKey"],
1546
1746
  capabilities: [
1547
- { name: "manage_deals", actions: ["create", "list", "get", "update", "delete"], description: "Full deal lifecycle management" },
1548
- { name: "manage_persons", actions: ["create", "list", "get", "update", "delete"], description: "Manage contact persons" },
1549
- { name: "manage_organizations", actions: ["create", "list", "get"], description: "Manage organizations" },
1550
- { name: "manage_activities", actions: ["create", "list", "get"], description: "Schedule and track activities" },
1551
- { name: "manage_pipelines", actions: ["list", "get"], description: "View sales pipelines and stages" },
1552
- { name: "manage_notes", actions: ["create", "list"], description: "Add and view notes" },
1553
- ],
1554
- endpoints: {
1747
+ { name: "manage_deals", actions: ["create", "list", "get", "update", "delete", "search", "merge", "duplicate"], description: "Full deal lifecycle with merge and duplicate" },
1748
+ { name: "manage_persons", actions: ["create", "list", "get", "update", "delete", "search", "merge"], description: "Contact persons with merge" },
1749
+ { name: "manage_organizations", actions: ["create", "list", "get", "update", "delete", "search", "merge"], description: "Organizations with merge" },
1750
+ { name: "manage_activities", actions: ["create", "list", "get", "update", "delete"], description: "Schedule, track, and manage activities" },
1751
+ { name: "manage_pipelines", actions: ["list", "get", "create", "update", "delete"], description: "Pipeline CRUD + stage management" },
1752
+ { name: "manage_stages", actions: ["list", "get", "create", "update", "delete"], description: "Deal stages within pipelines" },
1753
+ { name: "manage_products", actions: ["create", "list", "get", "update", "delete", "search"], description: "Product catalog management" },
1754
+ { name: "manage_leads", actions: ["create", "list", "get", "update", "delete"], description: "Lead management before conversion to deals" },
1755
+ { name: "manage_notes", actions: ["create", "list", "get", "update", "delete"], description: "Notes on deals, persons, organizations" },
1756
+ { name: "manage_files", actions: ["list", "get", "create", "delete"], description: "File attachments" },
1757
+ { name: "manage_mail", actions: ["list_threads", "get_thread", "list_messages", "send"], description: "Email integration" },
1758
+ { name: "manage_goals", actions: ["create", "list", "get", "update", "delete"], description: "Sales goals and targets" },
1759
+ { name: "manage_projects", actions: ["create", "list", "get", "update"], description: "Project management" },
1760
+ { name: "manage_webhooks", actions: ["create", "list", "delete"], description: "Event webhooks" },
1761
+ { name: "manage_subscriptions", actions: ["create", "list", "get", "update", "cancel"], description: "Recurring revenue subscriptions" },
1762
+ { name: "manage_users", actions: ["list", "get", "update"], description: "Team user management" },
1763
+ ],
1764
+ endpoints: {
1765
+ // Deals
1555
1766
  create_deal: { method: "POST", path: "/deals", query: ["api_token"], body: { title: "" } },
1556
- list_deals: { method: "GET", path: "/deals", query: ["api_token", "start", "limit", "status", "sort"] },
1767
+ list_deals: { method: "GET", path: "/deals", query: ["api_token", "start", "limit", "status", "sort", "filter_id"] },
1557
1768
  get_deal: { method: "GET", path: "/deals/{dealId}", query: ["api_token"] },
1558
1769
  update_deal: { method: "PUT", path: "/deals/{dealId}", query: ["api_token"], body: {} },
1559
1770
  delete_deal: { method: "DELETE", path: "/deals/{dealId}", query: ["api_token"] },
1771
+ search_deals: { method: "GET", path: "/deals/search", query: ["api_token", "term", "fields", "exact_match", "start", "limit"] },
1772
+ merge_deals: { method: "PUT", path: "/deals/{dealId}/merge", query: ["api_token"], body: { merge_with_id: 0 } },
1773
+ duplicate_deal: { method: "POST", path: "/deals/{dealId}/duplicate", query: ["api_token"] },
1774
+ list_deal_activities: { method: "GET", path: "/deals/{dealId}/activities", query: ["api_token", "start", "limit"] },
1775
+ list_deal_files: { method: "GET", path: "/deals/{dealId}/files", query: ["api_token", "start", "limit"] },
1776
+ list_deal_products: { method: "GET", path: "/deals/{dealId}/products", query: ["api_token", "start", "limit"] },
1777
+ add_deal_product: { method: "POST", path: "/deals/{dealId}/products", query: ["api_token"], body: { product_id: 0, item_price: 0, quantity: 1 } },
1778
+ list_deal_participants:{ method: "GET", path: "/deals/{dealId}/participants", query: ["api_token", "start", "limit"] },
1779
+ add_deal_participant: { method: "POST", path: "/deals/{dealId}/participants", query: ["api_token"], body: { person_id: 0 } },
1780
+ list_deal_followers: { method: "GET", path: "/deals/{dealId}/followers", query: ["api_token"] },
1781
+ // Persons
1560
1782
  create_person: { method: "POST", path: "/persons", query: ["api_token"], body: { name: "" } },
1561
- list_persons: { method: "GET", path: "/persons", query: ["api_token", "start", "limit", "sort"] },
1783
+ list_persons: { method: "GET", path: "/persons", query: ["api_token", "start", "limit", "sort", "filter_id"] },
1562
1784
  get_person: { method: "GET", path: "/persons/{personId}", query: ["api_token"] },
1563
1785
  update_person: { method: "PUT", path: "/persons/{personId}", query: ["api_token"], body: {} },
1564
1786
  delete_person: { method: "DELETE", path: "/persons/{personId}", query: ["api_token"] },
1787
+ search_persons: { method: "GET", path: "/persons/search", query: ["api_token", "term", "fields", "exact_match", "start", "limit"] },
1788
+ merge_persons: { method: "PUT", path: "/persons/{personId}/merge", query: ["api_token"], body: { merge_with_id: 0 } },
1789
+ list_person_deals: { method: "GET", path: "/persons/{personId}/deals", query: ["api_token", "start", "limit"] },
1790
+ list_person_activities:{ method: "GET", path: "/persons/{personId}/activities", query: ["api_token", "start", "limit"] },
1791
+ // Organizations
1565
1792
  create_organization: { method: "POST", path: "/organizations", query: ["api_token"], body: { name: "" } },
1566
- list_organizations: { method: "GET", path: "/organizations", query: ["api_token", "start", "limit", "sort"] },
1793
+ list_organizations: { method: "GET", path: "/organizations", query: ["api_token", "start", "limit", "sort", "filter_id"] },
1794
+ get_organization: { method: "GET", path: "/organizations/{orgId}", query: ["api_token"] },
1795
+ update_organization: { method: "PUT", path: "/organizations/{orgId}", query: ["api_token"], body: {} },
1796
+ delete_organization: { method: "DELETE", path: "/organizations/{orgId}", query: ["api_token"] },
1797
+ search_organizations: { method: "GET", path: "/organizations/search", query: ["api_token", "term", "fields", "exact_match"] },
1798
+ merge_organizations: { method: "PUT", path: "/organizations/{orgId}/merge", query: ["api_token"], body: { merge_with_id: 0 } },
1799
+ // Activities
1567
1800
  create_activity: { method: "POST", path: "/activities", query: ["api_token"], body: { subject: "", type: "" } },
1568
- list_activities: { method: "GET", path: "/activities", query: ["api_token", "start", "limit", "type"] },
1801
+ list_activities: { method: "GET", path: "/activities", query: ["api_token", "start", "limit", "type", "user_id", "done"] },
1802
+ get_activity: { method: "GET", path: "/activities/{activityId}", query: ["api_token"] },
1803
+ update_activity: { method: "PUT", path: "/activities/{activityId}", query: ["api_token"], body: {} },
1804
+ delete_activity: { method: "DELETE", path: "/activities/{activityId}", query: ["api_token"] },
1805
+ // Pipelines + Stages
1569
1806
  list_pipelines: { method: "GET", path: "/pipelines", query: ["api_token"] },
1570
1807
  get_pipeline: { method: "GET", path: "/pipelines/{pipelineId}", query: ["api_token"] },
1808
+ create_pipeline: { method: "POST", path: "/pipelines", query: ["api_token"], body: { name: "" } },
1809
+ update_pipeline: { method: "PUT", path: "/pipelines/{pipelineId}", query: ["api_token"], body: {} },
1810
+ delete_pipeline: { method: "DELETE", path: "/pipelines/{pipelineId}", query: ["api_token"] },
1811
+ list_stages: { method: "GET", path: "/stages", query: ["api_token", "pipeline_id"] },
1812
+ get_stage: { method: "GET", path: "/stages/{stageId}", query: ["api_token"] },
1813
+ create_stage: { method: "POST", path: "/stages", query: ["api_token"], body: { name: "", pipeline_id: 0 } },
1814
+ update_stage: { method: "PUT", path: "/stages/{stageId}", query: ["api_token"], body: {} },
1815
+ delete_stage: { method: "DELETE", path: "/stages/{stageId}", query: ["api_token"] },
1816
+ list_stage_deals: { method: "GET", path: "/stages/{stageId}/deals", query: ["api_token", "start", "limit"] },
1817
+ // Products
1818
+ create_product: { method: "POST", path: "/products", query: ["api_token"], body: { name: "" } },
1819
+ list_products: { method: "GET", path: "/products", query: ["api_token", "start", "limit"] },
1820
+ get_product: { method: "GET", path: "/products/{productId}", query: ["api_token"] },
1821
+ update_product: { method: "PUT", path: "/products/{productId}", query: ["api_token"], body: {} },
1822
+ delete_product: { method: "DELETE", path: "/products/{productId}", query: ["api_token"] },
1823
+ search_products: { method: "GET", path: "/products/search", query: ["api_token", "term", "fields"] },
1824
+ // Leads
1825
+ create_lead: { method: "POST", path: "/leads", query: ["api_token"], body: { title: "" } },
1826
+ list_leads: { method: "GET", path: "/leads", query: ["api_token", "start", "limit", "sort", "filter_id"] },
1827
+ get_lead: { method: "GET", path: "/leads/{leadId}", query: ["api_token"] },
1828
+ update_lead: { method: "PATCH", path: "/leads/{leadId}", query: ["api_token"], body: {} },
1829
+ delete_lead: { method: "DELETE", path: "/leads/{leadId}", query: ["api_token"] },
1830
+ // Notes
1571
1831
  create_note: { method: "POST", path: "/notes", query: ["api_token"], body: { content: "" } },
1572
1832
  list_notes: { method: "GET", path: "/notes", query: ["api_token", "start", "limit", "sort"] },
1573
- search_items: { method: "GET", path: "/itemSearch", query: ["api_token", "term", "item_types", "fields"] },
1833
+ get_note: { method: "GET", path: "/notes/{noteId}", query: ["api_token"] },
1834
+ update_note: { method: "PUT", path: "/notes/{noteId}", query: ["api_token"], body: {} },
1835
+ delete_note: { method: "DELETE", path: "/notes/{noteId}", query: ["api_token"] },
1836
+ // Files
1837
+ list_files: { method: "GET", path: "/files", query: ["api_token", "start", "limit", "sort"] },
1838
+ get_file: { method: "GET", path: "/files/{fileId}", query: ["api_token"] },
1839
+ delete_file: { method: "DELETE", path: "/files/{fileId}", query: ["api_token"] },
1840
+ // Mail
1841
+ list_mail_threads: { method: "GET", path: "/mailbox/mailThreads", query: ["api_token", "folder", "start", "limit"] },
1842
+ get_mail_thread: { method: "GET", path: "/mailbox/mailThreads/{threadId}", query: ["api_token"] },
1843
+ list_mail_messages: { method: "GET", path: "/mailbox/mailMessages", query: ["api_token", "start", "limit"] },
1844
+ // Goals
1845
+ create_goal: { method: "POST", path: "/goals", query: ["api_token"], body: { title: "", assignee: {} } },
1846
+ list_goals: { method: "GET", path: "/goals", query: ["api_token"] },
1847
+ get_goal: { method: "GET", path: "/goals/{goalId}", query: ["api_token"] },
1848
+ update_goal: { method: "PUT", path: "/goals/{goalId}", query: ["api_token"], body: {} },
1849
+ delete_goal: { method: "DELETE", path: "/goals/{goalId}", query: ["api_token"] },
1850
+ // Projects
1851
+ create_project: { method: "POST", path: "/projects", query: ["api_token"], body: { title: "", board_id: 0 } },
1852
+ list_projects: { method: "GET", path: "/projects", query: ["api_token", "start", "limit", "status"] },
1853
+ get_project: { method: "GET", path: "/projects/{projectId}", query: ["api_token"] },
1854
+ update_project: { method: "PUT", path: "/projects/{projectId}", query: ["api_token"], body: {} },
1855
+ // Webhooks
1856
+ create_webhook: { method: "POST", path: "/webhooks", query: ["api_token"], body: { subscription_url: "", event_action: "", event_object: "" } },
1857
+ list_webhooks: { method: "GET", path: "/webhooks", query: ["api_token"] },
1858
+ delete_webhook: { method: "DELETE", path: "/webhooks/{webhookId}", query: ["api_token"] },
1859
+ // Subscriptions
1860
+ create_subscription: { method: "POST", path: "/subscriptions/recurring", query: ["api_token"], body: { deal_id: 0, currency: "USD" } },
1861
+ list_subscriptions: { method: "GET", path: "/subscriptions/{dealId}", query: ["api_token"] },
1862
+ get_subscription: { method: "GET", path: "/subscriptions/{subscriptionId}", query: ["api_token"] },
1863
+ update_subscription: { method: "PUT", path: "/subscriptions/recurring/{subscriptionId}", query: ["api_token"], body: {} },
1864
+ cancel_subscription: { method: "DELETE", path: "/subscriptions/recurring/{subscriptionId}", query: ["api_token"] },
1865
+ // Users
1866
+ list_users: { method: "GET", path: "/users", query: ["api_token"] },
1867
+ get_user: { method: "GET", path: "/users/{userId}", query: ["api_token"] },
1868
+ update_user: { method: "PUT", path: "/users/{userId}", query: ["api_token"], body: {} },
1869
+ // Search
1870
+ search_items: { method: "GET", path: "/itemSearch", query: ["api_token", "term", "item_types", "fields", "exact_match", "start", "limit"] },
1871
+ search_field: { method: "GET", path: "/itemSearch/field", query: ["api_token", "term", "field_type", "field_key", "exact_match"] },
1872
+ // Filters
1873
+ list_filters: { method: "GET", path: "/filters", query: ["api_token", "type"] },
1874
+ get_filter: { method: "GET", path: "/filters/{filterId}", query: ["api_token"] },
1875
+ create_filter: { method: "POST", path: "/filters", query: ["api_token"], body: { name: "", type: "", conditions: {} } },
1876
+ // Recents
1877
+ list_recents: { method: "GET", path: "/recents", query: ["api_token", "since_timestamp", "items"] },
1574
1878
  },
1575
1879
  authHeader: (creds) => ({
1576
1880
  "Content-Type": "application/json",
@@ -1581,25 +1885,86 @@ export const SERVICE_CATALOG = {
1581
1885
  linkedin: {
1582
1886
  name: "LinkedIn",
1583
1887
  type: "social",
1584
- description: "Professional network — posts, profile, connections, organizations via LinkedIn API",
1585
- baseUrl: "https://api.linkedin.com/rest",
1586
- authType: "oauth",
1888
+ description: "Professional network — profile, posts, comments, likes, organizations, page analytics, events, advertising, ad reporting via LinkedIn API v2",
1889
+ baseUrl: "https://api.linkedin.com",
1890
+ authType: "oauth2",
1891
+ scopes: ["rw_organization_admin", "w_member_social", "r_profile_basicinfo", "rw_events", "r_ads", "r_basicprofile", "r_organization_admin", "email", "r_1st_connections_size", "openid", "profile", "r_ads_reporting", "r_organization_social", "r_verify", "w_organization_social", "rw_ads", "r_events"],
1587
1892
  credentialKeys: ["access_token"],
1588
1893
  capabilities: [
1589
- { name: "manage_posts", actions: ["create", "list", "delete"], description: "Create and manage posts" },
1590
- { name: "manage_profile", actions: ["get"], description: "View profile information" },
1591
- { name: "manage_connections", actions: ["list"], description: "View connections" },
1592
- { name: "manage_organizations", actions: ["get", "list_posts"], description: "View company pages and posts" },
1593
- ],
1594
- endpoints: {
1595
- create_post: { method: "POST", path: "/posts", body: { author: "", commentary: "", visibility: "PUBLIC", distribution: { feedDistribution: "MAIN_FEED" }, lifecycleState: "PUBLISHED" } },
1596
- get_profile: { method: "GET", path: "/me", query: ["projection"] },
1597
- list_connections: { method: "GET", path: "/connections", query: ["start", "count", "projection"] },
1598
- get_organization: { method: "GET", path: "/organizations/{organizationId}", query: ["projection"] },
1599
- list_org_posts: { method: "GET", path: "/posts", query: ["author", "q", "count", "start"] },
1600
- delete_post: { method: "DELETE", path: "/posts/{postId}" },
1601
- get_post: { method: "GET", path: "/posts/{postId}" },
1602
- upload_image: { method: "POST", path: "/images", query: ["action=initializeUpload"], body: { initializeUploadRequest: { owner: "" } } },
1894
+ { name: "manage_profile", actions: ["get", "get_email", "get_connections", "get_verification", "get_photos"], description: "View profile, email, connections count, verification status, and photos" },
1895
+ { name: "manage_posts", actions: ["create", "get", "delete"], description: "Create, read, and delete posts for members or organizations" },
1896
+ { name: "manage_social_actions", actions: ["comment", "list_comments", "like", "unlike"], description: "Comment on and like/unlike posts" },
1897
+ { name: "manage_shares", actions: ["list"], description: "List shared content" },
1898
+ { name: "manage_media", actions: ["upload_image", "upload_video"], description: "Upload images and videos for posts" },
1899
+ { name: "manage_organizations", actions: ["get", "list_admin_orgs", "update", "get_brand_pages"], description: "View and manage organization pages" },
1900
+ { name: "manage_org_analytics", actions: ["page_stats", "follower_stats", "share_stats", "follower_count", "visitor_stats"], description: "Organization page analytics and statistics" },
1901
+ { name: "manage_ads", actions: ["list_accounts", "get_account", "create_campaign_group", "list_campaign_groups", "create_campaign", "list_campaigns", "update_campaign", "create_creative", "list_creatives", "update_creative"], description: "Manage ad accounts, campaigns, and creatives" },
1902
+ { name: "manage_ad_extras", actions: ["get_analytics", "get_budget_pricing", "create_sponsored_content", "get_targeting", "get_form_responses"], description: "Ad analytics, targeting, budget suggestions, and lead gen forms" },
1903
+ { name: "manage_ad_reporting", actions: ["get_performance", "get_statistics", "get_conversions", "get_budget_reports", "get_inmail_analytics"], description: "Campaign performance metrics, conversion tracking, and InMail analytics" },
1904
+ { name: "manage_events", actions: ["create", "get", "update", "delete", "list_attendees"], description: "Create, manage, and track events and attendees" },
1905
+ ],
1906
+ endpoints: {
1907
+ // ── Profile (5) ───────────────────────────────────────────
1908
+ get_profile: { method: "GET", path: "/v2/me", query: ["projection"] },
1909
+ get_email: { method: "GET", path: "/v2/emailAddress", query: ["q=members", "projection=(elements*(handle~))"] },
1910
+ get_connections_size: { method: "GET", path: "/v2/connections", query: ["q=viewer", "start", "count"] },
1911
+ get_verification: { method: "GET", path: "/v2/profileVerification", query: ["q=member"] },
1912
+ get_profile_pictures: { method: "GET", path: "/v2/profilePictures", query: ["q=member", "projection"] },
1913
+
1914
+ // ── Social / Posts (10) ───────────────────────────────────
1915
+ create_post: { method: "POST", path: "/v2/posts", body: { author: "", commentary: "", visibility: "PUBLIC", distribution: { feedDistribution: "MAIN_FEED" }, lifecycleState: "PUBLISHED" } },
1916
+ get_post: { method: "GET", path: "/v2/posts/{postId}" },
1917
+ delete_post: { method: "DELETE", path: "/v2/posts/{postId}" },
1918
+ add_comment: { method: "POST", path: "/v2/socialActions/{activityId}/comments", body: { actor: "", message: { text: "" } } },
1919
+ list_comments: { method: "GET", path: "/v2/socialActions/{activityId}/comments", query: ["start", "count"] },
1920
+ like_post: { method: "POST", path: "/v2/socialActions/{activityId}/likes", body: { actor: "" } },
1921
+ unlike_post: { method: "DELETE", path: "/v2/socialActions/{activityId}/likes/{likeId}" },
1922
+ list_shares: { method: "GET", path: "/v2/shares", query: ["q", "owners", "count", "start"] },
1923
+ upload_image: { method: "POST", path: "/v2/images", query: ["action=initializeUpload"], body: { initializeUploadRequest: { owner: "" } } },
1924
+ upload_video: { method: "POST", path: "/v2/videos", query: ["action=initializeUpload"], body: { initializeUploadRequest: { owner: "", fileSizeBytes: 0 } } },
1925
+
1926
+ // ── Organization Pages (10) ───────────────────────────────
1927
+ get_organization: { method: "GET", path: "/v2/organizations/{organizationId}", query: ["projection"] },
1928
+ list_admin_orgs: { method: "GET", path: "/v2/organizationalEntityAcls", query: ["q=roleAssignee", "role", "projection"] },
1929
+ create_org_post: { method: "POST", path: "/v2/posts", body: { author: "urn:li:organization:{organizationId}", commentary: "", visibility: "PUBLIC", distribution: { feedDistribution: "MAIN_FEED" }, lifecycleState: "PUBLISHED" } },
1930
+ get_page_statistics: { method: "GET", path: "/v2/organizationPageStatistics", query: ["q=organization", "organization", "timeIntervals"] },
1931
+ get_follower_statistics: { method: "GET", path: "/v2/organizationalEntityFollowerStatistics", query: ["q=organizationalEntity", "organizationalEntity", "timeIntervals"] },
1932
+ get_share_statistics: { method: "GET", path: "/v2/organizationalEntityShareStatistics", query: ["q=organizationalEntity", "organizationalEntity", "shares"] },
1933
+ get_follower_count: { method: "GET", path: "/v2/networkSizes/{organizationUrn}", query: ["edgeType=CompanyFollowedByMember"] },
1934
+ update_organization: { method: "PUT", path: "/v2/organizations/{organizationId}", body: {} },
1935
+ get_brand_pages: { method: "GET", path: "/v2/organizationBrandPages", query: ["q=parentOrganization", "parentOrganization"] },
1936
+ get_visitor_statistics: { method: "GET", path: "/v2/organizationPageVisitorStatistics", query: ["q=organization", "organization", "timeIntervals"] },
1937
+
1938
+ // ── Advertising (15) ──────────────────────────────────────
1939
+ list_ad_accounts: { method: "GET", path: "/v2/adAccountsV2", query: ["q=search", "search", "count", "start"] },
1940
+ get_ad_account: { method: "GET", path: "/v2/adAccountsV2/{adAccountId}" },
1941
+ create_campaign_group: { method: "POST", path: "/v2/adCampaignGroupsV2", body: { account: "", name: "", status: "ACTIVE" } },
1942
+ list_campaign_groups: { method: "GET", path: "/v2/adCampaignGroupsV2", query: ["q=search", "search", "count", "start"] },
1943
+ create_campaign: { method: "POST", path: "/v2/adCampaignsV2", body: { account: "", campaignGroup: "", name: "", type: "SPONSORED_UPDATES", costType: "CPM", status: "PAUSED" } },
1944
+ list_campaigns: { method: "GET", path: "/v2/adCampaignsV2", query: ["q=search", "search", "count", "start"] },
1945
+ update_campaign: { method: "PATCH", path: "/v2/adCampaignsV2/{campaignId}", body: {} },
1946
+ create_creative: { method: "POST", path: "/v2/adCreativesV2", body: { campaign: "", reference: "" } },
1947
+ list_creatives: { method: "GET", path: "/v2/adCreativesV2", query: ["q=search", "search", "campaigns", "count"] },
1948
+ update_creative: { method: "PATCH", path: "/v2/adCreativesV2/{creativeId}", body: {} },
1949
+ get_ad_analytics: { method: "GET", path: "/v2/adAnalyticsV2", query: ["q=analytics", "dateRange", "campaigns", "pivot", "timeGranularity", "fields"] },
1950
+ get_budget_pricing: { method: "GET", path: "/v2/adBudgetPricingV2", query: ["account", "campaign", "bidType", "match"] },
1951
+ create_sponsored_content: { method: "POST", path: "/v2/adDirectSponsoredContents", body: { account: "", owner: "", content: {} } },
1952
+ get_targeting_facets: { method: "GET", path: "/v2/adTargetingFacets", query: ["q=search", "search", "queryType"] },
1953
+ get_form_responses: { method: "GET", path: "/v2/adFormResponses", query: ["q=account", "account", "versionedLeadGenFormUrn", "count", "start"] },
1954
+
1955
+ // ── Ad Reporting (5) ──────────────────────────────────────
1956
+ get_performance_metrics: { method: "GET", path: "/v2/adAnalyticsV2", query: ["q=analytics", "dateRange", "accounts", "campaigns", "creatives", "pivot", "timeGranularity", "fields"] },
1957
+ get_aggregate_statistics: { method: "GET", path: "/v2/adAnalyticsV2", query: ["q=statistics", "accounts", "dateRange", "fields"] },
1958
+ get_conversion_tracking: { method: "GET", path: "/v2/conversionTrackingV2", query: ["q=account", "account", "count", "start"] },
1959
+ get_budget_reports: { method: "GET", path: "/v2/adBudgetV2", query: ["q=account", "account", "count", "start"] },
1960
+ get_inmail_analytics: { method: "GET", path: "/v2/adInMailContentV2", query: ["q=account", "account", "campaign", "count", "start"] },
1961
+
1962
+ // ── Events (5) ────────────────────────────────────────────
1963
+ create_event: { method: "POST", path: "/v2/events", body: { organizer: "", name: { locale: { language: "en", country: "US" }, value: "" }, description: {}, startAt: "", endAt: "" } },
1964
+ get_event: { method: "GET", path: "/v2/events/{eventId}" },
1965
+ update_event: { method: "PUT", path: "/v2/events/{eventId}", body: {} },
1966
+ delete_event: { method: "DELETE", path: "/v2/events/{eventId}" },
1967
+ list_event_attendees: { method: "GET", path: "/v2/eventAttendees", query: ["q=event", "event", "count", "start"] },
1603
1968
  },
1604
1969
  authHeader: (creds) => ({
1605
1970
  "Authorization": `Bearer ${creds.access_token}`,
@@ -2899,6 +3264,74 @@ export const SERVICE_CATALOG = {
2899
3264
  authHeader: (creds) => ({ "Authorization": `Bearer ${creds.apiKey}`, "Content-Type": "application/json" }),
2900
3265
  },
2901
3266
 
3267
+ // ── CloudConvert ────────────────────────────────────────────────
3268
+ cloudconvert: {
3269
+ name: "CloudConvert",
3270
+ type: "utility",
3271
+ description: "File conversion API — convert between 200+ formats (PDF, DOCX, PNG, MP4, etc.), optimize, merge, capture websites, create thumbnails",
3272
+ baseUrl: "https://api.cloudconvert.com/v2",
3273
+ authType: "apiKey",
3274
+ credentialKeys: ["apiKey"],
3275
+ capabilities: [
3276
+ "convert files between 200+ formats",
3277
+ "merge PDFs and documents",
3278
+ "optimize images and PDFs",
3279
+ "capture website screenshots",
3280
+ "create thumbnails from documents",
3281
+ "extract text from PDFs (OCR)",
3282
+ "convert spreadsheets to CSV/JSON",
3283
+ "watermark PDFs",
3284
+ "compress videos",
3285
+ "manage conversion jobs and tasks",
3286
+ ],
3287
+ endpoints: {
3288
+ // Jobs (multi-step conversion pipelines)
3289
+ create_job: { method: "POST", path: "/jobs", body: { tasks: {} } },
3290
+ list_jobs: { method: "GET", path: "/jobs", query: ["status", "tag", "per_page", "page"] },
3291
+ get_job: { method: "GET", path: "/jobs/{jobId}" },
3292
+ delete_job: { method: "DELETE", path: "/jobs/{jobId}" },
3293
+ wait_job: { method: "GET", path: "/jobs/{jobId}/wait" },
3294
+
3295
+ // Tasks
3296
+ create_task: { method: "POST", path: "/tasks", body: { operation: "", input: "" } },
3297
+ list_tasks: { method: "GET", path: "/tasks", query: ["status", "operation", "job_id", "per_page", "page"] },
3298
+ get_task: { method: "GET", path: "/tasks/{taskId}" },
3299
+ delete_task: { method: "DELETE", path: "/tasks/{taskId}" },
3300
+ wait_task: { method: "GET", path: "/tasks/{taskId}/wait" },
3301
+ cancel_task: { method: "POST", path: "/tasks/{taskId}/cancel" },
3302
+ retry_task: { method: "POST", path: "/tasks/{taskId}/retry" },
3303
+
3304
+ // Conversion operations
3305
+ convert: { method: "POST", path: "/convert", body: { input: "", input_format: "", output_format: "" } },
3306
+ optimize: { method: "POST", path: "/optimize", body: { input: "", input_format: "" } },
3307
+ capture_website: { method: "POST", path: "/capture-website", body: { url: "", output_format: "pdf" } },
3308
+ create_thumbnail: { method: "POST", path: "/thumbnail", body: { input: "", output_format: "png" } },
3309
+ merge: { method: "POST", path: "/merge", body: { input: [], output_format: "pdf" } },
3310
+ create_archive: { method: "POST", path: "/archive", body: { input: [], output_format: "zip" } },
3311
+ watermark: { method: "POST", path: "/watermark", body: { input: "", input_format: "pdf" } },
3312
+ metadata: { method: "POST", path: "/metadata", body: { input: "", input_format: "" } },
3313
+
3314
+ // Import/Export (file transfer)
3315
+ import_url: { method: "POST", path: "/import/url", body: { url: "" } },
3316
+ import_upload: { method: "POST", path: "/import/upload" },
3317
+ import_s3: { method: "POST", path: "/import/s3", body: { bucket: "", region: "", key: "" } },
3318
+ import_google_cloud: { method: "POST", path: "/import/google-cloud-storage", body: { bucket: "", key: "" } },
3319
+ export_url: { method: "POST", path: "/export/url", body: { input: "" } },
3320
+ export_s3: { method: "POST", path: "/export/s3", body: { input: "", bucket: "", region: "", key: "" } },
3321
+ export_google_cloud: { method: "POST", path: "/export/google-cloud-storage", body: { input: "", bucket: "", key: "" } },
3322
+
3323
+ // Users & Usage
3324
+ get_user: { method: "GET", path: "/users/me" },
3325
+ get_balance: { method: "GET", path: "/users/me/balance" },
3326
+
3327
+ // Webhooks
3328
+ create_webhook: { method: "POST", path: "/webhooks", body: { url: "", events: [] } },
3329
+ list_webhooks: { method: "GET", path: "/webhooks" },
3330
+ delete_webhook: { method: "DELETE", path: "/webhooks/{webhookId}" },
3331
+ },
3332
+ authHeader: (creds) => ({ "Authorization": `Bearer ${creds.apiKey}`, "Content-Type": "application/json" }),
3333
+ },
3334
+
2902
3335
  };
2903
3336
 
2904
3337
  // ── Helpers ────────────────────────────────────────────────