@opencx/mcp 1.0.0 → 1.7.0
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 +16 -0
- package/dist/server.js.map +1 -1
- package/dist/tools/actions.d.ts +4 -0
- package/dist/tools/actions.d.ts.map +1 -0
- package/dist/tools/actions.js +76 -0
- package/dist/tools/actions.js.map +1 -0
- package/dist/tools/autopilot.d.ts +4 -0
- package/dist/tools/autopilot.d.ts.map +1 -0
- package/dist/tools/autopilot.js +17 -0
- package/dist/tools/autopilot.js.map +1 -0
- package/dist/tools/blocklist.d.ts +4 -0
- package/dist/tools/blocklist.d.ts.map +1 -0
- package/dist/tools/blocklist.js +57 -0
- package/dist/tools/blocklist.js.map +1 -0
- package/dist/tools/csat.js +1 -1
- package/dist/tools/csat.js.map +1 -1
- package/dist/tools/handoff-analytics.d.ts +4 -0
- package/dist/tools/handoff-analytics.d.ts.map +1 -0
- package/dist/tools/handoff-analytics.js +17 -0
- package/dist/tools/handoff-analytics.js.map +1 -0
- package/dist/tools/office-hours.d.ts +4 -0
- package/dist/tools/office-hours.d.ts.map +1 -0
- package/dist/tools/office-hours.js +47 -0
- package/dist/tools/office-hours.js.map +1 -0
- package/dist/tools/org.js +1 -1
- package/dist/tools/org.js.map +1 -1
- package/dist/tools/phone.d.ts.map +1 -1
- package/dist/tools/phone.js +67 -18
- package/dist/tools/phone.js.map +1 -1
- package/dist/tools/search.d.ts +4 -0
- package/dist/tools/search.d.ts.map +1 -0
- package/dist/tools/search.js +12 -0
- package/dist/tools/search.js.map +1 -0
- package/dist/tools/sequences.js +1 -1
- package/dist/tools/sequences.js.map +1 -1
- package/dist/tools/sessions.d.ts.map +1 -1
- package/dist/tools/sessions.js +35 -0
- package/dist/tools/sessions.js.map +1 -1
- package/dist/tools/tags.d.ts +4 -0
- package/dist/tools/tags.d.ts.map +1 -0
- package/dist/tools/tags.js +39 -0
- package/dist/tools/tags.js.map +1 -0
- package/dist/tools/teams.js +1 -1
- package/dist/tools/teams.js.map +1 -1
- package/dist/tools/training.d.ts.map +1 -1
- package/dist/tools/training.js +148 -10
- package/dist/tools/training.js.map +1 -1
- package/dist/tools/workflows.d.ts +4 -0
- package/dist/tools/workflows.d.ts.map +1 -0
- package/dist/tools/workflows.js +189 -0
- package/dist/tools/workflows.js.map +1 -0
- package/package.json +1 -1
package/dist/tools/sequences.js
CHANGED
|
@@ -18,7 +18,7 @@ export function registerSequenceTools(server, client) {
|
|
|
18
18
|
const data = await client.post('/sequences/', params);
|
|
19
19
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
20
20
|
});
|
|
21
|
-
server.tool('get_sequence', 'Get details of a specific outbound sequence, including its steps and
|
|
21
|
+
server.tool('get_sequence', 'Get details of a specific outbound sequence, including its steps, status, and whether it is continuous or one-off.', { sequence_id: z.string().describe('The sequence ID') }, async ({ sequence_id }) => {
|
|
22
22
|
const data = await client.get(`/sequences/${safePath(sequence_id)}`);
|
|
23
23
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
24
24
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sequences.js","sourceRoot":"","sources":["../../src/tools/sequences.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,IAAI,CACT,iBAAiB,EACjB,iJAAiJ,EACjJ;QACE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QACpD,aAAa,EAAE,CAAC;aACb,OAAO,EAAE;aACT,QAAQ,EAAE;aACV,QAAQ,CAAC,6EAA6E,CAAC;QAC1F,KAAK,EAAE,CAAC;aACL,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;YAC3E,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;SACnF,CAAC,CACH;aACA,QAAQ,EAAE;aACV,QAAQ,CAAC,wCAAwC,CAAC;KACtD,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QACtD,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,IAAI,CACT,cAAc,EACd,
|
|
1
|
+
{"version":3,"file":"sequences.js","sourceRoot":"","sources":["../../src/tools/sequences.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/tools/sessions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAY,MAAM,kBAAkB,CAAC;AAE1D,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/tools/sessions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAY,MAAM,kBAAkB,CAAC;AAE1D,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,QAmL3E"}
|
package/dist/tools/sessions.js
CHANGED
|
@@ -100,6 +100,41 @@ export function registerSessionTools(server, client) {
|
|
|
100
100
|
const data = await client.post(`/chat/sessions/${safePath(session_id)}/send`, body);
|
|
101
101
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
102
102
|
});
|
|
103
|
+
server.tool('filter_sessions', 'Advanced search and filter for chat sessions. Supports filtering by date range, channels, status, sentiment, tags, assignees, teams, contacts, language, custom data, and more. Use this instead of list_sessions when you need precise filtering.', {
|
|
104
|
+
date_from: z.string().optional().describe('Start date (ISO 8601)'),
|
|
105
|
+
date_to: z.string().optional().describe('End date (ISO 8601)'),
|
|
106
|
+
channels: z.array(z.string()).optional().describe('Filter by channels: "web", "email", "whatsapp", "phone_voice", "sms", "slack"'),
|
|
107
|
+
status: z.array(z.number()).optional().describe('Filter by status codes: 0=open, 1=closed_resolved, 2=closed_unresolved'),
|
|
108
|
+
sentiment: z.array(z.string()).optional().describe('Filter by sentiment: "angry", "happy", "neutral"'),
|
|
109
|
+
tags: z.array(z.string()).optional().describe('Filter by tags (sessions must have ALL specified tags)'),
|
|
110
|
+
team_ids: z.array(z.string()).optional().describe('Filter by team/group IDs'),
|
|
111
|
+
contact_ids: z.array(z.string()).optional().describe('Filter by contact IDs'),
|
|
112
|
+
assignees: z.array(z.number()).optional().describe('Filter by assignee user IDs (empty array = unassigned)'),
|
|
113
|
+
language: z.array(z.string()).optional().describe('Filter by session language codes'),
|
|
114
|
+
ticket_number: z.number().optional().describe('Filter by exact ticket number'),
|
|
115
|
+
waiting_on: z.enum(['customers', 'human_agents']).optional().describe('Filter by who the session is waiting on'),
|
|
116
|
+
sort_by: z.enum(['last_message_at', 'created_at']).optional().describe('Sort field (default: last_message_at)'),
|
|
117
|
+
sort_order: z.enum(['asc', 'desc']).optional().describe('Sort direction (default: desc)'),
|
|
118
|
+
page: z.number().optional().describe('Page number (default: 1)'),
|
|
119
|
+
limit: z.number().optional().describe('Results per page (default: 25, max: 100)'),
|
|
120
|
+
}, async ({ date_from, date_to, sort_by, sort_order, page, limit, ...filters }) => {
|
|
121
|
+
const body = {
|
|
122
|
+
filters: {
|
|
123
|
+
...filters,
|
|
124
|
+
...(date_from || date_to ? { date: { from: date_from, to: date_to } } : {}),
|
|
125
|
+
},
|
|
126
|
+
};
|
|
127
|
+
if (sort_by)
|
|
128
|
+
body.sort_by = sort_by;
|
|
129
|
+
if (sort_order)
|
|
130
|
+
body.sort_order = sort_order;
|
|
131
|
+
if (page)
|
|
132
|
+
body.page = page;
|
|
133
|
+
if (limit)
|
|
134
|
+
body.limit = limit;
|
|
135
|
+
const data = await client.post('/chat/sessions/filter', body);
|
|
136
|
+
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
137
|
+
});
|
|
103
138
|
server.tool('get_session_history', 'Get the message history for a chat session. Returns paginated messages, events, and status changes in chronological order.', {
|
|
104
139
|
session_id: z.string().describe('The session ID to get history for'),
|
|
105
140
|
cursor: z.string().optional().describe('Pagination cursor from a previous response'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/tools/sessions.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/tools/sessions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tags.d.ts","sourceRoot":"","sources":["../../src/tools/tags.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAY,MAAM,kBAAkB,CAAC;AAE1D,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,QAsEvE"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { safePath } from '../api-client.js';
|
|
3
|
+
export function registerTagTools(server, client) {
|
|
4
|
+
server.tool('list_tags', '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.', {}, async () => {
|
|
5
|
+
const data = await client.get('/tags/');
|
|
6
|
+
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
7
|
+
});
|
|
8
|
+
server.tool('list_tags_in_use', 'List all tag names that are actually applied to sessions right now. Useful to see which tags are being used vs. sitting unused.', {}, async () => {
|
|
9
|
+
const data = await client.get('/tags/in-use');
|
|
10
|
+
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
11
|
+
});
|
|
12
|
+
server.tool('upsert_tag', '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.', {
|
|
13
|
+
tag_name: z.string().describe('Tag name (e.g. "billing", "refund", "feature-request")'),
|
|
14
|
+
exclude_from_auto_tagging: z
|
|
15
|
+
.boolean()
|
|
16
|
+
.optional()
|
|
17
|
+
.describe('If true, the AI will never auto-apply this tag (default: false)'),
|
|
18
|
+
}, async (params) => {
|
|
19
|
+
await client.put('/tags/', params);
|
|
20
|
+
return { content: [{ type: 'text', text: `Tag "${params.tag_name}" saved.` }] };
|
|
21
|
+
});
|
|
22
|
+
server.tool('delete_tag', 'Remove a tag from your organization. Sessions that already have this tag will keep it — only the tag itself is removed.', {
|
|
23
|
+
tag_name: z.string().describe('The tag name to remove'),
|
|
24
|
+
}, async ({ tag_name }) => {
|
|
25
|
+
await client.delete(`/tags/${safePath(tag_name)}`);
|
|
26
|
+
return { content: [{ type: 'text', text: `Tag "${tag_name}" removed.` }] };
|
|
27
|
+
});
|
|
28
|
+
server.tool('get_auto_tagging_status', 'Check whether AI auto-tagging is enabled. When enabled, the AI automatically applies relevant tags to chat sessions based on conversation content.', {}, async () => {
|
|
29
|
+
const data = await client.get('/tags/auto-tagging');
|
|
30
|
+
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
31
|
+
});
|
|
32
|
+
server.tool('set_auto_tagging', 'Enable or disable AI auto-tagging. When enabled, the AI automatically applies relevant tags to chat sessions.', {
|
|
33
|
+
enabled: z.boolean().describe('Set true to enable auto-tagging, false to disable'),
|
|
34
|
+
}, async ({ enabled }) => {
|
|
35
|
+
const data = await client.put('/tags/auto-tagging', { enabled });
|
|
36
|
+
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=tags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tags.js","sourceRoot":"","sources":["../../src/tools/tags.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/teams.js
CHANGED
|
@@ -5,7 +5,7 @@ export function registerTeamTools(server, client) {
|
|
|
5
5
|
const data = await client.get('/teams/');
|
|
6
6
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
7
7
|
});
|
|
8
|
-
server.tool('get_team', 'Get details of a specific team by ID.', { team_id: z.string().describe('The team ID') }, async ({ team_id }) => {
|
|
8
|
+
server.tool('get_team', 'Get details of a specific team by ID, including its name and member count. Teams group agents for routing, assignment, and reporting.', { team_id: z.string().describe('The team ID') }, async ({ team_id }) => {
|
|
9
9
|
const data = await client.get(`/teams/${safePath(team_id)}`);
|
|
10
10
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
11
11
|
});
|
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,IAAI,CACT,YAAY,EACZ,6GAA6G,EAC7G,EAAE,EACF,KAAK,IAAI,EAAE;QACT,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACzC,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,IAAI,CACT,UAAU,EACV,
|
|
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,QA8O5E"}
|
package/dist/tools/training.js
CHANGED
|
@@ -1,28 +1,166 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { safePath } from '../api-client.js';
|
|
3
3
|
export function registerTrainingTools(server, client) {
|
|
4
|
-
server.tool('list_training_scenarios', 'List all custom training scenarios for your AI agent. Training scenarios teach the AI how to handle specific customer situations
|
|
4
|
+
server.tool('list_training_scenarios', '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).', {}, async () => {
|
|
5
5
|
const data = await client.get('/training/');
|
|
6
6
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
7
7
|
});
|
|
8
|
-
server.tool('
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
server.tool('get_training_scenario', 'Get a single training scenario by ID, including its type, draft status, directory, and channel/segment restrictions.', { id: z.string().describe('The training scenario ID') }, async ({ id }) => {
|
|
9
|
+
const data = await client.get(`/training/${safePath(id)}`);
|
|
10
|
+
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
11
|
+
});
|
|
12
|
+
server.tool('create_training_scenario', '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).', {
|
|
13
|
+
title: z.string().describe('The scenario title or trigger phrase'),
|
|
14
|
+
content: z.string().describe('The instruction body — how the AI should respond'),
|
|
15
|
+
type: z
|
|
16
|
+
.enum(['BEHAVIORAL', 'SCENARIO_SPECIFIC'])
|
|
17
|
+
.optional()
|
|
18
|
+
.describe('Instruction type (default: SCENARIO_SPECIFIC)'),
|
|
19
|
+
is_draft: z
|
|
20
|
+
.boolean()
|
|
21
|
+
.optional()
|
|
22
|
+
.describe('If true, the scenario is saved as draft and not used by the AI'),
|
|
23
|
+
directory_id: z
|
|
24
|
+
.string()
|
|
25
|
+
.nullable()
|
|
26
|
+
.optional()
|
|
27
|
+
.describe('Directory ID to organize this scenario into'),
|
|
28
|
+
restricted_to_channels: z
|
|
29
|
+
.array(z.string())
|
|
30
|
+
.optional()
|
|
31
|
+
.describe('Limit to specific channels (e.g. ["web", "email"]). Empty = all channels.'),
|
|
32
|
+
restricted_to_segments: z
|
|
33
|
+
.array(z.string())
|
|
34
|
+
.optional()
|
|
35
|
+
.describe('Limit to specific contact segments. Empty = all segments.'),
|
|
11
36
|
}, async (params) => {
|
|
12
|
-
const data = await client.post('/training/',
|
|
37
|
+
const data = await client.post('/training/', {
|
|
38
|
+
title: params.title,
|
|
39
|
+
content: params.content,
|
|
40
|
+
type: params.type,
|
|
41
|
+
is_draft: params.is_draft,
|
|
42
|
+
directory_id: params.directory_id ?? null,
|
|
43
|
+
restricted_to_channels: params.restricted_to_channels ?? [],
|
|
44
|
+
restricted_to_segments: params.restricted_to_segments ?? [],
|
|
45
|
+
});
|
|
13
46
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
14
47
|
});
|
|
15
|
-
server.tool('update_training_scenario', 'Update an existing training scenario.
|
|
48
|
+
server.tool('update_training_scenario', '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.', {
|
|
16
49
|
id: z.string().describe('The training scenario ID to update'),
|
|
17
|
-
title: z.string().describe('
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
50
|
+
title: z.string().describe('Scenario title or trigger phrase (required — send current value if unchanged)'),
|
|
51
|
+
content: z.string().describe('Instruction body (required — send current value if unchanged)'),
|
|
52
|
+
type: z
|
|
53
|
+
.enum(['BEHAVIORAL', 'SCENARIO_SPECIFIC'])
|
|
54
|
+
.optional()
|
|
55
|
+
.describe('Instruction type: BEHAVIORAL (always active) or SCENARIO_SPECIFIC (semantic match)'),
|
|
56
|
+
is_draft: z.boolean().optional().describe('Draft status — true means inactive, false means live'),
|
|
57
|
+
directory_id: z.string().nullable().optional().describe('Directory ID to organize into, or null to uncategorize'),
|
|
58
|
+
restricted_to_channels: z
|
|
59
|
+
.array(z.string())
|
|
60
|
+
.optional()
|
|
61
|
+
.describe('Channels this applies to (e.g. ["web", "email"]). Empty array = all channels.'),
|
|
62
|
+
restricted_to_segments: z
|
|
63
|
+
.array(z.string())
|
|
64
|
+
.optional()
|
|
65
|
+
.describe('Contact segments this applies to. Empty array = all segments.'),
|
|
66
|
+
}, async ({ id, title, content, ...rest }) => {
|
|
67
|
+
const data = await client.put(`/training/${safePath(id)}`, {
|
|
68
|
+
title,
|
|
69
|
+
content,
|
|
70
|
+
...rest,
|
|
71
|
+
directory_id: rest.directory_id ?? null,
|
|
72
|
+
restricted_to_channels: rest.restricted_to_channels ?? [],
|
|
73
|
+
restricted_to_segments: rest.restricted_to_segments ?? [],
|
|
74
|
+
});
|
|
21
75
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
22
76
|
});
|
|
23
77
|
server.tool('delete_training_scenario', 'Permanently delete a training scenario by ID. This action cannot be undone.', { id: z.string().describe('The training scenario ID to delete') }, async ({ id }) => {
|
|
24
78
|
await client.delete(`/training/${safePath(id)}`);
|
|
25
79
|
return { content: [{ type: 'text', text: `Training scenario ${id} deleted successfully.` }] };
|
|
26
80
|
});
|
|
81
|
+
server.tool('toggle_training_draft', 'Publish or unpublish a training scenario. Draft scenarios are saved but not used by the AI agent. Publishing makes them active.', {
|
|
82
|
+
id: z.string().describe('The training scenario ID'),
|
|
83
|
+
draft: z.boolean().describe('Set true to make draft (inactive), false to publish (active)'),
|
|
84
|
+
}, async ({ id, draft }) => {
|
|
85
|
+
const data = await client.put(`/training/${safePath(id)}/draft`, { draft });
|
|
86
|
+
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
87
|
+
});
|
|
88
|
+
server.tool('move_training_to_directory', 'Move a training scenario into a directory for organization, or set directory_id to null to uncategorize it.', {
|
|
89
|
+
id: z.string().describe('The training scenario ID to move'),
|
|
90
|
+
directory_id: z
|
|
91
|
+
.string()
|
|
92
|
+
.nullable()
|
|
93
|
+
.describe('Target directory ID, or null to uncategorize'),
|
|
94
|
+
}, async ({ id, directory_id }) => {
|
|
95
|
+
await client.post(`/training/${safePath(id)}/move`, { directory_id });
|
|
96
|
+
return {
|
|
97
|
+
content: [
|
|
98
|
+
{
|
|
99
|
+
type: 'text',
|
|
100
|
+
text: directory_id
|
|
101
|
+
? `Training ${id} moved to directory ${directory_id}.`
|
|
102
|
+
: `Training ${id} uncategorized.`,
|
|
103
|
+
},
|
|
104
|
+
],
|
|
105
|
+
};
|
|
106
|
+
});
|
|
107
|
+
server.tool('get_training_directory_tree', 'Get all training directories with their items, plus uncategorized trainings. Gives a full overview of how trainings are organized.', {
|
|
108
|
+
show_drafts: z
|
|
109
|
+
.enum(['true', 'false'])
|
|
110
|
+
.optional()
|
|
111
|
+
.describe('Include draft trainings (default: true)'),
|
|
112
|
+
show_published: z
|
|
113
|
+
.enum(['true', 'false'])
|
|
114
|
+
.optional()
|
|
115
|
+
.describe('Include published trainings (default: true)'),
|
|
116
|
+
}, async ({ show_drafts, show_published }) => {
|
|
117
|
+
const data = await client.get('/training/directories/tree', {
|
|
118
|
+
show_drafts,
|
|
119
|
+
show_published,
|
|
120
|
+
});
|
|
121
|
+
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
122
|
+
});
|
|
123
|
+
server.tool('list_training_directories', 'List all directories used to organize training scenarios.', {}, async () => {
|
|
124
|
+
const data = await client.get('/training/directories');
|
|
125
|
+
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
126
|
+
});
|
|
127
|
+
server.tool('create_training_directory', 'Create a new directory for organizing training scenarios.', { name: z.string().describe('The directory name') }, async ({ name }) => {
|
|
128
|
+
const data = await client.post('/training/directories', { name });
|
|
129
|
+
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
130
|
+
});
|
|
131
|
+
server.tool('update_training_directory', 'Rename a training directory.', {
|
|
132
|
+
directory_id: z.string().describe('The directory ID to rename'),
|
|
133
|
+
name: z.string().describe('The new directory name'),
|
|
134
|
+
}, async ({ directory_id, name }) => {
|
|
135
|
+
const data = await client.put(`/training/directories/${safePath(directory_id)}`, { name });
|
|
136
|
+
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
137
|
+
});
|
|
138
|
+
server.tool('delete_training_directory', 'Delete a training directory and ALL trainings inside it. This action cannot be undone.', { directory_id: z.string().describe('The directory ID to delete') }, async ({ directory_id }) => {
|
|
139
|
+
await client.delete(`/training/directories/${safePath(directory_id)}`);
|
|
140
|
+
return {
|
|
141
|
+
content: [{ type: 'text', text: `Directory ${directory_id} and its contents deleted.` }],
|
|
142
|
+
};
|
|
143
|
+
});
|
|
144
|
+
server.tool('search_training_knowledge', '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.', {
|
|
145
|
+
query: z
|
|
146
|
+
.string()
|
|
147
|
+
.describe('Natural language search query (e.g. "refund policy", "how to reset password")'),
|
|
148
|
+
limit: z
|
|
149
|
+
.number()
|
|
150
|
+
.optional()
|
|
151
|
+
.describe('Maximum results to return (1-50, default 20)'),
|
|
152
|
+
source_types: z
|
|
153
|
+
.array(z.enum(['integration', 'website', 'custom_training']))
|
|
154
|
+
.optional()
|
|
155
|
+
.describe('Filter by source type. Omit to search all.'),
|
|
156
|
+
}, async ({ query, limit, source_types }) => {
|
|
157
|
+
const body = { query };
|
|
158
|
+
if (limit !== undefined)
|
|
159
|
+
body.limit = limit;
|
|
160
|
+
if (source_types)
|
|
161
|
+
body.sourceTypes = source_types;
|
|
162
|
+
const data = await client.post('/training/search', body);
|
|
163
|
+
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
164
|
+
});
|
|
27
165
|
}
|
|
28
166
|
//# sourceMappingURL=training.js.map
|
|
@@ -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,IAAI,CACT,yBAAyB,EACzB,
|
|
1
|
+
{"version":3,"file":"training.js","sourceRoot":"","sources":["../../src/tools/training.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../src/tools/workflows.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAY,MAAM,kBAAkB,CAAC;AAgF1D,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,QAgM5E"}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { safePath } from '../api-client.js';
|
|
3
|
+
const TRIGGER_TYPES = [
|
|
4
|
+
'manual-trigger',
|
|
5
|
+
'ai-trigger',
|
|
6
|
+
'cron-trigger',
|
|
7
|
+
'form-trigger',
|
|
8
|
+
'webhook',
|
|
9
|
+
'contact-created',
|
|
10
|
+
'phone-call-started',
|
|
11
|
+
'phone-call-finished',
|
|
12
|
+
'ticket-created',
|
|
13
|
+
'ticket-reassigned',
|
|
14
|
+
'ticket-resolved',
|
|
15
|
+
'ticket-handoff',
|
|
16
|
+
'pre-ticket-handoff',
|
|
17
|
+
'ticket-tag-added',
|
|
18
|
+
'ticket-inactive',
|
|
19
|
+
'sequence-completed',
|
|
20
|
+
'csat-score-submit',
|
|
21
|
+
'prohibited-topic-detected',
|
|
22
|
+
'sla-first-reply-breached',
|
|
23
|
+
'sla-next-reply-breached',
|
|
24
|
+
'sla-resolution-breached',
|
|
25
|
+
];
|
|
26
|
+
const triggerTypeSchema = z
|
|
27
|
+
.enum(TRIGGER_TYPES)
|
|
28
|
+
.describe('What starts the workflow. Common: "manual-trigger" (on-demand), "ai-trigger" (AI-initiated), ' +
|
|
29
|
+
'"webhook" (HTTP), "cron-trigger" (scheduled). Event-based: "ticket-created", "contact-created", etc. ' +
|
|
30
|
+
'Call list_workflow_definitions to see all available types.');
|
|
31
|
+
const actionStepSchema = z
|
|
32
|
+
.object({
|
|
33
|
+
$kind: z.literal('Action'),
|
|
34
|
+
id: z.string().describe('Unique step ID (e.g. "step_1"). Used in references like {{step_1.output.field}}'),
|
|
35
|
+
type: z
|
|
36
|
+
.string()
|
|
37
|
+
.describe('Action type from list_workflow_definitions (e.g. "ask-ai", "hold-value", "send-webhook", "tag-ticket")'),
|
|
38
|
+
name: z.string().describe('Display name for this step'),
|
|
39
|
+
input: z
|
|
40
|
+
.record(z.string(), z.unknown())
|
|
41
|
+
.describe('Input fields for this action. See input_fields from list_workflow_definitions for available fields.'),
|
|
42
|
+
})
|
|
43
|
+
.describe('An action step that performs a single operation');
|
|
44
|
+
const conditionSchema = z
|
|
45
|
+
.object({
|
|
46
|
+
operatorName: z
|
|
47
|
+
.string()
|
|
48
|
+
.describe('Comparison operator: "equals", "not_equals", "contains", "not_contains", "greater_than", "less_than", "is_empty", "is_not_empty", "and", "or"'),
|
|
49
|
+
left: z.unknown().describe('Left operand — static value or {{step_id.output.field}} reference'),
|
|
50
|
+
right: z.unknown().optional().describe('Right operand (not needed for unary operators like is_empty)'),
|
|
51
|
+
})
|
|
52
|
+
.describe('A condition for if-else/switch blocks');
|
|
53
|
+
const blockStepSchema = z
|
|
54
|
+
.object({
|
|
55
|
+
$kind: z.literal('Block'),
|
|
56
|
+
type: z.enum(['if-else', 'switch']).describe('Block type'),
|
|
57
|
+
id: z.string().describe('Unique block ID'),
|
|
58
|
+
inputs: z.object({
|
|
59
|
+
condition: conditionSchema,
|
|
60
|
+
}),
|
|
61
|
+
branches: z
|
|
62
|
+
.record(z.string(), z.array(z.record(z.string(), z.unknown())))
|
|
63
|
+
.describe('Branch name → array of steps. For if-else: "then" and "else". For switch: "branch_0", "branch_1", "default".'),
|
|
64
|
+
})
|
|
65
|
+
.describe('A control-flow block (if-else or switch) that branches execution');
|
|
66
|
+
const workflowBlockSchema = z
|
|
67
|
+
.union([actionStepSchema, blockStepSchema])
|
|
68
|
+
.describe('A workflow step: either an Action or a Block');
|
|
69
|
+
export function registerWorkflowTools(server, client) {
|
|
70
|
+
server.tool('list_workflow_definitions', 'List all available workflow action types (with their input/output field schemas), trigger types, and block types. ' +
|
|
71
|
+
'ALWAYS call this first before creating a workflow — it tells you exactly what action types exist, ' +
|
|
72
|
+
'what input fields each action expects, and what output fields you can reference with {{step_id.output.field}}.', {}, async () => {
|
|
73
|
+
const data = await client.get('/workflows/definitions');
|
|
74
|
+
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
75
|
+
});
|
|
76
|
+
server.tool('validate_workflow', 'Validate workflow blocks without creating a workflow. Returns issues and action types used. ' +
|
|
77
|
+
'Use before create_workflow to catch errors early.', {
|
|
78
|
+
trigger_type: triggerTypeSchema,
|
|
79
|
+
workflow_blocks: z.array(workflowBlockSchema).describe('Workflow blocks to validate'),
|
|
80
|
+
}, async ({ trigger_type, workflow_blocks }) => {
|
|
81
|
+
const data = await client.post('/workflows/validate', {
|
|
82
|
+
trigger_type,
|
|
83
|
+
workflow_blocks,
|
|
84
|
+
});
|
|
85
|
+
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
86
|
+
});
|
|
87
|
+
server.tool('create_workflow', 'Create a new workflow. Created as an inactive draft — use activate_workflow to make it live. ' +
|
|
88
|
+
'IMPORTANT: Call list_workflow_definitions first to see available action types and their input fields.', {
|
|
89
|
+
name: z.string().describe('Workflow name'),
|
|
90
|
+
description: z.string().optional().describe('Workflow description'),
|
|
91
|
+
trigger_type: triggerTypeSchema,
|
|
92
|
+
trigger_configuration: z
|
|
93
|
+
.record(z.string(), z.unknown())
|
|
94
|
+
.optional()
|
|
95
|
+
.describe('Trigger-specific config (e.g. cron expression for cron-trigger)'),
|
|
96
|
+
trigger_constraints: z
|
|
97
|
+
.record(z.string(), z.unknown())
|
|
98
|
+
.optional()
|
|
99
|
+
.describe('JSON Logic constraints that must be satisfied for the trigger to fire'),
|
|
100
|
+
workflow_blocks: z
|
|
101
|
+
.array(workflowBlockSchema)
|
|
102
|
+
.describe('Workflow steps and blocks. Use {{step_id.output.field}} to reference earlier step outputs.'),
|
|
103
|
+
}, async ({ name, description, trigger_type, trigger_configuration, trigger_constraints, workflow_blocks }) => {
|
|
104
|
+
const data = await client.post('/workflows/', {
|
|
105
|
+
name,
|
|
106
|
+
description,
|
|
107
|
+
trigger_type,
|
|
108
|
+
trigger_configuration: trigger_configuration ?? null,
|
|
109
|
+
trigger_constraints: trigger_constraints ?? null,
|
|
110
|
+
workflow_blocks,
|
|
111
|
+
});
|
|
112
|
+
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
113
|
+
});
|
|
114
|
+
server.tool('list_workflows', 'List all workflows in your organization. Returns the latest version of each with name, trigger type, and active status.', {}, async () => {
|
|
115
|
+
const data = await client.get('/workflows/');
|
|
116
|
+
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
117
|
+
});
|
|
118
|
+
server.tool('get_workflow', 'Get a specific workflow by UUID, including its blocks, trigger configuration, active status, and version number.', { workflow_id: z.string().describe('The workflow UUID') }, async ({ workflow_id }) => {
|
|
119
|
+
const data = await client.get(`/workflows/${safePath(workflow_id)}`);
|
|
120
|
+
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
121
|
+
});
|
|
122
|
+
server.tool('update_workflow', 'Update a workflow by creating a new version. Only provided fields change; omitted fields carry over. ' +
|
|
123
|
+
'New version is inactive — use activate_workflow to make it live.', {
|
|
124
|
+
workflow_id: z.string().describe('The workflow UUID to update'),
|
|
125
|
+
name: z.string().optional().describe('New workflow name'),
|
|
126
|
+
description: z.string().optional().describe('New workflow description'),
|
|
127
|
+
trigger_type: triggerTypeSchema.optional(),
|
|
128
|
+
trigger_configuration: z
|
|
129
|
+
.record(z.string(), z.unknown())
|
|
130
|
+
.optional()
|
|
131
|
+
.describe('New trigger configuration'),
|
|
132
|
+
trigger_constraints: z
|
|
133
|
+
.record(z.string(), z.unknown())
|
|
134
|
+
.optional()
|
|
135
|
+
.describe('New trigger constraints'),
|
|
136
|
+
workflow_blocks: z
|
|
137
|
+
.array(workflowBlockSchema)
|
|
138
|
+
.optional()
|
|
139
|
+
.describe('New workflow blocks (replaces existing)'),
|
|
140
|
+
}, async ({ workflow_id, ...body }) => {
|
|
141
|
+
const data = await client.patch(`/workflows/${safePath(workflow_id)}`, body);
|
|
142
|
+
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
143
|
+
});
|
|
144
|
+
server.tool('delete_workflow', 'Delete a workflow and all its versions. Active versions are deactivated first. Cannot be undone.', { workflow_id: z.string().describe('The workflow UUID to delete') }, async ({ workflow_id }) => {
|
|
145
|
+
const data = await client.delete(`/workflows/${safePath(workflow_id)}`);
|
|
146
|
+
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
147
|
+
});
|
|
148
|
+
server.tool('activate_workflow', 'Activate the latest version of a workflow. Any previously active version is deactivated.', { workflow_id: z.string().describe('The workflow UUID to activate') }, async ({ workflow_id }) => {
|
|
149
|
+
const data = await client.post(`/workflows/${safePath(workflow_id)}/activate`);
|
|
150
|
+
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
151
|
+
});
|
|
152
|
+
server.tool('deactivate_workflow', 'Deactivate the currently active version of a workflow.', { workflow_id: z.string().describe('The workflow UUID to deactivate') }, async ({ workflow_id }) => {
|
|
153
|
+
const data = await client.post(`/workflows/${safePath(workflow_id)}/deactivate`);
|
|
154
|
+
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
155
|
+
});
|
|
156
|
+
server.tool('trigger_workflow', 'Manually trigger a workflow. Must be "manual-trigger" type and active. Runs in background.', { workflow_id: z.string().describe('The workflow UUID to trigger') }, async ({ workflow_id }) => {
|
|
157
|
+
await client.post(`/workflows/${safePath(workflow_id)}/trigger`);
|
|
158
|
+
return { content: [{ type: 'text', text: `Workflow ${workflow_id} triggered.` }] };
|
|
159
|
+
});
|
|
160
|
+
server.tool('list_workflow_runs', 'List execution runs for a workflow with optional filters.', {
|
|
161
|
+
workflow_id: z.string().describe('The workflow UUID'),
|
|
162
|
+
page: z.number().optional().describe('Page number (default: 1)'),
|
|
163
|
+
limit: z.number().optional().describe('Results per page (default: 20, max: 50)'),
|
|
164
|
+
status: z
|
|
165
|
+
.string()
|
|
166
|
+
.optional()
|
|
167
|
+
.describe('Comma-separated: completed, failed, in_progress, canceled, idle'),
|
|
168
|
+
trigger_cause: z
|
|
169
|
+
.string()
|
|
170
|
+
.optional()
|
|
171
|
+
.describe('Comma-separated: manual, automatic, scheduled'),
|
|
172
|
+
}, async ({ workflow_id, page, limit, status, trigger_cause }) => {
|
|
173
|
+
const data = await client.get(`/workflows/${safePath(workflow_id)}/runs`, {
|
|
174
|
+
page: page?.toString(),
|
|
175
|
+
limit: limit?.toString(),
|
|
176
|
+
status,
|
|
177
|
+
trigger_cause,
|
|
178
|
+
});
|
|
179
|
+
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
180
|
+
});
|
|
181
|
+
server.tool('get_workflow_run', 'Get details of a specific workflow run.', {
|
|
182
|
+
workflow_id: z.string().describe('The workflow UUID'),
|
|
183
|
+
run_id: z.string().describe('The run UUID'),
|
|
184
|
+
}, async ({ workflow_id, run_id }) => {
|
|
185
|
+
const data = await client.get(`/workflows/${safePath(workflow_id)}/runs/${safePath(run_id)}`);
|
|
186
|
+
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=workflows.js.map
|