@opencx/mcp 1.15.76 → 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 (71) hide show
  1. package/dist/create-server-options.spec.js +19 -0
  2. package/dist/create-server-options.spec.js.map +1 -1
  3. package/dist/http.d.ts +3 -0
  4. package/dist/http.d.ts.map +1 -1
  5. package/dist/http.js +6 -2
  6. package/dist/http.js.map +1 -1
  7. package/dist/integrations.d.ts +7 -0
  8. package/dist/integrations.d.ts.map +1 -0
  9. package/dist/integrations.js +18 -0
  10. package/dist/integrations.js.map +1 -0
  11. package/dist/salesforce-ai-reply-templates.spec.js +4 -1
  12. package/dist/salesforce-ai-reply-templates.spec.js.map +1 -1
  13. package/dist/schema.d.ts +12445 -9942
  14. package/dist/schema.d.ts.map +1 -1
  15. package/dist/server.d.ts +6 -0
  16. package/dist/server.d.ts.map +1 -1
  17. package/dist/server.js +27 -2
  18. package/dist/server.js.map +1 -1
  19. package/dist/tool-annotations.spec.js +5 -1
  20. package/dist/tool-annotations.spec.js.map +1 -1
  21. package/dist/tools/dynamics365-integration.d.ts +4 -0
  22. package/dist/tools/dynamics365-integration.d.ts.map +1 -0
  23. package/dist/tools/dynamics365-integration.js +45 -0
  24. package/dist/tools/dynamics365-integration.js.map +1 -0
  25. package/dist/tools/email.d.ts.map +1 -1
  26. package/dist/tools/email.js +24 -0
  27. package/dist/tools/email.js.map +1 -1
  28. package/dist/tools/freshchat-integration.d.ts +4 -0
  29. package/dist/tools/freshchat-integration.d.ts.map +1 -0
  30. package/dist/tools/freshchat-integration.js +54 -0
  31. package/dist/tools/freshchat-integration.js.map +1 -0
  32. package/dist/tools/freshdesk-integration.d.ts +4 -0
  33. package/dist/tools/freshdesk-integration.d.ts.map +1 -0
  34. package/dist/tools/freshdesk-integration.js +68 -0
  35. package/dist/tools/freshdesk-integration.js.map +1 -0
  36. package/dist/tools/front-integration.d.ts +4 -0
  37. package/dist/tools/front-integration.d.ts.map +1 -0
  38. package/dist/tools/front-integration.js +52 -0
  39. package/dist/tools/front-integration.js.map +1 -0
  40. package/dist/tools/gorgias-integration.d.ts +4 -0
  41. package/dist/tools/gorgias-integration.d.ts.map +1 -0
  42. package/dist/tools/gorgias-integration.js +24 -0
  43. package/dist/tools/gorgias-integration.js.map +1 -0
  44. package/dist/tools/hubspot-integration.d.ts +4 -0
  45. package/dist/tools/hubspot-integration.d.ts.map +1 -0
  46. package/dist/tools/hubspot-integration.js +50 -0
  47. package/dist/tools/hubspot-integration.js.map +1 -0
  48. package/dist/tools/infobip-integration.d.ts +4 -0
  49. package/dist/tools/infobip-integration.d.ts.map +1 -0
  50. package/dist/tools/infobip-integration.js +68 -0
  51. package/dist/tools/infobip-integration.js.map +1 -0
  52. package/dist/tools/intercom-integration.d.ts +4 -0
  53. package/dist/tools/intercom-integration.d.ts.map +1 -0
  54. package/dist/tools/intercom-integration.js +74 -0
  55. package/dist/tools/intercom-integration.js.map +1 -0
  56. package/dist/tools/macros.d.ts.map +1 -1
  57. package/dist/tools/macros.js +9 -1
  58. package/dist/tools/macros.js.map +1 -1
  59. package/dist/tools/salesforce-integration.d.ts +4 -0
  60. package/dist/tools/salesforce-integration.d.ts.map +1 -0
  61. package/dist/tools/salesforce-integration.js +65 -0
  62. package/dist/tools/salesforce-integration.js.map +1 -0
  63. package/dist/tools/twilio-flex-integration.d.ts +4 -0
  64. package/dist/tools/twilio-flex-integration.d.ts.map +1 -0
  65. package/dist/tools/twilio-flex-integration.js +44 -0
  66. package/dist/tools/twilio-flex-integration.js.map +1 -0
  67. package/dist/tools/zendesk-integration.d.ts +4 -0
  68. package/dist/tools/zendesk-integration.d.ts.map +1 -0
  69. package/dist/tools/zendesk-integration.js +65 -0
  70. package/dist/tools/zendesk-integration.js.map +1 -0
  71. package/package.json +5 -1
