@migma/mcp 1.8.2 → 1.9.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.
Files changed (51) hide show
  1. package/README.md +18 -0
  2. package/build/index.d.ts.map +1 -1
  3. package/build/index.js +3 -4
  4. package/build/index.js.map +1 -1
  5. package/build/prompts/index.d.ts +0 -1
  6. package/build/prompts/index.d.ts.map +1 -1
  7. package/build/prompts/index.js +5 -6
  8. package/build/prompts/index.js.map +1 -1
  9. package/build/tools/__tests__/brand.test.js +25 -0
  10. package/build/tools/__tests__/brand.test.js.map +1 -1
  11. package/build/tools/__tests__/campaign-recipients.test.js +5 -2
  12. package/build/tools/__tests__/campaign-recipients.test.js.map +1 -1
  13. package/build/tools/__tests__/campaign-schedule.test.d.ts +2 -0
  14. package/build/tools/__tests__/campaign-schedule.test.d.ts.map +1 -0
  15. package/build/tools/__tests__/campaign-schedule.test.js +43 -0
  16. package/build/tools/__tests__/campaign-schedule.test.js.map +1 -0
  17. package/build/tools/__tests__/catalog.test.js +26 -16
  18. package/build/tools/__tests__/catalog.test.js.map +1 -1
  19. package/build/tools/__tests__/provider-imports.test.js +23 -0
  20. package/build/tools/__tests__/provider-imports.test.js.map +1 -1
  21. package/build/tools/__tests__/review-annotations.test.js +3 -4
  22. package/build/tools/__tests__/review-annotations.test.js.map +1 -1
  23. package/build/tools/__tests__/send-confirmation.test.d.ts +2 -0
  24. package/build/tools/__tests__/send-confirmation.test.d.ts.map +1 -0
  25. package/build/tools/__tests__/send-confirmation.test.js +170 -0
  26. package/build/tools/__tests__/send-confirmation.test.js.map +1 -0
  27. package/build/tools/brand.d.ts.map +1 -1
  28. package/build/tools/brand.js +10 -7
  29. package/build/tools/brand.js.map +1 -1
  30. package/build/tools/campaigns.d.ts +2 -0
  31. package/build/tools/campaigns.d.ts.map +1 -1
  32. package/build/tools/campaigns.js +144 -13
  33. package/build/tools/campaigns.js.map +1 -1
  34. package/build/tools/capabilities.d.ts +1 -1
  35. package/build/tools/capabilities.js +5 -5
  36. package/build/tools/capabilities.js.map +1 -1
  37. package/build/tools/contacts.d.ts.map +1 -1
  38. package/build/tools/contacts.js +30 -15
  39. package/build/tools/contacts.js.map +1 -1
  40. package/build/tools/context.js +1 -1
  41. package/build/tools/context.js.map +1 -1
  42. package/build/tools/generate.js +2 -2
  43. package/build/tools/generate.js.map +1 -1
  44. package/build/tools/send-confirmation.d.ts +64 -0
  45. package/build/tools/send-confirmation.d.ts.map +1 -0
  46. package/build/tools/send-confirmation.js +150 -0
  47. package/build/tools/send-confirmation.js.map +1 -0
  48. package/build/tools/send.d.ts.map +1 -1
  49. package/build/tools/send.js +92 -8
  50. package/build/tools/send.js.map +1 -1
  51. package/package.json +1 -1
