@sendinel/mcp-server 1.0.53 → 1.0.54
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/README.md +2 -2
- package/build/server.js +1 -0
- package/build/tools/org.js +18 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -12,7 +12,7 @@ AI-controlled email operations control plane for campaigns, contacts, segments,
|
|
|
12
12
|
|
|
13
13
|
## Tool groups
|
|
14
14
|
|
|
15
|
-
Sendinel currently exposes 34 tool groups and
|
|
15
|
+
Sendinel currently exposes 34 tool groups and 322 tools (gateway mode adds 3 meta-tools). These counts are checked against the tool registry in CI, so this table matches what ships.
|
|
16
16
|
|
|
17
17
|
| Group | Count | Purpose |
|
|
18
18
|
|-------|-------|---------|
|
|
@@ -38,7 +38,7 @@ Sendinel currently exposes 34 tool groups and 321 tools (gateway mode adds 3 met
|
|
|
38
38
|
| `landing-pages` | 5 | Landing page CRUD |
|
|
39
39
|
| `lists` | 7 | Static contact lists and membership management |
|
|
40
40
|
| `newsletters` | 12 | Newsletter publications, issues, subscribers, scheduling, sending, stats |
|
|
41
|
-
| `org` |
|
|
41
|
+
| `org` | 23 | Team members, plan usage/limits, audit log, model registry, white-label, support tickets, provider switching |
|
|
42
42
|
| `segments` | 6 | Audience builder: create, edit, natural-language generation, preview |
|
|
43
43
|
| `short-links` | 3 | Short links, click stats, QR codes |
|
|
44
44
|
| `signatures` | 4 | Sending signature blocks |
|
package/build/server.js
CHANGED
|
@@ -160,6 +160,7 @@ const ADMIN_TOOLS = new Set([
|
|
|
160
160
|
'delete_signature',
|
|
161
161
|
'merge_subscribers', 'delete_webhook_subscription',
|
|
162
162
|
'set_white_label_settings', 'add_white_label_domain',
|
|
163
|
+
'post_ticket_reply',
|
|
163
164
|
]);
|
|
164
165
|
const SCOPE_HIERARCHY = { read: 1, write: 2, admin: 3 };
|
|
165
166
|
export function getRequiredScope(name) {
|
package/build/tools/org.js
CHANGED
|
@@ -882,6 +882,24 @@ export function registerOrgTools(server) {
|
|
|
882
882
|
});
|
|
883
883
|
return result.ok ? j(result.data) : j({ error: result.error });
|
|
884
884
|
});
|
|
885
|
+
server.registerTool('post_ticket_reply', {
|
|
886
|
+
title: 'Post Approved Ticket Reply',
|
|
887
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false },
|
|
888
|
+
description: 'Post the exact Kevin-approved reply to a support ticket. Platform-admin only; requires an approval reference and SHA-256 of the exact body. Does not email or resolve the ticket.',
|
|
889
|
+
inputSchema: {
|
|
890
|
+
ticket_ref: z.string().regex(/^SND-\d+$/i),
|
|
891
|
+
body: z.string().min(1),
|
|
892
|
+
approval_ref: z.string().min(1),
|
|
893
|
+
body_sha256: z.string(),
|
|
894
|
+
reopen: z.boolean().optional(),
|
|
895
|
+
},
|
|
896
|
+
}, async ({ ticket_ref, body, approval_ref, body_sha256, reopen }) => {
|
|
897
|
+
const result = await callSendinelV1(`/api/v1/support/tickets/${encodeURIComponent(ticket_ref)}/reply`, {
|
|
898
|
+
method: 'POST',
|
|
899
|
+
body: { body, approval_ref, body_sha256, reopen },
|
|
900
|
+
});
|
|
901
|
+
return result.ok ? j(result.data) : j({ error: result.error });
|
|
902
|
+
});
|
|
885
903
|
server.registerTool('start_provider_switch', {
|
|
886
904
|
title: 'Start Provider Switch',
|
|
887
905
|
annotations: {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sendinel/mcp-server",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.54",
|
|
4
4
|
"description": "AI-controlled email operations control plane for campaigns, contacts, segments, analytics, and multi-provider sending via MCP.",
|
|
5
5
|
"mcpName": "ai.sendinel/mcp-server",
|
|
6
6
|
"type": "module",
|