@migma/mcp 1.7.1 → 1.7.3

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 (81) hide show
  1. package/README.md +26 -0
  2. package/build/index.d.ts.map +1 -1
  3. package/build/index.js +7 -5
  4. package/build/index.js.map +1 -1
  5. package/build/prompts/index.d.ts.map +1 -1
  6. package/build/prompts/index.js +21 -8
  7. package/build/prompts/index.js.map +1 -1
  8. package/build/tools/__tests__/agent-payload.test.js +56 -1
  9. package/build/tools/__tests__/agent-payload.test.js.map +1 -1
  10. package/build/tools/__tests__/brand.test.d.ts +2 -0
  11. package/build/tools/__tests__/brand.test.d.ts.map +1 -0
  12. package/build/tools/__tests__/brand.test.js +36 -0
  13. package/build/tools/__tests__/brand.test.js.map +1 -0
  14. package/build/tools/__tests__/campaign-recipients.test.d.ts +2 -0
  15. package/build/tools/__tests__/campaign-recipients.test.d.ts.map +1 -0
  16. package/build/tools/__tests__/campaign-recipients.test.js +61 -0
  17. package/build/tools/__tests__/campaign-recipients.test.js.map +1 -0
  18. package/build/tools/__tests__/catalog.test.js +16 -2
  19. package/build/tools/__tests__/catalog.test.js.map +1 -1
  20. package/build/tools/__tests__/context.test.d.ts +2 -0
  21. package/build/tools/__tests__/context.test.d.ts.map +1 -0
  22. package/build/tools/__tests__/context.test.js +89 -0
  23. package/build/tools/__tests__/context.test.js.map +1 -0
  24. package/build/tools/__tests__/email-edit.test.d.ts +2 -0
  25. package/build/tools/__tests__/email-edit.test.d.ts.map +1 -0
  26. package/build/tools/__tests__/email-edit.test.js +82 -0
  27. package/build/tools/__tests__/email-edit.test.js.map +1 -0
  28. package/build/tools/__tests__/email-images.test.js +31 -6
  29. package/build/tools/__tests__/email-images.test.js.map +1 -1
  30. package/build/tools/__tests__/segments.test.d.ts +2 -0
  31. package/build/tools/__tests__/segments.test.d.ts.map +1 -0
  32. package/build/tools/__tests__/segments.test.js +149 -0
  33. package/build/tools/__tests__/segments.test.js.map +1 -0
  34. package/build/tools/agent-payload.d.ts +5 -0
  35. package/build/tools/agent-payload.d.ts.map +1 -1
  36. package/build/tools/agent-payload.js +50 -0
  37. package/build/tools/agent-payload.js.map +1 -1
  38. package/build/tools/billing.js +1 -1
  39. package/build/tools/billing.js.map +1 -1
  40. package/build/tools/brand.d.ts.map +1 -1
  41. package/build/tools/brand.js +12 -7
  42. package/build/tools/brand.js.map +1 -1
  43. package/build/tools/campaigns.d.ts.map +1 -1
  44. package/build/tools/campaigns.js +13 -1
  45. package/build/tools/campaigns.js.map +1 -1
  46. package/build/tools/capabilities.d.ts +1 -0
  47. package/build/tools/capabilities.d.ts.map +1 -1
  48. package/build/tools/capabilities.js +13 -6
  49. package/build/tools/capabilities.js.map +1 -1
  50. package/build/tools/contacts.js +6 -6
  51. package/build/tools/contacts.js.map +1 -1
  52. package/build/tools/context.d.ts.map +1 -1
  53. package/build/tools/context.js +55 -32
  54. package/build/tools/context.js.map +1 -1
  55. package/build/tools/domains.js +1 -1
  56. package/build/tools/domains.js.map +1 -1
  57. package/build/tools/email-edit-client.d.ts +15 -0
  58. package/build/tools/email-edit-client.d.ts.map +1 -0
  59. package/build/tools/email-edit-client.js +38 -0
  60. package/build/tools/email-edit-client.js.map +1 -0
  61. package/build/tools/email-images.d.ts +3 -0
  62. package/build/tools/email-images.d.ts.map +1 -1
  63. package/build/tools/email-images.js +26 -12
  64. package/build/tools/email-images.js.map +1 -1
  65. package/build/tools/generate.d.ts.map +1 -1
  66. package/build/tools/generate.js +36 -12
  67. package/build/tools/generate.js.map +1 -1
  68. package/build/tools/import-html.js +2 -2
  69. package/build/tools/import-html.js.map +1 -1
  70. package/build/tools/knowledge-base.js +1 -1
  71. package/build/tools/knowledge-base.js.map +1 -1
  72. package/build/tools/projects.d.ts.map +1 -1
  73. package/build/tools/projects.js +8 -3
  74. package/build/tools/projects.js.map +1 -1
  75. package/build/tools/segments.d.ts.map +1 -1
  76. package/build/tools/segments.js +42 -5
  77. package/build/tools/segments.js.map +1 -1
  78. package/build/tools/validate.d.ts.map +1 -1
  79. package/build/tools/validate.js +5 -2
  80. package/build/tools/validate.js.map +1 -1
  81. package/package.json +1 -1
