conduyt-mcp 4.28.0 → 4.29.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.
|
@@ -155,6 +155,23 @@ export function registerAiExtendedTools(server, client) {
|
|
|
155
155
|
const result = await client.post("/api/v1/ai/actions/execute", { actions, confirmationToken, ...(selectedIds ? { selectedIds } : {}), ...(resumeIds ? { resumeIds } : {}) });
|
|
156
156
|
return formatResult(result);
|
|
157
157
|
});
|
|
158
|
+
server.tool("conduyt_reply_suggestion", "Copilot Tier 2 — the suggested reply for a contact's LATEST inbound text or email (what they said, what they are asking, sentiment, and a draft reply shaped for the channel). Advice only: nothing is sent by this tool. state: ready | pending (the copilot has not read it yet) | none | decided | skipped (opt-out, do-not-contact, feature off).", {
|
|
159
|
+
contactId: z.string().describe("Contact UUID (must be visible to the caller)"),
|
|
160
|
+
}, async ({ contactId }) => {
|
|
161
|
+
const result = await client.get(`/api/v1/conversations/${encodeURIComponent(contactId)}/suggestion`);
|
|
162
|
+
return formatResult(result);
|
|
163
|
+
});
|
|
164
|
+
server.tool("conduyt_reply_suggestion_decide", "Copilot Tier 2 — record what was done with a suggested reply: accepted (the draft was taken into a composer), sent (with the outbound message id, after sending it through conduyt_send_message / the messages API), or dismissed. A suggestion moves once (accepted → sent is allowed).", {
|
|
165
|
+
contactId: z.string().describe("Contact UUID"),
|
|
166
|
+
messageId: z.string().describe("The inbound message the suggestion answers (suggestion.messageId)"),
|
|
167
|
+
decision: z.enum(["accepted", "sent", "dismissed"]),
|
|
168
|
+
sentMessageId: z.string().optional().describe("REQUIRED with decision=sent: the OUTBOUND message id that was sent — it must belong to this contact and be provider-confirmed (status sent/delivered, or queued with a provider id); a pending, draft or failed message is refused"),
|
|
169
|
+
}, async ({ contactId, messageId, decision, sentMessageId }) => {
|
|
170
|
+
if (decision === "sent" && !sentMessageId)
|
|
171
|
+
throw new Error("decision=sent requires sentMessageId (the confirmed outbound message that was sent)");
|
|
172
|
+
const result = await client.post(`/api/v1/conversations/${encodeURIComponent(contactId)}/suggestion`, { messageId, decision, ...(sentMessageId ? { sentMessageId } : {}) });
|
|
173
|
+
return formatResult(result);
|
|
174
|
+
});
|
|
158
175
|
server.tool("conduyt_ai_daily_brief", "AI-generated daily brief for the current user. Summarizes today's priorities — deals needing attention, overdue tasks, hot leads, and recommended focus.", {}, async () => {
|
|
159
176
|
const result = await client.get("/api/v1/ai/daily-brief");
|
|
160
177
|
return formatResult(result);
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
|
-
"generatedAt": "2026-09-
|
|
3
|
-
"toolCount":
|
|
4
|
-
"totalEndpoints":
|
|
2
|
+
"generatedAt": "2026-09-06T14:27:53.877Z",
|
|
3
|
+
"toolCount": 214,
|
|
4
|
+
"totalEndpoints": 918,
|
|
5
5
|
"counts": {
|
|
6
|
-
"covered":
|
|
7
|
-
"excluded":
|
|
6
|
+
"covered": 198,
|
|
7
|
+
"excluded": 275,
|
|
8
8
|
"planned": 445,
|
|
9
9
|
"uncategorized": 0
|
|
10
10
|
},
|
|
@@ -1473,6 +1473,18 @@
|
|
|
1473
1473
|
"status": "planned",
|
|
1474
1474
|
"reason": "conversation thread surfaces"
|
|
1475
1475
|
},
|
|
1476
|
+
"GET /api/v1/conversations/:contactId/suggestion": {
|
|
1477
|
+
"status": "covered",
|
|
1478
|
+
"tools": [
|
|
1479
|
+
"conduyt_reply_suggestion"
|
|
1480
|
+
]
|
|
1481
|
+
},
|
|
1482
|
+
"POST /api/v1/conversations/:contactId/suggestion": {
|
|
1483
|
+
"status": "covered",
|
|
1484
|
+
"tools": [
|
|
1485
|
+
"conduyt_reply_suggestion_decide"
|
|
1486
|
+
]
|
|
1487
|
+
},
|
|
1476
1488
|
"GET /api/v1/conversations/export": {
|
|
1477
1489
|
"status": "planned",
|
|
1478
1490
|
"reason": "conversation thread surfaces"
|
|
@@ -1637,6 +1649,10 @@
|
|
|
1637
1649
|
"status": "excluded",
|
|
1638
1650
|
"reason": "CRON_SECRET-gated infrastructure jobs; never key-callable"
|
|
1639
1651
|
},
|
|
1652
|
+
"GET /api/v1/cron/process-message-insights": {
|
|
1653
|
+
"status": "excluded",
|
|
1654
|
+
"reason": "CRON_SECRET-gated infrastructure jobs; never key-callable"
|
|
1655
|
+
},
|
|
1640
1656
|
"GET /api/v1/cron/process-outbox": {
|
|
1641
1657
|
"status": "excluded",
|
|
1642
1658
|
"reason": "CRON_SECRET-gated infrastructure jobs; never key-callable"
|