@opencx/mcp 1.8.2 → 1.8.3

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 (85) hide show
  1. package/dist/server.d.ts.map +1 -1
  2. package/dist/server.js +6 -0
  3. package/dist/server.js.map +1 -1
  4. package/dist/tools/actions.d.ts.map +1 -1
  5. package/dist/tools/actions.js +67 -51
  6. package/dist/tools/actions.js.map +1 -1
  7. package/dist/tools/autopilot.d.ts.map +1 -1
  8. package/dist/tools/autopilot.js +26 -6
  9. package/dist/tools/autopilot.js.map +1 -1
  10. package/dist/tools/blocklist.d.ts.map +1 -1
  11. package/dist/tools/blocklist.js +40 -16
  12. package/dist/tools/blocklist.js.map +1 -1
  13. package/dist/tools/contacts.d.ts.map +1 -1
  14. package/dist/tools/contacts.js +35 -19
  15. package/dist/tools/contacts.js.map +1 -1
  16. package/dist/tools/crawl.d.ts.map +1 -1
  17. package/dist/tools/crawl.js +35 -17
  18. package/dist/tools/crawl.js.map +1 -1
  19. package/dist/tools/csat.d.ts.map +1 -1
  20. package/dist/tools/csat.js +18 -5
  21. package/dist/tools/csat.js.map +1 -1
  22. package/dist/tools/email.d.ts.map +1 -1
  23. package/dist/tools/email.js +43 -29
  24. package/dist/tools/email.js.map +1 -1
  25. package/dist/tools/handoff-analytics.d.ts.map +1 -1
  26. package/dist/tools/handoff-analytics.js +12 -9
  27. package/dist/tools/handoff-analytics.js.map +1 -1
  28. package/dist/tools/help-center.d.ts +4 -0
  29. package/dist/tools/help-center.d.ts.map +1 -0
  30. package/dist/tools/help-center.js +84 -0
  31. package/dist/tools/help-center.js.map +1 -0
  32. package/dist/tools/insights.d.ts.map +1 -1
  33. package/dist/tools/insights.js +24 -9
  34. package/dist/tools/insights.js.map +1 -1
  35. package/dist/tools/media.d.ts.map +1 -1
  36. package/dist/tools/media.js +5 -4
  37. package/dist/tools/media.js.map +1 -1
  38. package/dist/tools/office-hours.d.ts.map +1 -1
  39. package/dist/tools/office-hours.js +30 -18
  40. package/dist/tools/office-hours.js.map +1 -1
  41. package/dist/tools/org.d.ts.map +1 -1
  42. package/dist/tools/org.js +9 -2
  43. package/dist/tools/org.js.map +1 -1
  44. package/dist/tools/phone.d.ts.map +1 -1
  45. package/dist/tools/phone.js +75 -56
  46. package/dist/tools/phone.js.map +1 -1
  47. package/dist/tools/redaction.d.ts +4 -0
  48. package/dist/tools/redaction.d.ts.map +1 -0
  49. package/dist/tools/redaction.js +30 -0
  50. package/dist/tools/redaction.js.map +1 -0
  51. package/dist/tools/search.d.ts.map +1 -1
  52. package/dist/tools/search.js +7 -4
  53. package/dist/tools/search.js.map +1 -1
  54. package/dist/tools/sequences.d.ts.map +1 -1
  55. package/dist/tools/sequences.js +46 -28
  56. package/dist/tools/sequences.js.map +1 -1
  57. package/dist/tools/sessions.d.ts.map +1 -1
  58. package/dist/tools/sessions.js +117 -80
  59. package/dist/tools/sessions.js.map +1 -1
  60. package/dist/tools/sla-analytics.d.ts.map +1 -1
  61. package/dist/tools/sla-analytics.js +25 -13
  62. package/dist/tools/sla-analytics.js.map +1 -1
  63. package/dist/tools/sla.d.ts.map +1 -1
  64. package/dist/tools/sla.js +65 -51
  65. package/dist/tools/sla.js.map +1 -1
  66. package/dist/tools/tags.d.ts.map +1 -1
  67. package/dist/tools/tags.js +28 -13
  68. package/dist/tools/tags.js.map +1 -1
  69. package/dist/tools/teams.d.ts.map +1 -1
  70. package/dist/tools/teams.js +40 -17
  71. package/dist/tools/teams.js.map +1 -1
  72. package/dist/tools/training.d.ts.map +1 -1
  73. package/dist/tools/training.js +126 -81
  74. package/dist/tools/training.js.map +1 -1
  75. package/dist/tools/whatsapp.d.ts.map +1 -1
  76. package/dist/tools/whatsapp.js +21 -20
  77. package/dist/tools/whatsapp.js.map +1 -1
  78. package/dist/tools/widget.d.ts +4 -0
  79. package/dist/tools/widget.d.ts.map +1 -0
  80. package/dist/tools/widget.js +23 -0
  81. package/dist/tools/widget.js.map +1 -0
  82. package/dist/tools/workflows.d.ts.map +1 -1
  83. package/dist/tools/workflows.js +104 -65
  84. package/dist/tools/workflows.js.map +1 -1
  85. package/package.json +1 -1