@@ -7,9 +7,11 @@ export function registerContextTools(server, client, grantedPermissions, preferr
7
7
  server.registerTool("migma_get_context", {
8
8
  title: "Get Account Context",
9
9
  annotations: READ_ONLY_TOOL,
10
- description: "One-call account snapshot: workspaces (each with its brands as id + name), brand count, plan and remaining credits, sending domains with their status, and a setup block for the working brand: brandKit (missing, partial, ready), saved design references, audience size, sending domain state. Also returns suggestions, concrete next actions worth offering the user. Call this after connecting, before the first task, and whenever the user asks what they can do.",
11
- inputSchema: z.object({}),
12
- }, async () => {
10
+ description: "One-call account snapshot: workspaces (each with its brands as id + name), brand count, plan and remaining credits, sending domains with their status, and a setup block for the working brand: brandKit (missing, partial, ready), standing guidelines, saved design references, audience size, and account sending domain state. Null means unknown or unavailable, never missing. Pass projectId for the working brand; multiple brands require a choice. Suggestions are optional context, not a checklist to show the user. Use only what helps their current task. Call this after connecting, before the first task, and whenever the user asks what they can do.",
11
+ inputSchema: z.object({
12
+ projectId: z.string().min(1).optional().describe("Working brand ID. Omit only before a brand is selected."),
13
+ }),
14
+ }, async (args) => {
13
15
  const ws = client.workspaces;
14
16
  const canBilling = canUse(grantedPermissions, ["billing:read"]);
15
17
  const canDomains = canUse(grantedPermissions, ["domain:read"]);
@@ -22,15 +24,15 @@ export function registerContextTools(server, client, grantedPermissions, preferr
22
24
  const workspaceRows = workspaces?.data?.workspaces ?? [];
23
25
  const projectRows = (projects?.data
24
26
  ?.projects) ?? [];
27
+ const brandCount = projects?.data ? projects.data.pagination?.total ?? projectRows.length : null;
25
28
  const creditData = credits?.data ?? null;
26
29
  const domainRows = (domains?.data ?? []);
27
30
  const verifiedDomains = domainRows.filter((d) => d.isVerified);
28
31
  // Second wave, bounded to the working brand: is its kit complete, does
29
32
  // it have references, does it have an audience. One brand, one page.
30
- const brandRow = (preferredProjectId
31
- ? projectRows.find((p) => String(p._id ?? p.id) === preferredProjectId)
32
- : undefined) ?? projectRows[0];
33
- const brandId = brandRow ? String(brandRow._id ?? brandRow.id ?? "") : "";
33
+ const brandId = args.projectId || preferredProjectId ||
34
+ (brandCount === 1 ? String(projectRows[0]?._id ?? projectRows[0]?.id ?? "") : "");
35
+ const brandRow = projectRows.find((p) => String(p._id ?? p.id) === brandId);
34
36
  const setupClient = client;
35
37
  const canAudience = canUse(grantedPermissions, ["audience:read"]);
36
38
  const [brand, references, contacts] = brandId
@@ -44,44 +46,64 @@ export function registerContextTools(server, client, grantedPermissions, preferr
44
46
  : Promise.resolve(null),
45
47
  ])
46
48
  : [null, null, null];
47
- const brandData = (brand?.data ?? null);
48
- const referenceCount = references?.data?.total ?? references?.data?.references?.length ?? 0;
49
- const audienceCount = contacts?.data?.count ?? 0;
49
+ const brandData = brand?.data;
50
+ const colors = brandData?.colors;
51
+ const hasKit = !!(colors?.accent && Array.isArray(brandData?.fonts) &&
52
+ brandData.fonts.length && (brandData.logoUrls?.primary || brandData.logoUrls?.secondary));
50
53
  const setup = {
51
54
  brandId: brandId || null,
52
55
  brandName: brandData?.name ?? brandRow?.name ?? null,
53
- brandKit: !brandId ? "missing" : brandData?.modelInstructions?.trim() ? "ready" : "partial",
54
- references: referenceCount,
55
- audience: canAudience ? audienceCount : null,
56
- sendingDomain: verifiedDomains.length > 0 ? "verified" : domainRows.length > 0 ? "pending" : "none",
56
+ brandKit: brandData ? (hasKit ? "ready" : "partial") : brandCount === 0 && !brandId ? "missing" : null,
57
+ guidelines: brandData ? !!String(brandData.modelInstructions ?? "").trim() : null,
58
+ references: references?.data?.total ?? references?.data?.references?.length ?? null,
59
+ audience: contacts?.data?.count ?? null,
60
+ sendingDomain: !domains?.data ? null : verifiedDomains.length ? "verified" : domainRows.length ? "pending" : "none",
57
61
  };
62
+ const unavailable = [
63
+ ...(!projects?.data ? ["brands"] : []),
64
+ ...(brandId && !brandData ? ["brand kit"] : []),
65
+ ...(brandId && setup.references === null ? ["references"] : []),
66
+ ...(brandId && canAudience && setup.audience === null ? ["audience"] : []),
67
+ ...(canDomains && !domains?.data ? ["sending domains"] : []),
68
+ ];
69
+ const canWriteBrand = canUse(grantedPermissions, ["project:write"]);
70
+ const canWriteAudience = canUse(grantedPermissions, ["audience:write"]);
71
+ const canWriteDomain = canUse(grantedPermissions, ["domain:write"]);
58
72
  const suggestions = [];
59
- if (setup.brandKit === "partial") {
60
- suggestions.push("This brand has no standing guidelines yet. Ask for brand guidelines or an email the user likes; when they state a lasting rule, call migma_update_brand_guidelines with the complete text.");
73
+ if (!brandId && brandCount !== null && brandCount > 1) {
74
+ suggestions.push("Ask which brand to work on, then call migma_get_context with its projectId.");
61
75
  }
62
- if (brandId && setup.references === 0) {
63
- suggestions.push("No design references saved. Ask which past email the user likes and call migma_save_reference with its emailId, or save a pasted design with title + html.");
76
+ if (setup.brandKit === "missing" && canWriteBrand) {
77
+ suggestions.push("No brand kit yet. Ask for the website and use migma_import_brand to collect colors, fonts, and logo.");
64
78
  }
65
- if (brandId && canAudience && setup.audience === 0 && canUse(grantedPermissions, ["audience:write"])) {
66
- suggestions.push("No contacts yet. Offer migma_create_contact_import with a CSV export from their current tool.");
79
+ if (setup.brandKit === "partial" && canWriteBrand) {
80
+ suggestions.push("Some brand kit details are missing. Read migma_get_project and ask only for the missing colors, fonts, or logo; keep the user's task moving.");
67
81
  }
68
- if (canDomains && verifiedDomains.length === 0) {
69
- suggestions.push("No verified sending domain yet. Offer migma_create_managed_domain for an instant address (hello@company.migma.email, no DNS), or migma_setup_domain for a domain the user owns, or migma_search_buyable_domains to buy one.");
82
+ if (setup.guidelines === false && canWriteBrand) {
83
+ suggestions.push("Ask for brand guidelines or lasting email and image preferences. Save them with migma_update_brand_guidelines, preserving existing rules.");
70
84
  }
71
- if (domainRows.some((d) => !d.isVerified)) {
72
- suggestions.push("A domain is waiting on DNS. Offer migma_verify_domain to re-check it.");
85
+ if (setup.references === 0 && canWriteBrand) {
86
+ suggestions.push("Ask for an email the user loves. Use migma_save_reference for a generated emailId or title + html; pass screenshots as structured images when generating.");
73
87
  }
74
- if (creditData && !creditData.hasCredits) {
75
- suggestions.push("Out of credits. Show migma_get_credits detail and offer migma_get_upgrade_link — the user pays in their browser.");
88
+ if (setup.audience === 0 && canWriteAudience) {
89
+ suggestions.push("Ask for their audience CSV. Import it into a named List with migma_create_contact_import, preserving useful custom columns; inspect migma_get_field_catalog before suggesting segments.");
90
+ }
91
+ if (setup.sendingDomain === "none" && canWriteDomain) {
92
+ suggestions.push("Offer migma_create_managed_domain for a ready-to-use address, or migma_setup_domain for a domain the user owns.");
76
93
  }
77
- if (projectRows.length === 0) {
78
- suggestions.push("No brands yet. Offer migma_import_brand with the user's website URL — it extracts colors, fonts, logos, and voice.");
94
+ if (setup.sendingDomain === "pending" && canWriteDomain) {
95
+ suggestions.push("A sending domain is pending. Offer migma_verify_domain to check it.");
96
+ }
97
+ if (creditData && !creditData.hasCredits) {
98
+ suggestions.push(canUse(grantedPermissions, ["billing:write"])
99
+ ? "Out of credits. Offer migma_get_upgrade_link; the user pays in their browser."
100
+ : "Out of credits. Explain that generation needs more credits.");
79
101
  }
80
- if (workspaceRows.length > 1) {
81
- suggestions.push("The user belongs to more than one workspace. Confirm which one to work in, then pass its id as organizationId to migma_list_projects.");
102
+ if (unavailable.length) {
103
+ suggestions.push("Some setup reads are unavailable. Retry the relevant read before describing anything as missing; continue with known context.");
82
104
  }
83
105
  if (suggestions.length === 0) {
84
- suggestions.push("Account is ready. Offer the next useful step: design an email, prepare a campaign, or read recent campaign stats.");
106
+ suggestions.push("Continue the user's task. Reply with the result and relevant returned links; stop when done. Suggest an email only if they have no task in mind.");
85
107
  }
86
108
  return {
87
109
  content: [
@@ -89,7 +111,7 @@ export function registerContextTools(server, client, grantedPermissions, preferr
89
111
  type: "text",
90
112
  text: JSON.stringify({
91
113
  workspaces: workspaceRows,
92
- brandCount: projectRows.length,
114
+ brandCount,
93
115
  plan: creditData
94
116
  ? {
95
117
  currentPlan: creditData.currentPlan,
@@ -104,6 +126,7 @@ export function registerContextTools(server, client, grantedPermissions, preferr
104
126
  isVerified: d.isVerified ?? false,
105
127
  })),
106
128
  setup,
129
+ unavailable,
107
130
  suggestions,
108
131
  }, null, 2),
109
132
  },
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/tools/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/tools/context.ts"],"names":[],"mappings":"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"}
@@ -113,7 +113,7 @@ export function registerDomainTools(server, client, grantedPermissions) {
113
113
  server.registerTool("migma_buy_domain", {
114
114
  title: "Buy Domain",
115
115
  annotations: OPEN_WORLD_MUTATING_TOOL,
116
- description: "Start buying a domain: returns a Stripe checkout URL the user opens in their browser to pay (annual, auto-renew). Nothing is charged by this call, and the domain registers only after payment clears. Always show the checkoutUrl to the user. Requires an active paid Migma subscription — on that error, offer migma_get_upgrade_link first. After payment, poll migma_get_domain_purchases until status is 'active', then run migma_setup_domain.",
116
+ description: "Start buying a domain: returns a Stripe checkout URL the user opens in their browser to pay (annual, auto-renew). Nothing is charged by this call, and the domain registers only after payment clears. Requires an active paid Migma subscription (migma_get_upgrade_link returns the upgrade link). migma_get_domain_purchases reports when the purchase is active; migma_setup_domain then sets up sending.",
117
117
  inputSchema: z.object({
118
118
  domain: z.string().describe("Domain to buy, e.g. 'acme.com'"),
119
119
  redirectUrl: z
@@ -1 +1 @@
1
- {"version":3,"file":"domains.js","sourceRoot":"","sources":["../../src/tools/domains.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"domains.js","sourceRoot":"","sources":["../../src/tools/domains.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { Migma } from "migma";
2
+ import type { Config } from "../config.js";
3
+ type Result = {
4
+ data?: unknown;
5
+ error?: {
6
+ message: string;
7
+ } | null;
8
+ };
9
+ export declare function startEmailEdit(client: Migma, config: Config, emailId: string, params: {
10
+ prompt: string;
11
+ label?: string;
12
+ }, idempotencyKey: string): Promise<Result>;
13
+ export declare function getEmailEditStatus(client: Migma, config: Config, emailId: string, editId: string): Promise<Result>;
14
+ export {};
15
+ //# sourceMappingURL=email-edit-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-edit-client.d.ts","sourceRoot":"","sources":["../../src/tools/email-edit-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,KAAK,MAAM,GAAG;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;CAAE,CAAC;AA6BrE,wBAAsB,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAIxK;AAED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAIxH"}
@@ -0,0 +1,38 @@
1
+ /** Compatibility bridge while hosted installations still use the previous SDK.
2
+ * Both paths use the same authenticated async REST contract, never sync edit. */
3
+ async function request(config, path, body, idempotencyKey) {
4
+ if (!config.apiKey)
5
+ return { error: { message: "This SDK lacks async edits. Upgrade migma or provide MCP API configuration." } };
6
+ try {
7
+ const base = (config.baseUrl || "https://api.migma.ai/v1").replace(/\/+$/, "");
8
+ const response = await fetch(`${base}${path}`, {
9
+ method: body ? "POST" : "GET",
10
+ headers: {
11
+ Authorization: `Bearer ${config.apiKey}`, "Content-Type": "application/json", "User-Agent": "migma-mcp",
12
+ ...(idempotencyKey ? { "Idempotency-Key": idempotencyKey } : {}),
13
+ },
14
+ body: body ? JSON.stringify(body) : undefined,
15
+ signal: AbortSignal.timeout(15_000),
16
+ });
17
+ const payload = await response.json();
18
+ if (!response.ok || !payload.success)
19
+ return { error: { message: payload.error || `Request failed with status ${response.status}` } };
20
+ return { data: payload.data, error: null };
21
+ }
22
+ catch (error) {
23
+ return { error: { message: error instanceof Error ? error.message : "Edit request could not be confirmed" } };
24
+ }
25
+ }
26
+ export async function startEmailEdit(client, config, emailId, params, idempotencyKey) {
27
+ const emails = client.emails;
28
+ if (emails.startEdit)
29
+ return emails.startEdit(emailId, params, { idempotencyKey });
30
+ return request(config, `/emails/${encodeURIComponent(emailId)}/edit`, { ...params, async: true }, idempotencyKey);
31
+ }
32
+ export async function getEmailEditStatus(client, config, emailId, editId) {
33
+ const emails = client.emails;
34
+ if (emails.getEditStatus)
35
+ return emails.getEditStatus(emailId, editId);
36
+ return request(config, `/emails/${encodeURIComponent(emailId)}/edits/${encodeURIComponent(editId)}`);
37
+ }
38
+ //# sourceMappingURL=email-edit-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-edit-client.js","sourceRoot":"","sources":["../../src/tools/email-edit-client.ts"],"names":[],"mappings":"AASA;iFACiF;AACjF,KAAK,UAAU,OAAO,CAAC,MAAc,EAAE,IAAY,EAAE,IAAa,EAAE,cAAuB;IACzF,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,6EAA6E,EAAE,EAAE,CAAC;IACjI,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,yBAAyB,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC/E,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE;YAC7C,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK;YAC7B,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,YAAY,EAAE,WAAW;gBACvG,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACjE;YACD,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;YAC7C,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;SACpC,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA2D,CAAC;QAC/F,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,IAAI,8BAA8B,QAAQ,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC;QACtI,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC7C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,qCAAqC,EAAE,EAAE,CAAC;IAChH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAa,EAAE,MAAc,EAAE,OAAe,EAAE,MAA0C,EAAE,cAAsB;IACrJ,MAAM,MAAM,GAAG,MAAM,CAAC,MAAoB,CAAC;IAC3C,IAAI,MAAM,CAAC,SAAS;QAAE,OAAO,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;IACnF,OAAO,OAAO,CAAC,MAAM,EAAE,WAAW,kBAAkB,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,cAAc,CAAC,CAAC;AACpH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAAa,EAAE,MAAc,EAAE,OAAe,EAAE,MAAc;IACrG,MAAM,MAAM,GAAG,MAAM,CAAC,MAAoB,CAAC;IAC3C,IAAI,MAAM,CAAC,aAAa;QAAE,OAAO,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACvE,OAAO,OAAO,CAAC,MAAM,EAAE,WAAW,kBAAkB,CAAC,OAAO,CAAC,UAAU,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACvG,CAAC"}
@@ -1,6 +1,7 @@
1
1
  export type ScreenshotRef = {
2
2
  url: string;
3
3
  label: string;
4
+ appUrl?: string;
4
5
  };
5
6
  export type ImageContent = {
6
7
  type: "image";
@@ -24,6 +25,8 @@ export declare function isAllowedScreenshotUrl(url: string): boolean;
24
25
  export declare function collectScreenshotRefs(data: unknown, mode: "list" | "detail"): ScreenshotRef[];
25
26
  export declare function screenshotGuidance(refs: ScreenshotRef[], attached: number, data: unknown): string;
26
27
  export declare function fetchEmailImage(url: string, fetchImpl?: FetchLike): Promise<ImageContent | null>;
28
+ /** One line per email: the preview image and its editor link, ready to paste into a reply. */
29
+ export declare function previewsMarkdown(refs: ScreenshotRef[]): string;
27
30
  export declare function toolResultWithImages(data: unknown, mode: "list" | "detail", fetchImpl?: FetchLike): Promise<{
28
31
  content: Array<TextContent | ImageContent>;
29
32
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"email-images.d.ts","sourceRoot":"","sources":["../../src/tools/email-images.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,aAAa,GAAG;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,CACtB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,KAC5B,OAAO,CAAC;IACX,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE;QAAE,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAC9C,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;CACrC,CAAC,CAAC;AAYH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAkB3D;AA2BD,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,MAAM,GAAG,QAAQ,GACtB,aAAa,EAAE,CAiCjB;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,aAAa,EAAE,EACrB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,GACZ,MAAM,CAuBR;AAiBD,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,EACX,SAAS,GAAE,SAAiB,GAC3B,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAmB9B;AAED,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,MAAM,GAAG,QAAQ,EACvB,SAAS,GAAE,SAAiB,GAC3B,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC,WAAW,GAAG,YAAY,CAAC,CAAA;CAAE,CAAC,CA0BzD"}
1
+ {"version":3,"file":"email-images.d.ts","sourceRoot":"","sources":["../../src/tools/email-images.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,aAAa,GAAG;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,CACtB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,KAC5B,OAAO,CAAC;IACX,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE;QAAE,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAC9C,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;CACrC,CAAC,CAAC;AAYH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAkB3D;AAgCD,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,MAAM,GAAG,QAAQ,GACtB,aAAa,EAAE,CAiCjB;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,aAAa,EAAE,EACrB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,GACZ,MAAM,CAuBR;AAiBD,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,EACX,SAAS,GAAE,SAAiB,GAC3B,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAmB9B;AAMD,8FAA8F;AAC9F,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,MAAM,CAO9D;AAED,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,MAAM,GAAG,QAAQ,EACvB,SAAS,GAAE,SAAiB,GAC3B,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC,WAAW,GAAG,YAAY,CAAC,CAAA;CAAE,CAAC,CAwBzD"}
@@ -39,6 +39,10 @@ function pickUrl(...candidates) {
39
39
  }
40
40
  return null;
41
41
  }
42
+ function withAppUrl(ref, record) {
43
+ const appUrl = asString(record?.appUrl);
44
+ return appUrl ? { ...ref, appUrl } : ref;
45
+ }
42
46
  function refsFromEmailRows(rows, cap, labelOf) {
43
47
  const refs = [];
44
48
  for (const row of rows) {
@@ -50,7 +54,7 @@ function refsFromEmailRows(rows, cap, labelOf) {
50
54
  const url = pickUrl(record.screenshotUrl, record.thumbnailUrl);
51
55
  if (!url)
52
56
  continue;
53
- refs.push({ url, label: labelOf(record) });
57
+ refs.push(withAppUrl({ url, label: labelOf(record) }, record));
54
58
  }
55
59
  return refs;
56
60
  }
@@ -74,12 +78,12 @@ export function collectScreenshotRefs(data, mode) {
74
78
  }
75
79
  const url = pickUrl(result.screenshotFullUrl, result.screenshotUrl);
76
80
  if (url) {
77
- return [{ url, label: asString(result.subject) || "Email" }];
81
+ return [withAppUrl({ url, label: asString(result.subject) || "Email" }, result)];
78
82
  }
79
83
  }
80
84
  const url = pickUrl(root.screenshotUrl, root.thumbnailUrl);
81
85
  if (url) {
82
- return [{ url, label: asString(root.subject) || "Email" }];
86
+ return [withAppUrl({ url, label: asString(root.subject) || "Email" }, root)];
83
87
  }
84
88
  return [];
85
89
  }
@@ -87,11 +91,11 @@ export function screenshotGuidance(refs, attached, data) {
87
91
  if (attached > 0) {
88
92
  const missing = refs.length - attached;
89
93
  return missing > 0
90
- ? `Show the ${attached} attached preview image(s) immediately. ${missing} returned preview image(s) could not be attached; show their appUrl links and say visual verification is incomplete. Do not claim every draft or source image was inspected.`
91
- : "Show these email preview images to the user immediately. Do not only describe the JSON. Do not run validate or edit before showing the drafts.";
94
+ ? `${attached} of ${refs.length} preview image(s) are attached; ${missing} could not be fetched, so visual verification is incomplete for those. The Previews list at the end has every image and editor link as Markdown.`
95
+ : `Preview images for ${attached} email(s) are attached. Some clients show tool images only inside the collapsed tool call; the Previews list at the end has each image and editor link as Markdown for the reply.`;
92
96
  }
93
97
  if (refs.length > 0) {
94
- return "Preview URLs were returned, but no preview image could be attached. Show each appUrl, retry migma_get_email or migma_get_generation_status once, and say visual verification is incomplete. Do not claim requested source images are present.";
98
+ return "No preview image could be attached, so visual verification is incomplete. The Previews list at the end has each image URL and editor link; migma_get_email or migma_get_generation_status can be retried once.";
95
99
  }
96
100
  const root = asRecord(data);
97
101
  const status = asString(root?.status);
@@ -143,6 +147,18 @@ export async function fetchEmailImage(url, fetchImpl = fetch) {
143
147
  return null;
144
148
  }
145
149
  }
150
+ function markdownLabel(label) {
151
+ return label.replace(/[[\]\n]/g, " ").trim() || "Email";
152
+ }
153
+ /** One line per email: the preview image and its editor link, ready to paste into a reply. */
154
+ export function previewsMarkdown(refs) {
155
+ const lines = refs.map((ref, index) => {
156
+ const label = markdownLabel(ref.label);
157
+ const edit = ref.appUrl ? ` · [Open in Migma](${ref.appUrl})` : "";
158
+ return `${index + 1}. **${label}**${edit}\n ![${label}](${ref.url})`;
159
+ });
160
+ return `Previews:\n${lines.join("\n")}`;
161
+ }
146
162
  export async function toolResultWithImages(data, mode, fetchImpl = fetch) {
147
163
  const refs = collectScreenshotRefs(data, mode);
148
164
  const fetched = await Promise.all(refs.map(async (ref) => ({
@@ -151,9 +167,6 @@ export async function toolResultWithImages(data, mode, fetchImpl = fetch) {
151
167
  })));
152
168
  const attached = fetched.filter((item) => item.image);
153
169
  const guidance = screenshotGuidance(refs, attached.length, data);
154
- const markdown = attached
155
- .map((item) => `![${item.ref.label}](${item.ref.url})`)
156
- .join("\n");
157
170
  const content = [];
158
171
  if (guidance) {
159
172
  content.push({ type: "text", text: guidance });
@@ -162,10 +175,11 @@ export async function toolResultWithImages(data, mode, fetchImpl = fetch) {
162
175
  if (item.image)
163
176
  content.push(item.image);
164
177
  }
165
- if (markdown) {
166
- content.push({ type: "text", text: markdown });
167
- }
168
178
  content.push({ type: "text", text: JSON.stringify(data, null, 2) });
179
+ // Last, so the reply-ready list is what the model reads after the JSON.
180
+ if (refs.length > 0) {
181
+ content.push({ type: "text", text: previewsMarkdown(refs) });
182
+ }
169
183
  return { content };
170
184
  }
171
185
  //# sourceMappingURL=email-images.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"email-images.js","sourceRoot":"","sources":["../../src/tools/email-images.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"email-images.js","sourceRoot":"","sources":["../../src/tools/email-images.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/tools/generate.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;AAkB3C,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,KAAK,EACb,MAAM,EAAE,MAAM,EACd,kBAAkB,CAAC,EAAE,MAAM,EAAE,QAgV9B"}
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/tools/generate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAGnC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAY3C,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,KAAK,EACb,MAAM,EAAE,MAAM,EACd,kBAAkB,CAAC,EAAE,MAAM,EAAE,QA2W9B"}
@@ -1,14 +1,16 @@
1
1
  import { z } from "zod";
2
+ import { randomUUID } from "node:crypto";
2
3
  import { canUse } from "../permissions.js";
3
4
  import { decorateEmailPayload } from "./agent-payload.js";
4
5
  import { toolResultWithImages } from "./email-images.js";
6
+ import { startEmailEdit, getEmailEditStatus } from "./email-edit-client.js";
5
7
  import { DESTRUCTIVE_TOOL, IDEMPOTENT_MUTATING_TOOL, OPEN_WORLD_DESTRUCTIVE_TOOL, READ_ONLY_TOOL, } from "./annotations.js";
6
8
  export function registerGenerateTools(server, client, config, grantedPermissions) {
7
9
  if (canUse(grantedPermissions, ["email:write", "email:read"])) {
8
10
  server.registerTool("migma_generate_email", {
9
11
  title: "Create / Generate Email or Series",
10
12
  annotations: IDEMPOTENT_MUTATING_TOOL,
11
- description: "Create, design, write, compose, or draft a new email or email series from a prompt. One call can generate multiple emails: pass count (1–12), e.g. count=3 for a three-email series, and name each email's job in the prompt. Never call this tool once per email. This is the tool for making new emails from a prompt (not converting existing HTML — use migma_import_html for that; not campaigns, contacts, DNS, or domains). Images: pass every image the user attached or pointed at through the images argument — product shots and logos to show in the email, and screenshots of emails or pages to use as design reference (when the user names a style, brand, or site like reallygoodemails.com, fetch the real screenshot URL and pass it; say in the prompt which images are content and which are reference). URLs mentioned only in prompt text are not image inputs. For researched work, put exact required facts in the prompt. Returns conversationId immediately. Next: poll migma_get_generation_status until completed, then IMMEDIATELY show the preview images and appUrl links to the user. Do not run validate or edit before that first show. After showing, verify requested facts and assets before claiming success. Charges 1 email credit per finished email.",
13
+ description: "Create, design, write, compose, or draft a new email or email series from a prompt. One call can generate multiple emails: pass count (1–12), e.g. count=3 for a three-email series, and name each email's job in the prompt. Never call this tool once per email. This is the tool for making new emails from a prompt (not converting existing HTML — use migma_import_html for that; not campaigns, contacts, DNS, or domains). Images: pass every image the user attached or pointed at through the images argument — product shots and logos to show in the email, and screenshots of emails or pages to use as design reference (a screenshot URL of an email or site the user names works as reference; say in the prompt which images are content and which are reference). URLs mentioned only in prompt text are not image inputs. Put exact required facts (offers, prices, dates) in the prompt; Migma writes only what it is given or finds on the brand's site. Returns conversationId immediately; migma_get_generation_status reports progress and returns preview images and editor links when done. Charges 1 email credit per finished email.",
12
14
  inputSchema: z.object({
13
15
  projectId: z
14
16
  .string()
@@ -66,7 +68,7 @@ export function registerGenerateTools(server, client, config, grantedPermissions
66
68
  content: [
67
69
  {
68
70
  type: "text",
69
- text: "Generation started. Poll migma_get_generation_status until completed, then show the preview images and appUrl links immediately. Do not validate or edit before the user sees the drafts. After that first show, verify required facts and reference assets before claiming success.",
71
+ text: "Generation started. migma_get_generation_status reports progress, then returns each email's preview image and editor link.",
70
72
  },
71
73
  {
72
74
  type: "text",
@@ -80,7 +82,7 @@ export function registerGenerateTools(server, client, config, grantedPermissions
80
82
  server.registerTool("migma_get_generation_status", {
81
83
  title: "Get Generation Status",
82
84
  annotations: READ_ONLY_TOOL,
83
- description: "Check generation progress with conversationId. When status is completed, show the returned preview images and appUrl links to the user right away — do not validate or edit first. After showing, verify any required fact checklist and source images before claiming success. Set includeHtml when text/content verification needs markup.",
85
+ description: "Check generation progress with conversationId. When status is completed, returns each email's preview image and appUrl editor link, ending with a Markdown Previews list. Set includeHtml when text/content verification needs markup.",
84
86
  inputSchema: z.object({
85
87
  conversationId: z.string().describe("The conversation/generation ID"),
86
88
  includeHtml: z
@@ -130,7 +132,7 @@ export function registerGenerateTools(server, client, config, grantedPermissions
130
132
  server.registerTool("migma_list_emails", {
131
133
  title: "List Emails",
132
134
  annotations: READ_ONLY_TOOL,
133
- description: "List generated email designs for a project. Returns preview images, conversationId, title, subject, appUrl, and screenshotStatus. Show the previews. Use migma_list_campaigns for audience sends.",
135
+ description: "List generated email designs for a project. Returns preview images, conversationId, title, subject, appUrl, and screenshotStatus. Use migma_list_campaigns for audience sends.",
134
136
  inputSchema: z.object({
135
137
  projectId: z
136
138
  .string()
@@ -176,7 +178,7 @@ export function registerGenerateTools(server, client, config, grantedPermissions
176
178
  server.registerTool("migma_get_email", {
177
179
  title: "Get Email",
178
180
  annotations: READ_ONLY_TOOL,
179
- description: "Get one generated email by emailId. Returns preview image, subject, appUrl, screenshotStatus, and variable requirements. Set includeHtml when markup is needed. Show the preview.",
181
+ description: "Get one generated email by emailId. Returns preview image, subject, appUrl, screenshotStatus, and variable requirements. Set includeHtml when markup is needed.",
180
182
  inputSchema: z.object({
181
183
  emailId: z.string().describe("Generated email ID from result.emails[].emailId"),
182
184
  includeHtml: z
@@ -191,11 +193,11 @@ export function registerGenerateTools(server, client, config, grantedPermissions
191
193
  return toolResultWithImages(decorateEmailPayload(data, { includeHtml: args.includeHtml }), "detail");
192
194
  });
193
195
  }
194
- if (canUse(grantedPermissions, ["email:write"])) {
196
+ if (canUse(grantedPermissions, ["email:write", "email:read"])) {
195
197
  server.registerTool("migma_edit_email", {
196
198
  title: "Edit / Change Email",
197
- annotations: DESTRUCTIVE_TOOL,
198
- description: "Edit, change, revise, or rewrite one already-generated email with a natural-language prompt. For a brand-new email or series, use migma_generate_email instead. This tool does not accept structured source images; adding external images requires a new migma_generate_email call and creates a replacement draft. Returns preview image, subject, appUrl, and screenshotStatus. Set includeHtml when markup is needed. Show the preview. Charges 0.5 email credit after save.",
199
+ annotations: { ...DESTRUCTIVE_TOOL, idempotentHint: true },
200
+ description: "Edit, change, revise, or rewrite one already-generated email with a natural-language prompt. Returns editId, emailId, conversationId and status immediately; poll migma_get_email_edit_status with emailId and editId until completed or failed. Never resubmit a pending or processing edit, and reuse the same idempotency_key after an uncertain submission. Conversation generation status can describe an older turn and does not prove this edit finished. For a brand-new email or series, or to add external images, use migma_generate_email instead. The completed status returns the saved preview, subject, appUrl, and screenshotStatus; set includeHtml when markup is needed. Charges 0.5 email credit after save.",
199
201
  inputSchema: z.object({
200
202
  emailId: z.string().describe("Generated email ID from result.emails[].emailId"),
201
203
  prompt: z
@@ -206,14 +208,36 @@ export function registerGenerateTools(server, client, config, grantedPermissions
206
208
  includeHtml: z
207
209
  .boolean()
208
210
  .optional()
209
- .describe("Include full email HTML. Default false."),
211
+ .describe("Request HTML on the subsequent migma_get_email_edit_status call. Start returns a job handle."),
212
+ idempotency_key: z.string().min(1).max(100).optional()
213
+ .describe("Reuse this key with identical edit inputs after an uncertain submission. Same key resumes the same job for at least 24h after completion."),
210
214
  }),
211
215
  }, async (args) => {
212
- const emails = client.emails;
213
- const { data, error } = await emails.edit(args.emailId, {
216
+ const key = args.idempotency_key || randomUUID();
217
+ const { data, error } = await startEmailEdit(client, config, args.emailId, {
214
218
  prompt: args.prompt,
215
219
  label: args.label,
216
- });
220
+ }, key);
221
+ if (error)
222
+ return toolError(JSON.stringify({ error: error.message, emailId: args.emailId,
223
+ idempotency_key: key, nextStep: "If retrying this submission, reuse this idempotency_key and identical prompt/label. Do not start a second edit with a new key." }));
224
+ return toolResult({ ...decorateEmailPayload(data), idempotency_key: key,
225
+ nextStep: "Poll migma_get_email_edit_status with emailId and editId. Do not resubmit while pending or processing. Show the saved preview only after completed.",
226
+ ...(args.includeHtml ? { includeHtml: true } : {}), });
227
+ });
228
+ }
229
+ if (canUse(grantedPermissions, ["email:read"])) {
230
+ server.registerTool("migma_get_email_edit_status", {
231
+ title: "Get Email Edit Status",
232
+ annotations: READ_ONLY_TOOL,
233
+ description: "Poll one queued email edit using its emailId and editId. Pending/processing means keep polling, not retrying the edit. Completed includes the saved email preview; show it immediately. Failed includes error and changesMayHaveBeenSaved; inspect the saved email before starting another edit. Missing/expired status does not prove the edit failed. Set includeHtml to inspect markup.",
234
+ inputSchema: z.object({
235
+ emailId: z.string().describe("Email ID returned by migma_edit_email"),
236
+ editId: z.string().describe("Exact edit job ID returned by migma_edit_email"),
237
+ includeHtml: z.boolean().optional().describe("Include saved email HTML on completion. Default false."),
238
+ }),
239
+ }, async (args) => {
240
+ const { data, error } = await getEmailEditStatus(client, config, args.emailId, args.editId);
217
241
  if (error)
218
242
  return toolError(error.message);
219
243
  return toolResultWithImages(decorateEmailPayload(data, { includeHtml: args.includeHtml }), "detail");