@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.
- package/dist/api-client.d.ts +17 -12
- package/dist/api-client.d.ts.map +1 -1
- package/dist/api-client.js +35 -56
- package/dist/api-client.js.map +1 -1
- package/dist/api-client.spec.js +51 -89
- package/dist/api-client.spec.js.map +1 -1
- package/dist/schema.d.ts +12706 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +6 -0
- package/dist/schema.js.map +1 -0
- package/dist/server.js +2 -2
- package/dist/server.js.map +1 -1
- package/dist/server.spec.js +54 -51
- package/dist/server.spec.js.map +1 -1
- package/dist/tools/actions.d.ts +1 -1
- package/dist/tools/actions.d.ts.map +1 -1
- package/dist/tools/actions.js +26 -16
- package/dist/tools/actions.js.map +1 -1
- package/dist/tools/audit-logs.d.ts +1 -1
- package/dist/tools/audit-logs.d.ts.map +1 -1
- package/dist/tools/audit-logs.js +50 -42
- package/dist/tools/audit-logs.js.map +1 -1
- package/dist/tools/autopilot.d.ts +1 -1
- package/dist/tools/autopilot.d.ts.map +1 -1
- package/dist/tools/autopilot.js +5 -4
- package/dist/tools/autopilot.js.map +1 -1
- package/dist/tools/blocklist.d.ts +1 -1
- package/dist/tools/blocklist.d.ts.map +1 -1
- package/dist/tools/blocklist.js +20 -20
- package/dist/tools/blocklist.js.map +1 -1
- package/dist/tools/contact-segments.d.ts +1 -1
- package/dist/tools/contact-segments.d.ts.map +1 -1
- package/dist/tools/contact-segments.js +15 -12
- package/dist/tools/contact-segments.js.map +1 -1
- package/dist/tools/contacts.d.ts +1 -1
- package/dist/tools/contacts.d.ts.map +1 -1
- package/dist/tools/contacts.js +23 -11
- package/dist/tools/contacts.js.map +1 -1
- package/dist/tools/coworker.d.ts +1 -1
- package/dist/tools/coworker.d.ts.map +1 -1
- package/dist/tools/coworker.js +54 -43
- package/dist/tools/coworker.js.map +1 -1
- package/dist/tools/crawl.d.ts +1 -1
- package/dist/tools/crawl.d.ts.map +1 -1
- package/dist/tools/crawl.js +43 -14
- package/dist/tools/crawl.js.map +1 -1
- package/dist/tools/csat.d.ts +1 -1
- package/dist/tools/csat.d.ts.map +1 -1
- package/dist/tools/csat.js +16 -10
- package/dist/tools/csat.js.map +1 -1
- package/dist/tools/email.d.ts +1 -1
- package/dist/tools/email.d.ts.map +1 -1
- package/dist/tools/email.js +23 -9
- package/dist/tools/email.js.map +1 -1
- package/dist/tools/firecrawl.d.ts.map +1 -1
- package/dist/tools/firecrawl.js +31 -24
- package/dist/tools/firecrawl.js.map +1 -1
- package/dist/tools/handoff-analytics.d.ts +1 -1
- package/dist/tools/handoff-analytics.d.ts.map +1 -1
- package/dist/tools/handoff-analytics.js +5 -6
- package/dist/tools/handoff-analytics.js.map +1 -1
- package/dist/tools/help-center.d.ts +1 -1
- package/dist/tools/help-center.d.ts.map +1 -1
- package/dist/tools/help-center.js +41 -11
- package/dist/tools/help-center.js.map +1 -1
- package/dist/tools/impact-report.d.ts +1 -1
- package/dist/tools/impact-report.d.ts.map +1 -1
- package/dist/tools/impact-report.js +15 -11
- package/dist/tools/impact-report.js.map +1 -1
- package/dist/tools/insights.d.ts +1 -1
- package/dist/tools/insights.d.ts.map +1 -1
- package/dist/tools/insights.js +104 -15
- package/dist/tools/insights.js.map +1 -1
- package/dist/tools/media.d.ts +1 -1
- package/dist/tools/media.d.ts.map +1 -1
- package/dist/tools/media.js +2 -3
- package/dist/tools/media.js.map +1 -1
- package/dist/tools/office-hours.d.ts +1 -1
- package/dist/tools/office-hours.d.ts.map +1 -1
- package/dist/tools/office-hours.js +42 -10
- package/dist/tools/office-hours.js.map +1 -1
- package/dist/tools/onboarding.d.ts.map +1 -1
- package/dist/tools/onboarding.js +8 -5
- package/dist/tools/onboarding.js.map +1 -1
- package/dist/tools/org.d.ts +1 -1
- package/dist/tools/org.d.ts.map +1 -1
- package/dist/tools/org.js +5 -4
- package/dist/tools/org.js.map +1 -1
- package/dist/tools/phone.d.ts +1 -1
- package/dist/tools/phone.d.ts.map +1 -1
- package/dist/tools/phone.js +66 -48
- package/dist/tools/phone.js.map +1 -1
- package/dist/tools/redaction.d.ts +1 -1
- package/dist/tools/redaction.d.ts.map +1 -1
- package/dist/tools/redaction.js +5 -4
- package/dist/tools/redaction.js.map +1 -1
- package/dist/tools/search.d.ts +1 -1
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +3 -2
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/sequences.d.ts +1 -1
- package/dist/tools/sequences.d.ts.map +1 -1
- package/dist/tools/sequences.js +26 -14
- package/dist/tools/sequences.js.map +1 -1
- package/dist/tools/sessions.d.ts +1 -1
- package/dist/tools/sessions.d.ts.map +1 -1
- package/dist/tools/sessions.js +150 -123
- package/dist/tools/sessions.js.map +1 -1
- package/dist/tools/sla-analytics.d.ts +1 -1
- package/dist/tools/sla-analytics.d.ts.map +1 -1
- package/dist/tools/sla-analytics.js +31 -45
- package/dist/tools/sla-analytics.js.map +1 -1
- package/dist/tools/sla.d.ts +1 -1
- package/dist/tools/sla.d.ts.map +1 -1
- package/dist/tools/sla.js +18 -16
- package/dist/tools/sla.js.map +1 -1
- package/dist/tools/tags.d.ts +1 -1
- package/dist/tools/tags.d.ts.map +1 -1
- package/dist/tools/tags.js +11 -11
- package/dist/tools/tags.js.map +1 -1
- package/dist/tools/teams.d.ts +1 -1
- package/dist/tools/teams.d.ts.map +1 -1
- package/dist/tools/teams.js +24 -17
- package/dist/tools/teams.js.map +1 -1
- package/dist/tools/todos.d.ts +1 -1
- package/dist/tools/todos.d.ts.map +1 -1
- package/dist/tools/todos.js +30 -21
- package/dist/tools/todos.js.map +1 -1
- package/dist/tools/training.d.ts +1 -1
- package/dist/tools/training.d.ts.map +1 -1
- package/dist/tools/training.js +110 -64
- package/dist/tools/training.js.map +1 -1
- package/dist/tools/users.d.ts +1 -1
- package/dist/tools/users.d.ts.map +1 -1
- package/dist/tools/users.js +35 -23
- package/dist/tools/users.js.map +1 -1
- package/dist/tools/whatsapp.d.ts +1 -1
- package/dist/tools/whatsapp.d.ts.map +1 -1
- package/dist/tools/whatsapp.js +11 -2
- package/dist/tools/whatsapp.js.map +1 -1
- package/dist/tools/widget.d.ts +1 -1
- package/dist/tools/widget.d.ts.map +1 -1
- package/dist/tools/widget.js +3 -2
- package/dist/tools/widget.js.map +1 -1
- package/dist/tools/workflows.d.ts +1 -1
- package/dist/tools/workflows.d.ts.map +1 -1
- package/dist/tools/workflows.js +164 -93
- package/dist/tools/workflows.js.map +1 -1
- package/dist/utils/json.d.ts +9 -0
- package/dist/utils/json.d.ts.map +1 -0
- package/dist/utils/json.js +10 -0
- package/dist/utils/json.js.map +1 -0
- package/dist/utils/session-channel.d.ts +4 -0
- package/dist/utils/session-channel.d.ts.map +1 -0
- package/dist/utils/session-channel.js +15 -0
- package/dist/utils/session-channel.js.map +1 -0
- package/dist/workflow-editor-state.d.ts +12 -2
- package/dist/workflow-editor-state.d.ts.map +1 -1
- package/dist/workflow-editor-state.js.map +1 -1
- package/dist/workflows.spec.d.ts +2 -0
- package/dist/workflows.spec.d.ts.map +1 -0
- package/dist/workflows.spec.js +109 -0
- package/dist/workflows.spec.js.map +1 -0
- package/package.json +5 -2
package/dist/tools/insights.js
CHANGED
|
@@ -1,28 +1,112 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import {
|
|
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
|
|
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
|
|
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
|
|
11
|
-
|
|
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.
|
|
18
|
-
return
|
|
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.
|
|
25
|
-
|
|
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.
|
|
35
|
-
|
|
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:
|
|
127
|
+
type: insightCategoryTypeSchema.optional().describe('Filter categories by type'),
|
|
41
128
|
},
|
|
42
129
|
}, async ({ type }) => {
|
|
43
|
-
const data = await client.
|
|
44
|
-
|
|
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,
|
|
1
|
+
{"version":3,"file":"insights.js","sourceRoot":"","sources":["../../src/tools/insights.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/media.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/tools/media.js
CHANGED
|
@@ -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
|
package/dist/tools/media.js.map
CHANGED
|
@@ -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;
|
|
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;
|
|
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 {
|
|
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:
|
|
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.
|
|
15
|
-
return
|
|
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.
|
|
22
|
-
return
|
|
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.
|
|
35
|
-
|
|
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.
|
|
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.
|
|
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,
|
|
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,
|
|
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"}
|
package/dist/tools/onboarding.js
CHANGED
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
export function registerOnboardingTools(server, client) {
|
|
3
|
-
server.
|
|
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
|
-
|
|
10
|
-
|
|
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.
|
|
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,
|
|
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"}
|
package/dist/tools/org.d.ts
CHANGED
|
@@ -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
|
package/dist/tools/org.d.ts.map
CHANGED
|
@@ -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;
|
|
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.
|
|
7
|
-
return
|
|
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.
|
|
16
|
-
return
|
|
16
|
+
const data = (await client.PATCH('/org', { body: { name } })).data;
|
|
17
|
+
return jsonContent(data);
|
|
17
18
|
});
|
|
18
19
|
}
|
|
19
20
|
//# sourceMappingURL=org.js.map
|
package/dist/tools/org.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"org.js","sourceRoot":"","sources":["../../src/tools/org.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,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"}
|
package/dist/tools/phone.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|