conduyt-mcp 4.46.0 → 4.47.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 +18 -0
- package/package.json +1 -1
- package/scripts/coverage-matrix.json +10 -4
package/dist/tools/messaging.js
CHANGED
|
@@ -128,6 +128,24 @@ 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_attribution_report", "Attribution: where the window's new contacts came from and what they turned into: the contacts created in the window grouped by their first or latest touch (UTM source, medium, campaign, content, term, the channel, the landing page or the referrer), each group followed to appointments booked, deals won and revenue so far. Touches are captured on forms, booking pages, inbound webhooks, imports and contact creation through the API (pass an `attribution` object with utm_source, utm_medium, utm_campaign, utm_content, utm_term, referrer, landingUrl, pageTitle, clickIds). 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
|
+
touch: z.enum(["first", "last"]).optional().describe("Group by the first (default) or the latest touch"),
|
|
135
|
+
group: z.enum(["source", "utm_source", "medium", "campaign", "content", "term", "channel", "landing", "referrer"]).optional().describe("The touch field to group by (default source = the UTM source when the touch carried one, else the recorded source; utm_source = strictly the UTM)"),
|
|
136
|
+
}, async ({ from, to, touch, group }) => {
|
|
137
|
+
const params = new URLSearchParams();
|
|
138
|
+
if (from)
|
|
139
|
+
params.set("from", from);
|
|
140
|
+
if (to)
|
|
141
|
+
params.set("to", to);
|
|
142
|
+
if (touch)
|
|
143
|
+
params.set("touch", touch);
|
|
144
|
+
if (group)
|
|
145
|
+
params.set("group", group);
|
|
146
|
+
const result = await client.get(`/api/v1/reports/attribution?${params}`);
|
|
147
|
+
return formatResult(result);
|
|
148
|
+
});
|
|
131
149
|
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
150
|
from: z.string().optional().describe("ISO start (omit both for the last 366 days)"),
|
|
133
151
|
to: z.string().optional().describe("ISO end"),
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
|
-
"generatedAt": "2026-09-11T11:
|
|
3
|
-
"toolCount":
|
|
4
|
-
"totalEndpoints":
|
|
2
|
+
"generatedAt": "2026-09-11T11:52:51.576Z",
|
|
3
|
+
"toolCount": 250,
|
|
4
|
+
"totalEndpoints": 955,
|
|
5
5
|
"counts": {
|
|
6
|
-
"covered":
|
|
6
|
+
"covered": 232,
|
|
7
7
|
"excluded": 283,
|
|
8
8
|
"planned": 440,
|
|
9
9
|
"uncategorized": 0
|
|
@@ -3223,6 +3223,12 @@
|
|
|
3223
3223
|
"conduyt_appointment_report"
|
|
3224
3224
|
]
|
|
3225
3225
|
},
|
|
3226
|
+
"GET /api/v1/reports/attribution": {
|
|
3227
|
+
"status": "covered",
|
|
3228
|
+
"tools": [
|
|
3229
|
+
"conduyt_attribution_report"
|
|
3230
|
+
]
|
|
3231
|
+
},
|
|
3226
3232
|
"GET /api/v1/reports/call-performance": {
|
|
3227
3233
|
"status": "covered",
|
|
3228
3234
|
"tools": [
|