@opencx/mcp 1.11.16 → 1.11.33

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 (164) hide show
  1. package/dist/api-client.d.ts +17 -12
  2. package/dist/api-client.d.ts.map +1 -1
  3. package/dist/api-client.js +35 -56
  4. package/dist/api-client.js.map +1 -1
  5. package/dist/api-client.spec.js +51 -89
  6. package/dist/api-client.spec.js.map +1 -1
  7. package/dist/schema.d.ts +12706 -0
  8. package/dist/schema.d.ts.map +1 -0
  9. package/dist/schema.js +6 -0
  10. package/dist/schema.js.map +1 -0
  11. package/dist/server.js +2 -2
  12. package/dist/server.js.map +1 -1
  13. package/dist/server.spec.js +54 -51
  14. package/dist/server.spec.js.map +1 -1
  15. package/dist/tools/actions.d.ts +1 -1
  16. package/dist/tools/actions.d.ts.map +1 -1
  17. package/dist/tools/actions.js +26 -16
  18. package/dist/tools/actions.js.map +1 -1
  19. package/dist/tools/audit-logs.d.ts +1 -1
  20. package/dist/tools/audit-logs.d.ts.map +1 -1
  21. package/dist/tools/audit-logs.js +50 -42
  22. package/dist/tools/audit-logs.js.map +1 -1
  23. package/dist/tools/autopilot.d.ts +1 -1
  24. package/dist/tools/autopilot.d.ts.map +1 -1
  25. package/dist/tools/autopilot.js +5 -4
  26. package/dist/tools/autopilot.js.map +1 -1
  27. package/dist/tools/blocklist.d.ts +1 -1
  28. package/dist/tools/blocklist.d.ts.map +1 -1
  29. package/dist/tools/blocklist.js +20 -20
  30. package/dist/tools/blocklist.js.map +1 -1
  31. package/dist/tools/contact-segments.d.ts +1 -1
  32. package/dist/tools/contact-segments.d.ts.map +1 -1
  33. package/dist/tools/contact-segments.js +15 -12
  34. package/dist/tools/contact-segments.js.map +1 -1
  35. package/dist/tools/contacts.d.ts +1 -1
  36. package/dist/tools/contacts.d.ts.map +1 -1
  37. package/dist/tools/contacts.js +23 -11
  38. package/dist/tools/contacts.js.map +1 -1
  39. package/dist/tools/coworker.d.ts +1 -1
  40. package/dist/tools/coworker.d.ts.map +1 -1
  41. package/dist/tools/coworker.js +54 -43
  42. package/dist/tools/coworker.js.map +1 -1
  43. package/dist/tools/crawl.d.ts +1 -1
  44. package/dist/tools/crawl.d.ts.map +1 -1
  45. package/dist/tools/crawl.js +43 -14
  46. package/dist/tools/crawl.js.map +1 -1
  47. package/dist/tools/csat.d.ts +1 -1
  48. package/dist/tools/csat.d.ts.map +1 -1
  49. package/dist/tools/csat.js +16 -10
  50. package/dist/tools/csat.js.map +1 -1
  51. package/dist/tools/email.d.ts +1 -1
  52. package/dist/tools/email.d.ts.map +1 -1
  53. package/dist/tools/email.js +23 -9
  54. package/dist/tools/email.js.map +1 -1
  55. package/dist/tools/firecrawl.d.ts.map +1 -1
  56. package/dist/tools/firecrawl.js +31 -24
  57. package/dist/tools/firecrawl.js.map +1 -1
  58. package/dist/tools/handoff-analytics.d.ts +1 -1
  59. package/dist/tools/handoff-analytics.d.ts.map +1 -1
  60. package/dist/tools/handoff-analytics.js +5 -6
  61. package/dist/tools/handoff-analytics.js.map +1 -1
  62. package/dist/tools/help-center.d.ts +1 -1
  63. package/dist/tools/help-center.d.ts.map +1 -1
  64. package/dist/tools/help-center.js +41 -11
  65. package/dist/tools/help-center.js.map +1 -1
  66. package/dist/tools/impact-report.d.ts +1 -1
  67. package/dist/tools/impact-report.d.ts.map +1 -1
  68. package/dist/tools/impact-report.js +15 -11
  69. package/dist/tools/impact-report.js.map +1 -1
  70. package/dist/tools/insights.d.ts +1 -1
  71. package/dist/tools/insights.d.ts.map +1 -1
  72. package/dist/tools/insights.js +104 -15
  73. package/dist/tools/insights.js.map +1 -1
  74. package/dist/tools/media.d.ts +1 -1
  75. package/dist/tools/media.d.ts.map +1 -1
  76. package/dist/tools/media.js +2 -3
  77. package/dist/tools/media.js.map +1 -1
  78. package/dist/tools/office-hours.d.ts +1 -1
  79. package/dist/tools/office-hours.d.ts.map +1 -1
  80. package/dist/tools/office-hours.js +42 -10
  81. package/dist/tools/office-hours.js.map +1 -1
  82. package/dist/tools/onboarding.d.ts.map +1 -1
  83. package/dist/tools/onboarding.js +8 -5
  84. package/dist/tools/onboarding.js.map +1 -1
  85. package/dist/tools/org.d.ts +1 -1
  86. package/dist/tools/org.d.ts.map +1 -1
  87. package/dist/tools/org.js +5 -4
  88. package/dist/tools/org.js.map +1 -1
  89. package/dist/tools/phone.d.ts +1 -1
  90. package/dist/tools/phone.d.ts.map +1 -1
  91. package/dist/tools/phone.js +66 -48
  92. package/dist/tools/phone.js.map +1 -1
  93. package/dist/tools/redaction.d.ts +1 -1
  94. package/dist/tools/redaction.d.ts.map +1 -1
  95. package/dist/tools/redaction.js +5 -4
  96. package/dist/tools/redaction.js.map +1 -1
  97. package/dist/tools/search.d.ts +1 -1
  98. package/dist/tools/search.d.ts.map +1 -1
  99. package/dist/tools/search.js +3 -2
  100. package/dist/tools/search.js.map +1 -1
  101. package/dist/tools/sequences.d.ts +1 -1
  102. package/dist/tools/sequences.d.ts.map +1 -1
  103. package/dist/tools/sequences.js +26 -14
  104. package/dist/tools/sequences.js.map +1 -1
  105. package/dist/tools/sessions.d.ts +1 -1
  106. package/dist/tools/sessions.d.ts.map +1 -1
  107. package/dist/tools/sessions.js +150 -123
  108. package/dist/tools/sessions.js.map +1 -1
  109. package/dist/tools/sla-analytics.d.ts +1 -1
  110. package/dist/tools/sla-analytics.d.ts.map +1 -1
  111. package/dist/tools/sla-analytics.js +31 -45
  112. package/dist/tools/sla-analytics.js.map +1 -1
  113. package/dist/tools/sla.d.ts +1 -1
  114. package/dist/tools/sla.d.ts.map +1 -1
  115. package/dist/tools/sla.js +18 -16
  116. package/dist/tools/sla.js.map +1 -1
  117. package/dist/tools/tags.d.ts +1 -1
  118. package/dist/tools/tags.d.ts.map +1 -1
  119. package/dist/tools/tags.js +11 -11
  120. package/dist/tools/tags.js.map +1 -1
  121. package/dist/tools/teams.d.ts +1 -1
  122. package/dist/tools/teams.d.ts.map +1 -1
  123. package/dist/tools/teams.js +24 -17
  124. package/dist/tools/teams.js.map +1 -1
  125. package/dist/tools/todos.d.ts +1 -1
  126. package/dist/tools/todos.d.ts.map +1 -1
  127. package/dist/tools/todos.js +30 -21
  128. package/dist/tools/todos.js.map +1 -1
  129. package/dist/tools/training.d.ts +1 -1
  130. package/dist/tools/training.d.ts.map +1 -1
  131. package/dist/tools/training.js +110 -64
  132. package/dist/tools/training.js.map +1 -1
  133. package/dist/tools/users.d.ts +1 -1
  134. package/dist/tools/users.d.ts.map +1 -1
  135. package/dist/tools/users.js +35 -23
  136. package/dist/tools/users.js.map +1 -1
  137. package/dist/tools/whatsapp.d.ts +1 -1
  138. package/dist/tools/whatsapp.d.ts.map +1 -1
  139. package/dist/tools/whatsapp.js +11 -2
  140. package/dist/tools/whatsapp.js.map +1 -1
  141. package/dist/tools/widget.d.ts +1 -1
  142. package/dist/tools/widget.d.ts.map +1 -1
  143. package/dist/tools/widget.js +3 -2
  144. package/dist/tools/widget.js.map +1 -1
  145. package/dist/tools/workflows.d.ts +1 -1
  146. package/dist/tools/workflows.d.ts.map +1 -1
  147. package/dist/tools/workflows.js +164 -93
  148. package/dist/tools/workflows.js.map +1 -1
  149. package/dist/utils/json.d.ts +9 -0
  150. package/dist/utils/json.d.ts.map +1 -0
  151. package/dist/utils/json.js +10 -0
  152. package/dist/utils/json.js.map +1 -0
  153. package/dist/utils/session-channel.d.ts +4 -0
  154. package/dist/utils/session-channel.d.ts.map +1 -0
  155. package/dist/utils/session-channel.js +15 -0
  156. package/dist/utils/session-channel.js.map +1 -0
  157. package/dist/workflow-editor-state.d.ts +12 -2
  158. package/dist/workflow-editor-state.d.ts.map +1 -1
  159. package/dist/workflow-editor-state.js.map +1 -1
  160. package/dist/workflows.spec.d.ts +2 -0
  161. package/dist/workflows.spec.d.ts.map +1 -0
  162. package/dist/workflows.spec.js +109 -0
  163. package/dist/workflows.spec.js.map +1 -0
  164. package/package.json +5 -2