@@ -1,84 +1,103 @@
1
1
  import { z } from 'zod';
2
2
  import { safePath } from '../api-client.js';
3
3
  export function registerPhoneTools(server, client) {
4
- server.tool('list_voices', 'List all available voices for AI phone agents. Returns voice ID, name, labels (accent, gender, age, language, use case), description, and a preview URL. Use the voice_id when creating or updating a phone agent.', {}, async () => {
4
+ server.registerTool('list_voices', {
5
+ description: 'List all available voices for AI phone agents. Returns voice ID, name, labels (accent, gender, age, language, use case), description, and a preview URL. Use the voice_id when creating or updating a phone agent.',
6
+ }, async () => {
5
7
  const data = await client.get('/phone/voices');
6
8
  return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
7
9
  });
8
- server.tool('list_phone_agents', 'List all AI phone agents in your organization with full details: name, type (inbound/outbound), model, voice, language, phone number, instructions, and configuration.', {}, async () => {
10
+ server.registerTool('list_phone_agents', {
11
+ description: 'List all AI phone agents in your organization with full details: name, type (inbound/outbound), model, voice, language, phone number, instructions, and configuration.',
12
+ }, async () => {
9
13
  const data = await client.get('/phone/');
10
14
  return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
11
15
  });
12
- server.tool('get_phone_agent', 'Get full details of a specific AI phone agent including its voice, language, instructions, phone number, model, and all configuration.', { phone_agent_id: z.string().describe('The phone agent ID') }, async ({ phone_agent_id }) => {
16
+ server.registerTool('get_phone_agent', {
17
+ description: 'Get full details of a specific AI phone agent including its voice, language, instructions, phone number, model, and all configuration.',
18
+ inputSchema: { phone_agent_id: z.string().describe('The phone agent ID') },
19
+ }, async ({ phone_agent_id }) => {
13
20
  const data = await client.get(`/phone/${safePath(phone_agent_id)}`);
14
21
  return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
15
22
  });
16
- server.tool('create_phone_agent', 'Create a new AI phone agent powered by the latest voice model. Only name is required — everything else has sensible defaults. Use list_voices first to pick a voice_id.', {
17
- name: z.string().describe('A name for the phone agent (e.g. "Billing Support")'),
18
- type: z
19
- .enum(['inbound', 'outbound'])
20
- .optional()
21
- .describe('Agent type: "inbound" (receives calls, default) or "outbound" (makes calls)'),
22
- voice_id: z
23
- .string()
24
- .optional()
25
- .describe('Voice ID from list_voices. Omit for default voice.'),
26
- language: z.string().optional().describe('Primary language code (e.g. "en", "es", "fr")'),
27
- first_message: z
28
- .string()
29
- .optional()
30
- .describe('What the agent says when answering (default: "Hello?")'),
31
- instructions: z
32
- .array(z.string())
33
- .optional()
34
- .describe('Training scenario IDs to attach to this agent'),
35
- handoff_phone_number: z
36
- .string()
37
- .optional()
38
- .describe('Phone number to transfer to when handing off to a human (E.164 format)'),
39
- use_org_knowledgebase: z
40
- .boolean()
41
- .optional()
42
- .describe('Whether the agent can search your knowledge base during calls (default: false)'),
43
- actionIds: z
44
- .array(z.string())
45
- .optional()
46
- .describe('Action IDs the agent can call during conversations'),
23
+ server.registerTool('create_phone_agent', {
24
+ description: 'Create a new AI phone agent powered by the latest voice model. Only name is required — everything else has sensible defaults. Use list_voices first to pick a voice_id.',
25
+ inputSchema: {
26
+ name: z.string().describe('A name for the phone agent (e.g. "Billing Support")'),
27
+ type: z
28
+ .enum(['inbound', 'outbound'])
29
+ .optional()
30
+ .describe('Agent type: "inbound" (receives calls, default) or "outbound" (makes calls)'),
31
+ voice_id: z
32
+ .string()
33
+ .optional()
34
+ .describe('Voice ID from list_voices. Omit for default voice.'),
35
+ language: z.string().optional().describe('Primary language code (e.g. "en", "es", "fr")'),
36
+ first_message: z
37
+ .string()
38
+ .optional()
39
+ .describe('What the agent says when answering (default: "Hello?")'),
40
+ instructions: z
41
+ .array(z.string())
42
+ .optional()
43
+ .describe('Training scenario IDs to attach to this agent'),
44
+ handoff_phone_number: z
45
+ .string()
46
+ .optional()
47
+ .describe('Phone number to transfer to when handing off to a human (E.164 format)'),
48
+ use_org_knowledgebase: z
49
+ .boolean()
50
+ .optional()
51
+ .describe('Whether the agent can search your knowledge base during calls (default: false)'),
52
+ actionIds: z
53
+ .array(z.string())
54
+ .optional()
55
+ .describe('Action IDs the agent can call during conversations'),
56
+ },
47
57
  }, async (params) => {
48
58
  const data = await client.post('/phone/', params);
49
59
  return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
50
60
  });
51
- server.tool('update_phone_agent', 'Update an existing AI phone agent. Only the fields you provide will be changed.', {
52
- phone_agent_id: z.string().describe('The phone agent ID to update'),
53
- name: z.string().optional().describe('New name'),
54
- type: z.enum(['inbound', 'outbound']).optional().describe('New agent type'),
55
- voice_id: z.string().optional().describe('New voice ID from list_voices'),
56
- language: z.string().optional().describe('New language code'),
57
- first_message: z.string().optional().describe('New greeting message'),
58
- instructions: z.array(z.string()).optional().describe('New training scenario IDs'),
59
- handoff_phone_number: z.string().optional().describe('New handoff phone number (E.164)'),
60
- use_org_knowledgebase: z.boolean().optional().describe('Toggle knowledge base access'),
61
- actionIds: z.array(z.string()).optional().describe('New action IDs'),
61
+ server.registerTool('update_phone_agent', {
62
+ description: 'Update an existing AI phone agent. Only the fields you provide will be changed.',
63
+ inputSchema: {
64
+ phone_agent_id: z.string().describe('The phone agent ID to update'),
65
+ name: z.string().optional().describe('New name'),
66
+ type: z.enum(['inbound', 'outbound']).optional().describe('New agent type'),
67
+ voice_id: z.string().optional().describe('New voice ID from list_voices'),
68
+ language: z.string().optional().describe('New language code'),
69
+ first_message: z.string().optional().describe('New greeting message'),
70
+ instructions: z.array(z.string()).optional().describe('New training scenario IDs'),
71
+ handoff_phone_number: z.string().optional().describe('New handoff phone number (E.164)'),
72
+ use_org_knowledgebase: z.boolean().optional().describe('Toggle knowledge base access'),
73
+ actionIds: z.array(z.string()).optional().describe('New action IDs'),
74
+ },
62
75
  }, async ({ phone_agent_id, ...body }) => {
63
76
  const data = await client.patch(`/phone/${safePath(phone_agent_id)}`, body);
64
77
  return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
65
78
  });
66
- server.tool('delete_phone_agent', 'Permanently delete an AI phone agent and release its phone number. This action cannot be undone.', { phone_agent_id: z.string().describe('The phone agent ID to delete') }, async ({ phone_agent_id }) => {
79
+ server.registerTool('delete_phone_agent', {
80
+ description: 'Permanently delete an AI phone agent and release its phone number. This action cannot be undone.',
81
+ inputSchema: { phone_agent_id: z.string().describe('The phone agent ID to delete') },
82
+ }, async ({ phone_agent_id }) => {
67
83
  await client.delete(`/phone/${safePath(phone_agent_id)}`);
68
84
  return {
69
85
  content: [{ type: 'text', text: `Phone agent ${phone_agent_id} deleted successfully.` }],
70
86
  };
71
87
  });
72
- server.tool('make_outbound_call', 'Initiate an outbound AI phone call. Target either an existing contact by ID or a raw phone number in E.164 format (e.g. "+14155551234").', {
73
- phone_agent_id: z.string().describe('The phone agent ID to make the call with'),
74
- contact_id: z
75
- .string()
76
- .optional()
77
- .describe('Existing contact ID to call (use this OR phone_number, not both)'),
78
- phone_number: z
79
- .string()
80
- .optional()
81
- .describe('Phone number to call in E.164 format (use this OR contact_id, not both)'),
88
+ server.registerTool('make_outbound_call', {
89
+ description: 'Initiate an outbound AI phone call. Target either an existing contact by ID or a raw phone number in E.164 format (e.g. "+14155551234").',
90
+ inputSchema: {
91
+ phone_agent_id: z.string().describe('The phone agent ID to make the call with'),
92
+ contact_id: z
93
+ .string()
94
+ .optional()
95
+ .describe('Existing contact ID to call (use this OR phone_number, not both)'),
96
+ phone_number: z
97
+ .string()
98
+ .optional()
99
+ .describe('Phone number to call in E.164 format (use this OR contact_id, not both)'),
100
+ },
82
101
  }, async ({ phone_agent_id, contact_id, phone_number }) => {
83
102
  const contact = contact_id
84
103
  ? { id: contact_id }
@@ -1 +1 @@
1
- {"version":3,"file":"phone.js","sourceRoot":"","sources":["../../src/tools/phone.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"phone.js","sourceRoot":"","sources":["../../src/tools/phone.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import { OpenCXClient } from '../api-client.js';
3
+ export declare function registerRedactionTools(server: McpServer, client: OpenCXClient): void;
4
+ //# sourceMappingURL=redaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redaction.d.ts","sourceRoot":"","sources":["../../src/tools/redaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,QAsC7E"}
@@ -0,0 +1,30 @@
1
+ import { z } from 'zod';
2
+ export function registerRedactionTools(server, client) {
3
+ server.registerTool('redact_message', {
4
+ description: 'Redact a specific chat message by ID (GDPR compliance). Permanently replaces the message content and removes any attached images. This action cannot be undone.',
5
+ inputSchema: {
6
+ messageId: z.string().describe('The message UUID to redact'),
7
+ reason: z
8
+ .string()
9
+ .optional()
10
+ .describe('Reason for redaction (e.g. "GDPR request", "PII exposure")'),
11
+ },
12
+ }, async (params) => {
13
+ const data = await client.post('/redaction/message', params);
14
+ return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
15
+ });
16
+ server.registerTool('redact_session', {
17
+ description: 'Redact all messages in a chat session (GDPR compliance). Permanently replaces all message content and removes attached images. This action cannot be undone.',
18
+ inputSchema: {
19
+ sessionId: z.string().describe('The session UUID whose messages will be redacted'),
20
+ reason: z
21
+ .string()
22
+ .optional()
23
+ .describe('Reason for redaction (e.g. "GDPR right-to-be-forgotten")'),
24
+ },
25
+ }, async (params) => {
26
+ const data = await client.post('/redaction/session', params);
27
+ return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
28
+ });
29
+ }
30
+ //# sourceMappingURL=redaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redaction.js","sourceRoot":"","sources":["../../src/tools/redaction.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,UAAU,sBAAsB,CAAC,MAAiB,EAAE,MAAoB;IAC5E,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,WAAW,EACT,iKAAiK;QACnK,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;YAC5D,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,4DAA4D,CAAC;SAC1E;KACF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;QAC7D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAC9E,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,WAAW,EACT,8JAA8J;QAChK,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;YAClF,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,0DAA0D,CAAC;SACxE;KACF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;QAC7D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAC9E,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,QAc1E"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,QAiB1E"}
@@ -1,9 +1,12 @@
1
1
  import { z } from 'zod';
2
2
  export function registerSearchTools(server, client) {
3
- server.tool('search', 'Full-text search across contacts and chat messages. Searches contact names, emails, phone numbers, and message content. Returns matching contacts with IDs and messages with their session IDs.', {
4
- query: z
5
- .string()
6
- .describe('Search query — a name, email, phone number, or keyword to search for'),
3
+ server.registerTool('search', {
4
+ description: 'Full-text search across contacts and chat messages. Searches contact names, emails, phone numbers, and message content. Returns matching contacts with IDs and messages with their session IDs.',
5
+ inputSchema: {
6
+ query: z
7
+ .string()
8
+ .describe('Search query — a name, email, phone number, or keyword to search for'),
9
+ },
7
10
  }, async ({ query }) => {
8
11
  const data = await client.get('/chat/sessions/search', { q: query });
9
12
  return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,UAAU,mBAAmB,CAAC,MAAiB,EAAE,MAAoB;IACzE,MAAM,CAAC,IAAI,CACT,QAAQ,EACR,iMAAiM,EACjM;QACE,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,QAAQ,CAAC,sEAAsE,CAAC;KACpF,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;QAClB,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,uBAAuB,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACrE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAC9E,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,UAAU,mBAAmB,CAAC,MAAiB,EAAE,MAAoB;IACzE,MAAM,CAAC,YAAY,CACjB,QAAQ,EACR;QACE,WAAW,EACT,iMAAiM;QACnM,WAAW,EAAE;YACX,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,QAAQ,CAAC,sEAAsE,CAAC;SACpF;KACF,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;QAClB,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,uBAAuB,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACrE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAC9E,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"sequences.d.ts","sourceRoot":"","sources":["../../src/tools/sequences.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAY,MAAM,kBAAkB,CAAC;AAE1D,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,QAyF5E"}
1
+ {"version":3,"file":"sequences.d.ts","sourceRoot":"","sources":["../../src/tools/sequences.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAY,MAAM,kBAAkB,CAAC;AAE1D,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,QA0G5E"}
@@ -1,51 +1,69 @@
1
1
  import { z } from 'zod';
2
2
  import { safePath } from '../api-client.js';
3
3
  export function registerSequenceTools(server, client) {
4
- server.tool('create_sequence', 'Create an outbound AI sequence. Sequences automate multi-step outreach to contacts via email, SMS, or other channels with AI-generated content.', {
5
- name: z.string().describe('A name for the sequence'),
6
- is_continuous: z
7
- .boolean()
8
- .optional()
9
- .describe('If true, the sequence runs continuously and contacts can be added over time'),
10
- steps: z
11
- .array(z.object({
12
- channel: z.string().describe('Channel for this step (e.g. "email", "sms")'),
13
- delay_minutes: z.number().optional().describe('Delay before this step in minutes'),
14
- }))
15
- .optional()
16
- .describe('The sequence steps to execute in order'),
4
+ server.registerTool('create_sequence', {
5
+ description: 'Create an outbound AI sequence. Sequences automate multi-step outreach to contacts via email, SMS, or other channels with AI-generated content.',
6
+ inputSchema: {
7
+ name: z.string().describe('A name for the sequence'),
8
+ is_continuous: z
9
+ .boolean()
10
+ .optional()
11
+ .describe('If true, the sequence runs continuously and contacts can be added over time'),
12
+ steps: z
13
+ .array(z.object({
14
+ channel: z.string().describe('Channel for this step (e.g. "email", "sms")'),
15
+ delay_minutes: z.number().optional().describe('Delay before this step in minutes'),
16
+ }))
17
+ .optional()
18
+ .describe('The sequence steps to execute in order'),
19
+ },
17
20
  }, async (params) => {
18
21
  const data = await client.post('/sequences/', params);
19
22
  return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
20
23
  });
21
- server.tool('get_sequence', 'Get details of a specific outbound sequence, including its steps, status, and whether it is continuous or one-off.', { sequence_id: z.string().describe('The sequence ID') }, async ({ sequence_id }) => {
24
+ server.registerTool('get_sequence', {
25
+ description: 'Get details of a specific outbound sequence, including its steps, status, and whether it is continuous or one-off.',
26
+ inputSchema: { sequence_id: z.string().describe('The sequence ID') },
27
+ }, async ({ sequence_id }) => {
22
28
  const data = await client.get(`/sequences/${safePath(sequence_id)}`);
23
29
  return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
24
30
  });
25
- server.tool('update_sequence', 'Update an existing sequence configuration.', {
26
- sequence_id: z.string().describe('The sequence ID to update'),
27
- name: z.string().optional().describe('New name'),
28
- is_continuous: z.boolean().optional().describe('Update continuous mode'),
31
+ server.registerTool('update_sequence', {
32
+ description: 'Update an existing sequence configuration.',
33
+ inputSchema: {
34
+ sequence_id: z.string().describe('The sequence ID to update'),
35
+ name: z.string().optional().describe('New name'),
36
+ is_continuous: z.boolean().optional().describe('Update continuous mode'),
37
+ },
29
38
  }, async ({ sequence_id, ...body }) => {
30
39
  const data = await client.patch(`/sequences/${safePath(sequence_id)}`, body);
31
40
  return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
32
41
  });
33
- server.tool('start_sequence', 'Start a sequence. Once started, the sequence will begin executing its steps for the enrolled contacts.', { sequence_id: z.string().describe('The sequence ID to start') }, async ({ sequence_id }) => {
42
+ server.registerTool('start_sequence', {
43
+ description: 'Start a sequence. Once started, the sequence will begin executing its steps for the enrolled contacts.',
44
+ inputSchema: { sequence_id: z.string().describe('The sequence ID to start') },
45
+ }, async ({ sequence_id }) => {
34
46
  const data = await client.put(`/sequences/${safePath(sequence_id)}/start`);
35
47
  return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
36
48
  });
37
- server.tool('cancel_sequence', 'Cancel a running sequence. Contacts that have not yet been processed will not receive further messages.', { sequence_id: z.string().describe('The sequence ID to cancel') }, async ({ sequence_id }) => {
49
+ server.registerTool('cancel_sequence', {
50
+ description: 'Cancel a running sequence. Contacts that have not yet been processed will not receive further messages.',
51
+ inputSchema: { sequence_id: z.string().describe('The sequence ID to cancel') },
52
+ }, async ({ sequence_id }) => {
38
53
  const data = await client.put(`/sequences/${safePath(sequence_id)}/cancel`);
39
54
  return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
40
55
  });
41
- server.tool('add_contacts_to_sequence', 'Add contacts to a continuous sequence. The contacts will be enrolled and start receiving sequence steps.', {
42
- sequence_id: z.string().describe('The sequence ID'),
43
- contacts: z
44
- .array(z.object({
45
- contact_id: z.string().describe('The contact ID to enroll'),
46
- }))
47
- .min(1)
48
- .describe('List of contacts to add to the sequence'),
56
+ server.registerTool('add_contacts_to_sequence', {
57
+ description: 'Add contacts to a continuous sequence. The contacts will be enrolled and start receiving sequence steps.',
58
+ inputSchema: {
59
+ sequence_id: z.string().describe('The sequence ID'),
60
+ contacts: z
61
+ .array(z.object({
62
+ contact_id: z.string().describe('The contact ID to enroll'),
63
+ }))
64
+ .min(1)
65
+ .describe('List of contacts to add to the sequence'),
66
+ },
49
67
  }, async ({ sequence_id, contacts }) => {
50
68
  const data = await client.post(`/sequences/${safePath(sequence_id)}/contacts`, { contacts });
51
69
  return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
@@ -1 +1 @@
1
- {"version":3,"file":"sequences.js","sourceRoot":"","sources":["../../src/tools/sequences.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sequences.js","sourceRoot":"","sources":["../../src/tools/sequences.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/tools/sessions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAY,MAAM,kBAAkB,CAAC;AAE1D,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,QAmL3E"}
1
+ {"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/tools/sessions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAY,MAAM,kBAAkB,CAAC;AAE1D,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,QAyN3E"}