@@ -0,0 +1,170 @@
1
+ import assert from "node:assert/strict";
2
+ import test from "node:test";
3
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
4
+ import { registerSendTools } from "../send.js";
5
+ import { registerCampaignTools } from "../campaigns.js";
6
+ import { CONFIRMATION_TTL_MS, issueConfirmationToken } from "../send-confirmation.js";
7
+ const VERIFIED = [{ domain: "example.com", isVerified: true, status: "verified" }];
8
+ function fixture(options = {}) {
9
+ const sends = [];
10
+ const campaignSends = [];
11
+ const schedules = [];
12
+ const state = {
13
+ campaign: {
14
+ id: "campaign-1", projectId: "brand-1", status: "draft", recipientType: "audience", recipientId: "seg-1",
15
+ from: "hello@example.com", fromName: "Example", subject: "Spring sale", emailId: "email-1",
16
+ conversationId: "conv-1", estimatedRecipients: 1200, providerType: "migma", template: "<zinn/>",
17
+ themeInput: { colors: { primary: "#000" } }, ...options.campaign,
18
+ },
19
+ };
20
+ const client = {
21
+ domains: { list: async () => ({ data: options.domains ?? VERIFIED, error: null }) },
22
+ tags: { get: async (id) => ({ data: { id, name: "VIP", subscriberCount: 40 }, error: null }) },
23
+ segments: { get: async (id) => ({ data: { id, name: "Customers", count: 1200 }, error: null }) },
24
+ sending: {
25
+ send: async (body, opts) => {
26
+ sends.push({ body, options: opts });
27
+ return { data: { status: "sent" }, error: null };
28
+ },
29
+ },
30
+ campaigns: {
31
+ get: async () => ({ data: state.campaign, error: null }),
32
+ send: async (id, opts) => {
33
+ campaignSends.push({ id, options: opts });
34
+ return { data: { ...state.campaign, status: "sending" }, error: null };
35
+ },
36
+ schedule: async (id, body, opts) => {
37
+ schedules.push({ id, body, options: opts });
38
+ return { data: { ...state.campaign, status: "scheduled" }, error: null };
39
+ },
40
+ },
41
+ };
42
+ const server = new McpServer({ name: "test", version: "1" });
43
+ const config = { apiKey: options.apiKey ?? "sk_test_one", projectId: "brand-1" };
44
+ registerSendTools(server, client, config);
45
+ registerCampaignTools(server, client, config);
46
+ const tools = server._registeredTools;
47
+ const call = (name, args) => tools[name].handler(tools[name].inputSchema.parse(args), {});
48
+ return { call, sends, campaignSends, schedules, state };
49
+ }
50
+ const parse = (result) => JSON.parse(result.content[0].text);
51
+ const single = {
52
+ recipientType: "email", recipientEmail: "Ana@Example.org", from: "hello@example.com",
53
+ fromName: "Example", subject: "Your order", emailId: "email-1",
54
+ };
55
+ test("send_email: first call only previews; the token sends once, as marketing, with a stable replay key", async () => {
56
+ const f = fixture();
57
+ const preview = await f.call("migma_send_email", single);
58
+ assert.equal(preview.isError, undefined);
59
+ const body = parse(preview);
60
+ assert.equal(body.sent, false);
61
+ assert.deepEqual(body.summary.audience, [{ type: "email", name: "Ana@Example.org", recipients: 1 }]);
62
+ assert.equal(body.summary.from, "Example <hello@example.com>");
63
+ assert.equal(f.sends.length, 0);
64
+ const args = { ...single, confirmationToken: body.confirmationToken };
65
+ await f.call("migma_send_email", args);
66
+ await f.call("migma_send_email", args);
67
+ assert.equal(f.sends.length, 2);
68
+ assert.equal(f.sends[0].body.transactional, false, "single sends are marketing unless asked");
69
+ assert.deepEqual(f.sends[0].options, f.sends[1].options, "a repeated confirmation replays instead of resending");
70
+ assert.match(f.sends[0].options.idempotencyKey, /^confirm-/);
71
+ });
72
+ test("send_email: a token does not carry over to other details, keys, or past its expiry", async () => {
73
+ const f = fixture();
74
+ const { confirmationToken } = parse(await f.call("migma_send_email", single));
75
+ const changed = await f.call("migma_send_email", { ...single, subject: "Other", confirmationToken });
76
+ assert.equal(changed.isError, true);
77
+ assert.match(changed.content[0].text, /Nothing was sent/);
78
+ const withVars = parse(await f.call("migma_send_email", { ...single, variables: { a: "1", b: "2" } }));
79
+ const reordered = await f.call("migma_send_email", { ...single, variables: { b: "2", a: "1" }, confirmationToken: withVars.confirmationToken });
80
+ assert.equal(reordered.isError, undefined, "variable key order does not void the token");
81
+ const other = fixture({ apiKey: "sk_test_two" });
82
+ assert.equal((await other.call("migma_send_email", { ...single, confirmationToken })).isError, true);
83
+ const facts = {
84
+ recipientType: "email", recipientEmail: "ana@example.org", recipientId: null, from: "hello@example.com",
85
+ fromName: "Example", subject: "Your order", emailId: "email-1", conversationId: null, variables: null,
86
+ projectId: "brand-1", transactional: false,
87
+ };
88
+ const old = issueConfirmationToken("sk_test_one", "send_email", facts, Date.now() - CONFIRMATION_TTL_MS - 1);
89
+ const expired = await f.call("migma_send_email", { ...single, confirmationToken: old.token });
90
+ assert.match(expired.content[0].text, /expired/);
91
+ const fresh = issueConfirmationToken("sk_test_one", "send_email", facts);
92
+ assert.equal((await f.call("migma_send_email", { ...single, confirmationToken: fresh.token })).isError, undefined);
93
+ assert.equal(f.sends.length, 2);
94
+ });
95
+ test("send_email: transactional never reaches a tag or segment and needs a verified transactional identity", async () => {
96
+ const f = fixture();
97
+ const bulk = await f.call("migma_send_email", { ...single, recipientType: "tag", recipientId: "tag-1", transactional: true });
98
+ assert.equal(bulk.isError, true);
99
+ const noIdentity = await f.call("migma_send_email", { ...single, transactional: true });
100
+ assert.match(noIdentity.content[0].text, /notify\.example\.com/);
101
+ const g = fixture({ domains: [...VERIFIED, { domain: "notify.example.com", rootDomain: "example.com", stream: "transactional", isVerified: true, status: "verified" }] });
102
+ const ok = await g.call("migma_send_email", { ...single, transactional: true });
103
+ assert.equal(ok.isError, undefined);
104
+ await g.call("migma_send_email", { ...single, transactional: true, confirmationToken: parse(ok).confirmationToken });
105
+ assert.equal(g.sends[0].body.transactional, true);
106
+ });
107
+ test("sender: an unowned domain cannot send; an unverified one names the managed fallback", async () => {
108
+ const none = fixture({ domains: [] });
109
+ const refused = await none.call("migma_send_email", single);
110
+ assert.match(refused.content[0].text, /not a verified sending domain/);
111
+ const managed = fixture({ domains: [
112
+ { domain: "example.com", isVerified: false, status: "pending" },
113
+ { domain: "brand.migma.email", isManagedDomain: true, isVerified: true, status: "verified" },
114
+ ] });
115
+ const preview = parse(await managed.call("migma_send_email", single));
116
+ assert.equal(preview.summary.from, "Example <hello@brand.migma.email>");
117
+ assert.match(preview.summary.warnings[0], /not verified yet/);
118
+ const draft = await none.call("migma_create_campaign", {
119
+ name: "x", conversationId: "conv-1", from: "hello@nope.com", fromName: "x", recipientType: "tag", recipientId: "t",
120
+ });
121
+ assert.equal(draft.isError, true);
122
+ });
123
+ test("send_campaign: previews the saved campaign and refuses a token after it changed", async () => {
124
+ const f = fixture();
125
+ const body = parse(await f.call("migma_send_campaign", { campaignId: "campaign-1" }));
126
+ assert.equal(f.campaignSends.length, 0);
127
+ assert.deepEqual(body.summary.audience, [{ type: "segment", name: "Customers", recipients: 1200 }]);
128
+ assert.equal(body.summary.subject, "Spring sale");
129
+ f.state.campaign.subject = "Changed after approval";
130
+ const stale = await f.call("migma_send_campaign", { campaignId: "campaign-1", confirmationToken: body.confirmationToken });
131
+ assert.equal(stale.isError, true);
132
+ assert.equal(f.campaignSends.length, 0);
133
+ const fresh = parse(await f.call("migma_send_campaign", { campaignId: "campaign-1" }));
134
+ const sent = parse(await f.call("migma_send_campaign", { campaignId: "campaign-1", confirmationToken: fresh.confirmationToken }));
135
+ assert.equal(f.campaignSends.length, 1);
136
+ assert.equal(sent.template, undefined, "responses leave out the template and theme");
137
+ assert.equal(sent.themeInput, undefined);
138
+ f.state.campaign.status = "sent";
139
+ assert.match((await f.call("migma_send_campaign", { campaignId: "campaign-1" })).content[0].text, /cannot be sent/);
140
+ });
141
+ test("schedule_campaign: the token is bound to the time and zone", async () => {
142
+ const f = fixture();
143
+ const args = { campaignId: "campaign-1", scheduledAt: "2031-05-01T07:00:00Z", scheduledTimezone: "Europe/Rome" };
144
+ const body = parse(await f.call("migma_schedule_campaign", args));
145
+ assert.equal(body.summary.when, "2031-05-01 09:00 (Europe/Rome)");
146
+ assert.equal(f.schedules.length, 0);
147
+ const moved = await f.call("migma_schedule_campaign", { ...args, scheduledAt: "2031-05-02T07:00:00Z", confirmationToken: body.confirmationToken });
148
+ assert.equal(moved.isError, true);
149
+ await f.call("migma_schedule_campaign", { ...args, confirmationToken: body.confirmationToken });
150
+ assert.equal(f.schedules.length, 1);
151
+ assert.match((await f.call("migma_schedule_campaign", { ...args, scheduledAt: "2020-01-01T00:00:00Z" })).content[0].text, /future/);
152
+ });
153
+ test("a send-only connection still previews, with the unchecked parts named", async () => {
154
+ const forbidden = async () => ({ data: null, error: { message: "Forbidden", statusCode: 403 } });
155
+ const client = {
156
+ domains: { list: forbidden },
157
+ tags: { get: forbidden },
158
+ segments: { get: forbidden },
159
+ sending: { send: async () => ({ data: { status: "queued" }, error: null }) },
160
+ };
161
+ const server = new McpServer({ name: "test", version: "1" });
162
+ registerSendTools(server, client, { apiKey: "sk_test_one", projectId: "brand-1" });
163
+ const tool = server._registeredTools.migma_send_email;
164
+ const run = (args) => tool.handler(tool.inputSchema.parse(args), {});
165
+ const body = parse(await run({ ...single, recipientType: "tag", recipientId: "tag-1" }));
166
+ assert.deepEqual(body.summary.audience, [{ type: "tag", name: "tag-1", recipients: null }]);
167
+ assert.ok(body.summary.warnings.some((w) => /not checked/.test(w)));
168
+ assert.equal((await run({ ...single, transactional: true })).isError, true, "transactional still needs a checked identity");
169
+ });
170
+ //# sourceMappingURL=send-confirmation.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"send-confirmation.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/send-confirmation.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"brand.d.ts","sourceRoot":"","sources":["../../src/tools/brand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAEnC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AA0D3C,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,KAAK,EACb,MAAM,EAAE,MAAM,EACd,kBAAkB,CAAC,EAAE,MAAM,EAAE,QA0H9B"}
1
+ {"version":3,"file":"brand.d.ts","sourceRoot":"","sources":["../../src/tools/brand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAEnC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AA0D3C,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,KAAK,EACb,MAAM,EAAE,MAAM,EACd,kBAAkB,CAAC,EAAE,MAAM,EAAE,QAyH9B"}
@@ -44,11 +44,12 @@ export function registerBrandTools(server, client, config, grantedPermissions) {
44
44
  .optional()
45
45
  .describe("The complete standing guidelines text, not a diff. An empty string clears the rules only when the user asks to remove them."),
46
46
  imageStyle: imageStyleSchema.optional(),
47
- })
48
- .refine((value) => value.instructions !== undefined || Object.values(value.imageStyle ?? {}).some(field => field !== undefined), {
49
- message: "Provide instructions or at least one imageStyle field.",
50
47
  }),