@@ -1,28 +1,112 @@
1
1
  import { z } from 'zod';
2
- import { safePath } from '../api-client.js';
2
+ import { jsonContent } from '../api-client.js';
3
+ import { sessionChannelSchema } from '../utils/session-channel.js';
4
+ const insightCategoryTypeSchema = z.enum([
5
+ 'base',
6
+ 'suggested',
7
+ 'user_defined',
8
+ ]);
9
+ const insightStatusSchema = z.enum([
10
+ 'all',
11
+ 'unresolved',
12
+ 'resolved',
13
+ 'archived',
14
+ ]);
15
+ const insightSentimentSchema = z.enum(['angry', 'happy', 'neutral']);
16
+ const insightSortBySchema = z.enum([
17
+ 'occurrence_count',
18
+ 'last_seen_at',
19
+ 'first_seen_at',
20
+ 'created_at',
21
+ ]);
22
+ const sortOrderSchema = z.enum(['asc', 'desc']);
23
+ const sessionStatusSchema = z.enum([
24
+ 'closed_resolved',
25
+ 'closed_unresolved',
26
+ 'open',
27
+ ]);
28
+ const sessionLanguageSchema = z.custom((value) => typeof value === 'string' && /^[a-z]{2,3}(-[A-Z]{2})?$/.test(value), {
29
+ message: 'Use ISO 639 language code (optional region), e.g. en, es, pt, en-US',
30
+ });
31
+ const customDataFilterSchema = z.array(z.record(z.string(), z.string()));
3
32
  export function registerInsightTools(server, client) {
4
33
  server.registerTool('list_insights', {
5
- description: 'List customer insights (Voice of Customer) with pagination. Insights are automatically generated from chat sessions and represent recurring customer themes, issues, or feedback patterns.',
34
+ description: 'List customer insights (Voice of Customer) with extensive filtering: category, status, sentiment, sorting, occurrence threshold, search, assignment/team, insight number, session-level filters (language, channel, date range, status, contact), custom-data filters, and pagination.',
6
35
  inputSchema: {
7
- cursor: z.string().optional().describe('Pagination cursor from a previous response'),
36
+ cursor: z
37
+ .string()
38
+ .optional()
39
+ .describe('Legacy page cursor from previous MCP behavior (mapped to page if `page` is absent)'),
40
+ page: z.coerce.number().int().min(1).optional().describe('Page number (default: 1)'),
41
+ category: z.string().optional().describe('Filter by category name'),
42
+ status: insightStatusSchema.optional().describe('Filter by insight status'),
43
+ sentiment: insightSentimentSchema.optional().describe('Filter by insight sentiment'),
44
+ sort_by: insightSortBySchema.optional().describe('Sort field'),
45
+ sort_order: sortOrderSchema.optional().describe('Sort order'),
46
+ min_sessions: z.coerce.number().int().min(0).optional().describe('Minimum occurrence/session count'),
47
+ search: z.string().optional().describe('Search text in insight content'),
48
+ team_id: z
49
+ .string()
50
+ .optional()
51
+ .describe('Filter by team ID, or `not_assigned` to include unassigned insights'),
52
+ insight_number: z.coerce.number().int().positive().optional().describe('Filter by insight number'),
53
+ session_language: sessionLanguageSchema
54
+ .optional()
55
+ .describe('Filter by session language code (ISO 639-1/639-2, optional region suffix like en-US)'),
56
+ ticket_sentiment: insightSentimentSchema.optional().describe('Filter by ticket/session sentiment'),
57
+ channel: sessionChannelSchema.optional().describe('Filter by session channel'),
58
+ session_from_date: z.string().optional().describe('Session date-from (ISO datetime/date)'),
59
+ session_to_date: z.string().optional().describe('Session date-to (ISO datetime/date)'),
60
+ session_status: sessionStatusSchema.optional().describe('Filter by session status'),
61
+ session_contact_id: z.string().optional().describe('Filter by session contact ID'),
62
+ ticket_custom_data: customDataFilterSchema
63
+ .optional()
64
+ .describe('OR-of-objects / AND-within-object filter over ticket custom data'),
65
+ contact_custom_data: customDataFilterSchema
66
+ .optional()
67
+ .describe('OR-of-objects / AND-within-object filter over contact custom data'),
8
68
  },
9
- }, async ({ cursor }) => {
10
- const data = await client.post('/insights/', { cursor });
11
- return { content: [{ type: 'text', text: JSON.stringify(data) }] };
69
+ }, async ({ cursor, page, category, status, sentiment, sort_by, sort_order, min_sessions, search, team_id, insight_number, session_language, ticket_sentiment, channel, session_from_date, session_to_date, session_status, session_contact_id, ticket_custom_data, contact_custom_data, }) => {
70
+ const body = {
71
+ page: page ?? (cursor ? Number(cursor) : 1),
72
+ ...(category !== undefined ? { category } : {}),
73
+ ...(status !== undefined ? { status } : {}),
74
+ ...(sentiment !== undefined ? { sentiment } : {}),
75
+ ...(sort_by !== undefined ? { sortBy: sort_by } : {}),
76
+ ...(sort_order !== undefined ? { sortOrder: sort_order } : {}),
77
+ ...(min_sessions !== undefined ? { minSessions: min_sessions } : {}),
78
+ ...(search !== undefined ? { search } : {}),
79
+ ...(team_id !== undefined ? { teamId: team_id } : {}),
80
+ ...(insight_number !== undefined ? { insightNumber: insight_number } : {}),
81
+ ...(session_language !== undefined ? { sessionLanguage: session_language } : {}),
82
+ ...(ticket_sentiment !== undefined ? { ticketSentiment: ticket_sentiment } : {}),
83
+ ...(channel !== undefined ? { channel } : {}),
84
+ ...(session_from_date !== undefined ? { sessionFromDate: session_from_date } : {}),
85
+ ...(session_to_date !== undefined ? { sessionToDate: session_to_date } : {}),
86
+ ...(session_status !== undefined ? { sessionStatus: session_status } : {}),
87
+ ...(session_contact_id !== undefined ? { sessionContactId: session_contact_id } : {}),
88
+ ...(ticket_custom_data !== undefined ? { ticketCustomData: ticket_custom_data } : {}),
89
+ ...(contact_custom_data !== undefined ? { contactCustomData: contact_custom_data } : {}),
90
+ };
91
+ const data = (await client.POST('/insights', {
92
+ body,
93
+ })).data;
94
+ return jsonContent(data);
12
95
  });
13
96
  server.registerTool('get_insight', {
14
97
  description: 'Get full details of a specific customer insight by ID, including its category, related sessions, and resolution status.',
15
98
  inputSchema: { id: z.string().describe('The insight ID') },
16
99
  }, async ({ id }) => {
17
- const data = await client.get(`/insights/${safePath(id)}`);
18
- return { content: [{ type: 'text', text: JSON.stringify(data) }] };
100
+ const data = (await client.GET('/insights/{id}', { params: { path: { id } } })).data;
101
+ return jsonContent(data);
19
102
  });
20
103
  server.registerTool('resolve_insight', {
21
104
  description: 'Mark a customer insight as resolved. Use this when the underlying issue has been addressed.',
22
105
  inputSchema: { id: z.string().describe('The insight ID to resolve') },
23
106
  }, async ({ id }) => {
24
- const data = await client.post(`/insights/${safePath(id)}/resolve`);
25
- return { content: [{ type: 'text', text: JSON.stringify(data) }] };
107
+ const data = (await client.POST('/insights/{id}/resolve', { params: { path: { id } } }))
108
+ .data;
109
+ return jsonContent(data);
26
110
  });
27
111
  server.registerTool('assign_insight', {
28
112
  description: 'Assign a customer insight to a specific team for follow-up.',
@@ -31,17 +115,22 @@ export function registerInsightTools(server, client) {
31
115
  group_id: z.string().describe('The team/group ID to assign the insight to'),
32
116
  },
33
117
  }, async ({ id, group_id }) => {
34
- const data = await client.post(`/insights/${safePath(id)}/assign`, { groupId: group_id });
35
- return { content: [{ type: 'text', text: JSON.stringify(data) }] };
118
+ const data = (await client.POST('/insights/{id}/assign', {
119
+ params: { path: { id } },
120
+ body: { groupId: group_id },
121
+ })).data;
122
+ return jsonContent(data);
36
123
  });
37
124
  server.registerTool('list_insight_categories', {
38
125
  description: 'List all insight categories. Categories organize customer insights by theme (e.g. "billing issues", "feature requests").',
39
126
  inputSchema: {
40
- type: z.string().optional().describe('Filter categories by type'),
127
+ type: insightCategoryTypeSchema.optional().describe('Filter categories by type'),
41
128
  },
42
129
  }, async ({ type }) => {
43
- const data = await client.get('/insights/categories', { type });
44
- return { content: [{ type: 'text', text: JSON.stringify(data) }] };
130
+ const data = (await client.GET('/insights/categories', {
131
+ params: { query: { type } },
132
+ })).data;
133
+ return jsonContent(data);
45
134
  });
46
135
  }
