@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/tools/tags.js
CHANGED
|
@@ -1,36 +1,51 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { safePath } from '../api-client.js';
|
|
3
3
|
export function registerTagTools(server, client) {
|
|
4
|
-
server.
|
|
4
|
+
server.registerTool('list_tags', {
|
|
5
|
+
description: 'List all tags in your organization. Tags are labels like "billing", "refund", "feature-request" that categorize chat sessions. The AI can auto-tag sessions based on these.',
|
|
6
|
+
}, async () => {
|
|
5
7
|
const data = await client.get('/tags/');
|
|
6
8
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
7
9
|
});
|
|
8
|
-
server.
|
|
10
|
+
server.registerTool('list_tags_in_use', {
|
|
11
|
+
description: 'List all tag names that are actually applied to sessions right now. Useful to see which tags are being used vs. sitting unused.',
|
|
12
|
+
}, async () => {
|
|
9
13
|
const data = await client.get('/tags/in-use');
|
|
10
14
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
11
15
|
});
|
|
12
|
-
server.
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
.
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
server.registerTool('upsert_tag', {
|
|
17
|
+
description: 'Create a new tag or update an existing one. Tags categorize chat sessions. Set exclude_from_auto_tagging to true to prevent the AI from applying this tag automatically.',
|
|
18
|
+
inputSchema: {
|
|
19
|
+
tag_name: z.string().describe('Tag name (e.g. "billing", "refund", "feature-request")'),
|
|
20
|
+
exclude_from_auto_tagging: z
|
|
21
|
+
.boolean()
|
|
22
|
+
.optional()
|
|
23
|
+
.describe('If true, the AI will never auto-apply this tag (default: false)'),
|
|
24
|
+
},
|
|
18
25
|
}, async (params) => {
|
|
19
26
|
await client.put('/tags/', params);
|
|
20
27
|
return { content: [{ type: 'text', text: `Tag "${params.tag_name}" saved.` }] };
|
|
21
28
|
});
|
|
22
|
-
server.
|
|
23
|
-
|
|
29
|
+
server.registerTool('delete_tag', {
|
|
30
|
+
description: 'Remove a tag from your organization. Sessions that already have this tag will keep it — only the tag itself is removed.',
|
|
31
|
+
inputSchema: {
|
|
32
|
+
tag_name: z.string().describe('The tag name to remove'),
|
|
33
|
+
},
|
|
24
34
|
}, async ({ tag_name }) => {
|
|
25
35
|
await client.delete(`/tags/${safePath(tag_name)}`);
|
|
26
36
|
return { content: [{ type: 'text', text: `Tag "${tag_name}" removed.` }] };
|
|
27
37
|
});
|
|
28
|
-
server.
|
|
38
|
+
server.registerTool('get_auto_tagging_status', {
|
|
39
|
+
description: 'Check whether AI auto-tagging is enabled. When enabled, the AI automatically applies relevant tags to chat sessions based on conversation content.',
|
|
40
|
+
}, async () => {
|
|
29
41
|
const data = await client.get('/tags/auto-tagging');
|
|
30
42
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
31
43
|
});
|
|
32
|
-
server.
|
|
33
|
-
|
|
44
|
+
server.registerTool('set_auto_tagging', {
|
|
45
|
+
description: 'Enable or disable AI auto-tagging. When enabled, the AI automatically applies relevant tags to chat sessions.',
|
|
46
|
+
inputSchema: {
|
|
47
|
+
enabled: z.boolean().describe('Set true to enable auto-tagging, false to disable'),
|
|
48
|
+
},
|
|
34
49
|
}, async ({ enabled }) => {
|
|
35
50
|
const data = await client.put('/tags/auto-tagging', { enabled });
|
|
36
51
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
package/dist/tools/tags.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tags.js","sourceRoot":"","sources":["../../src/tools/tags.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAgB,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE1D,MAAM,UAAU,gBAAgB,CAAC,MAAiB,EAAE,MAAoB;IACtE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"tags.js","sourceRoot":"","sources":["../../src/tools/tags.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"teams.d.ts","sourceRoot":"","sources":["../../src/tools/teams.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAY,MAAM,kBAAkB,CAAC;AAE1D,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"teams.d.ts","sourceRoot":"","sources":["../../src/tools/teams.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAY,MAAM,kBAAkB,CAAC;AAE1D,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,QAiHxE"}
|
package/dist/tools/teams.js
CHANGED
|
@@ -1,47 +1,70 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { safePath } from '../api-client.js';
|
|
3
3
|
export function registerTeamTools(server, client) {
|
|
4
|
-
server.
|
|
4
|
+
server.registerTool('list_teams', {
|
|
5
|
+
description: 'List all teams in your organization. Teams are used to group agents for routing, assignment, and reporting.',
|
|
6
|
+
}, async () => {
|
|
5
7
|
const data = await client.get('/teams/');
|
|
6
8
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
7
9
|
});
|
|
8
|
-
server.
|
|
10
|
+
server.registerTool('get_team', {
|
|
11
|
+
description: 'Get details of a specific team by ID, including its name and member count. Teams group agents for routing, assignment, and reporting.',
|
|
12
|
+
inputSchema: { team_id: z.string().describe('The team ID') },
|
|
13
|
+
}, async ({ team_id }) => {
|
|
9
14
|
const data = await client.get(`/teams/${safePath(team_id)}`);
|
|
10
15
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
11
16
|
});
|
|
12
|
-
server.
|
|
13
|
-
|
|
14
|
-
|
|
17
|
+
server.registerTool('create_team', {
|
|
18
|
+
description: 'Create a new team in your organization.',
|
|
19
|
+
inputSchema: {
|
|
20
|
+
name: z.string().describe('The team name'),
|
|
21
|
+
description: z.string().optional().describe('A description of the team'),
|
|
22
|
+
},
|
|
15
23
|
}, async (params) => {
|
|
16
24
|
const data = await client.post('/teams/', params);
|
|
17
25
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
18
26
|
});
|
|
19
|
-
server.
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
27
|
+
server.registerTool('update_team', {
|
|
28
|
+
description: 'Update an existing team name or description.',
|
|
29
|
+
inputSchema: {
|
|
30
|
+
team_id: z.string().describe('The team ID to update'),
|
|
31
|
+
name: z.string().describe('New team name'),
|
|
32
|
+
description: z.string().optional().describe('New description'),
|
|
33
|
+
},
|
|
23
34
|
}, async ({ team_id, ...body }) => {
|
|
24
35
|
const data = await client.put(`/teams/${safePath(team_id)}`, body);
|
|
25
36
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
26
37
|
});
|
|
27
|
-
server.
|
|
38
|
+
server.registerTool('delete_team', {
|
|
39
|
+
description: 'Permanently delete a team by ID. This action cannot be undone. Members will be unassigned from the team.',
|
|
40
|
+
inputSchema: { team_id: z.string().describe('The team ID to delete') },
|
|
41
|
+
}, async ({ team_id }) => {
|
|
28
42
|
await client.delete(`/teams/${safePath(team_id)}`);
|
|
29
43
|
return { content: [{ type: 'text', text: `Team ${team_id} deleted successfully.` }] };
|
|
30
44
|
});
|
|
31
|
-
server.
|
|
45
|
+
server.registerTool('list_team_members', {
|
|
46
|
+
description: 'List all users (agents) assigned to a specific team.',
|
|
47
|
+
inputSchema: { team_id: z.string().describe('The team ID') },
|
|
48
|
+
}, async ({ team_id }) => {
|
|
32
49
|
const data = await client.get(`/teams/${safePath(team_id)}/users`);
|
|
33
50
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
34
51
|
});
|
|
35
|
-
server.
|
|
36
|
-
|
|
37
|
-
|
|
52
|
+
server.registerTool('add_team_member', {
|
|
53
|
+
description: 'Add a user (agent) to a team.',
|
|
54
|
+
inputSchema: {
|
|
55
|
+
team_id: z.string().describe('The team ID'),
|
|
56
|
+
user_id: z.string().describe('The user ID to add to the team'),
|
|
57
|
+
},
|
|
38
58
|
}, async ({ team_id, user_id }) => {
|
|
39
59
|
const data = await client.post(`/teams/${safePath(team_id)}/users`, { userId: user_id });
|
|
40
60
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
41
61
|
});
|
|
42
|
-
server.
|
|
43
|
-
|
|
44
|
-
|
|
62
|
+
server.registerTool('remove_team_member', {
|
|
63
|
+
description: 'Remove a user (agent) from a team.',
|
|
64
|
+
inputSchema: {
|
|
65
|
+
team_id: z.string().describe('The team ID'),
|
|
66
|
+
user_id: z.string().describe('The user ID to remove from the team'),
|
|
67
|
+
},
|
|
45
68
|
}, async ({ team_id, user_id }) => {
|
|
46
69
|
await client.delete(`/teams/${safePath(team_id)}/users/${safePath(user_id)}`);
|
|
47
70
|
return {
|
package/dist/tools/teams.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"teams.js","sourceRoot":"","sources":["../../src/tools/teams.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAgB,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE1D,MAAM,UAAU,iBAAiB,CAAC,MAAiB,EAAE,MAAoB;IACvE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"teams.js","sourceRoot":"","sources":["../../src/tools/teams.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"training.d.ts","sourceRoot":"","sources":["../../src/tools/training.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAY,MAAM,kBAAkB,CAAC;AAE1D,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"training.d.ts","sourceRoot":"","sources":["../../src/tools/training.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAY,MAAM,kBAAkB,CAAC;AAE1D,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,QA8R5E"}
|
package/dist/tools/training.js
CHANGED
|
@@ -1,38 +1,46 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { safePath } from '../api-client.js';
|
|
3
3
|
export function registerTrainingTools(server, client) {
|
|
4
|
-
server.
|
|
4
|
+
server.registerTool('list_training_scenarios', {
|
|
5
|
+
description: 'List all custom training scenarios for your AI agent. Training scenarios teach the AI how to handle specific customer situations. There are two types: BEHAVIORAL (always active, controls tone/style) and SCENARIO_SPECIFIC (activated when a matching question is asked).',
|
|
6
|
+
}, async () => {
|
|
5
7
|
const data = await client.get('/training/');
|
|
6
8
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
7
9
|
});
|
|
8
|
-
server.
|
|
10
|
+
server.registerTool('get_training_scenario', {
|
|
11
|
+
description: 'Get a single training scenario by ID, including its type, draft status, directory, and channel/segment restrictions.',
|
|
12
|
+
inputSchema: { id: z.string().describe('The training scenario ID') },
|
|
13
|
+
}, async ({ id }) => {
|
|
9
14
|
const data = await client.get(`/training/${safePath(id)}`);
|
|
10
15
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
11
16
|
});
|
|
12
|
-
server.
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
.
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
17
|
+
server.registerTool('create_training_scenario', {
|
|
18
|
+
description: 'Create a new training scenario. Use type "BEHAVIORAL" for always-active instructions (tone, guardrails) or "SCENARIO_SPECIFIC" for question-triggered scenarios. New scenarios are published by default (is_draft=false).',
|
|
19
|
+
inputSchema: {
|
|
20
|
+
title: z.string().describe('The scenario title or trigger phrase'),
|
|
21
|
+
content: z.string().describe('The instruction body — how the AI should respond'),
|
|
22
|
+
type: z
|
|
23
|
+
.enum(['BEHAVIORAL', 'SCENARIO_SPECIFIC'])
|
|
24
|
+
.optional()
|
|
25
|
+
.describe('Instruction type (default: SCENARIO_SPECIFIC)'),
|
|
26
|
+
is_draft: z
|
|
27
|
+
.boolean()
|
|
28
|
+
.optional()
|
|
29
|
+
.describe('If true, the scenario is saved as draft and not used by the AI'),
|
|
30
|
+
directory_id: z
|
|
31
|
+
.string()
|
|
32
|
+
.nullable()
|
|
33
|
+
.optional()
|
|
34
|
+
.describe('Directory ID to organize this scenario into'),
|
|
35
|
+
restricted_to_channels: z
|
|
36
|
+
.array(z.string())
|
|
37
|
+
.optional()
|
|
38
|
+
.describe('Limit to specific channels (e.g. ["web", "email"]). Empty = all channels.'),
|
|
39
|
+
restricted_to_segments: z
|
|
40
|
+
.array(z.string())
|
|
41
|
+
.optional()
|
|
42
|
+
.describe('Limit to specific contact segments. Empty = all segments.'),
|
|
43
|
+
},
|
|
36
44
|
}, async (params) => {
|
|
37
45
|
const data = await client.post('/training/', {
|
|
38
46
|
title: params.title,
|
|
@@ -45,24 +53,38 @@ export function registerTrainingTools(server, client) {
|
|
|
45
53
|
});
|
|
46
54
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
47
55
|
});
|
|
48
|
-
server.
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
56
|
+
server.registerTool('update_training_scenario', {
|
|
57
|
+
description: 'Update an existing training scenario. Title and content are required on every update — fetch the scenario first with get_training_scenario if you only want to change one field.',
|
|
58
|
+
inputSchema: {
|
|
59
|
+
id: z.string().describe('The training scenario ID to update'),
|
|
60
|
+
title: z
|
|
61
|
+
.string()
|
|
62
|
+
.describe('Scenario title or trigger phrase (required — send current value if unchanged)'),
|
|
63
|
+
content: z
|
|
64
|
+
.string()
|
|
65
|
+
.describe('Instruction body (required — send current value if unchanged)'),
|
|
66
|
+
type: z
|
|
67
|
+
.enum(['BEHAVIORAL', 'SCENARIO_SPECIFIC'])
|
|
68
|
+
.optional()
|
|
69
|
+
.describe('Instruction type: BEHAVIORAL (always active) or SCENARIO_SPECIFIC (semantic match)'),
|
|
70
|
+
is_draft: z
|
|
71
|
+
.boolean()
|
|
72
|
+
.optional()
|
|
73
|
+
.describe('Draft status — true means inactive, false means live'),
|
|
74
|
+
directory_id: z
|
|
75
|
+
.string()
|
|
76
|
+
.nullable()
|
|
77
|
+
.optional()
|
|
78
|
+
.describe('Directory ID to organize into, or null to uncategorize'),
|
|
79
|
+
restricted_to_channels: z
|
|
80
|
+
.array(z.string())
|
|
81
|
+
.optional()
|
|
82
|
+
.describe('Channels this applies to (e.g. ["web", "email"]). Empty array = all channels.'),
|
|
83
|
+
restricted_to_segments: z
|
|
84
|
+
.array(z.string())
|
|
85
|
+
.optional()
|
|
86
|
+
.describe('Contact segments this applies to. Empty array = all segments.'),
|
|
87
|
+
},
|
|
66
88
|
}, async ({ id, title, content, ...rest }) => {
|
|
67
89
|
const data = await client.put(`/training/${safePath(id)}`, {
|
|
68
90
|
title,
|
|
@@ -74,23 +96,32 @@ export function registerTrainingTools(server, client) {
|
|
|
74
96
|
});
|
|
75
97
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
76
98
|
});
|
|
77
|
-
server.
|
|
99
|
+
server.registerTool('delete_training_scenario', {
|
|
100
|
+
description: 'Permanently delete a training scenario by ID. This action cannot be undone.',
|
|
101
|
+
inputSchema: { id: z.string().describe('The training scenario ID to delete') },
|
|
102
|
+
}, async ({ id }) => {
|
|
78
103
|
await client.delete(`/training/${safePath(id)}`);
|
|
79
104
|
return { content: [{ type: 'text', text: `Training scenario ${id} deleted successfully.` }] };
|
|
80
105
|
});
|
|
81
|
-
server.
|
|
82
|
-
|
|
83
|
-
|
|
106
|
+
server.registerTool('toggle_training_draft', {
|
|
107
|
+
description: 'Publish or unpublish a training scenario. Draft scenarios are saved but not used by the AI agent. Publishing makes them active.',
|
|
108
|
+
inputSchema: {
|
|
109
|
+
id: z.string().describe('The training scenario ID'),
|
|
110
|
+
draft: z.boolean().describe('Set true to make draft (inactive), false to publish (active)'),
|
|
111
|
+
},
|
|
84
112
|
}, async ({ id, draft }) => {
|
|
85
113
|
const data = await client.put(`/training/${safePath(id)}/draft`, { draft });
|
|
86
114
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
87
115
|
});
|
|
88
|
-
server.
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
.string()
|
|
92
|
-
|
|
93
|
-
|
|
116
|
+
server.registerTool('move_training_to_directory', {
|
|
117
|
+
description: 'Move a training scenario into a directory for organization, or set directory_id to null to uncategorize it.',
|
|
118
|
+
inputSchema: {
|
|
119
|
+
id: z.string().describe('The training scenario ID to move'),
|
|
120
|
+
directory_id: z
|
|
121
|
+
.string()
|
|
122
|
+
.nullable()
|
|
123
|
+
.describe('Target directory ID, or null to uncategorize'),
|
|
124
|
+
},
|
|
94
125
|
}, async ({ id, directory_id }) => {
|
|
95
126
|
await client.post(`/training/${safePath(id)}/move`, { directory_id });
|
|
96
127
|
return {
|
|
@@ -104,15 +135,18 @@ export function registerTrainingTools(server, client) {
|
|
|
104
135
|
],
|
|
105
136
|
};
|
|
106
137
|
});
|
|
107
|
-
server.
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
138
|
+
server.registerTool('get_training_directory_tree', {
|
|
139
|
+
description: 'Get all training directories with their items, plus uncategorized trainings. Gives a full overview of how trainings are organized.',
|
|
140
|
+
inputSchema: {
|
|
141
|
+
show_drafts: z
|
|
142
|
+
.enum(['true', 'false'])
|
|
143
|
+
.optional()
|
|
144
|
+
.describe('Include draft trainings (default: true)'),
|
|
145
|
+
show_published: z
|
|
146
|
+
.enum(['true', 'false'])
|
|
147
|
+
.optional()
|
|
148
|
+
.describe('Include published trainings (default: true)'),
|
|
149
|
+
},
|
|
116
150
|
}, async ({ show_drafts, show_published }) => {
|
|
117
151
|
const data = await client.get('/training/directories/tree', {
|
|
118
152
|
show_drafts,
|
|
@@ -120,39 +154,50 @@ export function registerTrainingTools(server, client) {
|
|
|
120
154
|
});
|
|
121
155
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
122
156
|
});
|
|
123
|
-
server.
|
|
157
|
+
server.registerTool('list_training_directories', {
|
|
158
|
+
description: 'List all directories used to organize training scenarios.',
|
|
159
|
+
}, async () => {
|
|
124
160
|
const data = await client.get('/training/directories');
|
|
125
161
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
126
162
|
});
|
|
127
|
-
server.
|
|
163
|
+
server.registerTool('create_training_directory', {
|
|
164
|
+
description: 'Create a new directory for organizing training scenarios.',
|
|
165
|
+
inputSchema: { name: z.string().describe('The directory name') },
|
|
166
|
+
}, async ({ name }) => {
|
|
128
167
|
const data = await client.post('/training/directories', { name });
|
|
129
168
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
130
169
|
});
|
|
131
|
-
server.
|
|
132
|
-
|
|
133
|
-
|
|
170
|
+
server.registerTool('update_training_directory', {
|
|
171
|
+
description: 'Rename a training directory.',
|
|
172
|
+
inputSchema: {
|
|
173
|
+
directory_id: z.string().describe('The directory ID to rename'),
|
|
174
|
+
name: z.string().describe('The new directory name'),
|
|
175
|
+
},
|
|
134
176
|
}, async ({ directory_id, name }) => {
|
|
135
177
|
const data = await client.put(`/training/directories/${safePath(directory_id)}`, { name });
|
|
136
178
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
137
179
|
});
|
|
138
|
-
server.
|
|
180
|
+
server.registerTool('delete_training_directory', {
|
|
181
|
+
description: 'Delete a training directory and ALL trainings inside it. This action cannot be undone.',
|
|
182
|
+
inputSchema: { directory_id: z.string().describe('The directory ID to delete') },
|
|
183
|
+
}, async ({ directory_id }) => {
|
|
139
184
|
await client.delete(`/training/directories/${safePath(directory_id)}`);
|
|
140
185
|
return {
|
|
141
186
|
content: [{ type: 'text', text: `Directory ${directory_id} and its contents deleted.` }],
|
|
142
187
|
};
|
|
143
188
|
});
|
|
144
|
-
server.
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
.optional()
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
189
|
+
server.registerTool('search_training_knowledge', {
|
|
190
|
+
description: 'Semantic search across all training scenarios and knowledge base items using natural language. Returns results ranked by relevance (0-100 score). Use this to find existing content before creating duplicate training scenarios.',
|
|
191
|
+
inputSchema: {
|
|
192
|
+
query: z
|
|
193
|
+
.string()
|
|
194
|
+
.describe('Natural language search query (e.g. "refund policy", "how to reset password")'),
|
|
195
|
+
limit: z.number().optional().describe('Maximum results to return (1-50, default 20)'),
|
|
196
|
+
source_types: z
|
|
197
|
+
.array(z.enum(['integration', 'website', 'custom_training']))
|
|
198
|
+
.optional()
|
|
199
|
+
.describe('Filter by source type. Omit to search all.'),
|
|
200
|
+
},
|
|
156
201
|
}, async ({ query, limit, source_types }) => {
|
|
157
202
|
const body = { query };
|
|
158
203
|
if (limit !== undefined)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"training.js","sourceRoot":"","sources":["../../src/tools/training.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAgB,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE1D,MAAM,UAAU,qBAAqB,CAAC,MAAiB,EAAE,MAAoB;IAC3E,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"training.js","sourceRoot":"","sources":["../../src/tools/training.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"whatsapp.d.ts","sourceRoot":"","sources":["../../src/tools/whatsapp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"whatsapp.d.ts","sourceRoot":"","sources":["../../src/tools/whatsapp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,QA+B5E"}
|
package/dist/tools/whatsapp.js
CHANGED
|
@@ -1,25 +1,26 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
export function registerWhatsAppTools(server, client) {
|
|
3
|
-
server.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
.string()
|
|
7
|
-
.describe('The WhatsApp business phone number ID to send from'),
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
3
|
+
server.registerTool('send_whatsapp_template', {
|
|
4
|
+
description: 'Send a WhatsApp template message to a contact. Templates must be pre-approved by WhatsApp. This creates or continues a chat session with the contact.',
|
|
5
|
+
inputSchema: {
|
|
6
|
+
template_id: z.string().describe('The WhatsApp template ID to send'),
|
|
7
|
+
phone_number_id: z.string().describe('The WhatsApp business phone number ID to send from'),
|
|
8
|
+
contact: z
|
|
9
|
+
.object({
|
|
10
|
+
phone: z.string().describe('Contact phone number in E.164 format'),
|
|
11
|
+
name: z.string().optional().describe('Contact display name'),
|
|
12
|
+
email: z.string().optional().describe('Contact email'),
|
|
13
|
+
})
|
|
14
|
+
.describe('The contact to send the template to'),
|
|
15
|
+
variables: z
|
|
16
|
+
.record(z.string(), z.string())
|
|
17
|
+
.optional()
|
|
18
|
+
.describe('Template variable values keyed by variable name'),
|
|
19
|
+
session_id: z
|
|
20
|
+
.string()
|
|
21
|
+
.optional()
|
|
22
|
+
.describe('Existing session ID to associate the message with'),
|
|
23
|
+
},
|
|
23
24
|
}, async (params) => {
|
|
24
25
|
const data = await client.post('/whatsapp/send-template', params);
|
|
25
26
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"whatsapp.js","sourceRoot":"","sources":["../../src/tools/whatsapp.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,UAAU,qBAAqB,CAAC,MAAiB,EAAE,MAAoB;IAC3E,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"whatsapp.js","sourceRoot":"","sources":["../../src/tools/whatsapp.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,UAAU,qBAAqB,CAAC,MAAiB,EAAE,MAAoB;IAC3E,MAAM,CAAC,YAAY,CACjB,wBAAwB,EACxB;QACE,WAAW,EACT,uJAAuJ;QACzJ,WAAW,EAAE;YACX,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;YACpE,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;YAC1F,OAAO,EAAE,CAAC;iBACP,MAAM,CAAC;gBACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;gBAClE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;gBAC5D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;aACvD,CAAC;iBACD,QAAQ,CAAC,qCAAqC,CAAC;YAClD,SAAS,EAAE,CAAC;iBACT,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;iBAC9B,QAAQ,EAAE;iBACV,QAAQ,CAAC,iDAAiD,CAAC;YAC9D,UAAU,EAAE,CAAC;iBACV,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,mDAAmD,CAAC;SACjE;KACF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC;QAClE,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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"widget.d.ts","sourceRoot":"","sources":["../../src/tools/widget.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,QA2B1E"}
|