51
48
  }, async (args) => {
49
+ // Checked here, not with .refine: a refined schema publishes no properties to clients.
50
+ if (args.instructions === undefined && !Object.values(args.imageStyle ?? {}).some(field => field !== undefined)) {
51
+ return toolError("Provide instructions or at least one imageStyle field.");
52
+ }
52
53
  const projectId = await resolveProjectId(client, config, args.projectId);
53
54
  if (!brandClient.projects.updateBrandGuidelines) {
54
55
  return toolError("This Migma SDK build cannot update brand guidelines yet.");
@@ -97,12 +98,14 @@ export function registerBrandTools(server, client, config, grantedPermissions) {
97
98
  .url()
98
99
  .optional()
99
100
  .describe("Public HTTPS screenshot of the design, when the user shared one."),
100
- })
101
- .refine((value) => (value.emailId !== undefined) !== (value.html !== undefined || value.title !== undefined), { message: "Pass either emailId, or title + html for a pasted design, not both." })
102
- .refine((value) => value.emailId !== undefined || (value.title && value.html), {
103
- message: "A pasted design needs both title and html.",
104
101
  }),
105
102
  }, async (args) => {
103
+ if ((args.emailId !== undefined) === (args.html !== undefined || args.title !== undefined)) {
104
+ return toolError("Pass either emailId, or title + html for a pasted design, not both.");
105
+ }
106
+ if (args.emailId === undefined && !(args.title && args.html)) {
107
+ return toolError("A pasted design needs both title and html.");
108
+ }
106
109
  if (args.emailId) {
107
110
  if (!brandClient.emails.setFavorite) {
108
111
  return toolError("This Migma SDK build cannot favorite emails yet.");
@@ -1 +1 @@
1
- {"version":3,"file":"brand.js","sourceRoot":"","sources":["../../src/tools/brand.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"brand.js","sourceRoot":"","sources":["../../src/tools/brand.ts"],"names":[],"mappings":"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"}
@@ -2,4 +2,6 @@ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
2
  import type { Migma } from "migma";
3
3
  import type { Config } from "../config.js";
4
4
  export declare function registerCampaignTools(server: McpServer, client: Migma, config: Config, grantedPermissions?: string[]): void;
5
+ /** Campaign rows carry the full template and theme; the agent needs the facts only. */
6
+ export declare function compactCampaign(data: unknown, warnings?: string[]): unknown;
5
7
  //# sourceMappingURL=campaigns.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"campaigns.d.ts","sourceRoot":"","sources":["../../src/tools/campaigns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAEnC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAU3C,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,KAAK,EACb,MAAM,EAAE,MAAM,EACd,kBAAkB,CAAC,EAAE,MAAM,EAAE,QAmU9B"}
1
+ {"version":3,"file":"campaigns.d.ts","sourceRoot":"","sources":["../../src/tools/campaigns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAEnC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAmB3C,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,KAAK,EACb,MAAM,EAAE,MAAM,EACd,kBAAkB,CAAC,EAAE,MAAM,EAAE,QAuW9B;AAwGD,uFAAuF;AACvF,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,GAAE,MAAM,EAAO,GAAG,OAAO,CAS/E"}
@@ -2,6 +2,7 @@ import { z } from "zod";
2
2
  import { canUse } from "../permissions.js";
3
3
  import { resolveProjectId } from "./projects.js";
4
4
  import { DESTRUCTIVE_TOOL, IDEMPOTENT_OPEN_WORLD_DESTRUCTIVE_TOOL, MUTATING_TOOL, OPEN_WORLD_DESTRUCTIVE_TOOL, READ_ONLY_TOOL } from "./annotations.js";
5
+ import { checkConfirmationToken, checkSender, confirmedIdempotencyKey, CONFIRMATION_TOKEN_DESCRIPTION, formatWhen, previewResult, } from "./send-confirmation.js";
5
6
  export function registerCampaignTools(server, client, config, grantedPermissions) {
6
7
  if (canUse(grantedPermissions, ["campaign:read"])) {
7
8
  server.registerTool("migma_list_campaigns", {
@@ -92,6 +93,11 @@ export function registerCampaignTools(server, client, config, grantedPermissions
92
93
  if (recipientIds && recipientIds.length > 20) {
93
94
  return toolError("recipientIds: at most 20 unique IDs including recipientId");
94
95
  }
96
+ const sender = !args.providerType || args.providerType === "migma"
97
+ ? await checkSender(client, args.from)
98
+ : { ok: true, from: args.from, warnings: [] };
99
+ if (!sender.ok)
100
+ return toolError(sender.error);
95
101
  const params = {
96
102
  projectId,
97
103
  name: args.name,
@@ -111,34 +117,46 @@ export function registerCampaignTools(server, client, config, grantedPermissions
111
117
  const { data, error } = await client.campaigns.create(params, args.idempotency_key ? { idempotencyKey: args.idempotency_key } : undefined);
112
118
  if (error)
113
119
  return toolError(error.message);
114
- return toolResult(data);
120
+ return toolResult(compactCampaign(data, sender.warnings));
115
121
  });
116
122
  }
117
123
  if (canUse(grantedPermissions, ["campaign:write"])) {
118
124
  server.registerTool("migma_send_campaign", {
119
125
  title: "Send Campaign",
120
126
  annotations: IDEMPOTENT_OPEN_WORLD_DESTRUCTIVE_TOOL,
121
- description: "Send a draft or scheduled campaign immediately. The campaign must be in 'draft' or 'scheduled' status. Require explicit approval of audience, count, sender, subject, timing, and final preview. For future delivery use migma_schedule_campaign instead. Report the returned state; accepted or queued is not proof of delivered email.",
127
+ description: "Send a draft or scheduled campaign immediately, in two calls. The first call (no confirmationToken) sends nothing and returns a summary built from the saved campaign: audience, recipient count, sender, subject, and timing, plus a confirmationToken. The campaign goes out only when the call is repeated with that token after the user approves the summary. For future delivery use migma_schedule_campaign instead. Report the returned state; accepted or queued is not proof of delivered email.",
122
128
  inputSchema: z.object({
123
129
  campaignId: z.string().describe("Campaign ID to send"),
130
+ confirmationToken: z.string().optional().describe(CONFIRMATION_TOKEN_DESCRIPTION),
124
131
  idempotency_key: z
125
132
  .string()
126
133
  .max(100)
127
134
  .optional()
128
- .describe("Optional Idempotency-Key for safe retries; same key+body within 24h replays the original result."),
135
+ .describe("Optional Idempotency-Key for safe retries; same key+body within 24h replays the original result. Confirmed calls without one use a key derived from the token."),
129
136
  }),
130
137
  }, async (args) => {
131
- const { data, error } = await client.campaigns.send(args.campaignId, args.idempotency_key ? { idempotencyKey: args.idempotency_key } : undefined);
138
+ const prepared = await prepareCampaignSend(client, args.campaignId, "send_campaign");
139
+ if ("error" in prepared)
140
+ return toolError(prepared.error);
141
+ if (!args.confirmationToken) {
142
+ return previewResult(config.apiKey, "migma_send_campaign", "send_campaign", prepared.facts, prepared.summary);
143
+ }
144
+ const invalid = checkConfirmationToken(config.apiKey, args.confirmationToken, "send_campaign", prepared.facts);
145
+ if (invalid)
146
+ return toolError(invalid);
147
+ const { data, error } = await client.campaigns.send(args.campaignId, {
148
+ idempotencyKey: confirmedIdempotencyKey(args.confirmationToken, args.idempotency_key),
149
+ });
132
150
  if (error)
133
151
  return toolError(error.message);
134
- return toolResult(data);
152
+ return toolResult(compactCampaign(data));
135
153
  });
136
154
  }
137
155
  if (canUse(grantedPermissions, ["campaign:write"])) {
138
156
  server.registerTool("migma_schedule_campaign", {
139
157
  title: "Schedule Campaign",
140
158
  annotations: OPEN_WORLD_DESTRUCTIVE_TOOL,
141
- description: "Schedule future delivery or replace an existing schedule. Get explicit approval of final preview, audience, count, sender, subject, date, time, and timezone. Resolve ambiguous dates first. Reuse idempotency_key after uncertainty; unkeyed retries replace the queued job. Say 'Scheduled' only after the saved schedule is confirmed; scheduling is not delivery.",
159
+ description: "Schedule future delivery or replace an existing schedule, in two calls. Resolve ambiguous dates first. The first call (no confirmationToken) saves nothing and returns a summary: audience, recipient count, sender, subject, date, time, and timezone, plus a confirmationToken. The schedule is saved only when the call is repeated with that token after the user approves the summary. Say 'Scheduled' only after the saved schedule is confirmed; scheduling is not delivery.",
142
160
  inputSchema: z.object({
143
161
  campaignId: z.string().describe("Campaign ID to schedule"),
144
162
  scheduledAt: z
@@ -147,21 +165,44 @@ export function registerCampaignTools(server, client, config, grantedPermissions
147
165
  scheduledTimezone: z
148
166
  .string()
149
167
  .optional()
150
- .describe("IANA timezone (e.g. America/New_York). Defaults to UTC."),
168
+ .describe("IANA timezone (e.g. America/New_York). Omit to keep the campaign's current timezone (UTC if none)."),
169
+ localTimeDelivery: z
170
+ .boolean()
171
+ .optional()
172
+ .describe("Send at scheduledAt's clock time in each contact's own time zone (by country). Needs scheduledTimezone. No country: scheduledAt. Time already passed: same time next day. Not with A/B tests or batch sending. Omit to keep the current setting; false turns it off."),
173
+ confirmationToken: z.string().optional().describe(CONFIRMATION_TOKEN_DESCRIPTION),
151
174
  idempotency_key: z
152
175
  .string()
153
176
  .max(100)
154
177
  .optional()
155
- .describe("Optional Idempotency-Key for safe retries; same key+body within 24h replays the original result."),
178
+ .describe("Optional Idempotency-Key for safe retries; same key+body within 24h replays the original result. Confirmed calls without one use a key derived from the token."),
156
179
  }),
157
180
  }, async (args) => {
181
+ const at = Date.parse(args.scheduledAt);
182
+ if (!Number.isFinite(at) || at <= Date.now()) {
183
+ return toolError("scheduledAt must be a valid ISO 8601 time in the future.");
184
+ }
185
+ const prepared = await prepareCampaignSend(client, args.campaignId, "schedule_campaign", {
186
+ scheduledAt: new Date(at).toISOString(),
187
+ scheduledTimezone: args.scheduledTimezone,
188
+ localTimeDelivery: args.localTimeDelivery,
189
+ });
190
+ if ("error" in prepared)
191
+ return toolError(prepared.error);
192
+ if (!args.confirmationToken) {
193
+ return previewResult(config.apiKey, "migma_schedule_campaign", "schedule_campaign", prepared.facts, prepared.summary);
194
+ }
195
+ const invalid = checkConfirmationToken(config.apiKey, args.confirmationToken, "schedule_campaign", prepared.facts);
196
+ if (invalid)
197
+ return toolError(invalid);
158
198
  const { data, error } = await client.campaigns.schedule(args.campaignId, {
159
199
  scheduledAt: args.scheduledAt,
160
200
  scheduledTimezone: args.scheduledTimezone,
161
- }, args.idempotency_key ? { idempotencyKey: args.idempotency_key } : undefined);
201
+ ...(args.localTimeDelivery !== undefined ? { localTimeDelivery: args.localTimeDelivery } : {}),
202
+ }, { idempotencyKey: confirmedIdempotencyKey(args.confirmationToken, args.idempotency_key) });
162
203
  if (error)
163
204
  return toolError(error.message);
164
- return toolResult(data);
205
+ return toolResult(compactCampaign(data));
165
206
  });
166
207
  }
167
208
  if (canUse(grantedPermissions, ["campaign:read"])) {
@@ -225,7 +266,7 @@ export function registerCampaignTools(server, client, config, grantedPermissions
225
266
  const { data, error } = await client.campaigns.cancel(args.campaignId);
226
267
  if (error)
227
268
  return toolError(error.message);
228
- return toolResult(data);
269
+ return toolResult(compactCampaign(data));
229
270
  });
230
271
  }
231
272
  if (canUse(grantedPermissions, ["campaign:write"])) {
@@ -241,7 +282,7 @@ export function registerCampaignTools(server, client, config, grantedPermissions
241
282
  const { data, error } = await campaigns.archive(args.campaignId);
242
283
  if (error)
243
284
  return toolError(error.message);
244
- return toolResult(data);
285
+ return toolResult(compactCampaign(data));
245
286
  });
246
287
  }
247
288
  if (canUse(grantedPermissions, ["campaign:write"])) {
@@ -257,10 +298,100 @@ export function registerCampaignTools(server, client, config, grantedPermissions
257
298
  const { data, error } = await campaigns.unarchive(args.campaignId);
258
299
  if (error)
259
300
  return toolError(error.message);
260
- return toolResult(data);
301
+ return toolResult(compactCampaign(data));
261
302
  });
262
303
  }
263
304
  }
305
+ const SENDABLE_STATUSES = new Set(["draft", "scheduled"]);
306
+ /**
307
+ * Reads the live campaign and returns what the user approves (summary) and what
308
+ * the confirmation token binds (facts): everything that decides who gets what,
309
+ * from whom, and when. Runs on both calls, so a change in between voids the token.
310
+ */
311
+ async function prepareCampaignSend(client, campaignId, action, schedule) {
312
+ const { data, error } = await client.campaigns.get(campaignId);
313
+ if (error || !data)
314
+ return { error: error?.message ?? "Campaign not found." };
315
+ const campaign = data;
316
+ if (!SENDABLE_STATUSES.has(String(campaign.status))) {
317
+ return { error: `This campaign is ${campaign.status} and cannot be ${action === "send_campaign" ? "sent" : "scheduled"}.` };
318
+ }
319
+ const from = String(campaign.from ?? "");
320
+ const sender = !campaign.providerType || campaign.providerType === "migma"
321
+ ? await checkSender(client, from)
322
+ : { ok: true, from, warnings: [] };
323
+ if (!sender.ok)
324
+ return { error: sender.error };
325
+ const ids = Array.from(new Set([campaign.recipientId, ...(campaign.recipientIds ?? [])].filter(Boolean)));
326
+ const projectId = String(campaign.projectId ?? "");
327
+ const names = await Promise.all(ids.map(async (id) => {
328
+ const found = campaign.recipientType === "tag"
329
+ ? await client.tags.get(id, projectId)
330
+ : await client.segments.get(id, projectId);
331
+ return found.data?.name ?? id;
332
+ }));
333
+ const timezone = schedule ? schedule.scheduledTimezone ?? campaign.scheduledTimezone ?? "UTC" : undefined;
334
+ const localTime = schedule ? schedule.localTimeDelivery ?? campaign.localTimeDelivery === true : false;
335
+ const facts = {
336
+ campaignId,
337
+ projectId,
338
+ recipientType: campaign.recipientType,
339
+ recipientIds: [...ids].sort(),
340
+ exclusions: campaign.exclusions ?? null,
341
+ from: sender.from,
342
+ fromName: campaign.fromName ?? "",
343
+ subject: campaign.subject ?? "",
344
+ preheaderText: campaign.preheaderText ?? null,
345
+ emailId: campaign.emailId ?? null,
346
+ conversationId: campaign.conversationId ?? null,
347
+ variables: campaign.variables ?? null,
348
+ abTest: (campaign.abTest?.variants ?? []).map((v) => [v.emailId ?? "", v.subject ?? ""]),
349
+ scheduledAt: schedule?.scheduledAt ?? "now",
350
+ timezone: timezone ?? null,
351
+ localTime,
352
+ };
353
+ const recipients = typeof campaign.estimatedRecipients === "number" ? campaign.estimatedRecipients : null;
354
+ return {
355
+ facts,
356
+ summary: {
357
+ action: schedule ? "Schedule" : "Send now",
358
+ audience: names.map((name, i) => ({
359
+ type: campaign.recipientType === "tag" ? "tag" : "segment",
360
+ name,
361
+ // The campaign's estimate covers the whole selection, deduplicated.
362
+ recipients: i === 0 ? recipients : null,
363
+ })),
364
+ from: `${campaign.fromName ?? ""} <${sender.from}>`.trim(),
365
+ subject: String(campaign.subject ?? ""),
366
+ when: `${formatWhen(schedule?.scheduledAt, timezone)}${localTime ? ", in each contact's local time" : ""}`,
367
+ email: { emailId: campaign.emailId ?? null, conversationId: campaign.conversationId ?? null },
368
+ warnings: [
369
+ ...sender.warnings,
370
+ ...(recipients === null ? ["The recipient count is not known yet."] : []),
371
+ ],
372
+ },
373
+ };
374
+ }
375
+ const CAMPAIGN_FIELDS = [
376
+ "id", "name", "projectId", "status", "review", "subject", "preheaderText", "from", "fromName", "replyTo",
377
+ "recipientType", "recipientId", "recipientIds", "estimatedRecipients", "emailId", "conversationId",
378
+ "scheduledAt", "scheduledTimezone", "localTimeDelivery", "gradualStart", "gradual", "sentAt", "completedAt",
379
+ "batchId", "archived", "archivedAt", "error", "warnings", "createdAt", "updatedAt",
380
+ ];
381
+ /** Campaign rows carry the full template and theme; the agent needs the facts only. */
382
+ export function compactCampaign(data, warnings = []) {
383
+ if (!data || typeof data !== "object" || Array.isArray(data))
384
+ return data;
385
+ const record = data;
386
+ const compact = {};
387
+ for (const key of CAMPAIGN_FIELDS) {
388
+ if (record[key] !== undefined)
389
+ compact[key] = record[key];
390
+ }
391
+ if (warnings.length)
392
+ compact.warnings = [...(compact.warnings ?? []), ...warnings];
393
+ return compact;
394
+ }
264
395
  function toolResult(data) {
265
396
  return {
266
397
  content: [
@@ -1 +1 @@
1
- {"version":3,"file":"campaigns.js","sourceRoot":"","sources":["../../src/tools/campaigns.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"campaigns.js","sourceRoot":"","sources":["../../src/tools/campaigns.ts"],"names":[],"mappings":"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"}
@@ -35,7 +35,7 @@ export declare function buildCapabilitiesPayload(version: string, grantedPermiss
35
35
  version: string;
36
36
  profile: MigmaMcpProfile;
37
37
  grantedScopes: string[] | null;
38
- voice: string;
38
+ completionRule: string;
39
39
  deliveryAccess: {
40
40
  directAndTestEmail: boolean;
41
41
  campaignCreateSendAndSchedule: boolean;