@opencx/mcp 1.8.2 → 1.8.4
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/server.d.ts.map +1 -1
- package/dist/server.js +6 -0
- package/dist/server.js.map +1 -1
- package/dist/tools/actions.d.ts.map +1 -1
- package/dist/tools/actions.js +67 -51
- package/dist/tools/actions.js.map +1 -1
- package/dist/tools/autopilot.d.ts.map +1 -1
- package/dist/tools/autopilot.js +26 -6
- package/dist/tools/autopilot.js.map +1 -1
- package/dist/tools/blocklist.d.ts.map +1 -1
- package/dist/tools/blocklist.js +40 -16
- package/dist/tools/blocklist.js.map +1 -1
- package/dist/tools/contacts.d.ts.map +1 -1
- package/dist/tools/contacts.js +35 -19
- package/dist/tools/contacts.js.map +1 -1
- package/dist/tools/crawl.d.ts.map +1 -1
- package/dist/tools/crawl.js +35 -17
- package/dist/tools/crawl.js.map +1 -1
- package/dist/tools/csat.d.ts.map +1 -1
- package/dist/tools/csat.js +18 -5
- package/dist/tools/csat.js.map +1 -1
- package/dist/tools/email.d.ts.map +1 -1
- package/dist/tools/email.js +43 -29
- package/dist/tools/email.js.map +1 -1
- package/dist/tools/handoff-analytics.d.ts.map +1 -1
- package/dist/tools/handoff-analytics.js +12 -9
- package/dist/tools/handoff-analytics.js.map +1 -1
- package/dist/tools/help-center.d.ts +4 -0
- package/dist/tools/help-center.d.ts.map +1 -0
- package/dist/tools/help-center.js +84 -0
- package/dist/tools/help-center.js.map +1 -0
- package/dist/tools/insights.d.ts.map +1 -1
- package/dist/tools/insights.js +24 -9
- package/dist/tools/insights.js.map +1 -1
- package/dist/tools/media.d.ts.map +1 -1
- package/dist/tools/media.js +5 -4
- package/dist/tools/media.js.map +1 -1
- package/dist/tools/office-hours.d.ts.map +1 -1
- package/dist/tools/office-hours.js +30 -18
- package/dist/tools/office-hours.js.map +1 -1
- package/dist/tools/org.d.ts.map +1 -1
- package/dist/tools/org.js +9 -2
- package/dist/tools/org.js.map +1 -1
- package/dist/tools/phone.d.ts.map +1 -1
- package/dist/tools/phone.js +75 -56
- package/dist/tools/phone.js.map +1 -1
- package/dist/tools/redaction.d.ts +4 -0
- package/dist/tools/redaction.d.ts.map +1 -0
- package/dist/tools/redaction.js +30 -0
- package/dist/tools/redaction.js.map +1 -0
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +7 -4
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/sequences.d.ts.map +1 -1
- package/dist/tools/sequences.js +46 -28
- package/dist/tools/sequences.js.map +1 -1
- package/dist/tools/sessions.d.ts.map +1 -1
- package/dist/tools/sessions.js +117 -80
- package/dist/tools/sessions.js.map +1 -1
- package/dist/tools/sla-analytics.d.ts.map +1 -1
- package/dist/tools/sla-analytics.js +25 -13
- package/dist/tools/sla-analytics.js.map +1 -1
- package/dist/tools/sla.d.ts.map +1 -1
- package/dist/tools/sla.js +65 -51
- package/dist/tools/sla.js.map +1 -1
- package/dist/tools/tags.d.ts.map +1 -1
- package/dist/tools/tags.js +28 -13
- package/dist/tools/tags.js.map +1 -1
- package/dist/tools/teams.d.ts.map +1 -1
- package/dist/tools/teams.js +40 -17
- package/dist/tools/teams.js.map +1 -1
- package/dist/tools/training.d.ts.map +1 -1
- package/dist/tools/training.js +126 -81
- package/dist/tools/training.js.map +1 -1
- package/dist/tools/whatsapp.d.ts.map +1 -1
- package/dist/tools/whatsapp.js +21 -20
- package/dist/tools/whatsapp.js.map +1 -1
- package/dist/tools/widget.d.ts +4 -0
- package/dist/tools/widget.d.ts.map +1 -0
- package/dist/tools/widget.js +23 -0
- package/dist/tools/widget.js.map +1 -0
- package/dist/tools/workflows.d.ts.map +1 -1
- package/dist/tools/workflows.js +118 -66
- package/dist/tools/workflows.js.map +1 -1
- package/dist/workflow-editor-state.d.ts +34 -0
- package/dist/workflow-editor-state.d.ts.map +1 -0
- package/dist/workflow-editor-state.js +74 -0
- package/dist/workflow-editor-state.js.map +1 -0
- package/package.json +1 -1
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA6BpE,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAoCvE"}
|
package/dist/server.js
CHANGED
|
@@ -23,6 +23,9 @@ import { registerWhatsAppTools } from './tools/whatsapp.js';
|
|
|
23
23
|
import { registerHandoffAnalyticsTools } from './tools/handoff-analytics.js';
|
|
24
24
|
import { registerSlaAnalyticsTools } from './tools/sla-analytics.js';
|
|
25
25
|
import { registerWorkflowTools } from './tools/workflows.js';
|
|
26
|
+
import { registerHelpCenterTools } from './tools/help-center.js';
|
|
27
|
+
import { registerRedactionTools } from './tools/redaction.js';
|
|
28
|
+
import { registerWidgetTools } from './tools/widget.js';
|
|
26
29
|
export function createServer(apiKey, baseUrl) {
|
|
27
30
|
const server = new McpServer({
|
|
28
31
|
name: 'OpenCX',
|
|
@@ -52,6 +55,9 @@ export function createServer(apiKey, baseUrl) {
|
|
|
52
55
|
registerHandoffAnalyticsTools(server, client);
|
|
53
56
|
registerSlaAnalyticsTools(server, client);
|
|
54
57
|
registerWorkflowTools(server, client);
|
|
58
|
+
registerHelpCenterTools(server, client);
|
|
59
|
+
registerRedactionTools(server, client);
|
|
60
|
+
registerWidgetTools(server, client);
|
|
55
61
|
return server;
|
|
56
62
|
}
|
|
57
63
|
//# sourceMappingURL=server.js.map
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/tools/actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAY,MAAM,kBAAkB,CAAC;AAE1D,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/tools/actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAY,MAAM,kBAAkB,CAAC;AAE1D,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,QA6H1E"}
|
package/dist/tools/actions.js
CHANGED
|
@@ -1,74 +1,90 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { safePath } from '../api-client.js';
|
|
3
3
|
export function registerActionTools(server, client) {
|
|
4
|
-
server.
|
|
4
|
+
server.registerTool('list_actions', {
|
|
5
|
+
description: 'List all actions (HTTP API calls) the AI agent can make during conversations. Actions define what APIs the AI can call to take real-world actions on behalf of users.',
|
|
6
|
+
}, async () => {
|
|
5
7
|
const data = await client.get('/actions/');
|
|
6
8
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
7
9
|
});
|
|
8
|
-
server.
|
|
10
|
+
server.registerTool('get_action', {
|
|
11
|
+
description: 'Get a single action by ID, including its full OpenAPI-style payload specification (parameters, request body, responses).',
|
|
12
|
+
inputSchema: { action_id: z.string().describe('The action ID') },
|
|
13
|
+
}, async ({ action_id }) => {
|
|
9
14
|
const data = await client.get(`/actions/${safePath(action_id)}`);
|
|
10
15
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
11
16
|
});
|
|
12
|
-
server.
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
.
|
|
18
|
-
.describe('HTTP method'),
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
17
|
+
server.registerTool('create_action', {
|
|
18
|
+
description: 'Create a new action the AI agent can call. The payload field uses OpenAPI-style specs to define parameters, request body, and responses. The AI uses this to construct API calls during conversations.',
|
|
19
|
+
inputSchema: {
|
|
20
|
+
name: z.string().describe('Action display name (e.g. "Get Order Status")'),
|
|
21
|
+
description: z.string().optional().describe('What this action does'),
|
|
22
|
+
api_endpoint: z.string().describe('The full API endpoint URL to call'),
|
|
23
|
+
request_type: z.enum(['GET', 'POST', 'PUT', 'PATCH', 'DELETE']).describe('HTTP method'),
|
|
24
|
+
operation_id: z
|
|
25
|
+
.string()
|
|
26
|
+
.optional()
|
|
27
|
+
.describe('Unique operation ID (auto-generated from name if omitted)'),
|
|
28
|
+
payload: z
|
|
29
|
+
.record(z.string(), z.unknown())
|
|
30
|
+
.describe('OpenAPI-style operation spec with parameters, requestBody, responses. ' +
|
|
31
|
+
'Example: { "parameters": [{ "name": "order_id", "in": "path", "required": true, "schema": { "type": "string" } }], ' +
|
|
32
|
+
'"requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "status": { "type": "string" } } } } } } }'),
|
|
33
|
+
enabled_on_channel: z
|
|
34
|
+
.object({
|
|
35
|
+
channels: z
|
|
36
|
+
.array(z.string())
|
|
37
|
+
.describe('Channels: "web", "email", "whatsapp", "phone_voice", "sms", "slack", etc.'),
|
|
38
|
+
})
|
|
39
|
+
.optional()
|
|
40
|
+
.describe('Channel restrictions (defaults to web only)'),
|
|
41
|
+
pinned: z.boolean().optional().describe('Pin this action prominently'),
|
|
42
|
+
tags: z.array(z.string()).optional().describe('Tags for organizing actions'),
|
|
43
|
+
},
|
|
38
44
|
}, async (params) => {
|
|
39
45
|
const data = await client.post('/actions/', params);
|
|
40
46
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
41
47
|
});
|
|
42
|
-
server.
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
.
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
48
|
+
server.registerTool('update_action', {
|
|
49
|
+
description: 'Update an existing action. Only the fields you provide will be changed; omitted fields keep their current values.',
|
|
50
|
+
inputSchema: {
|
|
51
|
+
action_id: z.string().describe('The action ID to update'),
|
|
52
|
+
name: z.string().optional().describe('New action display name'),
|
|
53
|
+
description: z.string().optional().describe('New description of what the action does'),
|
|
54
|
+
api_endpoint: z.string().optional().describe('New API endpoint URL'),
|
|
55
|
+
request_type: z
|
|
56
|
+
.enum(['GET', 'POST', 'PUT', 'PATCH', 'DELETE'])
|
|
57
|
+
.optional()
|
|
58
|
+
.describe('New HTTP method'),
|
|
59
|
+
payload: z
|
|
60
|
+
.record(z.string(), z.unknown())
|
|
61
|
+
.optional()
|
|
62
|
+
.describe('New OpenAPI-style operation spec (parameters, requestBody, responses)'),
|
|
63
|
+
enabled_on_channel: z
|
|
64
|
+
.object({
|
|
65
|
+
channels: z
|
|
66
|
+
.array(z.string())
|
|
67
|
+
.describe('Channel names: "web", "email", "whatsapp", etc.'),
|
|
68
|
+
})
|
|
69
|
+
.optional()
|
|
70
|
+
.describe('New channel restrictions'),
|
|
71
|
+
pinned: z.boolean().optional().describe('Whether to pin this action prominently'),
|
|
72
|
+
tags: z.array(z.string()).optional().describe('New tags for organizing'),
|
|
73
|
+
},
|
|
63
74
|
}, async ({ action_id, ...body }) => {
|
|
64
75
|
const data = await client.patch(`/actions/${safePath(action_id)}`, body);
|
|
65
76
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
66
77
|
});
|
|
67
|
-
server.
|
|
78
|
+
server.registerTool('delete_action', {
|
|
79
|
+
description: 'Permanently delete a single action by ID.',
|
|
80
|
+
inputSchema: { action_id: z.string().describe('The action ID to delete') },
|
|
81
|
+
}, async ({ action_id }) => {
|
|
68
82
|
await client.delete(`/actions/${safePath(action_id)}`);
|
|
69
83
|
return { content: [{ type: 'text', text: `Action ${action_id} deleted.` }] };
|
|
70
84
|
});
|
|
71
|
-
server.
|
|
85
|
+
server.registerTool('list_action_tags', {
|
|
86
|
+
description: 'Get all unique tags used across actions in your organization.',
|
|
87
|
+
}, async () => {
|
|
72
88
|
const data = await client.get('/actions/tags');
|
|
73
89
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
74
90
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/tools/actions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAgB,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE1D,MAAM,UAAU,mBAAmB,CAAC,MAAiB,EAAE,MAAoB;IACzE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/tools/actions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autopilot.d.ts","sourceRoot":"","sources":["../../src/tools/autopilot.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,
|
|
1
|
+
{"version":3,"file":"autopilot.d.ts","sourceRoot":"","sources":["../../src/tools/autopilot.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,QA+C7E"}
|
package/dist/tools/autopilot.js
CHANGED
|
@@ -1,14 +1,34 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
export function registerAutopilotTools(server, client) {
|
|
3
|
-
server.
|
|
3
|
+
server.registerTool('get_autopilot_status', {
|
|
4
|
+
description: 'Get the autopilot enabled/disabled status for each channel (web, email, phone, whatsapp, slack, sms, etc.). When autopilot is enabled, the AI automatically responds to customers on that channel.',
|
|
5
|
+
}, async () => {
|
|
4
6
|
const data = await client.get('/autopilot/');
|
|
5
7
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
6
8
|
});
|
|
7
|
-
server.
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
server.registerTool('set_autopilot', {
|
|
10
|
+
description: 'Enable or disable AI autopilot for a specific channel, and optionally set the AI agent version. When disabled, conversations on that channel go directly to human agents. Agent v2 uses the latest OpenAI Agents framework with advanced reasoning.',
|
|
11
|
+
inputSchema: {
|
|
12
|
+
channel: z
|
|
13
|
+
.enum([
|
|
14
|
+
'web',
|
|
15
|
+
'email',
|
|
16
|
+
'phone',
|
|
17
|
+
'whatsapp',
|
|
18
|
+
'slack',
|
|
19
|
+
'sms',
|
|
20
|
+
'instagram',
|
|
21
|
+
'messenger',
|
|
22
|
+
'api',
|
|
23
|
+
'web_voice',
|
|
24
|
+
])
|
|
25
|
+
.describe('The channel to update'),
|
|
26
|
+
autopilot_enabled: z.boolean().describe('Set true to enable autopilot, false to disable'),
|
|
27
|
+
ai_agent_version: z
|
|
28
|
+
.enum(['v1', 'v2'])
|
|
29
|
+
.optional()
|
|
30
|
+
.describe('AI agent version. v2 uses the latest OpenAI Agents framework with advanced reasoning and tool calling.'),
|
|
31
|
+
},
|
|
12
32
|
}, async (params) => {
|
|
13
33
|
const data = await client.put('/autopilot/', params);
|
|
14
34
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autopilot.js","sourceRoot":"","sources":["../../src/tools/autopilot.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,UAAU,sBAAsB,CAAC,MAAiB,EAAE,MAAoB;IAC5E,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"autopilot.js","sourceRoot":"","sources":["../../src/tools/autopilot.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,UAAU,sBAAsB,CAAC,MAAiB,EAAE,MAAoB;IAC5E,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,WAAW,EACT,oMAAoM;KACvM,EACD,KAAK,IAAI,EAAE;QACT,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC7C,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,eAAe,EACf;QACE,WAAW,EACT,qPAAqP;QACvP,WAAW,EAAE;YACX,OAAO,EAAE,CAAC;iBACP,IAAI,CAAC;gBACJ,KAAK;gBACL,OAAO;gBACP,OAAO;gBACP,UAAU;gBACV,OAAO;gBACP,KAAK;gBACL,WAAW;gBACX,WAAW;gBACX,KAAK;gBACL,WAAW;aACZ,CAAC;iBACD,QAAQ,CAAC,uBAAuB,CAAC;YACpC,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;YACzF,gBAAgB,EAAE,CAAC;iBAChB,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;iBAClB,QAAQ,EAAE;iBACV,QAAQ,CACP,wGAAwG,CACzG;SACJ;KACF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QACrD,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":"blocklist.d.ts","sourceRoot":"","sources":["../../src/tools/blocklist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAY,MAAM,kBAAkB,CAAC;AAE1D,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"blocklist.d.ts","sourceRoot":"","sources":["../../src/tools/blocklist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAY,MAAM,kBAAkB,CAAC;AAE1D,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,QA2H7E"}
|
package/dist/tools/blocklist.js
CHANGED
|
@@ -2,9 +2,12 @@ import { z } from 'zod';
|
|
|
2
2
|
import { safePath } from '../api-client.js';
|
|
3
3
|
export function registerBlocklistTools(server, client) {
|
|
4
4
|
// ── Blocked Contacts ──
|
|
5
|
-
server.
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
server.registerTool('list_blocked_contacts', {
|
|
6
|
+
description: 'List all blocked contacts. Blocked contacts are ignored by the AI — their messages get no automated response.',
|
|
7
|
+
inputSchema: {
|
|
8
|
+
page: z.number().optional().describe('Page number (default: 1)'),
|
|
9
|
+
limit: z.number().optional().describe('Results per page (default: 20)'),
|
|
10
|
+
},
|
|
8
11
|
}, async ({ page, limit }) => {
|
|
9
12
|
const data = await client.get('/blocklist/contacts', {
|
|
10
13
|
page: page?.toString(),
|
|
@@ -12,25 +15,37 @@ export function registerBlocklistTools(server, client) {
|
|
|
12
15
|
});
|
|
13
16
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
14
17
|
});
|
|
15
|
-
server.
|
|
16
|
-
|
|
17
|
-
|
|
18
|
+
server.registerTool('block_contact', {
|
|
19
|
+
description: 'Block a contact by email. The AI will stop responding to messages from this contact.',
|
|
20
|
+
inputSchema: {
|
|
21
|
+
email: z.string().describe('The email of the contact to block'),
|
|
22
|
+
reason: z.string().optional().describe('Why the contact is being blocked'),
|
|
23
|
+
},
|
|
18
24
|
}, async (params) => {
|
|
19
25
|
await client.post('/blocklist/contacts', params);
|
|
20
26
|
return { content: [{ type: 'text', text: `Contact ${params.email} blocked.` }] };
|
|
21
27
|
});
|
|
22
|
-
server.
|
|
28
|
+
server.registerTool('check_contact_blocked', {
|
|
29
|
+
description: 'Check whether a specific contact is currently blocked.',
|
|
30
|
+
inputSchema: { contact_id: z.string().describe('The contact ID to check') },
|
|
31
|
+
}, async ({ contact_id }) => {
|
|
23
32
|
const data = await client.get(`/blocklist/contacts/check/${safePath(contact_id)}`);
|
|
24
33
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
25
34
|
});
|
|
26
|
-
server.
|
|
35
|
+
server.registerTool('unblock_contact', {
|
|
36
|
+
description: 'Remove a contact from the blocklist. The AI will resume responding to them.',
|
|
37
|
+
inputSchema: { id: z.string().describe('The block record ID (from list_blocked_contacts)') },
|
|
38
|
+
}, async ({ id }) => {
|
|
27
39
|
await client.delete(`/blocklist/contacts/${safePath(id)}`);
|
|
28
40
|
return { content: [{ type: 'text', text: `Contact unblocked.` }] };
|
|
29
41
|
});
|
|
30
42
|
// ── Blocked Domains ──
|
|
31
|
-
server.
|
|
32
|
-
|
|
33
|
-
|
|
43
|
+
server.registerTool('list_blocked_domains', {
|
|
44
|
+
description: 'List all blocked email domains. Messages from contacts on blocked domains are ignored by the AI.',
|
|
45
|
+
inputSchema: {
|
|
46
|
+
page: z.number().optional().describe('Page number (default: 1)'),
|
|
47
|
+
limit: z.number().optional().describe('Results per page (default: 20)'),
|
|
48
|
+
},
|
|
34
49
|
}, async ({ page, limit }) => {
|
|
35
50
|
const data = await client.get('/blocklist/domains', {
|
|
36
51
|
page: page?.toString(),
|
|
@@ -38,18 +53,27 @@ export function registerBlocklistTools(server, client) {
|
|
|
38
53
|
});
|
|
39
54
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
40
55
|
});
|
|
41
|
-
server.
|
|
42
|
-
|
|
43
|
-
|
|
56
|
+
server.registerTool('block_domains', {
|
|
57
|
+
description: 'Block one or more email domains. Pass comma-separated for multiple (e.g. "spam.com, junk.org"). Messages from these domains will be ignored by the AI.',
|
|
58
|
+
inputSchema: {
|
|
59
|
+
domains: z.string().describe('Domain(s) to block — comma-separated for multiple'),
|
|
60
|
+
reason: z.string().optional().describe('Why these domains are being blocked'),
|
|
61
|
+
},
|
|
44
62
|
}, async (params) => {
|
|
45
63
|
const data = await client.post('/blocklist/domains', params);
|
|
46
64
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
47
65
|
});
|
|
48
|
-
server.
|
|
66
|
+
server.registerTool('check_domain_blocked', {
|
|
67
|
+
description: 'Check if a domain or email is blocked. Pass either a domain (e.g. "spam.com") or full email (e.g. "user@spam.com").',
|
|
68
|
+
inputSchema: { value: z.string().describe('A domain or email to check') },
|
|
69
|
+
}, async ({ value }) => {
|
|
49
70
|
const data = await client.get('/blocklist/domains/check', { value });
|
|
50
71
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
51
72
|
});
|
|
52
|
-
server.
|
|
73
|
+
server.registerTool('unblock_domain', {
|
|
74
|
+
description: 'Remove a domain from the blocklist.',
|
|
75
|
+
inputSchema: { id: z.string().describe('The block record ID (from list_blocked_domains)') },
|
|
76
|
+
}, async ({ id }) => {
|
|
53
77
|
await client.delete(`/blocklist/domains/${safePath(id)}`);
|
|
54
78
|
return { content: [{ type: 'text', text: `Domain unblocked.` }] };
|
|
55
79
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blocklist.js","sourceRoot":"","sources":["../../src/tools/blocklist.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAgB,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE1D,MAAM,UAAU,sBAAsB,CAAC,MAAiB,EAAE,MAAoB;IAC5E,yBAAyB;IAEzB,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"blocklist.js","sourceRoot":"","sources":["../../src/tools/blocklist.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contacts.d.ts","sourceRoot":"","sources":["../../src/tools/contacts.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,
|
|
1
|
+
{"version":3,"file":"contacts.d.ts","sourceRoot":"","sources":["../../src/tools/contacts.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,QA+E3E"}
|
package/dist/tools/contacts.js
CHANGED
|
@@ -1,18 +1,26 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { safePath } from '../api-client.js';
|
|
3
3
|
export function registerContactTools(server, client) {
|
|
4
|
-
server.
|
|
4
|
+
server.registerTool('list_contacts', {
|
|
5
|
+
description: 'List contacts in your organization. Returns a paginated list of contacts with their email, phone, name, and custom data. Use the cursor from the response to fetch the next page.',
|
|
6
|
+
inputSchema: {
|
|
7
|
+
cursor: z.string().optional().describe('Pagination cursor from a previous response'),
|
|
8
|
+
},
|
|
9
|
+
}, async ({ cursor }) => {
|
|
5
10
|
const data = await client.get('/contacts/', { cursor });
|
|
6
11
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
7
12
|
});
|
|
8
|
-
server.
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
server.registerTool('create_contact', {
|
|
14
|
+
description: 'Create a new contact in your organization. At least one of email or phone is recommended for identification. Custom data can store arbitrary key-value pairs.',
|
|
15
|
+
inputSchema: {
|
|
16
|
+
email: z.string().email().optional().describe('Contact email address'),
|
|
17
|
+
phone: z.string().optional().describe('Contact phone number'),
|
|
18
|
+
name: z.string().optional().describe('Contact display name'),
|
|
19
|
+
custom_data: z
|
|
20
|
+
.record(z.string(), z.unknown())
|
|
21
|
+
.optional()
|
|
22
|
+
.describe('Arbitrary key-value pairs to store on the contact'),
|
|
23
|
+
},
|
|
16
24
|
}, async (params) => {
|
|
17
25
|
const data = await client.post('/contacts/', {
|
|
18
26
|
contact: {
|
|
@@ -24,20 +32,28 @@ export function registerContactTools(server, client) {
|
|
|
24
32
|
});
|
|
25
33
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
26
34
|
});
|
|
27
|
-
server.
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
35
|
+
server.registerTool('update_contact', {
|
|
36
|
+
description: 'Update an existing contact. Only the provided fields will be changed; omitted fields remain unchanged.',
|
|
37
|
+
inputSchema: {
|
|
38
|
+
contact_id: z.string().describe('The ID of the contact to update'),
|
|
39
|
+
email: z.string().email().optional().describe('New email address'),
|
|
40
|
+
phone: z.string().optional().describe('New phone number'),
|
|
41
|
+
name: z.string().optional().describe('New display name'),
|
|
42
|
+
custom_data: z
|
|
43
|
+
.record(z.string(), z.unknown())
|
|
44
|
+
.optional()
|
|
45
|
+
.describe('Key-value pairs to merge into existing custom data'),
|
|
46
|
+
},
|
|
36
47
|
}, async ({ contact_id, ...fields }) => {
|
|
37
48
|
const data = await client.patch(`/contacts/${safePath(contact_id)}`, { contact: fields });
|
|
38
49
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
39
50
|
});
|
|
40
|
-
server.
|
|
51
|
+
server.registerTool('delete_contact', {
|
|
52
|
+
description: 'Permanently delete a contact by ID. This action cannot be undone.',
|
|
53
|
+
inputSchema: {
|
|
54
|
+
contact_id: z.string().describe('The ID of the contact to delete'),
|
|
55
|
+
},
|
|
56
|
+
}, async ({ contact_id }) => {
|
|
41
57
|
await client.delete(`/contacts/${safePath(contact_id)}`);
|
|
42
58
|
return { content: [{ type: 'text', text: `Contact ${contact_id} deleted successfully.` }] };
|
|
43
59
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contacts.js","sourceRoot":"","sources":["../../src/tools/contacts.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,
|
|
1
|
+
{"version":3,"file":"contacts.js","sourceRoot":"","sources":["../../src/tools/contacts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crawl.d.ts","sourceRoot":"","sources":["../../src/tools/crawl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAY,MAAM,kBAAkB,CAAC;AAE1D,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"crawl.d.ts","sourceRoot":"","sources":["../../src/tools/crawl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAY,MAAM,kBAAkB,CAAC;AAE1D,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,QA4FzE"}
|
package/dist/tools/crawl.js
CHANGED
|
@@ -1,41 +1,59 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { safePath } from '../api-client.js';
|
|
3
3
|
export function registerCrawlTools(server, client) {
|
|
4
|
-
server.
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
server.registerTool('list_datasources', {
|
|
5
|
+
description: 'List website datasources configured for knowledge base crawling. Each datasource represents a website whose pages are crawled and synced into the AI knowledge base.',
|
|
6
|
+
inputSchema: {
|
|
7
|
+
page: z.string().optional().describe('Page number (1-based)'),
|
|
8
|
+
limit: z.string().optional().describe('Results per page (default 20)'),
|
|
9
|
+
},
|
|
7
10
|
}, async (params) => {
|
|
8
11
|
const data = await client.get('/crawl/', { page: params.page, limit: params.limit });
|
|
9
12
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
10
13
|
});
|
|
11
|
-
server.
|
|
12
|
-
|
|
13
|
-
|
|
14
|
+
server.registerTool('create_datasource', {
|
|
15
|
+
description: 'Create a new website datasource for crawling. The URL is the root page to start crawling from. Pages discovered during the crawl will be added to the knowledge base.',
|
|
16
|
+
inputSchema: {
|
|
17
|
+
url: z.string().url().describe('The root URL of the website to crawl'),
|
|
18
|
+
name: z.string().optional().describe('A friendly name for this datasource'),
|
|
19
|
+
},
|
|
14
20
|
}, async (params) => {
|
|
15
21
|
const data = await client.post('/crawl/', params);
|
|
16
22
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
17
23
|
});
|
|
18
|
-
server.
|
|
24
|
+
server.registerTool('get_datasource', {
|
|
25
|
+
description: 'Get details of a specific website datasource, including its configuration and crawl status.',
|
|
26
|
+
inputSchema: { id: z.string().describe('The datasource ID') },
|
|
27
|
+
}, async ({ id }) => {
|
|
19
28
|
const data = await client.get(`/crawl/${safePath(id)}`);
|
|
20
29
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
21
30
|
});
|
|
22
|
-
server.
|
|
31
|
+
server.registerTool('start_crawl', {
|
|
32
|
+
description: 'Trigger a new crawl for a website datasource. This will discover and sync new pages into the knowledge base. Only one crawl can run at a time per datasource.',
|
|
33
|
+
inputSchema: { id: z.string().describe('The datasource ID to crawl') },
|
|
34
|
+
}, async ({ id }) => {
|
|
23
35
|
const data = await client.post(`/crawl/${safePath(id)}/crawl`);
|
|
24
36
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
25
37
|
});
|
|
26
|
-
server.
|
|
27
|
-
|
|
28
|
-
|
|
38
|
+
server.registerTool('get_crawl_status', {
|
|
39
|
+
description: 'Get the status and progress of a specific crawl job.',
|
|
40
|
+
inputSchema: {
|
|
41
|
+
datasource_id: z.string().describe('The datasource ID'),
|
|
42
|
+
job_id: z.string().describe('The crawl job ID'),
|
|
43
|
+
},
|
|
29
44
|
}, async ({ datasource_id, job_id }) => {
|
|
30
45
|
const data = await client.get(`/crawl/${safePath(datasource_id)}/crawls/${safePath(job_id)}`);
|
|
31
46
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
32
47
|
});
|
|
33
|
-
server.
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
48
|
+
server.registerTool('list_crawled_pages', {
|
|
49
|
+
description: 'List pages discovered by a website datasource crawl. Can filter by sync status and search by URL or title.',
|
|
50
|
+
inputSchema: {
|
|
51
|
+
datasource_id: z.string().describe('The datasource ID'),
|
|
52
|
+
page: z.string().optional().describe('Page number (1-based)'),
|
|
53
|
+
limit: z.string().optional().describe('Results per page'),
|
|
54
|
+
sync_status: z.string().optional().describe('Filter by sync status'),
|
|
55
|
+
search: z.string().optional().describe('Search pages by URL or title'),
|
|
56
|
+
},
|
|
39
57
|
}, async ({ datasource_id, ...query }) => {
|
|
40
58
|
const data = await client.get(`/crawl/${safePath(datasource_id)}/pages`, query);
|
|
41
59
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|