@@ -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":"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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 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"}
@@ -0,0 +1,65 @@
1
+ import { z } from 'zod';
2
+ import { jsonContent } from '../api-client.js';
3
+ import { registerSalesforceAiReplyTemplateTools } from './salesforce-ai-reply-templates.js';
4
+ // Registered by createServer only when the org has this integration connected.
5
+ // The AI reply template tools ride along: they only apply to Salesforce orgs.
6
+ export function registerSalesforceIntegrationTools(server, client) {
7
+ registerSalesforceAiReplyTemplateTools(server, client);
8
+ server.registerTool('get_salesforce_settings', {
9
+ description: 'Get the Salesforce settings: case_management (assist drafts, auto-fill, Case comments, first-email content) and miaw (messaging deployment). A section is null when that side is not connected. Credentials are never returned.',
10
+ annotations: { title: 'Get Salesforce settings', readOnlyHint: true },
11
+ }, async () => jsonContent((await client.GET('/integrations/salesforce/settings')).data));
12
+ server.registerTool('update_salesforce_settings', {
13
+ description: 'Change Salesforce settings. Pass only the fields to change. case_management needs Case management connected; miaw needs messaging configured.',
14
+ inputSchema: {
15
+ case_management: z
16
+ .object({
17
+ assist_replies_as_drafts: z
18
+ .boolean()
19
+ .optional()
20
+ .describe('true = assist suggestions become editable email drafts on the Case instead of private comments'),
21
+ draft_from_address: z
22
+ .string()
23
+ .nullable()
24
+ .optional()
25
+ .describe('From address on those drafts — must be from list_salesforce_org_wide_addresses; null = composer default'),
26
+ autofill_fields_on_assist_mode: z
27
+ .boolean()
28
+ .optional()
29
+ .describe('true = AI Case-field auto-fill writes to the Case on assist sessions too'),
30
+ include_session_url_in_case_comment: z
31
+ .boolean()
32
+ .optional()
33
+ .describe('true = Case comments include a link to the session'),
34
+ post_handoff_case_comment: z
35
+ .boolean()
36
+ .optional()
37
+ .describe('true = a handoff posts a summary comment on the Case'),
38
+ prefer_first_email_content: z
39
+ .boolean()
40
+ .optional()
41
+ .describe("true = new sessions start from the Case's first email instead of its description"),
42
+ })
43
+ .optional(),
44
+ miaw: z
45
+ .object({
46
+ es_developer_name: z
47
+ .string()
48
+ .nullable()
49
+ .optional()
50
+ .describe('Developer name of the Embedded Service deployment for messaging'),
51
+ salesforce_org_id: z.string().nullable().optional().describe('Salesforce org id (00D…)'),
52
+ })
53
+ .optional(),
54
+ },
55
+ annotations: { title: 'Update Salesforce settings', destructiveHint: true },
56
+ }, async (input) => {
57
+ const body = input;
58
+ return jsonContent((await client.PATCH('/integrations/salesforce/settings', { body })).data);
59
+ });
60
+ server.registerTool('list_salesforce_org_wide_addresses', {
61
+ description: 'List the verified org-wide email addresses of the connected Salesforce org — the valid values for case_management.draft_from_address.',
62
+ annotations: { title: 'List Salesforce org-wide addresses', readOnlyHint: true },
63
+ }, async () => jsonContent((await client.GET('/integrations/salesforce/org-wide-addresses')).data));
64
+ }
65
+ //# sourceMappingURL=salesforce-integration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"salesforce-integration.js","sourceRoot":"","sources":["../../src/tools/salesforce-integration.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,OAAO,EAAE,sCAAsC,EAAE,MAAM,oCAAoC,CAAC;AAK5F,+EAA+E;AAC/E,8EAA8E;AAC9E,MAAM,UAAU,kCAAkC,CAAC,MAAiB,EAAE,MAAoB;IACxF,sCAAsC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEvD,MAAM,CAAC,YAAY,CACjB,yBAAyB,EACzB;QACE,WAAW,EACT,iOAAiO;QACnO,WAAW,EAAE,EAAE,KAAK,EAAE,yBAAyB,EAAE,YAAY,EAAE,IAAI,EAAE;KACtE,EACD,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAC,IAAI,CAAC,CACtF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,4BAA4B,EAC5B;QACE,WAAW,EACT,+IAA+I;QACjJ,WAAW,EAAE;YACX,eAAe,EAAE,CAAC;iBACf,MAAM,CAAC;gBACN,wBAAwB,EAAE,CAAC;qBACxB,OAAO,EAAE;qBACT,QAAQ,EAAE;qBACV,QAAQ,CAAC,gGAAgG,CAAC;gBAC7G,kBAAkB,EAAE,CAAC;qBAClB,MAAM,EAAE;qBACR,QAAQ,EAAE;qBACV,QAAQ,EAAE;qBACV,QAAQ,CAAC,yGAAyG,CAAC;gBACtH,8BAA8B,EAAE,CAAC;qBAC9B,OAAO,EAAE;qBACT,QAAQ,EAAE;qBACV,QAAQ,CAAC,0EAA0E,CAAC;gBACvF,mCAAmC,EAAE,CAAC;qBACnC,OAAO,EAAE;qBACT,QAAQ,EAAE;qBACV,QAAQ,CAAC,oDAAoD,CAAC;gBACjE,yBAAyB,EAAE,CAAC;qBACzB,OAAO,EAAE;qBACT,QAAQ,EAAE;qBACV,QAAQ,CAAC,sDAAsD,CAAC;gBACnE,0BAA0B,EAAE,CAAC;qBAC1B,OAAO,EAAE;qBACT,QAAQ,EAAE;qBACV,QAAQ,CAAC,kFAAkF,CAAC;aAChG,CAAC;iBACD,QAAQ,EAAE;YACb,IAAI,EAAE,CAAC;iBACJ,MAAM,CAAC;gBACN,iBAAiB,EAAE,CAAC;qBACjB,MAAM,EAAE;qBACR,QAAQ,EAAE;qBACV,QAAQ,EAAE;qBACV,QAAQ,CAAC,iEAAiE,CAAC;gBAC9E,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;aACzF,CAAC;iBACD,QAAQ,EAAE;SACd;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,4BAA4B,EAAE,eAAe,EAAE,IAAI,EAAE;KAC5E,EACD,KAAK,EAAE,KAAK,EAAE,EAAE;QACd,MAAM,IAAI,GAAe,KAAK,CAAC;QAC/B,OAAO,WAAW,CAAC,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,mCAAmC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC/F,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,oCAAoC,EACpC;QACE,WAAW,EACT,uIAAuI;QACzI,WAAW,EAAE,EAAE,KAAK,EAAE,oCAAoC,EAAE,YAAY,EAAE,IAAI,EAAE;KACjF,EACD,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC,CAAC,IAAI,CAAC,CAChG,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 registerTwilioFlexIntegrationTools(server: McpServer, client: OpenCXClient): void;
4
+ //# sourceMappingURL=twilio-flex-integration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"twilio-flex-integration.d.ts","sourceRoot":"","sources":["../../src/tools/twilio-flex-integration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAOrD,wBAAgB,kCAAkC,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,QAgEzF"}
@@ -0,0 +1,44 @@
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 registerTwilioFlexIntegrationTools(server, client) {
5
+ server.registerTool('get_twilio_flex_settings', {
6
+ description: 'Read the Twilio Flex integration settings: account and workspace, AI queue and workers, handoff toggles and contact-synced task attributes. The auth token is never returned.',
7
+ annotations: { title: 'Get Twilio Flex settings', readOnlyHint: true },
8
+ }, async () => jsonContent((await client.GET('/integrations/twilio-flex/settings')).data));
9
+ server.registerTool('update_twilio_flex_settings', {
10
+ description: 'Change Twilio Flex integration settings. Only the fields you pass change. Credentials cannot be changed here, and the workspace is not re-provisioned. The response lists synced attribute names that will never match.',
11
+ inputSchema: {
12
+ ai_queue_sid: z
13
+ .string()
14
+ .optional()
15
+ .describe('TaskRouter queue SID for AI-handled conversations; empty string clears it'),
16
+ ai_worker_email_domain: z
17
+ .string()
18
+ .nullable()
19
+ .optional()
20
+ .describe('Domain (e.g. example.com) used to give each AI worker an email; null clears it'),
21
+ internal_notes_enabled: z
22
+ .boolean()
23
+ .optional()
24
+ .describe('Post the handoff summary into the conversation. Twilio has no private notes, so the customer sees it too.'),
25
+ interactions_handoff_enabled: z
26
+ .boolean()
27
+ .optional()
28
+ .describe('OpenCX routes the handoff itself through Flex Interactions. Leave off if their Flex flow already handles the handoff webhook — both on means duplicate chat requests.'),
29
+ contact_synced_task_attributes: z
30
+ .array(z.string().min(1))
31
+ .optional()
32
+ .describe('Task attribute names copied onto the contact (e.g. "user_id", "customers.name"); replaces the list. See list_twilio_flex_task_attributes.'),
33
+ },
34
+ annotations: { title: 'Update Twilio Flex settings', destructiveHint: false },
35
+ }, async (args) => {
36
+ const body = args;
37
+ return jsonContent((await client.PATCH('/integrations/twilio-flex/settings', { body })).data);
38
+ });
39
+ server.registerTool('list_twilio_flex_task_attributes', {
40
+ description: "List the task attribute names the org's Flex workflow actually sends, sampled from recent tasks. Empty means unknown, not none.",
41
+ annotations: { title: 'List Twilio Flex task attributes', readOnlyHint: true },
42
+ }, async () => jsonContent((await client.GET('/integrations/twilio-flex/task-attributes')).data));
43
+ }
44
+ //# sourceMappingURL=twilio-flex-integration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"twilio-flex-integration.js","sourceRoot":"","sources":["../../src/tools/twilio-flex-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,kCAAkC,CAAC,MAAiB,EAAE,MAAoB;IACxF,MAAM,CAAC,YAAY,CACjB,0BAA0B,EAC1B;QACE,WAAW,EACT,+KAA+K;QACjL,WAAW,EAAE,EAAE,KAAK,EAAE,0BAA0B,EAAE,YAAY,EAAE,IAAI,EAAE;KACvE,EACD,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC,CAAC,IAAI,CAAC,CACvF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,6BAA6B,EAC7B;QACE,WAAW,EACT,yNAAyN;QAC3N,WAAW,EAAE;YACX,YAAY,EAAE,CAAC;iBACZ,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,2EAA2E,CAAC;YACxF,sBAAsB,EAAE,CAAC;iBACtB,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,EAAE;iBACV,QAAQ,CACP,gFAAgF,CACjF;YACH,sBAAsB,EAAE,CAAC;iBACtB,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CACP,2GAA2G,CAC5G;YACH,4BAA4B,EAAE,CAAC;iBAC5B,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CACP,uKAAuK,CACxK;YACH,8BAA8B,EAAE,CAAC;iBAC9B,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;iBACxB,QAAQ,EAAE;iBACV,QAAQ,CACP,2IAA2I,CAC5I;SACJ;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,6BAA6B,EAAE,eAAe,EAAE,KAAK,EAAE;KAC9E,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,IAAI,GAAe,IAAI,CAAC;QAC9B,OAAO,WAAW,CAAC,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,oCAAoC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAChG,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,kCAAkC,EAClC;QACE,WAAW,EACT,iIAAiI;QACnI,WAAW,EAAE,EAAE,KAAK,EAAE,kCAAkC,EAAE,YAAY,EAAE,IAAI,EAAE;KAC/E,EACD,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC,CAAC,IAAI,CAAC,CAC9F,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 registerZendeskIntegrationTools(server: McpServer, client: OpenCXClient): void;
4
+ //# sourceMappingURL=zendesk-integration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zendesk-integration.d.ts","sourceRoot":"","sources":["../../src/tools/zendesk-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,QA6EtF"}
@@ -0,0 +1,65 @@
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 registerZendeskIntegrationTools(server, client) {
5
+ server.registerTool('get_zendesk_settings', {
6
+ description: 'Get the Zendesk integration settings: ticket creation and assignment defaults, web/email handoff behaviour, internal notes, the handoff note and recipient editing. Credentials are never returned; connected:false means Zendesk is not connected.',
7
+ annotations: { title: 'Get Zendesk settings', readOnlyHint: true },
8
+ }, async () => jsonContent((await client.GET('/integrations/zendesk/settings')).data));
9
+ server.registerTool('update_zendesk_settings', {
10
+ description: 'Change Zendesk integration settings. Pass only the fields to change; the rest stay as they are. Credentials and the subdomain cannot be changed here (the dashboard connects Zendesk).',
11
+ inputSchema: {
12
+ default_agent_id: z
13
+ .string()
14
+ .min(1)
15
+ .optional()
16
+ .describe('Zendesk user id new tickets are assigned to when no team mapping applies'),
17
+ default_agent_group_id: z
18
+ .string()
19
+ .nullable()
20
+ .optional()
21
+ .describe('Zendesk group id for new tickets when no team mapping applies (see list_zendesk_groups); null = none'),
22
+ create_ticket_only_on_handoff: z
23
+ .boolean()
24
+ .optional()
25
+ .describe('true = create the Zendesk ticket only when the session is handed off'),
26
+ skip_handoff_for_web: z
27
+ .boolean()
28
+ .optional()
29
+ .describe('true = web handoffs stay in OpenCX and never reach Zendesk'),
30
+ skip_ticket_creation_for_web: z
31
+ .boolean()
32
+ .optional()
33
+ .describe('true = no Zendesk ticket for web sessions at all'),
34
+ sync_automated_sender_tickets: z
35
+ .boolean()
36
+ .optional()
37
+ .describe('true = tickets from noreply@-style senders still get a session (the AI never replies)'),
38
+ create_tickets_for_email_sessions: z
39
+ .boolean()
40
+ .optional()
41
+ .describe('true = every email session opens a ticket up front; false = only on handoff'),
42
+ ai_reads_private_notes: z
43
+ .boolean()
44
+ .optional()
45
+ .describe('true = internal notes are given to the AI as private context; false also stops earlier notes reaching it'),
46
+ post_handoff_note: z
47
+ .boolean()
48
+ .optional()
49
+ .describe('true = a handoff posts a "Handoff Summary" internal note on the ticket'),
50
+ email_recipient_sync_enabled: z
51
+ .boolean()
52
+ .optional()
53
+ .describe('true = agents may edit To/Cc in OpenCX and the edits sync to Zendesk (verifies the connection first)'),
54
+ },
55
+ annotations: { title: 'Update Zendesk settings', destructiveHint: true },
56
+ }, async (input) => {
57
+ const body = input;
58
+ return jsonContent((await client.PATCH('/integrations/zendesk/settings', { body })).data);
59
+ });
60
+ server.registerTool('list_zendesk_groups', {
61
+ description: 'List the Zendesk groups synced from the connected account — the valid values for default_agent_group_id.',
62
+ annotations: { title: 'List Zendesk groups', readOnlyHint: true },
63
+ }, async () => jsonContent((await client.GET('/integrations/zendesk/groups')).data));
64
+ }
65
+ //# sourceMappingURL=zendesk-integration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zendesk-integration.js","sourceRoot":"","sources":["../../src/tools/zendesk-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,qPAAqP;QACvP,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,wLAAwL;QAC1L,WAAW,EAAE;YACX,gBAAgB,EAAE,CAAC;iBAChB,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,EAAE;iBACV,QAAQ,CAAC,0EAA0E,CAAC;YACvF,sBAAsB,EAAE,CAAC;iBACtB,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,EAAE;iBACV,QAAQ,CAAC,sGAAsG,CAAC;YACnH,6BAA6B,EAAE,CAAC;iBAC7B,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,sEAAsE,CAAC;YACnF,oBAAoB,EAAE,CAAC;iBACpB,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,4DAA4D,CAAC;YACzE,4BAA4B,EAAE,CAAC;iBAC5B,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,kDAAkD,CAAC;YAC/D,6BAA6B,EAAE,CAAC;iBAC7B,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,uFAAuF,CAAC;YACpG,iCAAiC,EAAE,CAAC;iBACjC,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,6EAA6E,CAAC;YAC1F,sBAAsB,EAAE,CAAC;iBACtB,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,0GAA0G,CAAC;YACvH,iBAAiB,EAAE,CAAC;iBACjB,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,wEAAwE,CAAC;YACrF,4BAA4B,EAAE,CAAC;iBAC5B,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,sGAAsG,CAAC;SACpH;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,0GAA0G;QAC5G,WAAW,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,YAAY,EAAE,IAAI,EAAE;KAClE,EACD,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAC,IAAI,CAAC,CACjF,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opencx/mcp",
3
- "version": "1.15.76",
3
+ "version": "1.15.77",
4
4
  "private": false,
5
5
  "description": "MCP server for OpenCX — manage contacts, sessions, training, and more from Claude Desktop, Cursor, or any MCP client.",
6
6
  "type": "module",
@@ -21,6 +21,10 @@
21
21
  "types": "./dist/http.d.ts",
22
22
  "default": "./dist/http.js"
23
23
  },
24
+ "./integrations": {
25
+ "types": "./dist/integrations.d.ts",
26
+ "default": "./dist/integrations.js"
27
+ },
24
28
  "./package.json": "./package.json"
25
29
  },
26
30
  "files": [