@opencx/mcp 1.8.2 → 1.8.3
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 +104 -65
- package/dist/tools/workflows.js.map +1 -1
- package/package.json +1 -1
package/dist/tools/sessions.js
CHANGED
|
@@ -1,36 +1,39 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { safePath } from '../api-client.js';
|
|
3
3
|
export function registerSessionTools(server, client) {
|
|
4
|
-
server.
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
.
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
4
|
+
server.registerTool('list_sessions', {
|
|
5
|
+
description: 'List chat sessions with optional filters. Returns paginated results with session metadata including status, channel, contact info, and timestamps.',
|
|
6
|
+
inputSchema: {
|
|
7
|
+
cursor: z.string().optional().describe('Pagination cursor from a previous response'),
|
|
8
|
+
status: z
|
|
9
|
+
.enum(['open', 'closed', 'handoff'])
|
|
10
|
+
.optional()
|
|
11
|
+
.describe('Filter by session status'),
|
|
12
|
+
channel_type: z
|
|
13
|
+
.string()
|
|
14
|
+
.optional()
|
|
15
|
+
.describe('Filter by channel type (e.g. "web", "whatsapp", "email")'),
|
|
16
|
+
handed_off: z
|
|
17
|
+
.enum(['true', 'false'])
|
|
18
|
+
.optional()
|
|
19
|
+
.describe('Filter for sessions that have been handed off to a human'),
|
|
20
|
+
created_after: z
|
|
21
|
+
.string()
|
|
22
|
+
.optional()
|
|
23
|
+
.describe('ISO 8601 date — only return sessions created after this time'),
|
|
24
|
+
created_before: z
|
|
25
|
+
.string()
|
|
26
|
+
.optional()
|
|
27
|
+
.describe('ISO 8601 date — only return sessions created before this time'),
|
|
28
|
+
updated_after: z
|
|
29
|
+
.string()
|
|
30
|
+
.optional()
|
|
31
|
+
.describe('ISO 8601 date — only return sessions updated after this time'),
|
|
32
|
+
updated_before: z
|
|
33
|
+
.string()
|
|
34
|
+
.optional()
|
|
35
|
+
.describe('ISO 8601 date — only return sessions updated before this time'),
|
|
36
|
+
},
|
|
34
37
|
}, async (params) => {
|
|
35
38
|
const data = await client.get('/chat/sessions/', {
|
|
36
39
|
cursor: params.cursor,
|
|
@@ -44,16 +47,19 @@ export function registerSessionTools(server, client) {
|
|
|
44
47
|
});
|
|
45
48
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
46
49
|
});
|
|
47
|
-
server.
|
|
50
|
+
server.registerTool('get_session', {
|
|
51
|
+
description: 'Get full details of a single chat session by its ID, including status, channel, contact, assignee, team, custom data, and timestamps.',
|
|
52
|
+
inputSchema: { session_id: z.string().describe('The session ID to retrieve') },
|
|
53
|
+
}, async ({ session_id }) => {
|
|
48
54
|
const data = await client.get(`/chat/sessions/${safePath(session_id)}`);
|
|
49
55
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
50
56
|
});
|
|
51
|
-
server.
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
.string()
|
|
55
|
-
.optional()
|
|
56
|
-
|
|
57
|
+
server.registerTool('create_session', {
|
|
58
|
+
description: 'Create a new chat session for an existing contact. The session starts in an open state and can receive messages.',
|
|
59
|
+
inputSchema: {
|
|
60
|
+
contact_id: z.string().describe('The contact ID to create a session for'),
|
|
61
|
+
channel: z.string().optional().describe('Channel type for the session (e.g. "web", "api")'),
|
|
62
|
+
},
|
|
57
63
|
}, async (params) => {
|
|
58
64
|
const data = await client.post('/chat/sessions/', {
|
|
59
65
|
contact_id: params.contact_id,
|
|
@@ -61,33 +67,37 @@ export function registerSessionTools(server, client) {
|
|
|
61
67
|
});
|
|
62
68
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
63
69
|
});
|
|
64
|
-
server.
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
.
|
|
68
|
-
.describe('The new status for the session'),
|
|
70
|
+
server.registerTool('update_session', {
|
|
71
|
+
description: 'Update a chat session status. Use this to resolve, close, or reopen sessions.',
|
|
72
|
+
inputSchema: {
|
|
73
|
+
session_id: z.string().describe('The session ID to update'),
|
|
74
|
+
status: z.enum(['open', 'closed', 'handoff']).describe('The new status for the session'),
|
|
75
|
+
},
|
|
69
76
|
}, async ({ session_id, status }) => {
|
|
70
77
|
const data = await client.patch(`/chat/sessions/${safePath(session_id)}`, { status });
|
|
71
78
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
72
79
|
});
|
|
73
|
-
server.
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
.
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
.
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
80
|
+
server.registerTool('send_message', {
|
|
81
|
+
description: 'Send a message in an existing chat session. Messages can be sent as either a contact or an agent. Supports text content and optional attachments.',
|
|
82
|
+
inputSchema: {
|
|
83
|
+
session_id: z.string().describe('The session ID to send the message in'),
|
|
84
|
+
sender: z
|
|
85
|
+
.enum(['contact', 'agent'])
|
|
86
|
+
.describe('Who is sending the message — "contact" or "agent"'),
|
|
87
|
+
text: z.string().describe('The message text content'),
|
|
88
|
+
contact: z
|
|
89
|
+
.object({
|
|
90
|
+
email: z.string().optional(),
|
|
91
|
+
phone: z.string().optional(),
|
|
92
|
+
name: z.string().optional(),
|
|
93
|
+
})
|
|
94
|
+
.optional()
|
|
95
|
+
.describe('Contact identity when sender is "contact"'),
|
|
96
|
+
agent: z
|
|
97
|
+
.object({ email: z.string().optional(), name: z.string().optional() })
|
|
98
|
+
.optional()
|
|
99
|
+
.describe('Agent identity when sender is "agent"'),
|
|
100
|
+
},
|
|
91
101
|
}, async ({ session_id, sender, text, contact, agent }) => {
|
|
92
102
|
const body = {
|
|
93
103
|
sender,
|
|
@@ -100,23 +110,47 @@ export function registerSessionTools(server, client) {
|
|
|
100
110
|
const data = await client.post(`/chat/sessions/${safePath(session_id)}/send`, body);
|
|
101
111
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
102
112
|
});
|
|
103
|
-
server.
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
113
|
+
server.registerTool('filter_sessions', {
|
|
114
|
+
description: '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.',
|
|
115
|
+
inputSchema: {
|
|
116
|
+
date_from: z.string().optional().describe('Start date (ISO 8601)'),
|
|
117
|
+
date_to: z.string().optional().describe('End date (ISO 8601)'),
|
|
118
|
+
channels: z
|
|
119
|
+
.array(z.string())
|
|
120
|
+
.optional()
|
|
121
|
+
.describe('Filter by channels: "web", "email", "whatsapp", "phone_voice", "sms", "slack"'),
|
|
122
|
+
status: z
|
|
123
|
+
.array(z.number())
|
|
124
|
+
.optional()
|
|
125
|
+
.describe('Filter by status codes: 0=open, 1=closed_resolved, 2=closed_unresolved'),
|
|
126
|
+
sentiment: z
|
|
127
|
+
.array(z.string())
|
|
128
|
+
.optional()
|
|
129
|
+
.describe('Filter by sentiment: "angry", "happy", "neutral"'),
|
|
130
|
+
tags: z
|
|
131
|
+
.array(z.string())
|
|
132
|
+
.optional()
|
|
133
|
+
.describe('Filter by tags (sessions must have ALL specified tags)'),
|
|
134
|
+
team_ids: z.array(z.string()).optional().describe('Filter by team/group IDs'),
|
|
135
|
+
contact_ids: z.array(z.string()).optional().describe('Filter by contact IDs'),
|
|
136
|
+
assignees: z
|
|
137
|
+
.array(z.number())
|
|
138
|
+
.optional()
|
|
139
|
+
.describe('Filter by assignee user IDs (empty array = unassigned)'),
|
|
140
|
+
language: z.array(z.string()).optional().describe('Filter by session language codes'),
|
|
141
|
+
ticket_number: z.number().optional().describe('Filter by exact ticket number'),
|
|
142
|
+
waiting_on: z
|
|
143
|
+
.enum(['customers', 'human_agents'])
|
|
144
|
+
.optional()
|
|
145
|
+
.describe('Filter by who the session is waiting on'),
|
|
146
|
+
sort_by: z
|
|
147
|
+
.enum(['last_message_at', 'created_at'])
|
|
148
|
+
.optional()
|
|
149
|
+
.describe('Sort field (default: last_message_at)'),
|
|
150
|
+
sort_order: z.enum(['asc', 'desc']).optional().describe('Sort direction (default: desc)'),
|
|
151
|
+
page: z.number().optional().describe('Page number (default: 1)'),
|
|
152
|
+
limit: z.number().optional().describe('Results per page (default: 25, max: 100)'),
|
|
153
|
+
},
|
|
120
154
|
}, async ({ date_from, date_to, sort_by, sort_order, page, limit, ...filters }) => {
|
|
121
155
|
const body = {
|
|
122
156
|
filters: {
|
|
@@ -135,9 +169,12 @@ export function registerSessionTools(server, client) {
|
|
|
135
169
|
const data = await client.post('/chat/sessions/filter', body);
|
|
136
170
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
137
171
|
});
|
|
138
|
-
server.
|
|
139
|
-
|
|
140
|
-
|
|
172
|
+
server.registerTool('get_session_history', {
|
|
173
|
+
description: 'Get the message history for a chat session. Returns paginated messages, events, and status changes in chronological order.',
|
|
174
|
+
inputSchema: {
|
|
175
|
+
session_id: z.string().describe('The session ID to get history for'),
|
|
176
|
+
cursor: z.string().optional().describe('Pagination cursor from a previous response'),
|
|
177
|
+
},
|
|
141
178
|
}, async ({ session_id, cursor }) => {
|
|
142
179
|
const data = await client.get(`/chat/sessions/${safePath(session_id)}/history`, { cursor });
|
|
143
180
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/tools/sessions.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":"sessions.js","sourceRoot":"","sources":["../../src/tools/sessions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sla-analytics.d.ts","sourceRoot":"","sources":["../../src/tools/sla-analytics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAkBhD,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"sla-analytics.d.ts","sourceRoot":"","sources":["../../src/tools/sla-analytics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAkBhD,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,QAiGhF"}
|
|
@@ -15,7 +15,10 @@ const slaFilters = {
|
|
|
15
15
|
agent_id: z.string().optional().describe('Filter by agent ID'),
|
|
16
16
|
};
|
|
17
17
|
export function registerSlaAnalyticsTools(server, client) {
|
|
18
|
-
server.
|
|
18
|
+
server.registerTool('get_sla_analytics_overview', {
|
|
19
|
+
description: 'Get SLA analytics overview including compliance rates (overall, first reply, next reply, resolution), coverage rate, and response/resolution time percentiles (p50, p90, p95) for a date range.',
|
|
20
|
+
inputSchema: slaFilters,
|
|
21
|
+
}, async (params) => {
|
|
19
22
|
const data = await client.get('/sla/analytics', {
|
|
20
23
|
from: params.from,
|
|
21
24
|
to: params.to,
|
|
@@ -27,11 +30,14 @@ export function registerSlaAnalyticsTools(server, client) {
|
|
|
27
30
|
});
|
|
28
31
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
29
32
|
});
|
|
30
|
-
server.
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
server.registerTool('get_sla_analytics_breakdown', {
|
|
34
|
+
description: 'Get SLA compliance rates grouped by policy, team, agent, or channel. Each group includes session count, compliance metrics, and time percentiles.',
|
|
35
|
+
inputSchema: {
|
|
36
|
+
...slaFilters,
|
|
37
|
+
group_by: z
|
|
38
|
+
.enum(['policy', 'team', 'agent', 'channel'])
|
|
39
|
+
.describe('Dimension to group results by'),
|
|
40
|
+
},
|
|
35
41
|
}, async (params) => {
|
|
36
42
|
const data = await client.get('/sla/analytics/breakdown', {
|
|
37
43
|
from: params.from,
|
|
@@ -45,12 +51,15 @@ export function registerSlaAnalyticsTools(server, client) {
|
|
|
45
51
|
});
|
|
46
52
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
47
53
|
});
|
|
48
|
-
server.
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
+
server.registerTool('get_sla_analytics_trend', {
|
|
55
|
+
description: 'Get SLA compliance rates over time, grouped by day or week. Returns a time series of compliance metrics and percentiles for each period.',
|
|
56
|
+
inputSchema: {
|
|
57
|
+
...slaFilters,
|
|
58
|
+
granularity: z
|
|
59
|
+
.enum(['day', 'week'])
|
|
60
|
+
.optional()
|
|
61
|
+
.describe('Time granularity for the trend data. Defaults to "day".'),
|
|
62
|
+
},
|
|
54
63
|
}, async (params) => {
|
|
55
64
|
const data = await client.get('/sla/analytics/trend', {
|
|
56
65
|
from: params.from,
|
|
@@ -64,7 +73,10 @@ export function registerSlaAnalyticsTools(server, client) {
|
|
|
64
73
|
});
|
|
65
74
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
66
75
|
});
|
|
67
|
-
server.
|
|
76
|
+
server.registerTool('get_sla_breach_heatmap', {
|
|
77
|
+
description: 'Get a heatmap of SLA breaches by hour of day (0-23) and day of week (0=Sunday to 6=Saturday). Useful for identifying patterns in when SLA breaches occur.',
|
|
78
|
+
inputSchema: slaFilters,
|
|
79
|
+
}, async (params) => {
|
|
68
80
|
const data = await client.get('/sla/analytics/breach-heatmap', {
|
|
69
81
|
from: params.from,
|
|
70
82
|
to: params.to,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sla-analytics.js","sourceRoot":"","sources":["../../src/tools/sla-analytics.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,UAAU,GAAG;IACjB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;IAC9E,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;IAC1E,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,+EAA+E,CAAC;IAC5F,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IACpE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IAC5D,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,8DAA8D,CAAC;IAC3E,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;CAC/D,CAAC;AAEF,MAAM,UAAU,yBAAyB,CAAC,MAAiB,EAAE,MAAoB;IAC/E,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"sla-analytics.js","sourceRoot":"","sources":["../../src/tools/sla-analytics.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/sla.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sla.d.ts","sourceRoot":"","sources":["../../src/tools/sla.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,
|
|
1
|
+
{"version":3,"file":"sla.d.ts","sourceRoot":"","sources":["../../src/tools/sla.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,QAqHvE"}
|
package/dist/tools/sla.js
CHANGED
|
@@ -1,36 +1,44 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { safePath } from '../api-client.js';
|
|
3
3
|
export function registerSlaTools(server, client) {
|
|
4
|
-
server.
|
|
4
|
+
server.registerTool('list_sla_policies', {
|
|
5
|
+
description: 'List all SLA policies for your organization. Each policy defines target response and resolution times.',
|
|
6
|
+
}, async () => {
|
|
5
7
|
const data = await client.get('/sla/policies');
|
|
6
8
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
7
9
|
});
|
|
8
|
-
server.
|
|
10
|
+
server.registerTool('get_sla_policy', {
|
|
11
|
+
description: 'Get a single SLA policy by ID.',
|
|
12
|
+
inputSchema: { id: z.string().describe('The SLA policy ID') },
|
|
13
|
+
}, async ({ id }) => {
|
|
9
14
|
const data = await client.get(`/sla/policies/${safePath(id)}`);
|
|
10
15
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
11
16
|
});
|
|
12
|
-
server.
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
.string()
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
17
|
+
server.registerTool('create_sla_policy', {
|
|
18
|
+
description: 'Create a new SLA policy with target times for first reply, next reply, and/or resolution. At least one target must be set. All times are in seconds.',
|
|
19
|
+
inputSchema: {
|
|
20
|
+
name: z.string().describe('Policy name (e.g. "Standard SLA", "Premium SLA")'),
|
|
21
|
+
office_hours_id: z
|
|
22
|
+
.string()
|
|
23
|
+
.nullable()
|
|
24
|
+
.optional()
|
|
25
|
+
.describe('Office hours schedule ID to link. SLA timers pause outside office hours.'),
|
|
26
|
+
first_reply_target_seconds: z
|
|
27
|
+
.number()
|
|
28
|
+
.int()
|
|
29
|
+
.optional()
|
|
30
|
+
.describe('Target seconds for first reply (min 60). E.g. 300 = 5 minutes.'),
|
|
31
|
+
next_reply_target_seconds: z
|
|
32
|
+
.number()
|
|
33
|
+
.int()
|
|
34
|
+
.optional()
|
|
35
|
+
.describe('Target seconds for subsequent replies (min 60).'),
|
|
36
|
+
resolution_target_seconds: z
|
|
37
|
+
.number()
|
|
38
|
+
.int()
|
|
39
|
+
.optional()
|
|
40
|
+
.describe('Target seconds for full resolution (min 300). Must be greater than reply targets.'),
|
|
41
|
+
},
|
|
34
42
|
}, async (params) => {
|
|
35
43
|
const data = await client.post('/sla/policies', {
|
|
36
44
|
name: params.name,
|
|
@@ -41,37 +49,43 @@ export function registerSlaTools(server, client) {
|
|
|
41
49
|
});
|
|
42
50
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
43
51
|
});
|
|
44
|
-
server.
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
.string()
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
52
|
+
server.registerTool('update_sla_policy', {
|
|
53
|
+
description: 'Update an existing SLA policy. Only provided fields are changed.',
|
|
54
|
+
inputSchema: {
|
|
55
|
+
id: z.string().describe('The SLA policy ID to update'),
|
|
56
|
+
name: z.string().optional().describe('New policy name'),
|
|
57
|
+
office_hours_id: z
|
|
58
|
+
.string()
|
|
59
|
+
.nullable()
|
|
60
|
+
.optional()
|
|
61
|
+
.describe('Office hours schedule ID, or null to unlink'),
|
|
62
|
+
first_reply_target_seconds: z
|
|
63
|
+
.number()
|
|
64
|
+
.int()
|
|
65
|
+
.nullable()
|
|
66
|
+
.optional()
|
|
67
|
+
.describe('Target seconds for first reply, or null to remove'),
|
|
68
|
+
next_reply_target_seconds: z
|
|
69
|
+
.number()
|
|
70
|
+
.int()
|
|
71
|
+
.nullable()
|
|
72
|
+
.optional()
|
|
73
|
+
.describe('Target seconds for next reply, or null to remove'),
|
|
74
|
+
resolution_target_seconds: z
|
|
75
|
+
.number()
|
|
76
|
+
.int()
|
|
77
|
+
.nullable()
|
|
78
|
+
.optional()
|
|
79
|
+
.describe('Target seconds for resolution, or null to remove'),
|
|
80
|
+
},
|
|
70
81
|
}, async ({ id, ...rest }) => {
|
|
71
82
|
const data = await client.put(`/sla/policies/${safePath(id)}`, rest);
|
|
72
83
|
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
73
84
|
});
|
|
74
|
-
server.
|
|
85
|
+
server.registerTool('delete_sla_policy', {
|
|
86
|
+
description: 'Delete an SLA policy by ID. This action cannot be undone.',
|
|
87
|
+
inputSchema: { id: z.string().describe('The SLA policy ID to delete') },
|
|
88
|
+
}, async ({ id }) => {
|
|
75
89
|
await client.delete(`/sla/policies/${safePath(id)}`);
|
|
76
90
|
return { content: [{ type: 'text', text: `SLA policy ${id} deleted.` }] };
|
|
77
91
|
});
|
package/dist/tools/sla.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sla.js","sourceRoot":"","sources":["../../src/tools/sla.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":"sla.js","sourceRoot":"","sources":["../../src/tools/sla.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/tags.d.ts.map
CHANGED
|
@@ -1 +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,
|
|
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,QAqFvE"}
|