@migma/mcp 1.9.1-automations.1 → 1.10.1

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 (86) hide show
  1. package/README.md +25 -26
  2. package/build/index.d.ts.map +1 -1
  3. package/build/index.js +5 -11
  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 -20
  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 +32 -0
  16. package/build/tools/__tests__/campaign-schedule.test.js.map +1 -0
  17. package/build/tools/__tests__/catalog.test.js +27 -21
  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 +7 -13
  22. package/build/tools/__tests__/review-annotations.test.js.map +1 -1
  23. package/build/tools/__tests__/send-approval.test.d.ts +2 -0
  24. package/build/tools/__tests__/send-approval.test.d.ts.map +1 -0
  25. package/build/tools/__tests__/send-approval.test.js +71 -0
  26. package/build/tools/__tests__/send-approval.test.js.map +1 -0
  27. package/build/tools/api-request.d.ts +11 -0
  28. package/build/tools/api-request.d.ts.map +1 -0
  29. package/build/tools/api-request.js +35 -0
  30. package/build/tools/api-request.js.map +1 -0
  31. package/build/tools/brand.d.ts.map +1 -1
  32. package/build/tools/brand.js +10 -7
  33. package/build/tools/brand.js.map +1 -1
  34. package/build/tools/campaigns.d.ts +2 -0
  35. package/build/tools/campaigns.d.ts.map +1 -1
  36. package/build/tools/campaigns.js +49 -33
  37. package/build/tools/campaigns.js.map +1 -1
  38. package/build/tools/capabilities.d.ts +1 -3
  39. package/build/tools/capabilities.d.ts.map +1 -1
  40. package/build/tools/capabilities.js +11 -55
  41. package/build/tools/capabilities.js.map +1 -1
  42. package/build/tools/contacts.d.ts.map +1 -1
  43. package/build/tools/contacts.js +31 -48
  44. package/build/tools/contacts.js.map +1 -1
  45. package/build/tools/context.js +1 -1
  46. package/build/tools/context.js.map +1 -1
  47. package/build/tools/generate.js +4 -4
  48. package/build/tools/generate.js.map +1 -1
  49. package/build/tools/segments.d.ts +16 -16
  50. package/build/tools/send-approval.d.ts +29 -0
  51. package/build/tools/send-approval.d.ts.map +1 -0
  52. package/build/tools/send-approval.js +51 -0
  53. package/build/tools/send-approval.js.map +1 -0
  54. package/build/tools/send.d.ts +1 -1
  55. package/build/tools/send.d.ts.map +1 -1
  56. package/build/tools/send.js +24 -35
  57. package/build/tools/send.js.map +1 -1
  58. package/build/tools/sender-check.d.ts +16 -0
  59. package/build/tools/sender-check.d.ts.map +1 -0
  60. package/build/tools/sender-check.js +28 -0
  61. package/build/tools/sender-check.js.map +1 -0
  62. package/package.json +3 -3
  63. package/build/tools/__tests__/automations.test.d.ts +0 -2
  64. package/build/tools/__tests__/automations.test.d.ts.map +0 -1
  65. package/build/tools/__tests__/automations.test.js +0 -259
  66. package/build/tools/__tests__/automations.test.js.map +0 -1
  67. package/build/tools/__tests__/forms.test.d.ts +0 -2
  68. package/build/tools/__tests__/forms.test.d.ts.map +0 -1
  69. package/build/tools/__tests__/forms.test.js +0 -127
  70. package/build/tools/__tests__/forms.test.js.map +0 -1
  71. package/build/tools/__tests__/websites.test.d.ts +0 -2
  72. package/build/tools/__tests__/websites.test.d.ts.map +0 -1
  73. package/build/tools/__tests__/websites.test.js +0 -138
  74. package/build/tools/__tests__/websites.test.js.map +0 -1
  75. package/build/tools/automations.d.ts +0 -22
  76. package/build/tools/automations.d.ts.map +0 -1
  77. package/build/tools/automations.js +0 -134
  78. package/build/tools/automations.js.map +0 -1
  79. package/build/tools/forms.d.ts +0 -6
  80. package/build/tools/forms.d.ts.map +0 -1
  81. package/build/tools/forms.js +0 -97
  82. package/build/tools/forms.js.map +0 -1
  83. package/build/tools/websites.d.ts +0 -4
  84. package/build/tools/websites.d.ts.map +0 -1
  85. package/build/tools/websites.js +0 -114
  86. package/build/tools/websites.js.map +0 -1
package/README.md CHANGED
@@ -50,13 +50,34 @@ and include indirect effects:
50
50
  webhook enables automatic future event delivery; it sends no immediate test.
51
51
  - Domain provision/setup can restart DKIM on an existing provider identity.
52
52
  Setup provisions root, marketing `send`, and transactional `notify` identities.
53
- - An optional replay key does not guarantee whole-tool idempotency. Direct send,
54
- campaign creation/scheduling, imports, and edits therefore advertise false.
55
- Keyed retries remain supported. Contact export requires a nonempty key; campaign
56
- send has an independent atomic claim, so those retain true.
53
+ - An optional replay key does not guarantee whole-tool idempotency. Send and
54
+ schedule approvals, campaign creation, imports, and edits therefore advertise
55
+ false. Keyed retries remain supported. Contact export requires a nonempty key,
56
+ so it retains true. Send and schedule tools stay destructive and open-world:
57
+ the send they prepare reaches real inboxes once the user approves it.
57
58
 
58
59
  Annotations do not replace authorization, scope checks, or explicit send approval.
59
60
 
61
+ ## The user approves every send in Migma
62
+
63
+ `migma_send_email`, `migma_send_campaign`, and `migma_schedule_campaign` create
64
+ an approval (`POST /v1/send-approvals`) and return a summary built from live data
65
+ (audience, recipient count, sender, subject, timing) with an approval link to
66
+ migma.ai. The signed-in account owner reviews it there and sends, schedules, or
67
+ declines it; Migma resolves the send again first and refuses if anything that
68
+ decides who gets what, from whom, or when changed. Approvals expire after 24 hours.
69
+ Nothing the tools return can approve a send. `migma_get_send_approval` reports
70
+ pending, sent, scheduled, declined, expired, or failed with the reason.
71
+ `migma_send_test_email` has no approval, so with a connected assistant's key (OAuth,
72
+ as on the hosted server) Migma sends tests only to the account's own inbox: the
73
+ signed-in user's or the account owner's address.
74
+
75
+ `migma_send_email` sends marketing mail unless `transactional: true` is set for
76
+ a single recipient whose From root domain has a verified transactional identity
77
+ (`notify.<root>`, see `migma_provision_stream`). Tag and segment sends are always
78
+ marketing, so unsubscribed contacts are skipped. New campaign drafts refuse a From
79
+ on a domain the account cannot send from.
80
+
60
81
  ## Brand selection
61
82
 
62
83
  Tools with an optional `projectId` use, in order: the argument, `MIGMA_PROJECT_ID`
@@ -104,25 +125,3 @@ The worker does not automatically retry a failed or stalled rewrite.
104
125
 
