@opencx/mcp 1.15.75 → 1.15.77

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.
Files changed (83) hide show
  1. package/dist/campaign-tools.spec.js +32 -0
  2. package/dist/campaign-tools.spec.js.map +1 -1
  3. package/dist/create-server-options.spec.js +19 -0
  4. package/dist/create-server-options.spec.js.map +1 -1
  5. package/dist/http.d.ts +3 -0
  6. package/dist/http.d.ts.map +1 -1
  7. package/dist/http.js +6 -2
  8. package/dist/http.js.map +1 -1
  9. package/dist/integrations.d.ts +7 -0
  10. package/dist/integrations.d.ts.map +1 -0
  11. package/dist/integrations.js +18 -0
  12. package/dist/integrations.js.map +1 -0
  13. package/dist/salesforce-ai-reply-templates.spec.js +4 -1
  14. package/dist/salesforce-ai-reply-templates.spec.js.map +1 -1
  15. package/dist/schema.d.ts +13509 -10726
  16. package/dist/schema.d.ts.map +1 -1
  17. package/dist/server.d.ts +6 -0
  18. package/dist/server.d.ts.map +1 -1
  19. package/dist/server.js +27 -2
  20. package/dist/server.js.map +1 -1
  21. package/dist/tool-annotations.spec.js +5 -1
  22. package/dist/tool-annotations.spec.js.map +1 -1
  23. package/dist/tools/campaign-channel.d.ts.map +1 -1
  24. package/dist/tools/campaign-channel.js +55 -0
  25. package/dist/tools/campaign-channel.js.map +1 -1
  26. package/dist/tools/campaign-spine.d.ts.map +1 -1
  27. package/dist/tools/campaign-spine.js +34 -0
  28. package/dist/tools/campaign-spine.js.map +1 -1
  29. package/dist/tools/dynamics365-integration.d.ts +4 -0
  30. package/dist/tools/dynamics365-integration.d.ts.map +1 -0
  31. package/dist/tools/dynamics365-integration.js +45 -0
  32. package/dist/tools/dynamics365-integration.js.map +1 -0
  33. package/dist/tools/email.d.ts.map +1 -1
  34. package/dist/tools/email.js +24 -0
  35. package/dist/tools/email.js.map +1 -1
  36. package/dist/tools/freshchat-integration.d.ts +4 -0
  37. package/dist/tools/freshchat-integration.d.ts.map +1 -0
  38. package/dist/tools/freshchat-integration.js +54 -0
  39. package/dist/tools/freshchat-integration.js.map +1 -0
  40. package/dist/tools/freshdesk-integration.d.ts +4 -0
  41. package/dist/tools/freshdesk-integration.d.ts.map +1 -0
  42. package/dist/tools/freshdesk-integration.js +68 -0
  43. package/dist/tools/freshdesk-integration.js.map +1 -0
  44. package/dist/tools/front-integration.d.ts +4 -0
  45. package/dist/tools/front-integration.d.ts.map +1 -0
  46. package/dist/tools/front-integration.js +52 -0
  47. package/dist/tools/front-integration.js.map +1 -0
  48. package/dist/tools/gorgias-integration.d.ts +4 -0
  49. package/dist/tools/gorgias-integration.d.ts.map +1 -0
  50. package/dist/tools/gorgias-integration.js +24 -0
  51. package/dist/tools/gorgias-integration.js.map +1 -0
  52. package/dist/tools/hubspot-integration.d.ts +4 -0
  53. package/dist/tools/hubspot-integration.d.ts.map +1 -0
  54. package/dist/tools/hubspot-integration.js +50 -0
  55. package/dist/tools/hubspot-integration.js.map +1 -0
  56. package/dist/tools/infobip-integration.d.ts +4 -0
  57. package/dist/tools/infobip-integration.d.ts.map +1 -0
  58. package/dist/tools/infobip-integration.js +68 -0
  59. package/dist/tools/infobip-integration.js.map +1 -0
  60. package/dist/tools/intercom-integration.d.ts +4 -0
  61. package/dist/tools/intercom-integration.d.ts.map +1 -0
  62. package/dist/tools/intercom-integration.js +74 -0
  63. package/dist/tools/intercom-integration.js.map +1 -0
  64. package/dist/tools/macros.d.ts.map +1 -1
  65. package/dist/tools/macros.js +9 -1
  66. package/dist/tools/macros.js.map +1 -1
  67. package/dist/tools/salesforce-integration.d.ts +4 -0
  68. package/dist/tools/salesforce-integration.d.ts.map +1 -0
  69. package/dist/tools/salesforce-integration.js +65 -0
  70. package/dist/tools/salesforce-integration.js.map +1 -0
  71. package/dist/tools/team-settings.d.ts +2 -0
  72. package/dist/tools/team-settings.d.ts.map +1 -1
  73. package/dist/tools/team-settings.js +8 -0
  74. package/dist/tools/team-settings.js.map +1 -1
  75. package/dist/tools/twilio-flex-integration.d.ts +4 -0
  76. package/dist/tools/twilio-flex-integration.d.ts.map +1 -0
  77. package/dist/tools/twilio-flex-integration.js +44 -0
  78. package/dist/tools/twilio-flex-integration.js.map +1 -0
  79. package/dist/tools/zendesk-integration.d.ts +4 -0
  80. package/dist/tools/zendesk-integration.d.ts.map +1 -0
  81. package/dist/tools/zendesk-integration.js +65 -0
  82. package/dist/tools/zendesk-integration.js.map +1 -0
  83. package/package.json +5 -1