47
136
  //# sourceMappingURL=insights.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"insights.js","sourceRoot":"","sources":["../../src/tools/insights.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAgB,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE1D,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,MAAoB;IAC1E,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,WAAW,EACT,4LAA4L;QAC9L,WAAW,EAAE;YACX,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;SACrF;KACF,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QACnB,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QACzD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;IACrE,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;QACE,WAAW,EACT,yHAAyH;QAC3H,WAAW,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;KAC3D,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;QACf,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;IACrE,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,WAAW,EACT,6FAA6F;QAC/F,WAAW,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC,EAAE;KACtE,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;QACf,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,aAAa,QAAQ,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;QACpE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;IACrE,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,WAAW,EAAE,6DAA6D;QAC1E,WAAW,EAAE;YACX,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;YACnD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;SAC5E;KACF,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;QACzB,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,aAAa,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC1F,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;IACrE,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,yBAAyB,EACzB;QACE,WAAW,EACT,0HAA0H;QAC5H,WAAW,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;SAClE;KACF,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACjB,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,sBAAsB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAChE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;IACrE,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"insights.js","sourceRoot":"","sources":["../../src/tools/insights.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- import { OpenCXClient } from '../api-client.js';
2
+ import type { OpenCXClient } from '../api-client.js';
3
3
  export declare function registerMediaTools(server: McpServer, client: OpenCXClient): void;