105
126
  Section and image complexity, provider behavior, and retries affect total work.
106
127
  No fixed maximum edit latency is established.
107
-
108
- ## Automations
109
-
110
- Migma's MCP server lets agents design emails, create automations from text or workflow screenshots, manage audiences and campaigns, and inspect results.
111
-
112
- Use `migma_get_capabilities` to discover the tools and required permissions. For an automation, use `migma_get_automation_capabilities`, then `migma_generate_automation` and `migma_get_automation_generation`. Generation creates an off draft and returns a review link. Keep the same job ID when checking progress.
113
-
114
- Creation does not activate delivery. `migma_activate_automation` requires an explicit user request, passing setup checks, and the `definitionHash` from the reviewed `migma_get_automation` result. List summaries omit this hash, and imported migration drafts can omit it until they become native reviewed flows. Trigger and wait edits require the same reviewed hash. If Migma returns `AUTOMATION_GRAPH_CHANGED`, reload and review the flow before retrying instead of silently using a newer hash. Existing flows can be inspected, validated, paused, and checked through contact-run tools.
115
-
116
- `migma_list_automations` accepts `cursor`, `limit` (1-200), and `includeArchived`; use the returned `nextCursor` to continue. Archived flows are omitted unless requested.
117
-
118
- `migma_get_automation_metrics` accepts `startDate`, `endDate`, and `timezone` together for the canvas send-date report. Omitting all three preserves lifetime metrics and returns `period: "lifetime"`. Keep the returned window, cohort, coverage, revenue status, and reporting warnings; unavailable numbers are not zero. Never add automation values to the corresponding campaign totals. `migma_generate_automation` accepts `emailCount: 0` for action-only journeys.
119
-
120
- See [automation tools and API](https://docs.migma.ai/automations/chat-and-api) and [image-to-automation](https://docs.migma.ai/automations/from-image). Generation needs `campaign:write` + `email:write`; polling and reads need `campaign:read`. Setup checks and lifecycle changes need `campaign:write`.
121
-
122
- ## Forms
123
-
124
- `migma_list_forms`, `migma_get_form`, `migma_create_form`, `migma_update_form`, `migma_publish_form`, `migma_pause_form`, `migma_delete_form`, `migma_submit_form` and `migma_list_form_submissions` manage signup forms. Create and update save a draft; only `migma_publish_form` changes the hosted page and embeds. A form's ID is the `formId` for `form.submitted` and `form.confirmed` automation triggers. Pause and delete return `FORM_USED_BY_AUTOMATION` while an enabled automation starts from the form. Reads need `campaign:read`, writes `campaign:write`, and submission history also `audience:read`.
125
-
126
- `migma_submit_form` signs up one person who asked to join, through a live form's own rules: its fields, tags, double opt-in and form automations. It only adds: an existing contact keeps its status (including unsubscribed and bounced), and the result is the same either way. It returns `state` (`received`, or `confirmation_pending` when a double opt-in email was sent) and `duplicate` (this email was already submitted to the form with this API key, so nothing new was recorded). The submission records the API key and time as consent evidence. If the caller has the person's original signup request, `consent.ip` and `consent.userAgent` preserve that evidence; never substitute the MCP host or agent's request details. It needs `campaign:write` and `audience:write`, sends an `Idempotency-Key` per call (pass `idempotency_key` to retry an uncertain call), and is rate limited per API key. Use the contact import tools, not this one, to add contacts in bulk.
127
-
128
- Run `npm test` to compile and verify tool registration, permissions, review metadata, and API transport. Use the current local `migma-node` SDK build when testing unreleased changes. Publish the updated MCP package and update the backend's pinned `@migma/mcp` dependency together when releasing.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AA6BrD,MAAM,MAAM,2BAA2B,GAAG;IACxC,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACzB,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,KAAK,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,eAAe,CAAC;CAC3B,CAAC;AAYF,eAAO,MAAM,yBAAyB,QAA0P,CAAC;AAqBjS,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,2BAAgC,GAAG,SAAS,CA6CzF;AAED,oFAAoF;AACpF,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,IAAI,CAAC,2BAA2B,EAAE,SAAS,CAAM,GAAG,SAAS,CAE3G;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAEzD;AAGD,wBAAgB,mBAAmB,cAOlC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AA2BrD,MAAM,MAAM,2BAA2B,GAAG;IACxC,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACzB,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,KAAK,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,eAAe,CAAC;CAC3B,CAAC;AAUF,eAAO,MAAM,yBAAyB,QAA0P,CAAC;AAqBjS,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,2BAAgC,GAAG,SAAS,CA2CzF;AAED,oFAAoF;AACpF,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,IAAI,CAAC,2BAA2B,EAAE,SAAS,CAAM,GAAG,SAAS,CAE3G;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAEzD;AAGD,wBAAgB,mBAAmB,cAOlC"}
package/build/index.js CHANGED
@@ -12,6 +12,7 @@ import { registerBrandTools } from "./tools/brand.js";
12
12
  import { registerGenerateTools } from "./tools/generate.js";
13
13
  import { registerImportHtmlTools } from "./tools/import-html.js";
14
14
  import { registerSendTools } from "./tools/send.js";
15
+ import { registerSendApprovalTools } from "./tools/send-approval.js";
15
16
  import { registerValidateTools } from "./tools/validate.js";
16
17
  import { registerExportTools } from "./tools/export.js";
17
18
  import { registerBillingTools } from "./tools/billing.js";
@@ -24,19 +25,14 @@ import { registerSegmentTools } from "./tools/segments.js";
24
25
  import { registerWebhookTools } from "./tools/webhooks.js";
25
26
  import { registerCampaignTools } from "./tools/campaigns.js";
26
27
  import { registerMetricsTools } from "./tools/metrics.js";
27
- import { registerAutomationTools } from "./tools/automations.js";
28
- import { registerWebsiteTools } from "./tools/websites.js";
29
- import { registerFormTools } from "./tools/forms.js";
30
28
  import { applyToolReviewMetadata, registerCapabilitiesTool, } from "./tools/capabilities.js";
31
- import { MIGMA_CHAT_VOICE, registerMigmaPrompts } from "./prompts/index.js";
29
+ import { registerMigmaPrompts } from "./prompts/index.js";
32
30
  const COMMON_SERVER_INSTRUCTIONS = [
33
- MIGMA_CHAT_VOICE,
34
- "After connecting, read migma_get_context setup block. Reuse known brand and reference; unknown is not missing. Setup must not block drafts. No tours, recaps, forced next step or tool IDs.",
31
+ "After connecting, read the migma_get_context setup block. Reuse the known brand and reference; unknown is not missing. Setup must not block drafts.",
35
32
  "Use one write channel; after browser edits call migma_list_emails. One migma_generate_email call makes a whole series: pass count and supplied images through the structured images argument.",
36
33
  "Show every Previews image and editor link before editing or validating. Edit requested existing emails instead of making copies.",
37
34
  "Save lasting rules with migma_update_brand_guidelines and liked styles with migma_save_reference when asked. Never invent prices, offers or product claims.",
38
- "Nothing reaches a real inbox without the user saying yes: show audience, count, sender, subject, preview and timing, then wait. Resolve date/timezone before scheduling. Say done only after tool confirms.",
39
- "For flows, use migma_generate_automation and show the draft. Activate only when the user explicitly asks.",
35
+ "The user approves every send in Migma: send and schedule tools return a summary (audience, count, sender, subject, timing) and an approval link to migma.ai. Show both with the preview, then check the outcome with migma_get_send_approval. Resolve date/timezone before scheduling. Say sent or scheduled only after it reports so.",
40
36
  ].join(" ");
41
37
  export const MIGMA_SERVER_INSTRUCTIONS = `${COMMON_SERVER_INSTRUCTIONS} Checkout links are for the user to open. Offer available billing only when asked or credits block the task; get consent and chosen plan first. Existing subscribers use billing portal. A link is not proof of payment.`;
42
38
  function completeConfig(config) {
@@ -76,6 +72,7 @@ export function createMigmaMcpServer(options = {}) {
76
72
  registerGenerateTools(server, lazyClient, config, permissions);
77
73
  registerImportHtmlTools(server, lazyClient, config, permissions);
78
74
  registerSendTools(server, lazyClient, config, permissions);
75
+ registerSendApprovalTools(server, config, permissions);
79
76
  registerValidateTools(server, lazyClient, permissions);
80
77
  registerExportTools(server, lazyClient, permissions);
81
78
  registerDomainTools(server, lazyClient, permissions, profile);
@@ -88,9 +85,6 @@ export function createMigmaMcpServer(options = {}) {
88
85
  registerWebhookTools(server, lazyClient, permissions);
89
86
  registerCampaignTools(server, lazyClient, config, permissions);
90
87
  registerMetricsTools(server, lazyClient, permissions);
91
- registerAutomationTools(server, lazyClient, config, permissions);
92
- registerWebsiteTools(server, lazyClient, permissions);
93
- registerFormTools(server, lazyClient, config, permissions);
94
88
  registerMigmaPrompts(server);
95
89
  // Register last so the catalog reflects every tool above it.
96
90
  registerCapabilitiesTool(server, permissions, profile);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,4 @@
1
1
  import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
- export declare const MIGMA_CHAT_VOICE = "Use the user's language, like a WhatsApp chat: 1-2 short sentences, simple words, result first. Show previews and returned links; ask one question only for required input or approval, otherwise act.";
3
2
  export interface Workflow {
4
3
  name: string;
5
4
  summary: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,eAAO,MAAM,gBAAgB,2MAC6K,CAAC;AAE3M,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;;;GAIG;AACH,eAAO,MAAM,SAAS,EAAE,QAAQ,EA2G/B,CAAC;AAmBF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,QAcrD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;;;GAIG;AACH,eAAO,MAAM,SAAS,EAAE,QAAQ,EA6F/B,CAAC;AAmBF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,QAcrD"}
@@ -1,24 +1,9 @@
1
- export const MIGMA_CHAT_VOICE = "Use the user's language, like a WhatsApp chat: 1-2 short sentences, simple words, result first. Show previews and returned links; ask one question only for required input or approval, otherwise act.";
2
1
  /**
3
2
  * The guided workflows this server ships. Each is registered as an MCP prompt
4
3
  * and also mirrored inside migma_get_capabilities.workflows so an agent can
5
4
  * discover them without fetching every prompt.
6
5
  */
7
6
  export const WORKFLOWS = [
8
- {
9
- name: "build_automation_from_text_or_image",
10
- summary: "Describe a contact journey or recreate a workflow screenshot, then review and manage the automation.",
11
- steps: [
12
- "migma_list_projects — choose the brand; reuse a known projectId.",
13
- "migma_get_automation_capabilities — ground the trigger, steps, and connections in this project.",
14
- "migma_generate_automation — pass the brief and optional user-provided workflow imageUrls. Keep jobId; the draft stays off.",
15
- "migma_get_automation_generation — poll to completion, show the review link and clarify unresolved details.",
16
- "migma_get_automation — inspect the exact flow and keep its definitionHash for any edit or activation.",
17
- "migma_validate_automation — check setup before activation. Explain the specific fixes if blocked.",
18
- "migma_activate_automation — only if the user explicitly requests turning on this reviewed flow; pass confirmed:true and the inspected definitionHash as expectedDefinitionHash. On AUTOMATION_GRAPH_CHANGED, reload and review before retrying.",
19
- "migma_list_automation_runs and migma_get_automation_run — explain progress using recorded outcomes. migma_pause_automation pauses when requested.",
20
- ],
21
- },
22
7
  {
23
8
  name: "export_unsubscribers",
24
9
  summary: "Export unsubscribed contacts as a complete CSV for consent reconciliation.",
@@ -77,8 +62,8 @@ export const WORKFLOWS = [
77
62
  "migma_send_test_email — only after the user has seen the images and asks to test.",
78
63
  "migma_list_domains + migma_list_segments / migma_list_tags — pick the sender and audience. No domain that can send: migma_setup_domain and give the user its connectUrl. Audience in Klaviyo, Mailchimp or HubSpot: migma_list_provider_import_sources, then migma_import_contacts_from_provider; each source becomes a segment to target.",
79
64
  "migma_create_campaign — create a draft campaign from the generated email.",
80
- "migma_send_campaign — only after explicit user approval of audience, count, sender, subject, timing, and final preview; pass idempotency_key for safe retries.",
81
- "migma_schedule_campaign — use instead of immediate send when the approved timing is in the future. Resolve exact date, time, and timezone; 'Friday' or 'Black Friday' alone is not enough. Say 'Scheduled' only after the tool confirms the saved schedule and include its date and time.",
65
+ "migma_send_campaign — returns the summary (audience, count, sender, subject, timing) and an approval link. Show both with the final preview; the user approves the send on migma.ai. Check the outcome with migma_get_send_approval.",
66
+ "migma_schedule_campaign — use instead of immediate send when the timing is in the future. Resolve exact date, time, and timezone; 'Friday' or 'Black Friday' alone is not enough. It returns a summary and an approval link the same way. Say 'Scheduled' only after migma_get_send_approval reports it, and include its date and time.",
82
67
  "migma_get_campaign_stats — read delivery and engagement metrics when requested; a scheduled campaign has not been sent.",
83
68
  ],
84
69
  },
@@ -91,8 +76,8 @@ export const WORKFLOWS = [
91
76
  "migma_create_segment — create the chosen segment using those fields as filters; include status subscribed for marketing. Membership counts are not delivery counts.",
92
77
  "migma_generate_email — one call creates the email or series (pass count); poll status and show preview images immediately (no validate first).",
93
78
  "migma_create_campaign — create a campaign targeting the new segment.",
94
- "migma_send_campaign — only after explicit user approval of audience, count, sender, subject, timing, and final preview; use an idempotency_key for safe retries.",
95
- "migma_schedule_campaign — use instead for approved future delivery, with exact date, time, and timezone. Report scheduling only after confirmation.",
79
+ "migma_send_campaign — show the returned summary and approval link; the user approves the send on migma.ai. Check the outcome with migma_get_send_approval.",
80
+ "migma_schedule_campaign — use instead for future delivery, with exact date, time, and timezone; the user approves it on migma.ai from the returned link. Report scheduling only after migma_get_send_approval does.",
96
81
  "migma_get_campaign_stats — read the campaign results.",
97
82
  ],
98
83
  },
@@ -117,7 +102,7 @@ function workflowMessage(workflow) {
117
102
  role: "user",
118
103
  content: {
119
104
  type: "text",
120
- text: `${workflow.summary}\n\nHandle these steps internally; explain only the result and what you need from me:\n${stepLines}\n\nStart with migma_get_context and reuse the working brand. Check migma_get_capabilities only when access is unclear. ${MIGMA_CHAT_VOICE} Use the brief and reference already given; drafts need no audience or sending-domain setup. For slow work, one short acknowledgment is enough. No hype, headings, recap, forced next step, or repeated setup questions. Stop when done. Keep tool names and IDs internal unless asked. Expand for requested detail, material errors, and complete approval details. A draft, queued edit, link, or pending domain is not proof of completion. Use only returned download/editor links and checked compatibility results.`,
105
+ text: `${workflow.summary}\n\nHandle these steps internally; explain only the result and what you need from me:\n${stepLines}\n\nStart with migma_get_context and reuse the working brand. Check migma_get_capabilities only when access is unclear. Use the brief and reference already given; drafts need no audience or sending-domain setup. A draft, queued edit, link, or pending domain is not proof of completion. Use only returned download/editor links and checked compatibility results.`,
121
106
  },
122
107
  },
123
108
  ],
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAQA;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAe;IACnC;QACE,IAAI,EAAE,sBAAsB;QAC5B,OAAO,EAAE,4EAA4E;QACrF,KAAK,EAAE;YACL,gDAAgD;YAChD,wLAAwL;YACxL,yLAAyL;YACzL,2LAA2L;SAC5L;KACF;IACD;QACE,IAAI,EAAE,mCAAmC;QACzC,OAAO,EAAE,+GAA+G;QACxH,KAAK,EAAE;YACL,gDAAgD;YAChD,uPAAuP;YACvP,oLAAoL;YACpL,6NAA6N;YAC7N,iQAAiQ;YACjQ,+LAA+L;SAChM;KACF;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,OAAO,EACL,wFAAwF;QAC1F,KAAK,EAAE;YACL,0JAA0J;YAC1J,6FAA6F;YAC7F,oPAAoP;YACpP,qLAAqL;YACrL,qIAAqI;YACrI,mOAAmO;SACpO;KACF;IACD;QACE,IAAI,EAAE,kCAAkC;QACxC,OAAO,EACL,uEAAuE;QACzE,KAAK,EAAE;YACL,oJAAoJ;YACpJ,6EAA6E;YAC7E,uJAAuJ;YACvJ,4RAA4R;YAC5R,+NAA+N;YAC/N,wIAAwI;YACxI,gLAAgL;YAChL,6WAA6W;SAC9W;KACF;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,OAAO,EACL,uFAAuF;QACzF,KAAK,EAAE;YACL,uFAAuF;YACvF,4KAA4K;YAC5K,mKAAmK;YACnK,mFAAmF;YACnF,4UAA4U;YAC5U,2EAA2E;YAC3E,sOAAsO;YACtO,yUAAyU;YACzU,yHAAyH;SAC1H;KACF;IACD;QACE,IAAI,EAAE,wBAAwB;QAC9B,OAAO,EACL,gFAAgF;QAClF,KAAK,EAAE;YACL,mGAAmG;YACnG,+HAA+H;YAC/H,qKAAqK;YACrK,gJAAgJ;YAChJ,sEAAsE;YACtE,4JAA4J;YAC5J,qNAAqN;YACrN,uDAAuD;SACxD;KACF;IACD;QACE,IAAI,EAAE,2BAA2B;QACjC,OAAO,EACL,+EAA+E;QACjF,KAAK,EAAE;YACL,oNAAoN;YACpN,+QAA+Q;YAC/Q,kMAAkM;YAClM,mFAAmF;SACpF;KACF;CACF,CAAC;AAEF,SAAS,eAAe,CAAC,QAAkB;IACzC,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK;SAC7B,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;SACrC,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,OAAO;QACL,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAe;gBACrB,OAAO,EAAE;oBACP,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,GAAG,QAAQ,CAAC,OAAO,0FAA0F,SAAS,0WAA0W;iBACve;aACF;SACF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAiB;IACpD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,CAAC,cAAc,CACnB,QAAQ,CAAC,IAAI,EACb;YACE,KAAK,EAAE,QAAQ,CAAC,IAAI;iBACjB,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;iBAClD,IAAI,CAAC,GAAG,CAAC;YACZ,WAAW,EAAE,QAAQ,CAAC,OAAO;SAC9B,EACD,GAAG,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,CAChC,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -33,4 +33,29 @@ test("favorite retries always set true and surface backend errors", async () =>
33
33
  }
34
34
  assert.deepEqual(calls, [{ id: "email-1", favorite: true }, { id: "email-1", favorite: true }]);
35
35
  });
36
+ test("every tool that takes arguments publishes them in tools/list", async () => {
37
+ const { Client } = await import("@modelcontextprotocol/sdk/client/index.js");
38
+ const { InMemoryTransport } = await import("@modelcontextprotocol/sdk/inMemory.js");
39
+ const { createMigmaMcpServer } = await import("../../index.js");
40
+ const server = createMigmaMcpServer({ config: { apiKey: "test" } });
41
+ const registered = server._registeredTools;
42
+ const client = new Client({ name: "schema-check", version: "1" });
43
+ const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
44
+ await server.connect(serverTransport);
45
+ await client.connect(clientTransport);
46
+ try {
47
+ const { tools: listed } = await client.listTools();
48
+ for (const tool of listed) {
49
+ const declared = Object.keys(registered[tool.name]?.inputSchema?.shape ?? {});
50
+ const published = Object.keys(tool.inputSchema.properties ?? {});
51
+ assert.deepEqual(published.sort(), declared.sort(), tool.name);
52
+ }
53
+ assert.ok(listed.some(t => t.name === "migma_save_reference" && t.inputSchema.properties?.emailId));
54
+ assert.ok(listed.some(t => t.name === "migma_update_brand_guidelines" && t.inputSchema.properties?.instructions));
55
+ }
56
+ finally {
57
+ await client.close();
58
+ await server.close();
59
+ }
60
+ });
36
61
  //# sourceMappingURL=brand.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"brand.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/brand.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,SAAS,KAAK,CAAC,MAAe;IAC5B,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7D,kBAAkB,CAAC,MAAM,EAAE,MAAe,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;IACtF,OAAQ,MAIN,CAAC,gBAAgB,CAAC;AACtB,CAAC;AAED,IAAI,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;IAC/E,IAAI,SAAkB,CAAC;IACvB,MAAM,UAAU,GAAG,KAAK,CAAC,EAAE,QAAQ,EAAE;YACnC,qBAAqB,EAAE,KAAK,EAAE,EAAU,EAAE,IAAY,EAAE,EAAE;gBACxD,SAAS,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;gBACzB,OAAO,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;YACrC,CAAC;SACF,EAAE,CAAC,CAAC;IACL,MAAM,UAAU,CAAC,6BAA6B,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACxH,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;AACpH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;IAC7E,MAAM,KAAK,GAAc,EAAE,CAAC;IAC5B,MAAM,UAAU,GAAG,KAAK,CAAC,EAAE,MAAM,EAAE;YACjC,WAAW,EAAE,KAAK,EAAE,EAAU,EAAE,QAAiB,EAAE,EAAE;gBACnD,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAC7B,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,wBAAwB,EAAE,EAAE,CAAC;YAC1D,CAAC;SACF,EAAE,CAAC,CAAC;IACL,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;QACzF,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACnC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,wBAAwB,CAAC,CAAC;IACjE,CAAC;IACD,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAClG,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"brand.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/brand.test.ts"],"names":[],"mappings":"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"}
@@ -6,10 +6,13 @@ import { InMemoryTransport } from "@modelcontextprotocol/sdk/inMemory.js";
6
6
  import { registerCampaignTools } from "../campaigns.js";
7
7
  function fixture(permissions) {
8
8
  const calls = [];
9
- const client = { campaigns: { create: async (body, options) => {
9
+ const client = {
10
+ domains: { list: async () => ({ data: [{ domain: "example.test", isVerified: true, status: "verified" }], error: null }) },
11
+ campaigns: { create: async (body, options) => {
10
12
  calls.push({ body, options });
11
13
  return { data: { id: "campaign-1" }, error: null };
12
- } } };
14
+ } },
15
+ };
13
16
  const server = new McpServer({ name: "test", version: "1" });
14
17
  registerCampaignTools(server, client, { apiKey: "offline", projectId: "brand-1" }, permissions);
15
18
  const tools = server._registeredTools;
@@ -1 +1 @@
1
- {"version":3,"file":"campaign-recipients.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/campaign-recipients.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"campaign-recipients.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/campaign-recipients.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=campaign-schedule.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"campaign-schedule.test.d.ts","sourceRoot":"","sources":["../../../src/tools/__tests__/campaign-schedule.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,32 @@
1
+ import assert from "node:assert/strict";
2
+ import test from "node:test";
3
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
4
+ import { registerCampaignTools } from "../campaigns.js";
5
+ function fixture() {
6
+ const server = new McpServer({ name: "test", version: "1" });
7
+ registerCampaignTools(server, {}, { apiKey: "offline", projectId: "brand-1", baseUrl: "https://api.test/v1" });
8
+ const tools = server._registeredTools;
9
+ return tools.migma_schedule_campaign;
10
+ }
11
+ test("schedule approvals forward local-time delivery when given, including false", async () => {
12
+ const original = globalThis.fetch;
13
+ const bodies = [];
14
+ globalThis.fetch = (async (_url, init) => {
15
+ bodies.push(JSON.parse(String(init.body)));
16
+ return new Response(JSON.stringify({ success: true, data: { id: "a1", status: "pending", approvalUrl: "https://migma.ai/approve/a1", expiresAt: "2031-07-02T00:00:00Z", summary: {} } }));
17
+ });
18
+ try {
19
+ const tool = fixture();
20
+ const args = { campaignId: "campaign-1", scheduledAt: "2031-07-01T07:00:00Z", scheduledTimezone: "Europe/Rome" };
21
+ await tool.handler(tool.inputSchema.parse({ ...args, localTimeDelivery: true }), {});
22
+ assert.deepEqual(bodies[0], { action: "schedule_campaign", ...args, localTimeDelivery: true });
23
+ await tool.handler(tool.inputSchema.parse(args), {});
24
+ assert.equal("localTimeDelivery" in bodies[1], false);
25
+ await tool.handler(tool.inputSchema.parse({ ...args, localTimeDelivery: false }), {});
26
+ assert.equal(bodies[2].localTimeDelivery, false);
27
+ }
28
+ finally {
29
+ globalThis.fetch = original;
30
+ }
31
+ });
32
+ //# sourceMappingURL=campaign-schedule.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"campaign-schedule.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/campaign-schedule.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD,SAAS,OAAO;IACd,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7D,qBAAqB,CAAC,MAAM,EAAE,EAAsB,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC,CAAC;IACnI,MAAM,KAAK,GAAI,MAGV,CAAC,gBAAgB,CAAC;IACvB,OAAO,KAAK,CAAC,uBAAuB,CAAC;AACvC,CAAC;AAED,IAAI,CAAC,4EAA4E,EAAE,KAAK,IAAI,EAAE;IAC5F,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC;IAClC,MAAM,MAAM,GAA8B,EAAE,CAAC;IAC7C,UAAU,CAAC,KAAK,GAAG,CAAC,KAAK,EAAE,IAAa,EAAE,IAAiB,EAAE,EAAE;QAC7D,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3C,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,6BAA6B,EAAE,SAAS,EAAE,sBAAsB,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAC5L,CAAC,CAAiB,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,aAAa,EAAE,CAAC;QACjH,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACrF,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE,GAAG,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/F,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QACrD,MAAM,CAAC,KAAK,CAAC,mBAAmB,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACtD,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACtF,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;YAAS,CAAC;QACT,UAAU,CAAC,KAAK,GAAG,QAAQ,CAAC;IAC9B,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -106,10 +106,11 @@ test("server instructions stay short and keep every user-protecting rule", () =>
106
106
  assert.ok(MIGMA_SERVER_INSTRUCTIONS.length < 1500, `instructions are ${MIGMA_SERVER_INSTRUCTIONS.length} chars`);
107
107
  assert.match(MIGMA_SERVER_INSTRUCTIONS, /migma_get_context/);
108
108
  assert.match(MIGMA_SERVER_INSTRUCTIONS, /setup block/);
109
- assert.match(MIGMA_SERVER_INSTRUCTIONS, /ask one question/);
109
+ assert.match(MIGMA_SERVER_INSTRUCTIONS, /migma_get_send_approval/);
110
+ assert.doesNotMatch(MIGMA_SERVER_INSTRUCTIONS, /WhatsApp|short sentences|recaps/, "no tone or formatting directives");
110
111
  assert.match(MIGMA_SERVER_INSTRUCTIONS, /one write channel/i);
111
112
  assert.match(MIGMA_SERVER_INSTRUCTIONS, /structured images argument/);
112
- assert.match(MIGMA_SERVER_INSTRUCTIONS, /Nothing reaches a real inbox without the user saying yes/);
113
+ assert.match(MIGMA_SERVER_INSTRUCTIONS, /The user approves every send in Migma/);
113
114
  assert.match(MIGMA_SERVER_INSTRUCTIONS, /One migma_generate_email call makes a whole series/);
114
115
  assert.match(MIGMA_SERVER_INSTRUCTIONS, /migma_save_reference/);
115
116
  assert.match(MIGMA_SERVER_INSTRUCTIONS, /migma_update_brand_guidelines/);
@@ -122,7 +123,7 @@ test("rules cut from the server instructions still live where the agent reads th
122
123
  const payload = buildCapabilitiesPayload("test", ["campaign:write"]);
123
124
  assert.match(payload.deliveryAccess.warning, /campaign:write/);
124
125
  });
125
- test("brand tools need project:write and migma_save_reference takes exactly one mode", () => {
126
+ test("brand tools need project:write and migma_save_reference takes exactly one mode", async () => {
126
127
  assert.deepEqual(getToolRequiredScopes("migma_update_brand_guidelines"), ["project:write"]);
127
128
  assert.deepEqual(getToolRequiredScopes("migma_save_reference"), ["project:write"]);
128
129
  const withWrite = registeredTools(["project:write"]);
@@ -131,20 +132,29 @@ test("brand tools need project:write and migma_save_reference takes exactly one
131
132
  const readOnly = registeredTools(["email:read"]);
132
133
  assert.equal(readOnly["migma_update_brand_guidelines"], undefined);
133
134
  assert.equal(readOnly["migma_save_reference"], undefined);
134
- const schema = withWrite["migma_save_reference"].inputSchema;
135
- assert.equal(schema.safeParse({}).success, false);
136
- assert.equal(schema.safeParse({ emailId: "abc", html: "<p>x</p>", title: "t" }).success, false);
137
- assert.equal(schema.safeParse({ title: "t" }).success, false);
138
- assert.equal(schema.safeParse({ emailId: "abc" }).success, true);
139
- assert.equal(schema.safeParse({ emailId: " " }).success, false);
140
- assert.equal(schema.safeParse({ title: " ", html: "<p>x</p>" }).success, false);
141
- assert.equal(schema.safeParse({ title: "t", html: "<p>x</p>" }).success, true);
142
- const guidelines = withWrite["migma_update_brand_guidelines"].inputSchema;
143
- assert.equal(guidelines.safeParse({}).success, false);
144
- assert.equal(guidelines.safeParse({ instructions: "Always sentence case." }).success, true);
145
- assert.equal(guidelines.safeParse({ instructions: "" }).success, true);
146
- assert.equal(guidelines.safeParse({ imageStyle: {} }).success, false);
147
- assert.equal(guidelines.safeParse({ imageStyle: { references: [] } }).success, false);
135
+ // Mode rules run in the handler so the published schema keeps its properties.
136
+ const ok = async () => ({ data: {}, error: null });
137
+ const stubbed = createMigmaMcpServer({
138
+ client: { emails: { setFavorite: ok }, knowledgeBase: { add: ok }, projects: { updateBrandGuidelines: ok } },
139
+ config: { apiKey: "sk_live_test", projectId: "brand-1" },
140
+ permissions: ["project:write"],
141
+ })._registeredTools;
142
+ const accepts = async (name, args) => {
143
+ const parsed = stubbed[name].inputSchema.safeParse(args);
144
+ return parsed.success && (await stubbed[name].handler(parsed.data, {})).isError !== true;
145
+ };
146
+ assert.equal(await accepts("migma_save_reference", {}), false);
147
+ assert.equal(await accepts("migma_save_reference", { emailId: "abc", html: "<p>x</p>", title: "t" }), false);
148
+ assert.equal(await accepts("migma_save_reference", { title: "t" }), false);
149
+ assert.equal(await accepts("migma_save_reference", { emailId: "abc" }), true);
150
+ assert.equal(await accepts("migma_save_reference", { emailId: " " }), false);
151
+ assert.equal(await accepts("migma_save_reference", { title: " ", html: "<p>x</p>" }), false);
152
+ assert.equal(await accepts("migma_save_reference", { title: "t", html: "<p>x</p>" }), true);
153
+ assert.equal(await accepts("migma_update_brand_guidelines", {}), false);
154
+ assert.equal(await accepts("migma_update_brand_guidelines", { instructions: "Always sentence case." }), true);
155
+ assert.equal(await accepts("migma_update_brand_guidelines", { instructions: "" }), true);
156
+ assert.equal(await accepts("migma_update_brand_guidelines", { imageStyle: {} }), false);
157
+ assert.equal(await accepts("migma_update_brand_guidelines", { imageStyle: { references: [] } }), false);
148
158
  });
149
159
  test("research workflow uses one generation and verifies facts and assets", () => {
150
160
  const workflow = WORKFLOWS.find((entry) => entry.name === "research_and_create_email_series");
@@ -191,10 +201,6 @@ test("every tool advertises its OAuth policy", () => {
191
201
  assert.deepEqual(registered.migma_import_html._meta?.securitySchemes?.[0]?.scopes, ["email:write", "email:read"]);
192
202
  assert.deepEqual(registered.migma_send_email._meta?.securitySchemes?.[0]?.scopes, ["email:send"]);
193
203
  assert.deepEqual(registered.migma_list_contacts._meta?.securitySchemes?.[0]?.scopes, ["audience:read"]);
194
- assert.deepEqual(registered.migma_list_websites._meta?.securitySchemes?.[0]?.scopes, ["audience:read"]);
195
- assert.deepEqual(registered.migma_create_website._meta?.securitySchemes?.[0]?.scopes, ["audience:write"]);
196
- assert.deepEqual(registered.migma_update_website._meta?.securitySchemes?.[0]?.scopes, ["audience:write"]);
197
- assert.deepEqual(registered.migma_get_website_events._meta?.securitySchemes?.[0]?.scopes, ["audience:read"]);
198
204
  assert.deepEqual(registered.migma_get_credits._meta?.securitySchemes?.[0]?.scopes, ["billing:read"]);
199
205
  assert.deepEqual(registered.migma_get_upgrade_link._meta?.securitySchemes?.[0]?.scopes, ["billing:write"]);
200
206
  assert.deepEqual(registered.migma_list_dns_records._meta?.securitySchemes?.[0]?.scopes, ["domain:read"]);
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/catalog.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,wBAAwB,EACxB,YAAY,GACb,MAAM,oBAAoB,CAAC;AAqB5B,SAAS,eAAe,CAAC,WAAsB;IAC7C,MAAM,MAAM,GAAG,oBAAoB,CAAC;QAClC,MAAM,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE;QAClC,WAAW;KACZ,CAAC,CAAC;IACH,OACE,MACD,CAAC,gBAAgB,CAAC;AACrB,CAAC;AAED,SAAS,mBAAmB,CAAC,WAAsB;IACjD,OAAO,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,IAAI,CAAC,sDAAsD,EAAE,GAAG,EAAE;IAChE,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAEjE,MAAM,kBAAkB,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAChF,MAAM,cAAc,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAE5E,MAAM,CAAC,SAAS,CACd,kBAAkB,EAClB,EAAE,EACF,+CAA+C,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC/E,CAAC;IACF,MAAM,CAAC,SAAS,CACd,cAAc,EACd,EAAE,EACF,gDAAgD,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC5E,CAAC;IACF,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE,kCAAkC,CAAC,CAAC;AACtF,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,uDAAuD,EAAE,GAAG,EAAE;IACjE,MAAM,cAAc,GAAG,mBAAmB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAElE,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,IAAI,CAAC,CAAC;IACjE,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAC,CAAC;IAC/D,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,IAAI,CAAC,CAAC;IACjE,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,KAAK,CAAC,CAAC;IACpE,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,KAAK,CAAC,CAAC;IACrE,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,KAAK,CAAC,CAAC;IACnE,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,KAAK,CAAC,CAAC;IACpE,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,KAAK,CAAC,CAAC;IACjE,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,KAAK,CAAC,CAAC;IACrE,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;AAClE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,mDAAmD,EAAE,GAAG,EAAE;IAC7D,MAAM,UAAU,GAAG,eAAe,EAAE,CAAC;IACrC,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;QACjC,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC;QACxD,MAAM,CAAC,KAAK,CACV,WAAW,EAAE,YAAY,EACzB,CAAC,KAAK,CAAC,KAAK,EACZ,GAAG,KAAK,CAAC,IAAI,gDAAgD,CAC9D,CAAC;QACF,MAAM,CAAC,KAAK,CAAC,OAAO,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,IAAI,2BAA2B,CAAC,CAAC;QACrG,MAAM,CAAC,KAAK,CAAC,OAAO,WAAW,EAAE,eAAe,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,IAAI,6BAA6B,CAAC,CAAC;QACzG,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,wBAAwB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,kCAAkC,CAAC,CAAC;QACrH,MAAM,CAAC,KAAK,CACV,WAAW,EAAE,cAAc,EAC3B,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,EACrC,GAAG,KAAK,CAAC,IAAI,gDAAgD,CAC9D,CAAC;IACJ,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,kEAAkE,EAAE,GAAG,EAAE;IAC5E,MAAM,UAAU,GAAG,eAAe,EAGjC,CAAC;IACF,MAAM,QAAQ,GAAG,UAAU,CAAC,oBAAoB,CAAC;IACjD,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;IAC9C,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC7C,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;IAC9C,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;IACpD,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;IACpD,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;IACnD,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;IACrD,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,EAAE,WAAW,CAAC,CAAC;IACtD,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;IACnD,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,EAAE,qCAAqC,CAAC,CAAC;IAChF,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,EAAE,yDAAyD,CAAC,CAAC;IACpG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,sBAAsB,CAAC,WAAW,IAAI,EAAE,EAAE,sBAAsB,CAAC,CAAC;IAC1F,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,sBAAsB,CAAC,WAAW,IAAI,EAAE,EAAE,mBAAmB,CAAC,CAAC;IACvF,MAAM,UAAU,GAAG,UAAU,CAAC,iBAAiB,CAAC;IAChD,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;IAChD,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;IAC9C,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;IACpD,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,IAAI,EAAE,EAAE,sBAAsB,CAAC,CAAC;IACnE,MAAM,CAAC,YAAY,CACjB,UAAU,CAAC,qBAAqB,CAAC,WAAW,IAAI,EAAE,EAClD,2CAA2C,CAC5C,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,wDAAwD,EAAE,GAAG,EAAE;IAClE,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC,oBAAoB,CAAC;IACxD,MAAM,IAAI,GAAG;QACX,SAAS,EAAE,WAAW;QACtB,MAAM,EAAE,yBAAyB;KAClC,CAAC;IACF,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;IACjF,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,2BAA2B,CAAC,CAAC;IAEnD,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACvF,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACzF,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,2EAA2E,EAAE,GAAG,EAAE;IACrF,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC,qBAAqB,CAAC,WAAY,CAAC;IACpE,MAAM,IAAI,GAAG;QACX,SAAS,EAAE,WAAW;QACtB,IAAI,EAAE,SAAS;QACf,cAAc,EAAE,gBAAgB;QAChC,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,SAAS;QACnB,aAAa,EAAE,KAAK;QACpB,WAAW,EAAE,OAAO;KACrB,CAAC;IACF,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACnD,KAAK,MAAM,YAAY,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC;QAC7E,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IACnF,CAAC;IACD,KAAK,MAAM,YAAY,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,CAAC;QACnD,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QAC3D,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,8BAA8B,CAAC,CAAC;IAC1F,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oEAAoE,EAAE,GAAG,EAAE;IAC9E,MAAM,CAAC,EAAE,CAAC,yBAAyB,CAAC,MAAM,GAAG,IAAI,EAAE,oBAAoB,yBAAyB,CAAC,MAAM,QAAQ,CAAC,CAAC;IACjH,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,mBAAmB,CAAC,CAAC;IAC7D,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,aAAa,CAAC,CAAC;IACvD,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,kBAAkB,CAAC,CAAC;IAC5D,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,oBAAoB,CAAC,CAAC;IAC9D,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,4BAA4B,CAAC,CAAC;IACtE,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,0DAA0D,CAAC,CAAC;IACpG,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,oDAAoD,CAAC,CAAC;IAC9F,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,sBAAsB,CAAC,CAAC;IAChE,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,+BAA+B,CAAC,CAAC;IACzE,MAAM,CAAC,YAAY,CAAC,yBAAyB,EAAE,QAAQ,EAAE,mCAAmC,CAAC,CAAC;AAChG,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,8EAA8E,EAAE,GAAG,EAAE;IACxF,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAChC,MAAM,QAAQ,GAAG,KAAK,CAAC,sBAAsB,CAA8C,CAAC;IAC5F,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,EAAE,mDAAmD,CAAC,CAAC;IAC9F,MAAM,OAAO,GAAG,wBAAwB,CAAC,MAAM,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACrE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;AACjE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,gFAAgF,EAAE,GAAG,EAAE;IAC1F,MAAM,CAAC,SAAS,CAAC,qBAAqB,CAAC,+BAA+B,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IAC5F,MAAM,CAAC,SAAS,CAAC,qBAAqB,CAAC,sBAAsB,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IAEnF,MAAM,SAAS,GAAG,eAAe,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;IACrD,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,+BAA+B,CAAC,CAAC,CAAC;IACtD,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;IACjD,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,+BAA+B,CAAC,EAAE,SAAS,CAAC,CAAC;IACnE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,SAAS,CAAC,CAAC;IAE1D,MAAM,MAAM,GAAG,SAAS,CAAC,sBAAsB,CAAC,CAAC,WAAY,CAAC;IAC9D,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAClD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAChG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC9D,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACjE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAChE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAChF,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAE/E,MAAM,UAAU,GAAG,SAAS,CAAC,+BAA+B,CAAC,CAAC,WAAY,CAAC;IAC3E,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACtD,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,YAAY,EAAE,uBAAuB,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC5F,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACvE,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACtE,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACxF,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,qEAAqE,EAAE,GAAG,EAAE;IAC/E,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAC7B,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,kCAAkC,CAC7D,CAAC;IACF,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;IACpB,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACjC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;IACzC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,4BAA4B,CAAC,CAAC;IAClD,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;AAC5C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,wEAAwE,EAAE,GAAG,EAAE;IAClF,MAAM,OAAO,GAAG,wBAAwB,CAAC,MAAM,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC;IAChF,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEnE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,IAAI,CAAC,CAAC;IAC3D,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,KAAK,CAAC,CAAC;IACxD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,KAAK,CAAC,CAAC;IAC3D,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,kCAAkC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC/E,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,KAAK,CAAC,CAAC;IACrE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;IAC/D,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;IAC1E,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,+BAA+B,CAAC,CAAC;AAChF,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,iDAAiD,EAAE,GAAG,EAAE;IAC3D,MAAM,UAAU,GAAG,eAAe,EAGjC,CAAC;IACF,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;QACjC,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,WAAW,IAAI,EAAE,CAAC;QAC9D,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,IAAI,4BAA4B,CAAC,CAAC;QACnF,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE,8BAA8B,CAAC,CAAC;QACjE,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE,+BAA+B,CAAC,CAAC;QAClE,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE,gCAAgC,CAAC,CAAC;IACrE,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,wCAAwC,EAAE,GAAG,EAAE;IAClD,MAAM,UAAU,GAAG,eAAe,EAAE,CAAC;IACrC,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC;QAC/D,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,mCAAmC,CAAC,CAAC;QACnF,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC,IAAI,uBAAuB,CAAC,CAAC;QACjF,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,gCAAgC,CAAC,CAAC;IACzG,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IACnG,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,oBAAoB,CAAC,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC;IACrH,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC;IAClH,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAClG,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,mBAAmB,CAAC,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IACxG,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,mBAAmB,CAAC,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IACxG,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,oBAAoB,CAAC,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC1G,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,oBAAoB,CAAC,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC1G,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,wBAAwB,CAAC,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IAC7G,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IACrG,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,sBAAsB,CAAC,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IAC3G,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,sBAAsB,CAAC,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IACzG,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,oBAAoB,CAAC,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;AAC1G,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,wDAAwD,EAAE,GAAG,EAAE;IAClE,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,CAAC,KAAK,CACV,mBAAmB,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAChD,IAAI,EACJ,GAAG,KAAK,CAAC,IAAI,6CAA6C,CAC3D,CAAC;QACF,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,CAAC,KAAK,CACV,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAC7D,KAAK,EACL,GAAG,KAAK,CAAC,IAAI,0DAA0D,CACxE,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,8DAA8D,EAAE,GAAG,EAAE;IACxE,MAAM,UAAU,GAAG,eAAe,EAAE,CAAC;IAErC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,WAAW,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;IAC3E,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,WAAW,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;IAC7E,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,uBAAuB,CAAC,WAAW,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;IAClF,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,oBAAoB,CAAC,WAAW,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;IACjF,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC,WAAW,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;IAC7E,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC,WAAW,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;IAC/E,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,WAAW,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;IAC3E,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,WAAW,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC;IAC9E,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,sBAAsB,CAAC,WAAW,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;IACjF,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,sBAAsB,CAAC,WAAW,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;IACnF,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,oBAAoB,CAAC,WAAW,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;IAC/E,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,uBAAuB,CAAC,WAAW,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;IAClF,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,uBAAuB,CAAC,WAAW,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;IACpF,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,WAAW,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;IAC3E,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,WAAW,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;IAC7E,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC,WAAW,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;IAC7E,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,oBAAoB,CAAC,WAAW,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;IAC/E,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,WAAW,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;IAC5E,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,WAAW,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;IAC3E,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,mBAAmB,CAAC,WAAW,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;IAC9E,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,mBAAmB,CAAC,WAAW,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;IAChF,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,4BAA4B,CAAC,WAAW,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;IACvF,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,oBAAoB,CAAC,WAAW,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;IAC/E,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,WAAW,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;AAC9E,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,0FAA0F,EAAE,GAAG,EAAE;IACpG,MAAM,QAAQ,GAAG;QACf,YAAY,EAAE,KAAK;QACnB,eAAe,EAAE,IAAI;QACrB,cAAc,EAAE,KAAK;QACrB,aAAa,EAAE,IAAI;KACpB,CAAC;IAEF,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,2BAA2B,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACxG,MAAM,CAAC,SAAS,CAAC,wBAAwB,CAAC,6BAA6B,CAAC,EAAE,QAAQ,CAAC,CAAC;AACtF,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,gFAAgF,EAAE,GAAG,EAAE;IAC1F,MAAM,QAAQ,GAAG;QACf,YAAY,EAAE,KAAK;QACnB,eAAe,EAAE,IAAI;QACrB,cAAc,EAAE,KAAK;QACrB,aAAa,EAAE,IAAI;KACpB,CAAC;IAEF,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,sBAAsB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAClG,MAAM,CAAC,SAAS,CAAC,wBAAwB,CAAC,wBAAwB,CAAC,EAAE,QAAQ,CAAC,CAAC;AACjF,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,wFAAwF,EAAE,GAAG,EAAE;IAClG,MAAM,QAAQ,GAAG;QACf,kBAAkB,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE;QAC9G,oBAAoB,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE;QAChH,mBAAmB,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE;QAC/G,4BAA4B,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;QACvH,gBAAgB,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE;KAC9G,CAAC;IACF,MAAM,UAAU,GAAG,eAAe,EAAE,CAAC;IACrC,KAAK,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3D,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;QAClE,MAAM,CAAC,SAAS,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,GAAG,IAAI,WAAW,CAAC,CAAC;IACpF,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,qEAAqE,EAAE,GAAG,EAAE;IAC/E,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC,kBAAkB,CAAC,WAAY,CAAC;IACjE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAChF,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,qBAAqB,EAAE,uBAAuB,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC1G,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACzE,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"catalog.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/catalog.test.ts"],"names":[],"mappings":"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"}
@@ -90,4 +90,27 @@ test("provider import posts JSON with idempotency header and can skip wait", asy
90
90
  globalThis.fetch = original;
91
91
  }
92
92
  });
93
+ test("CSV text imports as JSON so hosted clients never depend on a multipart upload", async () => {
94
+ const original = globalThis.fetch;
95
+ const calls = [];
96
+ globalThis.fetch = (async (url, init) => {
97
+ calls.push([String(url), init]);
98
+ return new Response(JSON.stringify({ success: true, data: { id: importId, status: "processing" } }), { status: 200 });
99
+ });
100
+ try {
101
+ const tool = tools().migma_create_contact_import;
102
+ await tool.handler(tool.inputSchema.parse({ csvContent: "email,first_name\na@b.co,Ana\n", tags: ["VIP"], wait: false }));
103
+ const [url, init] = calls[0];
104
+ assert.equal(url, "https://api.test/v1/contacts/imports");
105
+ assert.equal(new Headers(init.headers).get("Content-Type"), "application/json");
106
+ const body = JSON.parse(String(init.body));
107
+ assert.equal(body.csvContent, "email,first_name\na@b.co,Ana\n");
108
+ assert.equal(body.projectId, projectId);
109
+ assert.deepEqual(body.tags, ["VIP"]);
110
+ assert.equal(body.columnMap.email, "email");
111
+ }
112
+ finally {
113
+ globalThis.fetch = original;
114
+ }
115
+ });
93
116
  //# sourceMappingURL=provider-imports.test.js.map