@@ -0,0 +1,54 @@
1
+ import { z } from 'zod';
2
+ import { jsonContent } from '../api-client.js';
3
+ // Registered by createServer only when the org has this integration connected.
4
+ export function registerFreshchatIntegrationTools(server, client) {
5
+ server.registerTool('get_freshchat_settings', {
6
+ description: 'Get the Freshchat integration settings: the agent the AI acts as, whether it handles every conversation, and where handoffs go. The access token is never returned; connected:false means Freshchat is not connected.',
7
+ annotations: { title: 'Get Freshchat settings', readOnlyHint: true },
8
+ }, async () => jsonContent((await client.GET('/integrations/freshchat/settings')).data));
9
+ server.registerTool('update_freshchat_settings', {
10
+ description: 'Change Freshchat integration settings. Pass only the fields to change; the rest stay as they are. assign_to_agent needs handoff_agent_email (not the AI agent), assign_to_group needs handoff_group_id (see list_freshchat_groups). The access token and domain cannot be changed here.',
11
+ inputSchema: {
12
+ default_agent_email: z
13
+ .string()
14
+ .email()
15
+ .optional()
16
+ .describe('Freshchat agent the AI acts as: conversations assigned to it are handled by the AI'),
17
+ enabled: z.boolean().optional().describe('false pauses the integration'),
18
+ auto_handle_all_incoming_chats: z
19
+ .boolean()
20
+ .optional()
21
+ .describe('true = the AI handles every incoming conversation, not only those assigned to its agent'),
22
+ handoff_behavior: z
23
+ .enum(['unassign', 'freshchat_automation', 'assign_to_agent', 'assign_to_group'])
24
+ .optional()
25
+ .describe('On handoff: unassign (back to the queue), freshchat_automation (Freshchat assignment rules decide), assign_to_agent, assign_to_group'),
26
+ handoff_agent_email: z
27
+ .string()
28
+ .email()
29
+ .nullable()
30
+ .optional()
31
+ .describe('Agent that receives handoffs'),
32
+ handoff_group_id: z
33
+ .string()
34
+ .min(1)
35
+ .nullable()
36
+ .optional()
37
+ .describe('Group that receives handoffs'),
38
+ handoff_marker_property_name: z
39
+ .string()
40
+ .min(1)
41
+ .optional()
42
+ .describe('Custom conversation property set to true on handoff (default cf_opencx_handed_off)'),
43
+ },
44
+ annotations: { title: 'Update Freshchat settings', destructiveHint: true },
45
+ }, async (args) => {
46
+ const body = args;
47
+ return jsonContent((await client.PATCH('/integrations/freshchat/settings', { body })).data);
48
+ });
49
+ server.registerTool('list_freshchat_groups', {
50
+ description: 'List the Freshchat groups (id, name) to pick the handoff group.',
51
+ annotations: { title: 'List Freshchat groups', readOnlyHint: true },
52
+ }, async () => jsonContent((await client.GET('/integrations/freshchat/groups')).data));
53
+ }
54
+ //# sourceMappingURL=freshchat-integration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"freshchat-integration.js","sourceRoot":"","sources":["../../src/tools/freshchat-integration.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAO/C,+EAA+E;AAC/E,MAAM,UAAU,iCAAiC,CAAC,MAAiB,EAAE,MAAoB;IACvF,MAAM,CAAC,YAAY,CACjB,wBAAwB,EACxB;QACE,WAAW,EACT,uNAAuN;QACzN,WAAW,EAAE,EAAE,KAAK,EAAE,wBAAwB,EAAE,YAAY,EAAE,IAAI,EAAE;KACrE,EACD,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC,CAAC,IAAI,CAAC,CACrF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,2BAA2B,EAC3B;QACE,WAAW,EACT,yRAAyR;QAC3R,WAAW,EAAE;YACX,mBAAmB,EAAE,CAAC;iBACnB,MAAM,EAAE;iBACR,KAAK,EAAE;iBACP,QAAQ,EAAE;iBACV,QAAQ,CACP,oFAAoF,CACrF;YACH,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;YACxE,8BAA8B,EAAE,CAAC;iBAC9B,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CACP,yFAAyF,CAC1F;YACH,gBAAgB,EAAE,CAAC;iBAChB,IAAI,CAAC,CAAC,UAAU,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;iBAChF,QAAQ,EAAE;iBACV,QAAQ,CACP,sIAAsI,CACvI;YACH,mBAAmB,EAAE,CAAC;iBACnB,MAAM,EAAE;iBACR,KAAK,EAAE;iBACP,QAAQ,EAAE;iBACV,QAAQ,EAAE;iBACV,QAAQ,CAAC,8BAA8B,CAAC;YAC3C,gBAAgB,EAAE,CAAC;iBAChB,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,EAAE;iBACV,QAAQ,EAAE;iBACV,QAAQ,CAAC,8BAA8B,CAAC;YAC3C,4BAA4B,EAAE,CAAC;iBAC5B,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,EAAE;iBACV,QAAQ,CACP,oFAAoF,CACrF;SACJ;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,2BAA2B,EAAE,eAAe,EAAE,IAAI,EAAE;KAC3E,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,IAAI,GAAe,IAAI,CAAC;QAC9B,OAAO,WAAW,CAAC,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC9F,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,WAAW,EAAE,iEAAiE;QAC9E,WAAW,EAAE,EAAE,KAAK,EAAE,uBAAuB,EAAE,YAAY,EAAE,IAAI,EAAE;KACpE,EACD,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,CAAC,IAAI,CAAC,CACnF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { OpenCXClient } from '../api-client.js';
3
+ export declare function registerFreshdeskIntegrationTools(server: McpServer, client: OpenCXClient): void;
4
+ //# sourceMappingURL=freshdesk-integration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"freshdesk-integration.d.ts","sourceRoot":"","sources":["../../src/tools/freshdesk-integration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAOrD,wBAAgB,iCAAiC,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,QA4FxF"}
@@ -0,0 +1,68 @@
1
+ import { z } from 'zod';
2
+ import { jsonContent } from '../api-client.js';
3
+ // Registered by createServer only when the org has this integration connected.
4
+ export function registerFreshdeskIntegrationTools(server, client) {
5
+ server.registerTool('get_freshdesk_settings', {
6
+ description: 'Get the Freshdesk integration settings: which tickets the AI handles, where handoffs go, extra AI agents and the assist-mode note footer. The API key is never returned; connected:false means Freshdesk is not connected.',
7
+ annotations: { title: 'Get Freshdesk settings', readOnlyHint: true },
8
+ }, async () => jsonContent((await client.GET('/integrations/freshdesk/settings')).data));
9
+ server.registerTool('update_freshdesk_settings', {
10
+ description: 'Change Freshdesk integration settings. Pass only the fields to change; the rest stay as they are. Saved like the dashboard: the connection is re-checked and setup issues (e.g. a missing handoff marker field) come back in warnings. assign_to_agent needs handoff_agent_id, assign_to_group needs handoff_group_id. The domain and API key cannot be changed here.',
11
+ inputSchema: {
12
+ auto_handle_all_incoming_chats: z
13
+ .boolean()
14
+ .optional()
15
+ .describe('true = the AI handles every new ticket; false = only tickets assigned to its agent or default_group_id'),
16
+ default_group_id: z
17
+ .string()
18
+ .min(1)
19
+ .nullable()
20
+ .optional()
21
+ .describe('Group whose tickets the AI handles when not handling all (see list_freshdesk_groups); null = none'),
22
+ handoff_behavior: z
23
+ .enum(['unassign', 'freshdesk_automation', 'assign_to_agent', 'assign_to_group'])
24
+ .optional()
25
+ .describe('On handoff: unassign, freshdesk_automation (Freshdesk rules decide), assign_to_agent (handoff_agent_id), assign_to_group (handoff_group_id)'),
26
+ handoff_agent_id: z
27
+ .string()
28
+ .min(1)
29
+ .nullable()
30
+ .optional()
31
+ .describe('Agent that receives handoffs (see list_freshdesk_agents)'),
32
+ handoff_group_id: z
33
+ .string()
34
+ .min(1)
35
+ .nullable()
36
+ .optional()
37
+ .describe('Group that receives handoffs'),
38
+ handoff_marker_property_name: z
39
+ .string()
40
+ .min(1)
41
+ .optional()
42
+ .describe('Custom checkbox ticket field (cf_ name) set to true on handoff'),
43
+ assist_mode_footer_message: z
44
+ .string()
45
+ .nullable()
46
+ .optional()
47
+ .describe('Footer added to the private notes the AI leaves in assist mode; null = none'),
48
+ ai_agent_ids: z
49
+ .array(z.string().regex(/^\d+$/))
50
+ .max(25)
51
+ .optional()
52
+ .describe('Extra Freshdesk agent ids the AI also acts as (replaces the list; [] clears)'),
53
+ },
54
+ annotations: { title: 'Update Freshdesk settings', destructiveHint: true },
55
+ }, async (args) => {
56
+ const body = args;
57
+ return jsonContent((await client.PATCH('/integrations/freshdesk/settings', { body })).data);
58
+ });
59
+ server.registerTool('list_freshdesk_groups', {
60
+ description: 'List the Freshdesk groups (id, name, auto-assignment) to pick the default or handoff group.',
61
+ annotations: { title: 'List Freshdesk groups', readOnlyHint: true },
62
+ }, async () => jsonContent((await client.GET('/integrations/freshdesk/groups')).data));
63
+ server.registerTool('list_freshdesk_agents', {
64
+ description: 'List the Freshdesk agents other than the AI agent (id, name, email) to pick the handoff agent or extra AI agent ids.',
65
+ annotations: { title: 'List Freshdesk agents', readOnlyHint: true },
66
+ }, async () => jsonContent((await client.GET('/integrations/freshdesk/agents')).data));
67
+ }
68
+ //# sourceMappingURL=freshdesk-integration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"freshdesk-integration.js","sourceRoot":"","sources":["../../src/tools/freshdesk-integration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { OpenCXClient } from '../api-client.js';
3
+ export declare function registerFrontIntegrationTools(server: McpServer, client: OpenCXClient): void;
4
+ //# sourceMappingURL=front-integration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"front-integration.d.ts","sourceRoot":"","sources":["../../src/tools/front-integration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAOrD,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,QA4EpF"}
@@ -0,0 +1,52 @@
1
+ import { z } from 'zod';
2
+ import { jsonContent } from '../api-client.js';
3
+ // Registered by createServer only when the org has this integration connected.
4
+ export function registerFrontIntegrationTools(server, client) {
5
+ server.registerTool('get_front_settings', {
6
+ description: 'Read the Front integration settings: AI teammate, handoff inbox, signature and reply toggles. The API token is never returned.',
7
+ annotations: { title: 'Get Front settings', readOnlyHint: true },
8
+ }, async () => jsonContent((await client.GET('/integrations/front/settings')).data));
9
+ server.registerTool('update_front_settings', {
10
+ description: 'Change Front integration settings. Only the fields you pass change. The API token cannot be changed here — the user reconnects in Settings → Integrations.',
11
+ inputSchema: {
12
+ default_teammate_id: z
13
+ .string()
14
+ .optional()
15
+ .describe('Front teammate the AI acts as; conversations assigned to it get AI replies (from list_front_teammates)'),
16
+ handoff_inbox_id: z
17
+ .string()
18
+ .optional()
19
+ .describe('Inbox conversations move to on handoff to a human (from list_front_inboxes)'),
20
+ signature_id: z
21
+ .string()
22
+ .nullable()
23
+ .optional()
24
+ .describe('Signature on AI email replies (from list_front_signatures); null = none'),
25
+ handle_unassigned: z
26
+ .boolean()
27
+ .optional()
28
+ .describe('AI also replies to unassigned conversations'),
29
+ process_on_assignment: z
30
+ .boolean()
31
+ .optional()
32
+ .describe('Assigning a conversation to the AI teammate triggers an AI reply'),
33
+ },
34
+ annotations: { title: 'Update Front settings', destructiveHint: false },
35
+ }, async (args) => {
36
+ const body = args;
37
+ return jsonContent((await client.PATCH('/integrations/front/settings', { body })).data);
38
+ });
39
+ server.registerTool('list_front_teammates', {
40
+ description: 'List the teammates of the connected Front account (id, email, name).',
41
+ annotations: { title: 'List Front teammates', readOnlyHint: true },
42
+ }, async () => jsonContent((await client.GET('/integrations/front/teammates')).data));
43
+ server.registerTool('list_front_inboxes', {
44
+ description: 'List the inboxes of the connected Front account (id, name).',
45
+ annotations: { title: 'List Front inboxes', readOnlyHint: true },
46
+ }, async () => jsonContent((await client.GET('/integrations/front/inboxes')).data));
47
+ server.registerTool('list_front_signatures', {
48
+ description: 'List the signatures available to the AI teammate. Fails until default_teammate_id is set.',
49
+ annotations: { title: 'List Front signatures', readOnlyHint: true },
50
+ }, async () => jsonContent((await client.GET('/integrations/front/signatures')).data));
51
+ }
52
+ //# sourceMappingURL=front-integration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"front-integration.js","sourceRoot":"","sources":["../../src/tools/front-integration.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAO/C,+EAA+E;AAC/E,MAAM,UAAU,6BAA6B,CAAC,MAAiB,EAAE,MAAoB;IACnF,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;QACE,WAAW,EACT,gIAAgI;QAClI,WAAW,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,IAAI,EAAE;KACjE,EACD,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAC,IAAI,CAAC,CACjF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,WAAW,EACT,4JAA4J;QAC9J,WAAW,EAAE;YACX,mBAAmB,EAAE,CAAC;iBACnB,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,wGAAwG,CACzG;YACH,gBAAgB,EAAE,CAAC;iBAChB,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,6EAA6E,CAAC;YAC1F,YAAY,EAAE,CAAC;iBACZ,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,EAAE;iBACV,QAAQ,CAAC,yEAAyE,CAAC;YACtF,iBAAiB,EAAE,CAAC;iBACjB,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,6CAA6C,CAAC;YAC1D,qBAAqB,EAAE,CAAC;iBACrB,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,kEAAkE,CAAC;SAChF;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,uBAAuB,EAAE,eAAe,EAAE,KAAK,EAAE;KACxE,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,IAAI,GAAe,IAAI,CAAC;QAC9B,OAAO,WAAW,CAAC,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC1F,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,WAAW,EAAE,sEAAsE;QACnF,WAAW,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,YAAY,EAAE,IAAI,EAAE;KACnE,EACD,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC,CAAC,IAAI,CAAC,CAClF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;QACE,WAAW,EAAE,6DAA6D;QAC1E,WAAW,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,IAAI,EAAE;KACjE,EACD,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC,CAAC,IAAI,CAAC,CAChF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,WAAW,EACT,2FAA2F;QAC7F,WAAW,EAAE,EAAE,KAAK,EAAE,uBAAuB,EAAE,YAAY,EAAE,IAAI,EAAE;KACpE,EACD,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,CAAC,IAAI,CAAC,CACnF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { OpenCXClient } from '../api-client.js';
3
+ export declare function registerGorgiasIntegrationTools(server: McpServer, client: OpenCXClient): void;
4
+ //# sourceMappingURL=gorgias-integration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gorgias-integration.d.ts","sourceRoot":"","sources":["../../src/tools/gorgias-integration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAOrD,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,QA8BtF"}
@@ -0,0 +1,24 @@
1
+ import { z } from 'zod';
2
+ import { jsonContent } from '../api-client.js';
3
+ // Registered by createServer only when the org has this integration connected.
4
+ export function registerGorgiasIntegrationTools(server, client) {
5
+ server.registerTool('get_gorgias_settings', {
6
+ description: 'Get the Gorgias integration settings: the domain prefix and the Gorgias user tickets are assigned to. The API key is never returned; connected:false means Gorgias is not connected.',
7
+ annotations: { title: 'Get Gorgias settings', readOnlyHint: true },
8
+ }, async () => jsonContent((await client.GET('/integrations/gorgias/settings')).data));
9
+ server.registerTool('update_gorgias_settings', {
10
+ description: 'Change the Gorgias user OpenCX assigns tickets to. The API key and domain cannot be changed here (the dashboard connects Gorgias).',
11
+ inputSchema: {
12
+ default_user_id: z
13
+ .string()
14
+ .min(1)
15
+ .optional()
16
+ .describe('Gorgias user id that tickets are assigned to'),
17
+ },
18
+ annotations: { title: 'Update Gorgias settings', destructiveHint: true },
19
+ }, async (args) => {
20
+ const body = args;
21
+ return jsonContent((await client.PATCH('/integrations/gorgias/settings', { body })).data);
22
+ });
23
+ }
24
+ //# sourceMappingURL=gorgias-integration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gorgias-integration.js","sourceRoot":"","sources":["../../src/tools/gorgias-integration.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAO/C,+EAA+E;AAC/E,MAAM,UAAU,+BAA+B,CAAC,MAAiB,EAAE,MAAoB;IACrF,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,WAAW,EACT,sLAAsL;QACxL,WAAW,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,YAAY,EAAE,IAAI,EAAE;KACnE,EACD,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,CAAC,IAAI,CAAC,CACnF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,yBAAyB,EACzB;QACE,WAAW,EACT,oIAAoI;QACtI,WAAW,EAAE;YACX,eAAe,EAAE,CAAC;iBACf,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,EAAE;iBACV,QAAQ,CAAC,8CAA8C,CAAC;SAC5D;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,yBAAyB,EAAE,eAAe,EAAE,IAAI,EAAE;KACzE,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,IAAI,GAAe,IAAI,CAAC;QAC9B,OAAO,WAAW,CAAC,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC5F,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { OpenCXClient } from '../api-client.js';
3
+ export declare function registerHubspotIntegrationTools(server: McpServer, client: OpenCXClient): void;
4
+ //# sourceMappingURL=hubspot-integration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hubspot-integration.d.ts","sourceRoot":"","sources":["../../src/tools/hubspot-integration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAOrD,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,QA8DtF"}
@@ -0,0 +1,50 @@
1
+ import { z } from 'zod';
2
+ import { jsonContent } from '../api-client.js';
3
+ // Registered by createServer only when the org has this integration connected.
4
+ export function registerHubspotIntegrationTools(server, client) {
5
+ server.registerTool('get_hubspot_settings', {
6
+ description: "Get the HubSpot integration settings: the AI's seat user, who handed-off conversations are assigned to, reply-all, the close stage and the handoff comment. Credentials are never returned; connected:false means HubSpot is not connected.",
7
+ annotations: { title: 'Get HubSpot settings', readOnlyHint: true },
8
+ }, async () => jsonContent((await client.GET('/integrations/hubspot/settings')).data));
9
+ server.registerTool('update_hubspot_settings', {
10
+ description: 'Change HubSpot integration settings. Pass only the fields to change. User ids come from list_hubspot_owners.',
11
+ inputSchema: {
12
+ default_user_id: z
13
+ .string()
14
+ .min(1)
15
+ .optional()
16
+ .describe('HubSpot user the AI acts as; conversations the AI owns move to this user'),
17
+ handoff_assignment_type: z
18
+ .enum(['unassigned', 'assign_to_user', 'leave_unchanged'])
19
+ .optional()
20
+ .describe('After handoff: unassigned = clear the owner, assign_to_user = give it to handoff_user_id, leave_unchanged = keep the owner'),
21
+ handoff_user_id: z
22
+ .string()
23
+ .nullable()
24
+ .optional()
25
+ .describe('HubSpot user handed-off conversations go to; required with assign_to_user'),
26
+ ai_reply_to_all_enabled: z
27
+ .boolean()
28
+ .optional()
29
+ .describe('true = AI email replies go to everyone on the thread, not just the sender'),
30
+ close_ticket_stage_id: z
31
+ .string()
32
+ .nullable()
33
+ .optional()
34
+ .describe('Ticket pipeline stage id used when a session closes; null = the pipeline default'),
35
+ post_handoff_note: z
36
+ .boolean()
37
+ .optional()
38
+ .describe('true = a handoff posts a summary comment in HubSpot'),
39
+ },
40
+ annotations: { title: 'Update HubSpot settings', destructiveHint: true },
41
+ }, async (input) => {
42
+ const body = input;
43
+ return jsonContent((await client.PATCH('/integrations/hubspot/settings', { body })).data);
44
+ });
45
+ server.registerTool('list_hubspot_owners', {
46
+ description: 'List the users of the connected HubSpot account (user_id, name, email) — the valid values for default_user_id and handoff_user_id.',
47
+ annotations: { title: 'List HubSpot users', readOnlyHint: true },
48
+ }, async () => jsonContent((await client.GET('/integrations/hubspot/owners')).data));
49
+ }
50
+ //# sourceMappingURL=hubspot-integration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hubspot-integration.js","sourceRoot":"","sources":["../../src/tools/hubspot-integration.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAO/C,+EAA+E;AAC/E,MAAM,UAAU,+BAA+B,CAAC,MAAiB,EAAE,MAAoB;IACrF,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,WAAW,EACT,6OAA6O;QAC/O,WAAW,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,YAAY,EAAE,IAAI,EAAE;KACnE,EACD,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,CAAC,IAAI,CAAC,CACnF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,yBAAyB,EACzB;QACE,WAAW,EACT,8GAA8G;QAChH,WAAW,EAAE;YACX,eAAe,EAAE,CAAC;iBACf,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,EAAE;iBACV,QAAQ,CAAC,0EAA0E,CAAC;YACvF,uBAAuB,EAAE,CAAC;iBACvB,IAAI,CAAC,CAAC,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,CAAC,CAAC;iBACzD,QAAQ,EAAE;iBACV,QAAQ,CAAC,4HAA4H,CAAC;YACzI,eAAe,EAAE,CAAC;iBACf,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,EAAE;iBACV,QAAQ,CAAC,2EAA2E,CAAC;YACxF,uBAAuB,EAAE,CAAC;iBACvB,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,2EAA2E,CAAC;YACxF,qBAAqB,EAAE,CAAC;iBACrB,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,EAAE;iBACV,QAAQ,CAAC,kFAAkF,CAAC;YAC/F,iBAAiB,EAAE,CAAC;iBACjB,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,qDAAqD,CAAC;SACnE;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,yBAAyB,EAAE,eAAe,EAAE,IAAI,EAAE;KACzE,EACD,KAAK,EAAE,KAAK,EAAE,EAAE;QACd,MAAM,IAAI,GAAe,KAAK,CAAC;QAC/B,OAAO,WAAW,CAAC,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC5F,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;QACE,WAAW,EACT,oIAAoI;QACtI,WAAW,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,IAAI,EAAE;KACjE,EACD,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAC,IAAI,CAAC,CACjF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { OpenCXClient } from '../api-client.js';
3
+ export declare function registerInfobipIntegrationTools(server: McpServer, client: OpenCXClient): void;
4
+ //# sourceMappingURL=infobip-integration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"infobip-integration.d.ts","sourceRoot":"","sources":["../../src/tools/infobip-integration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAOrD,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,QAyFtF"}
@@ -0,0 +1,68 @@
1
+ import { z } from 'zod';
2
+ import { jsonContent } from '../api-client.js';
3
+ // Registered by createServer only when the org has this integration connected.
4
+ export function registerInfobipIntegrationTools(server, client) {
5
+ server.registerTool('get_infobip_settings', {
6
+ description: 'Read the Infobip integration settings: AI agent, queues, reply toggles, resolution behaviour and rollout. The API key is never returned.',
7
+ annotations: { title: 'Get Infobip settings', readOnlyHint: true },
8
+ }, async () => jsonContent((await client.GET('/integrations/infobip/settings')).data));
9
+ server.registerTool('update_infobip_settings', {
10
+ description: 'Change Infobip integration settings. Only the fields you pass change; null clears an id. Credentials cannot be changed here — the user reconnects in Settings → Integrations.',
11
+ inputSchema: {
12
+ default_agent_id: z
13
+ .string()
14
+ .nullable()
15
+ .optional()
16
+ .describe('Infobip agent the AI acts as; conversations assigned to it get AI replies (from list_infobip_agents)'),
17
+ handoff_queue_id: z
18
+ .string()
19
+ .nullable()
20
+ .optional()
21
+ .describe('Queue conversations go to on handoff to a human (from list_infobip_queues)'),
22
+ ai_agent_queue_id: z
23
+ .string()
24
+ .nullable()
25
+ .optional()
26
+ .describe('Queue whose unassigned conversations the AI claims before a human can; null = off'),
27
+ handle_unassigned: z
28
+ .boolean()
29
+ .optional()
30
+ .describe('AI also replies to unassigned conversations'),
31
+ process_on_assignment: z
32
+ .boolean()
33
+ .optional()
34
+ .describe('Assigning a conversation to the AI agent triggers an AI reply'),
35
+ close_on_resolve: z
36
+ .boolean()
37
+ .optional()
38
+ .describe('Resolving the session also updates the Infobip conversation status'),
39
+ on_ai_resolution: z
40
+ .enum(['close', 'solve'])
41
+ .optional()
42
+ .describe("'close' → CLOSED (final), 'solve' → SOLVED (shown as Resolved, reopenable)"),
43
+ rollout_conversation_count: z
44
+ .number()
45
+ .int()
46
+ .min(0)
47
+ .optional()
48
+ .describe('Send every Nth eligible conversation to the AI via the rollout URL; 0 = off'),
49
+ handle_out_of_working_hours: z
50
+ .boolean()
51
+ .optional()
52
+ .describe('Rollout may send conversations to the AI outside office hours'),
53
+ },
54
+ annotations: { title: 'Update Infobip settings', destructiveHint: false },
55
+ }, async (args) => {
56
+ const body = args;
57
+ return jsonContent((await client.PATCH('/integrations/infobip/settings', { body })).data);
58
+ });
59
+ server.registerTool('list_infobip_agents', {
60
+ description: 'List the agents of the connected Infobip account (id, name, role, status).',
61
+ annotations: { title: 'List Infobip agents', readOnlyHint: true },
62
+ }, async () => jsonContent((await client.GET('/integrations/infobip/agents')).data));
63
+ server.registerTool('list_infobip_queues', {
64
+ description: 'List the queues of the connected Infobip account (id, name). Empty on accounts without queues.',
65
+ annotations: { title: 'List Infobip queues', readOnlyHint: true },
66
+ }, async () => jsonContent((await client.GET('/integrations/infobip/queues')).data));
67
+ }
68
+ //# sourceMappingURL=infobip-integration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"infobip-integration.js","sourceRoot":"","sources":["../../src/tools/infobip-integration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { OpenCXClient } from '../api-client.js';
3
+ export declare function registerIntercomIntegrationTools(server: McpServer, client: OpenCXClient): void;
4
+ //# sourceMappingURL=intercom-integration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intercom-integration.d.ts","sourceRoot":"","sources":["../../src/tools/intercom-integration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAgBrD,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,QA4FvF"}
@@ -0,0 +1,74 @@
1
+ import { z } from 'zod';
2
+ import { jsonContent } from '../api-client.js';
3
+ const handoffAssignmentTypes = [
4
+ 'unassigned',
5
+ 'team',
6
+ 'team_round_robin',
7
+ 'team_least_busy',
8
+ 'admin',
9
+ 'both_admin_and_team',
10
+ ];
11
+ // Registered by createServer only when the org has this integration connected.
12
+ export function registerIntercomIntegrationTools(server, client) {
13
+ server.registerTool('get_intercom_settings', {
14
+ description: 'Get the Intercom integration settings: the admin the AI acts as, where handoffs go, full conversation sync, attachment forwarding and snooze sync. The access token is never returned; connected:false means Intercom is not connected.',
15
+ annotations: { title: 'Get Intercom settings', readOnlyHint: true },
16
+ }, async () => jsonContent((await client.GET('/integrations/intercom/settings')).data));
17
+ server.registerTool('update_intercom_settings', {
18
+ description: 'Change Intercom integration settings. Pass only the fields to change; the rest stay as they are. The access token and workspace cannot be changed here (the dashboard connects Intercom). Use list_intercom_admins / list_intercom_teams for ids and list_custom_statuses for the snooze status.',
19
+ inputSchema: {
20
+ default_admin_id: z
21
+ .string()
22
+ .min(1)
23
+ .nullable()
24
+ .optional()
25
+ .describe('Intercom admin the AI acts as: conversations assigned to it are handled by the AI'),
26
+ handoff_assignment_type: z
27
+ .enum(handoffAssignmentTypes)
28
+ .optional()
29
+ .describe('Where a conversation goes on handoff: unassigned, team (handoff_assignment_type_team_id), team_round_robin / team_least_busy (a teammate of that team), admin (handoff_assignment_type_admin_id), both_admin_and_team'),
30
+ handoff_assignment_type_admin_id: z
31
+ .string()
32
+ .optional()
33
+ .describe('Admin that receives handoffs; empty string clears it'),
34
+ handoff_assignment_type_team_id: z
35
+ .string()
36
+ .optional()
37
+ .describe('Team that receives handoffs; empty string clears it'),
38
+ enable_full_conversation_sync: z
39
+ .boolean()
40
+ .optional()
41
+ .describe('true = mirror every Intercom conversation into OpenCX, not only the AI-handled ones'),
42
+ forward_unsupported_attachments: z
43
+ .boolean()
44
+ .optional()
45
+ .describe('true = pass PDFs, video and audio on so the AI can acknowledge them'),
46
+ snooze_sub_status_id: z
47
+ .string()
48
+ .uuid()
49
+ .nullable()
50
+ .optional()
51
+ .describe('Custom status mirrored to and from the Intercom snoozed state; null turns snooze sync off'),
52
+ snooze_duration_hours: z
53
+ .number()
54
+ .int()
55
+ .min(1)
56
+ .max(720)
57
+ .optional()
58
+ .describe('Hours a conversation stays snoozed on Intercom when that status is applied'),
59
+ },
60
+ annotations: { title: 'Update Intercom settings', destructiveHint: true },
61
+ }, async (args) => {
62
+ const body = args;
63
+ return jsonContent((await client.PATCH('/integrations/intercom/settings', { body })).data);
64
+ });
65
+ server.registerTool('list_intercom_admins', {
66
+ description: 'List the Intercom workspace admins (id, name, email) to pick the AI admin or the handoff admin.',
67
+ annotations: { title: 'List Intercom admins', readOnlyHint: true },
68
+ }, async () => jsonContent((await client.GET('/integrations/intercom/admins')).data));
69
+ server.registerTool('list_intercom_teams', {
70
+ description: 'List the Intercom workspace teams (id, name, admin ids) to pick the handoff team.',
71
+ annotations: { title: 'List Intercom teams', readOnlyHint: true },
72
+ }, async () => jsonContent((await client.GET('/integrations/intercom/teams')).data));
73
+ }
74
+ //# sourceMappingURL=intercom-integration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intercom-integration.js","sourceRoot":"","sources":["../../src/tools/intercom-integration.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"macros.d.ts","sourceRoot":"","sources":["../../src/tools/macros.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AA4DrD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,QAyNzE"}
1
+ {"version":3,"file":"macros.d.ts","sourceRoot":"","sources":["../../src/tools/macros.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAuErD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,QA4NzE"}
@@ -21,7 +21,9 @@ const macroOptionsSchema = z
21
21
  .max(3)
22
22
  .describe('Up to 3 options the customer can tap instead of typing, sent with the macro on channels that show them. A macro with options needs body text.');
23
23
  const macroBodySchema = {
24
- category: z.string().describe('Grouping/category the macro is filed under (e.g. "greetings").'),
24
+ category: z
25
+ .string()
26
+ .describe('Group the macro is filed under (e.g. "Billing / Refunds"): a section in Settings → Macros and in the inbox macro picker. "general" when it has none.'),
25
27
  title: z.string().describe('Macro display title shown in the inbox macro picker.'),
26
28
  content: z.string().describe(macroContentDescription),
27
29
  options: macroOptionsSchema.optional(),
@@ -29,6 +31,11 @@ const macroBodySchema = {
29
31
  .boolean()
30
32
  .optional()
31
33
  .describe('When true, this macro is never suggested to agents (they can still search for it and use it). Defaults to false.'),
34
+ allowed_team_ids: z
35
+ .array(z.string())
36
+ .max(50)
37
+ .optional()
38
+ .describe('Team IDs whose agents see this macro in the inbox. Empty or omitted = every agent. Admins with Macros settings access always see it.'),
32
39
  };
33
40
  const macroSettingsInput = {
34
41
  translation_languages: z
@@ -153,6 +160,7 @@ export function registerMacroTools(server, client) {
153
160
  content: macroBodySchema.content.optional(),
154
161
  options: macroOptionsSchema.optional(),
155
162
  exclude_from_suggestions: macroBodySchema.exclude_from_suggestions.describe('When true, this macro is never suggested to agents (they can still search for it and use it). Omit to leave it as it is.'),
163
+ allowed_team_ids: macroBodySchema.allowed_team_ids.describe('The FULL list of team IDs whose agents see this macro; `[]` = every agent. Omit to leave it as it is.'),
156
164
  },
157
165
  annotations: { title: 'Update macro', destructiveHint: true },
158
166
  }, async ({ id, ...body }) => {
@@ -1 +1 @@
1
- {"version":3,"file":"macros.js","sourceRoot":"","sources":["../../src/tools/macros.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"macros.js","sourceRoot":"","sources":["../../src/tools/macros.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAI/C,MAAM,uBAAuB,GAC3B,0oBAA0oB,CAAC;AAE7oB,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,UAAU,CAE3C,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC;KACzB,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;IACP,EAAE,EAAE,CAAC;SACF,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,mIAAmI,CACpI;IACH,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,IAAI,EAAE;SACN,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,EAAE,CAAC;SACP,QAAQ,CAAC,yEAAyE,CAAC;IACtF,IAAI,EAAE,CAAC;SACJ,IAAI,CAAC,gBAAgB,CAAC;SACtB,QAAQ,CACP,4JAA4J,CAC7J;CACJ,CAAC,CACH;KACA,GAAG,CAAC,CAAC,CAAC;KACN,QAAQ,CACP,+IAA+I,CAC5E,CAAC;AAExE,MAAM,eAAe,GAAG;IACtB,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,QAAQ,CACP,sJAAsJ,CACvJ;IACH,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;IAClF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IACrD,OAAO,EAAE,kBAAkB,CAAC,QAAQ,EAAE;IACtC,wBAAwB,EAAE,CAAC;SACxB,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CACP,kHAAkH,CACnH;IACH,gBAAgB,EAAE,CAAC;SAChB,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,GAAG,CAAC,EAAE,CAAC;SACP,QAAQ,EAAE;SACV,QAAQ,CACP,sIAAsI,CACvI;CACJ,CAAC;AAEF,MAAM,kBAAkB,GAAG;IACzB,qBAAqB,EAAE,CAAC;SACrB,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,GAAG,CAAC,EAAE,CAAC;SACP,QAAQ,CACP,kUAAkU,CACnU;CACJ,CAAC;AACF,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAsE,CAAC;AAElG,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,MAAoB;IACxE,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;QACE,WAAW,EACT,oSAAoS;QACtS,WAAW,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,IAAI,EAAE;KAC1D,EACD,KAAK,IAAI,EAAE;QACT,MAAM,IAAI,GAAG,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;QAChD,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,WAAW,EACX;QACE,WAAW,EAAE,yCAAyC;QACtD,WAAW,EAAE;YACX,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;SACpC;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,IAAI,EAAE;KACxD,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;QACf,MAAM,IAAI,GAAG,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACnF,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,WAAW,EACT,2TAA2T;QAC7T,WAAW,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,YAAY,EAAE,IAAI,EAAE;KACnE,EACD,KAAK,IAAI,EAAE;QACT,MAAM,IAAI,GAAG,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1D,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,gCAAgC,EAChC;QACE,WAAW,EACT,utBAAutB;QACztB,WAAW,EAAE;YACX,cAAc,EAAE,CAAC;iBACd,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,uDAAuD,CAAC;SACrE;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,gCAAgC,EAAE,YAAY,EAAE,IAAI,EAAE;KAC7E,EACD,KAAK,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE;QAC3B,MAAM,IAAI,GAAG,CACX,MAAM,MAAM,CAAC,GAAG,CAAC,6BAA6B,EAAE;YAC9C,MAAM,EAAE;gBACN,KAAK,EACH,cAAc,KAAK,SAAS;oBAC1B,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE;aAC5D;SACF,CAAC,CACH,CAAC,IAAI,CAAC;QACP,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,+BAA+B,EAC/B;QACE,WAAW,EACT,ucAAuc;QACzc,WAAW,EAAE;YACX,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;SACpC;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,+BAA+B,EAAE,YAAY,EAAE,IAAI,EAAE;KAC5E,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;QACf,MAAM,IAAI,GAAG,CACX,MAAM,MAAM,CAAC,GAAG,CAAC,kCAAkC,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CACnF,CAAC,IAAI,CAAC;QACP,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;QACE,WAAW,EACT,ibAAib;QACnb,WAAW,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,IAAI,EAAE;KACjE,EACD,KAAK,IAAI,EAAE;QACT,MAAM,IAAI,GAAG,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC;QACzD,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,WAAW,EACT,i5BAAi5B;QACn5B,WAAW,EAAE,kBAAkB;QAC/B,WAAW,EAAE,EAAE,KAAK,EAAE,uBAAuB,EAAE,eAAe,EAAE,IAAI,EAAE;KACvE,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,IAAI,GAAG,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACnE,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,wBAAwB,EACxB;QACE,WAAW,EACT,ybAAyb;QAC3b,WAAW,EAAE;YACX,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;SACpC;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,wBAAwB,EAAE,YAAY,EAAE,IAAI,EAAE;KACrE,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;QACf,MAAM,IAAI,GAAG,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,2BAA2B,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;aACvF,IAAI,CAAC;QACR,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;QACE,WAAW,EACT,kbAAkb;QACpb,WAAW,EAAE;YACX,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;YACnC,SAAS,EAAE,CAAC;iBACT,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,EAAE,CAAC;iBACP,QAAQ,EAAE;iBACV,QAAQ,CACP,oHAAoH,CACtC;SACnF;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,IAAI,EAAE;KACnE,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE;QACxB,MAAM,IAAI,GAAG,CACX,MAAM,MAAM,CAAC,IAAI,CAAC,uCAAuC,EAAE;YACzD,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;YACxB,IAAI;SACL,CAAC,CACH,CAAC,IAAI,CAAC;QACP,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,WAAW,EACT,8UAA8U;QAChV,WAAW,EAAE,eAAe;QAC5B,WAAW,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,KAAK,EAAE;KAC/D,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,IAAI,GAAG,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACnE,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,WAAW,EACT,sbAAsb;QACxb,WAAW,EAAE;YACX,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;YACnC,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC,QAAQ,EAAE;YAC7C,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC,QAAQ,EAAE;YACvC,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,QAAQ,EAAE;YAC3C,OAAO,EAAE,kBAAkB,CAAC,QAAQ,EAAE;YACtC,wBAAwB,EAAE,eAAe,CAAC,wBAAwB,CAAC,QAAQ,CACzE,0HAA0H,CAC3H;YACD,gBAAgB,EAAE,eAAe,CAAC,gBAAgB,CAAC,QAAQ,CACzD,uGAAuG,CACxG;SACF;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,IAAI,EAAE;KAC9D,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE;QACxB,MAAM,IAAI,GAAG,CACX,MAAM,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE;YACjC,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;YACxB,IAAI;SACL,CAAC,CACH,CAAC,IAAI,CAAC;QACP,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,WAAW,EAAE,iDAAiD;QAC9D,WAAW,EAAE;YACX,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;SACpC;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,IAAI,EAAE;KAC9D,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;QACf,MAAM,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAClE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;IACzE,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { OpenCXClient } from '../api-client.js';
3
+ export declare function registerSalesforceIntegrationTools(server: McpServer, client: OpenCXClient): void;
4
+ //# sourceMappingURL=salesforce-integration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"salesforce-integration.d.ts","sourceRoot":"","sources":["../../src/tools/salesforce-integration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AASrD,wBAAgB,kCAAkC,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,QA4EzF"}