4
4
  //# sourceMappingURL=media.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../src/tools/media.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAYhD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,QA0DzE"}
1
+ {"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../src/tools/media.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAYrD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,QAwDzE"}
@@ -1,6 +1,7 @@
1
1
  import { readFile } from 'node:fs/promises';
2
2
  import { basename, extname } from 'node:path';
3
3
  import { z } from 'zod';
4
+ import { jsonContent } from '../api-client.js';
4
5
  const ALLOWED_EXTENSIONS = new Set(['.png', '.jpg', '.jpeg', '.gif', '.webp']);
5
6
  const MIME_BY_EXT = {
6
7
  '.png': 'image/png',
@@ -53,9 +54,7 @@ export function registerMediaTools(server, client) {
53
54
  const formData = new FormData();
54
55
  formData.append('file', blob, fileName);
55
56
  const data = await client.postMultipart('/media/upload', formData);
56
- return {
57
- content: [{ type: 'text', text: JSON.stringify(data) }],
58
- };
57
+ return jsonContent(data);
59
58
  });
60
59
  }
61
60
  //# sourceMappingURL=media.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"media.js","sourceRoot":"","sources":["../../src/tools/media.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE9C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAC/E,MAAM,WAAW,GAA2B;IAC1C,MAAM,EAAE,WAAW;IACnB,MAAM,EAAE,YAAY;IACpB,OAAO,EAAE,YAAY;IACrB,MAAM,EAAE,WAAW;IACnB,OAAO,EAAE,YAAY;CACtB,CAAC;AACF,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO;AAE9C,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,MAAoB;IACxE,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,WAAW,EACT,8JAA8J;QAChK,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;SAC1E;KACF,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;QACtB,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;QAC7C,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACjC,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,mBAAmB,GAAG,2BAA2B,CAAC,GAAG,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;qBAC5F;iBACF;aACF,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,CAAC;QAEzC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;aACnD,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,GAAG,aAAa,EAAE,CAAC;YAClC,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB;qBACtF;iBACF;aACF,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QAChC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAExC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;QAEnE,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;SACxD,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"media.js","sourceRoot":"","sources":["../../src/tools/media.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE9C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAC/E,MAAM,WAAW,GAA2B;IAC1C,MAAM,EAAE,WAAW;IACnB,MAAM,EAAE,YAAY;IACpB,OAAO,EAAE,YAAY;IACrB,MAAM,EAAE,WAAW;IACnB,OAAO,EAAE,YAAY;CACtB,CAAC;AACF,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO;AAE9C,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,MAAoB;IACxE,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,WAAW,EACT,8JAA8J;QAChK,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;SAC1E;KACF,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;QACtB,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;QAC7C,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACjC,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,mBAAmB,GAAG,2BAA2B,CAAC,GAAG,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;qBAC5F;iBACF;aACF,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,CAAC;QAEzC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;aACnD,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,GAAG,aAAa,EAAE,CAAC;YAClC,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB;qBACtF;iBACF;aACF,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QAChC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAExC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;QAEnE,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- import { OpenCXClient } from '../api-client.js';
