conduyt-mcp 4.44.0 → 4.46.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/tools/messaging.js +51 -0
- package/package.json +1 -1
- package/scripts/coverage-matrix.json +28 -4
package/dist/tools/messaging.js
CHANGED
|
@@ -128,6 +128,57 @@ export function registerMessagingTools(server, client) {
|
|
|
128
128
|
const result = await client.get(`/api/v1/reports/speed-to-lead?${params}`);
|
|
129
129
|
return formatResult(result);
|
|
130
130
|
});
|
|
131
|
+
server.tool("conduyt_agent_performance_report", "Agent performance: every active rep's numbers for the window next to their targets and next to each other: calls, conversations, appointments booked, deals won, revenue, activities, talk minutes, each with the target prorated to the window (daily once per day, weekly per 7 days, monthly per 30.4375 days) and the attainment; a score per rep and a team row. userIds (up to 10) is the compare set. Spans clamp to 366 days; the definition comes back as `definition`.", {
|
|
132
|
+
from: z.string().optional().describe("ISO start (omit both for the last 366 days)"),
|
|
133
|
+
to: z.string().optional().describe("ISO end"),
|
|
134
|
+
userIds: z.array(z.string().uuid()).max(10).optional().describe("The reps to compare; omit for every active member"),
|
|
135
|
+
}, async ({ from, to, userIds }) => {
|
|
136
|
+
const params = new URLSearchParams();
|
|
137
|
+
if (from)
|
|
138
|
+
params.set("from", from);
|
|
139
|
+
if (to)
|
|
140
|
+
params.set("to", to);
|
|
141
|
+
if (userIds && userIds.length > 0)
|
|
142
|
+
params.set("userIds", userIds.join(","));
|
|
143
|
+
const result = await client.get(`/api/v1/reports/agent-performance?${params}`);
|
|
144
|
+
return formatResult(result);
|
|
145
|
+
});
|
|
146
|
+
server.tool("conduyt_list_targets", "The account's per-user targets (userId, metric, period, value). Admins and owners read everyone's; anyone else reads their own. Metrics: calls, conversations, appointments, deals_won, revenue, activities, talk_minutes; periods: daily, weekly, monthly.", { userId: z.string().uuid().optional().describe("One user's targets") }, async ({ userId }) => {
|
|
147
|
+
const params = new URLSearchParams();
|
|
148
|
+
if (userId)
|
|
149
|
+
params.set("userId", userId);
|
|
150
|
+
const result = await client.get(`/api/v1/reports/targets?${params}`);
|
|
151
|
+
return formatResult(result);
|
|
152
|
+
});
|
|
153
|
+
server.tool("conduyt_set_targets", "Set per-user targets in one call (admins and owners): one row per user, metric and period is replaced; value 0 removes it; every user must be an active member. Up to 200 targets.", {
|
|
154
|
+
targets: z.array(z.object({
|
|
155
|
+
userId: z.string().uuid(),
|
|
156
|
+
metric: z.enum(["calls", "conversations", "appointments", "deals_won", "revenue", "activities", "talk_minutes"]),
|
|
157
|
+
period: z.enum(["daily", "weekly", "monthly"]),
|
|
158
|
+
value: z.number().min(0).describe("The target for the period; 0 removes it"),
|
|
159
|
+
})).min(1).max(200),
|
|
160
|
+
}, async ({ targets }) => formatResult(await client.put("/api/v1/reports/targets", { targets })));
|
|
161
|
+
server.tool("conduyt_call_performance_report", "Unified call report: every call in the window, whatever carried it (the in-app dialer over Twilio, click-to-call Twilio, Project Blue), with the dialer analytics' definitions: calls, inbound and outbound, answered (network completed with talk time), connected and conversations (from the saved disposition), talk time and average talk, voicemails, missed inbound, appointments set and sales closed; overall and by user, transport, direction, disposition, day and hour of the account's timezone. Spans clamp to 366 days; the definition comes back as `definition`.", {
|
|
162
|
+
from: z.string().optional().describe("ISO start (omit both for the last 366 days)"),
|
|
163
|
+
to: z.string().optional().describe("ISO end"),
|
|
164
|
+
userId: z.string().uuid().optional().describe("Only calls placed or taken by this user"),
|
|
165
|
+
transport: z.string().max(64).optional().describe("Exact call transport: twilio (the in-app dialer and click-to-call), project_blue, project_blue_twilio"),
|
|
166
|
+
direction: z.enum(["inbound", "outbound"]).optional(),
|
|
167
|
+
}, async ({ from, to, userId, transport, direction }) => {
|
|
168
|
+
const params = new URLSearchParams();
|
|
169
|
+
if (from)
|
|
170
|
+
params.set("from", from);
|
|
171
|
+
if (to)
|
|
172
|
+
params.set("to", to);
|
|
173
|
+
if (userId)
|
|
174
|
+
params.set("userId", userId);
|
|
175
|
+
if (transport)
|
|
176
|
+
params.set("transport", transport);
|
|
177
|
+
if (direction)
|
|
178
|
+
params.set("direction", direction);
|
|
179
|
+
const result = await client.get(`/api/v1/reports/call-performance?${params}`);
|
|
180
|
+
return formatResult(result);
|
|
181
|
+
});
|
|
131
182
|
server.tool("conduyt_appointment_report", "Appointment report: every appointment whose time (basis=start, default) or booking (basis=booked) falls in the window: booked, by status (scheduled, confirmed, completed, cancelled, no-show), the outcome of the ones already in the past (held or no-show, show rate), cancellations, reschedules and upcoming; overall and by assigned user, by calendar or booking page, by lead source, by the channel it came in on (booking page, call disposition, created in Conduyt, calendar) and by day. Reschedules count moves by the attendee, by a person in Conduyt, or synced from a connected calendar. Spans clamp to 366 days; the definition comes back as `definition`.", {
|
|
132
183
|
from: z.string().optional().describe("ISO start (omit both for the last 366 days)"),
|
|
133
184
|
to: z.string().optional().describe("ISO end"),
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
|
-
"generatedAt": "2026-09-
|
|
3
|
-
"toolCount":
|
|
4
|
-
"totalEndpoints":
|
|
2
|
+
"generatedAt": "2026-09-11T11:05:33.223Z",
|
|
3
|
+
"toolCount": 249,
|
|
4
|
+
"totalEndpoints": 954,
|
|
5
5
|
"counts": {
|
|
6
|
-
"covered":
|
|
6
|
+
"covered": 231,
|
|
7
7
|
"excluded": 283,
|
|
8
8
|
"planned": 440,
|
|
9
9
|
"uncategorized": 0
|
|
@@ -3211,12 +3211,24 @@
|
|
|
3211
3211
|
"status": "planned",
|
|
3212
3212
|
"reason": "additional report surfaces beyond ai/insights"
|
|
3213
3213
|
},
|
|
3214
|
+
"GET /api/v1/reports/agent-performance": {
|
|
3215
|
+
"status": "covered",
|
|
3216
|
+
"tools": [
|
|
3217
|
+
"conduyt_agent_performance_report"
|
|
3218
|
+
]
|
|
3219
|
+
},
|
|
3214
3220
|
"GET /api/v1/reports/appointments": {
|
|
3215
3221
|
"status": "covered",
|
|
3216
3222
|
"tools": [
|
|
3217
3223
|
"conduyt_appointment_report"
|
|
3218
3224
|
]
|
|
3219
3225
|
},
|
|
3226
|
+
"GET /api/v1/reports/call-performance": {
|
|
3227
|
+
"status": "covered",
|
|
3228
|
+
"tools": [
|
|
3229
|
+
"conduyt_call_performance_report"
|
|
3230
|
+
]
|
|
3231
|
+
},
|
|
3220
3232
|
"GET /api/v1/reports/calls": {
|
|
3221
3233
|
"status": "planned",
|
|
3222
3234
|
"reason": "additional report surfaces beyond ai/insights"
|
|
@@ -3373,6 +3385,18 @@
|
|
|
3373
3385
|
"conduyt_send_report_schedule_now"
|
|
3374
3386
|
]
|
|
3375
3387
|
},
|
|
3388
|
+
"GET /api/v1/reports/targets": {
|
|
3389
|
+
"status": "covered",
|
|
3390
|
+
"tools": [
|
|
3391
|
+
"conduyt_list_targets"
|
|
3392
|
+
]
|
|
3393
|
+
},
|
|
3394
|
+
"PUT /api/v1/reports/targets": {
|
|
3395
|
+
"status": "covered",
|
|
3396
|
+
"tools": [
|
|
3397
|
+
"conduyt_set_targets"
|
|
3398
|
+
]
|
|
3399
|
+
},
|
|
3376
3400
|
"GET /api/v1/reports/team": {
|
|
3377
3401
|
"status": "planned",
|
|
3378
3402
|
"reason": "additional report surfaces beyond ai/insights"
|