2
+ import type { OpenCXClient } from '../api-client.js';
3
3
  export declare function registerOfficeHoursTools(server: McpServer, client: OpenCXClient): void;
4
4
  //# sourceMappingURL=office-hours.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"office-hours.d.ts","sourceRoot":"","sources":["../../src/tools/office-hours.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAY,MAAM,kBAAkB,CAAC;AAY1D,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,QA8E/E"}
1
+ {"version":3,"file":"office-hours.d.ts","sourceRoot":"","sources":["../../src/tools/office-hours.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AA6BrD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,QAiG/E"}
@@ -1,9 +1,24 @@
1
1
  import { z } from 'zod';
2
- import { safePath } from '../api-client.js';
2
+ import { jsonContent } from '../api-client.js';
3
+ const dayOfWeekValues = [
4
+ 'everyday',
5
+ 'friday',
6
+ 'friday_and_saturday',
7
+ 'monday',
8
+ 'monday_to_friday',
9
+ 'saturday',
10
+ 'sunday',
11
+ 'sunday_and_monday',
12
+ 'sunday_to_thursday',
13
+ 'thursday',
14
+ 'tuesday',
15
+ 'wednesday',
16
+ ];
17
+ const dayOfWeekSchema = z.enum(dayOfWeekValues);
3
18
  const DAY_OF_WEEK_DESC = 'Day(s) of week. Single days: "monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday". ' +
4
19
  'Ranges: "everyday", "monday_to_friday", "sunday_to_thursday", "friday_and_saturday", "sunday_and_monday".';
5
20
  const ShiftParam = z.object({
6
- day_of_week: z.string().describe(DAY_OF_WEEK_DESC),
21
+ day_of_week: dayOfWeekSchema.describe(DAY_OF_WEEK_DESC),
7
22
  start_time: z.string().describe('Start time in HH:mm:ss (e.g. "09:00:00")'),
8
23
  end_time: z.string().describe('End time in HH:mm:ss (e.g. "17:00:00")'),
9
24
  });
@@ -11,15 +26,15 @@ export function registerOfficeHoursTools(server, client) {
11
26
  server.registerTool('list_office_hours', {
12
27
  description: 'List all office hours schedules. Office hours define when your support team is available — the AI uses this to set expectations outside business hours.',
13
28
  }, async () => {
14
- const data = await client.get('/office-hours/');
15
- return { content: [{ type: 'text', text: JSON.stringify(data) }] };
29
+ const data = (await client.GET('/office-hours')).data;
30
+ return jsonContent(data);
16
31
  });
17
32
  server.registerTool('get_office_hours', {
18
33
  description: 'Get a specific office hours schedule by ID, including all its time shifts.',
19
34
  inputSchema: { id: z.string().describe('The office hours schedule ID') },
20
35
  }, async ({ id }) => {
21
- const data = await client.get(`/office-hours/${safePath(id)}`);
22
- return { content: [{ type: 'text', text: JSON.stringify(data) }] };
36
+ const data = (await client.GET('/office-hours/{id}', { params: { path: { id } } })).data;
37
+ return jsonContent(data);
23
38
  });
24
39
  server.registerTool('create_office_hours', {
25
40
  description: 'Create a new office hours schedule. Define when support is available with time shifts. Example: for Mon-Fri 9am-5pm EST, use name "Business Hours", iana_timezone "America/New_York", and one shift with day_of_week "monday_to_friday", start_time "09:00:00", end_time "17:00:00".',
@@ -31,8 +46,16 @@ export function registerOfficeHoursTools(server, client) {
31
46
  shifts: z.array(ShiftParam).describe('Time blocks when support is available'),
32
47
  },
33
48
  }, async (params) => {
34
- const data = await client.post('/office-hours/', params);
35
- return { content: [{ type: 'text', text: JSON.stringify(data) }] };
49
+ const data = (await client.POST('/office-hours', {
50
+ body: {
51
+ ...params,
52
+ shifts: params.shifts.map((s) => ({
53
+ ...s,
54
+ day_of_week: s.day_of_week,
55
+ })),
56
+ },
57
+ })).data;
58
+ return jsonContent(data);
36
59
  });
37
60
  server.registerTool('update_office_hours', {
38
61
  description: 'Update an office hours schedule. The shifts array replaces ALL existing shifts — include every shift you want to keep.',
@@ -45,14 +68,23 @@ export function registerOfficeHoursTools(server, client) {
45
68
  .describe('Complete replacement list of shifts'),
46
69
  },
47
70
  }, async ({ id, ...body }) => {
48
- await client.put(`/office-hours/${safePath(id)}`, body);
71
+ await client.PUT('/office-hours/{id}', {
72
+ params: { path: { id } },
73
+ body: {
74
+ ...body,
75
+ shifts: body.shifts.map((s) => ({
76
+ ...s,
77
+ day_of_week: s.day_of_week,
78
+ })),
79
+ },
80
+ });
49
81
  return { content: [{ type: 'text', text: `Office hours ${id} updated.` }] };
50
82
  });
51
83
  server.registerTool('delete_office_hours', {
52
84
  description: 'Delete an office hours schedule and all its shifts. This action cannot be undone.',
53
85
  inputSchema: { id: z.string().describe('The office hours schedule ID to delete') },
54
86
  }, async ({ id }) => {
55
- await client.delete(`/office-hours/${safePath(id)}`);
87
+ await client.DELETE('/office-hours/{id}', { params: { path: { id } } });
56
88
  return { content: [{ type: 'text', text: `Office hours ${id} deleted.` }] };
57
89
  });
58
90
  }
@@ -1 +1 @@
1
- {"version":3,"file":"office-hours.js","sourceRoot":"","sources":["../../src/tools/office-hours.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAgB,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE1D,MAAM,gBAAgB,GACpB,6GAA6G;IAC7G,2GAA2G,CAAC;AAE9G,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IAClD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IAC3E,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;CACxE,CAAC,CAAC;AAEH,MAAM,UAAU,wBAAwB,CAAC,MAAiB,EAAE,MAAoB;IAC9E,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;QACE,WAAW,EACT,yJAAyJ;KAC5J,EACD,KAAK,IAAI,EAAE;QACT,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAChD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;IACrE,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,WAAW,EAAE,4EAA4E;QACzF,WAAW,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC,EAAE;KACzE,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;QACf,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,iBAAiB,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;IACrE,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;QACE,WAAW,EACT,sRAAsR;QACxR,WAAW,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;YACrF,aAAa,EAAE,CAAC;iBACb,MAAM,EAAE;iBACR,QAAQ,CAAC,wEAAwE,CAAC;YACrF,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,uCAAuC,CAAC;SAC9E;KACF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QACzD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;IACrE,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;QACE,WAAW,EACT,wHAAwH;QAC1H,WAAW,EAAE;YACX,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;YACjE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;YAClD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;YAC3D,MAAM,EAAE,CAAC;iBACN,KAAK,CACJ,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC,EAAE,CAAC,CACtF;iBACA,QAAQ,CAAC,qCAAqC,CAAC;SACnD;KACF,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE;QACxB,MAAM,MAAM,CAAC,GAAG,CAAC,iBAAiB,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACxD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;IAC9E,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;QACE,WAAW,EACT,mFAAmF;QACrF,WAAW,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC,EAAE;KACnF,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;QACf,MAAM,MAAM,CAAC,MAAM,CAAC,iBAAiB,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACrD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;IAC9E,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"office-hours.js","sourceRoot":"","sources":["../../src/tools/office-hours.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"onboarding.d.ts","sourceRoot":"","sources":["../../src/tools/onboarding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,QAyB9E"}
1
+ {"version":3,"file":"onboarding.d.ts","sourceRoot":"","sources":["../../src/tools/onboarding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,QA2B9E"}
@@ -1,15 +1,18 @@
1
1
  import { z } from 'zod';
2
2
  export function registerOnboardingTools(server, client) {
3
- server.tool('complete_onboarding_step', `Mark an onboarding step as complete or skipped. Call this after finishing all tasks for a step.
3
+ server.registerTool('complete_onboarding_step', {
4
+ description: `Mark an onboarding step as complete or skipped. Call this after finishing all tasks for a step.
4
5
 
5
6
  Steps: "training" (Discover & Train), "channels" (Go Live), "teammates" (Grow).
6
7
  Actions: "complete" (step is done), "skip" (user wants to skip).
7
8
 
8
- The onboarding panel in the dashboard updates automatically when you call this.`, {
9
- step: z.enum(['training', 'channels', 'teammates']).describe('The onboarding step to update'),
10
- action: z.enum(['complete', 'skip']).describe('Whether the step is complete or skipped'),
9
+ The onboarding panel in the dashboard updates automatically when you call this.`,
10
+ inputSchema: {
11
+ step: z.enum(['training', 'channels', 'teammates']).describe('The onboarding step to update'),
12
+ action: z.enum(['complete', 'skip']).describe('Whether the step is complete or skipped'),
13
+ },
11
14
  }, async ({ step, action }) => {
12
- await client.patch('/companion/onboarding', { step, action });
15
+ await client.PATCH('/companion/onboarding', { body: { step, action } });
13
16
  return {
14
17
  content: [
15
18
  {
@@ -1 +1 @@
1
- {"version":3,"file":"onboarding.js","sourceRoot":"","sources":["../../src/tools/onboarding.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,UAAU,uBAAuB,CAAC,MAAiB,EAAE,MAAoB;IAC7E,MAAM,CAAC,IAAI,CACT,0BAA0B,EAC1B;;;;;gFAK4E,EAC5E;QACE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC;QAC7F,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,yCAAyC,CAAC;KACzF,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE;QACzB,MAAM,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9D,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,oBAAoB,IAAI,eAAe,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,GAAG;iBAChG;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"onboarding.js","sourceRoot":"","sources":["../../src/tools/onboarding.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,UAAU,uBAAuB,CAAC,MAAiB,EAAE,MAAoB;IAC7E,MAAM,CAAC,YAAY,CACjB,0BAA0B,EAC1B;QACE,WAAW,EAAE;;;;;gFAK6D;QAC1E,WAAW,EAAE;YACb,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC;YAC7F,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,yCAAyC,CAAC;SACvF;KACF,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE;QACzB,MAAM,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QACxE,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,oBAAoB,IAAI,eAAe,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,GAAG;iBAChG;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- import { OpenCXClient } from '../api-client.js';
2
+ import type { OpenCXClient } from '../api-client.js';
3
3
  export declare function registerOrgTools(server: McpServer, client: OpenCXClient): void;
4
4
  //# sourceMappingURL=org.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"org.d.ts","sourceRoot":"","sources":["../../src/tools/org.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,QA0BvE"}
1
+ {"version":3,"file":"org.d.ts","sourceRoot":"","sources":["../../src/tools/org.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,QA0BvE"}
package/dist/tools/org.js CHANGED
@@ -1,10 +1,11 @@
1
1
  import { z } from 'zod';
2
+ import { jsonContent } from '../api-client.js';
2
3
  export function registerOrgTools(server, client) {
3
4
  server.registerTool('get_organization', {
4
5
  description: 'Get information about your OpenCX organization, including its name, creation date, and last update timestamp. Useful to verify which org your API key belongs to.',
5
6
  }, async () => {
6
- const data = await client.get('/org/');
7
- return { content: [{ type: 'text', text: JSON.stringify(data) }] };
7
+ const data = (await client.GET('/org')).data;
8
+ return jsonContent(data);
8
9
  });
9
10
  server.registerTool('update_organization', {
10
11
  description: 'Update your organization name.',
@@ -12,8 +13,8 @@ export function registerOrgTools(server, client) {
12
13
  name: z.string().describe('The new organization name'),
13
14
  },
14
15
  }, async ({ name }) => {
15
- const data = await client.patch('/org/', { name });
16
- return { content: [{ type: 'text', text: JSON.stringify(data) }] };
16
+ const data = (await client.PATCH('/org', { body: { name } })).data;
17
+ return jsonContent(data);
17
18
  });
18
19
  }
19
20
  //# sourceMappingURL=org.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"org.js","sourceRoot":"","sources":["../../src/tools/org.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,UAAU,gBAAgB,CAAC,MAAiB,EAAE,MAAoB;IACtE,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,WAAW,EACT,mKAAmK;KACtK,EACD,KAAK,IAAI,EAAE;QACT,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACvC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;IACrE,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;QACE,WAAW,EAAE,gCAAgC;QAC7C,WAAW,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;SACvD;KACF,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACjB,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;IACrE,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"org.js","sourceRoot":"","sources":["../../src/tools/org.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,MAAM,UAAU,gBAAgB,CAAC,MAAiB,EAAE,MAAoB;IACtE,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,WAAW,EACT,mKAAmK;KACtK,EACD,KAAK,IAAI,EAAE;QACT,MAAM,IAAI,GAAG,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7C,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;QACE,WAAW,EAAE,gCAAgC;QAC7C,WAAW,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;SACvD;KACF,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACjB,MAAM,IAAI,GAAG,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACnE,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- import { OpenCXClient } from '../api-client.js';
2
+ import type { OpenCXClient } from '../api-client.js';
3
3
  /** @internal exported for tests */
4
4
  export declare function buildPhoneAgentCardSpec(agent: {
5
5
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"phone.d.ts","sourceRoot":"","sources":["../../src/tools/phone.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAY,MAAM,kBAAkB,CAAC;AAc1D,mCAAmC;AACnC,wBAAgB,uBAAuB,CAAC,KAAK,EAAE;IAC7C,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,MAAM,CAeT;AAWD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,QA0SzE"}
1
+ {"version":3,"file":"phone.d.ts","sourceRoot":"","sources":["../../src/tools/phone.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAYrD,mCAAmC;AACnC,wBAAgB,uBAAuB,CAAC,KAAK,EAAE;IAC7C,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,MAAM,CAeT;AAkBD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,QA2UzE"}