@migma/mcp 1.1.0 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/index.d.ts +10 -0
- package/build/index.d.ts.map +1 -1
- package/build/index.js +36 -7
- package/build/index.js.map +1 -1
- package/build/prompts/index.d.ts +14 -0
- package/build/prompts/index.d.ts.map +1 -0
- package/build/prompts/index.js +70 -0
- package/build/prompts/index.js.map +1 -0
- package/build/tools/__tests__/catalog.test.d.ts +2 -0
- package/build/tools/__tests__/catalog.test.d.ts.map +1 -0
- package/build/tools/__tests__/catalog.test.js +27 -0
- package/build/tools/__tests__/catalog.test.js.map +1 -0
- package/build/tools/campaigns.d.ts.map +1 -1
- package/build/tools/campaigns.js +107 -14
- package/build/tools/campaigns.js.map +1 -1
- package/build/tools/capabilities.d.ts +16 -0
- package/build/tools/capabilities.d.ts.map +1 -0
- package/build/tools/capabilities.js +101 -0
- package/build/tools/capabilities.js.map +1 -0
- package/build/tools/contacts.d.ts.map +1 -1
- package/build/tools/contacts.js +51 -11
- package/build/tools/contacts.js.map +1 -1
- package/build/tools/domains.d.ts.map +1 -1
- package/build/tools/domains.js +61 -0
- package/build/tools/domains.js.map +1 -1
- package/build/tools/generate.d.ts.map +1 -1
- package/build/tools/generate.js +60 -7
- package/build/tools/generate.js.map +1 -1
- package/build/tools/projects.d.ts.map +1 -1
- package/build/tools/projects.js +21 -0
- package/build/tools/projects.js.map +1 -1
- package/build/tools/segments.d.ts.map +1 -1
- package/build/tools/segments.js +41 -7
- package/build/tools/segments.js.map +1 -1
- package/build/tools/send.d.ts.map +1 -1
- package/build/tools/send.js +29 -32
- package/build/tools/send.js.map +1 -1
- package/build/tools/tags.js +6 -6
- package/build/tools/tags.js.map +1 -1
- package/package.json +11 -3
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { WORKFLOWS } from "../prompts/index.js";
|
|
4
|
+
/**
|
|
5
|
+
* Single source of truth for the tools this server exposes. A test asserts this
|
|
6
|
+
* matches the actually-registered tool names so the catalog can't silently drift.
|
|
7
|
+
* `idempotent` is true only for write tools that accept an `idempotency_key`.
|
|
8
|
+
*/
|
|
9
|
+
export const TOOL_CATALOG = [
|
|
10
|
+
// Projects / brands
|
|
11
|
+
{ name: "migma_list_projects", domain: "projects", summary: "List Migma projects (brands) with ids, names, domains, and statuses.", write: false, idempotent: false },
|
|
12
|
+
{ name: "migma_get_project", domain: "projects", summary: "Get a project's brand details: colors, fonts, logos, tone of voice.", write: false, idempotent: false },
|
|
13
|
+
{ name: "migma_import_brand", domain: "projects", summary: "Import a brand from website URLs and poll until the import completes.", write: true, idempotent: false },
|
|
14
|
+
{ name: "migma_get_field_catalog", domain: "projects", summary: "List subscriber fields, fill rates, and example values for template variables.", write: false, idempotent: false },
|
|
15
|
+
// Email generation
|
|
16
|
+
{ name: "migma_generate_email", domain: "emails", summary: "Generate one email or a series from a prompt using the project's brand.", write: true, idempotent: false },
|
|
17
|
+
{ name: "migma_get_generation_status", domain: "emails", summary: "Check a generation's status; returns per-email ids, HTML, subjects, screenshots.", write: false, idempotent: false },
|
|
18
|
+
{ name: "migma_send_test_email", domain: "emails", summary: "Send a test email for a generated email id or single-email conversation.", write: true, idempotent: false },
|
|
19
|
+
{ name: "migma_get_email", domain: "emails", summary: "Fetch one generated email by emailId with HTML, subject, and screenshots.", write: false, idempotent: false },
|
|
20
|
+
{ name: "migma_edit_email", domain: "emails", summary: "Edit a generated email with a natural-language prompt; returns the new version.", write: true, idempotent: false },
|
|
21
|
+
// Sending
|
|
22
|
+
{ name: "migma_send_email", domain: "sending", summary: "Send a generated email to an individual, tag, or segment.", write: true, idempotent: true },
|
|
23
|
+
// Campaigns
|
|
24
|
+
{ name: "migma_list_campaigns", domain: "campaigns", summary: "List campaigns for a project, optionally filtered by status.", write: false, idempotent: false },
|
|
25
|
+
{ name: "migma_create_campaign", domain: "campaigns", summary: "Create a draft campaign from a generated email.", write: true, idempotent: true },
|
|
26
|
+
{ name: "migma_send_campaign", domain: "campaigns", summary: "Send a draft or scheduled campaign immediately.", write: true, idempotent: true },
|
|
27
|
+
{ name: "migma_schedule_campaign", domain: "campaigns", summary: "Schedule a campaign for future delivery.", write: true, idempotent: true },
|
|
28
|
+
{ name: "migma_cancel_campaign", domain: "campaigns", summary: "Cancel a scheduled campaign.", write: true, idempotent: false },
|
|
29
|
+
{ name: "migma_archive_campaign", domain: "campaigns", summary: "Archive a campaign to hide it from the default list.", write: true, idempotent: false },
|
|
30
|
+
{ name: "migma_unarchive_campaign", domain: "campaigns", summary: "Restore a previously archived campaign.", write: true, idempotent: false },
|
|
31
|
+
{ name: "migma_get_campaign_stats", domain: "campaigns", summary: "Aggregated engagement metrics for a campaign (cached, may be slightly stale).", write: false, idempotent: false },
|
|
32
|
+
{ name: "migma_get_campaign_logs", domain: "campaigns", summary: "Per-recipient delivery logs for a campaign, cursor-paginated.", write: false, idempotent: false },
|
|
33
|
+
// Validation
|
|
34
|
+
{ name: "migma_validate_email", domain: "validation", summary: "Run all validations: client compatibility, links, spelling, spam score.", write: false, idempotent: false },
|
|
35
|
+
{ name: "migma_validate_compatibility", domain: "validation", summary: "Check rendering compatibility across 30+ email clients.", write: false, idempotent: false },
|
|
36
|
+
{ name: "migma_validate_deliverability", domain: "validation", summary: "Analyze spam triggers and predict inbox placement.", write: false, idempotent: false },
|
|
37
|
+
// Export
|
|
38
|
+
{ name: "migma_export_html", domain: "export", summary: "Export a generated email as production-ready HTML.", write: false, idempotent: false },
|
|
39
|
+
{ name: "migma_export_mjml", domain: "export", summary: "Export a generated email as MJML markup.", write: false, idempotent: false },
|
|
40
|
+
{ name: "migma_export_pdf", domain: "export", summary: "Export a generated email as a PDF document.", write: false, idempotent: false },
|
|
41
|
+
{ name: "migma_export_klaviyo", domain: "export", summary: "Export a generated email in Klaviyo-compatible format.", write: false, idempotent: false },
|
|
42
|
+
{ name: "migma_export_mailchimp", domain: "export", summary: "Export a generated email in Mailchimp-compatible format.", write: false, idempotent: false },
|
|
43
|
+
{ name: "migma_export_hubspot", domain: "export", summary: "Export a generated email in HubSpot-compatible format.", write: false, idempotent: false },
|
|
44
|
+
// Domains
|
|
45
|
+
{ name: "migma_list_domains", domain: "domains", summary: "List all sending domains (custom and managed).", write: false, idempotent: false },
|
|
46
|
+
{ name: "migma_create_managed_domain", domain: "domains", summary: "Create an instant managed sending domain with no DNS setup.", write: true, idempotent: false },
|
|
47
|
+
{ name: "migma_verify_domain", domain: "domains", summary: "Verify DNS records for a custom sending domain.", write: true, idempotent: false },
|
|
48
|
+
{ name: "migma_provision_stream", domain: "domains", summary: "Provision one transactional or marketing sending identity on a domain.", write: true, idempotent: false },
|
|
49
|
+
{ name: "migma_setup_domain", domain: "domains", summary: "Provision both transactional and marketing identities on a domain in one call.", write: true, idempotent: false },
|
|
50
|
+
// Contacts
|
|
51
|
+
{ name: "migma_list_contacts", domain: "contacts", summary: "List contacts with optional filters and pagination.", write: false, idempotent: false },
|
|
52
|
+
{ name: "migma_add_contact", domain: "contacts", summary: "Create a new contact/subscriber.", write: true, idempotent: true },
|
|
53
|
+
{ name: "migma_get_contact", domain: "contacts", summary: "Get details about a contact by id.", write: false, idempotent: false },
|
|
54
|
+
{ name: "migma_remove_contact", domain: "contacts", summary: "Delete a contact by id.", write: true, idempotent: false },
|
|
55
|
+
{ name: "migma_batch_delete_contacts_by_email", domain: "contacts", summary: "Delete up to 1000 contacts by email in one call.", write: true, idempotent: false },
|
|
56
|
+
// Tags
|
|
57
|
+
{ name: "migma_list_tags", domain: "tags", summary: "List all tags for a project.", write: false, idempotent: false },
|
|
58
|
+
{ name: "migma_create_tag", domain: "tags", summary: "Create a tag for organizing contacts.", write: true, idempotent: false },
|
|
59
|
+
{ name: "migma_delete_tag", domain: "tags", summary: "Delete a tag by id.", write: true, idempotent: false },
|
|
60
|
+
// Segments
|
|
61
|
+
{ name: "migma_list_segments", domain: "segments", summary: "List all audience segments for a project.", write: false, idempotent: false },
|
|
62
|
+
{ name: "migma_create_segment", domain: "segments", summary: "Create an audience segment with optional filters.", write: true, idempotent: false },
|
|
63
|
+
{ name: "migma_delete_segment", domain: "segments", summary: "Delete a segment by id.", write: true, idempotent: false },
|
|
64
|
+
// Webhooks
|
|
65
|
+
{ name: "migma_list_webhooks", domain: "webhooks", summary: "List all configured webhooks.", write: false, idempotent: false },
|
|
66
|
+
{ name: "migma_create_webhook", domain: "webhooks", summary: "Create a webhook to receive event notifications.", write: true, idempotent: false },
|
|
67
|
+
{ name: "migma_test_webhook", domain: "webhooks", summary: "Send a test event to a webhook endpoint.", write: true, idempotent: false },
|
|
68
|
+
{ name: "migma_delete_webhook", domain: "webhooks", summary: "Delete a webhook by id.", write: true, idempotent: false },
|
|
69
|
+
// Meta
|
|
70
|
+
{ name: "migma_get_capabilities", domain: "meta", summary: "Self-describe this server: tools, workflows, idempotency, and brand scoping. Call this first.", write: false, idempotent: false },
|
|
71
|
+
];
|
|
72
|
+
export function registerCapabilitiesTool(server) {
|
|
73
|
+
const { version } = createRequire(import.meta.url)("../../package.json");
|
|
74
|
+
server.registerTool("migma_get_capabilities", {
|
|
75
|
+
title: "Get Capabilities",
|
|
76
|
+
description: "Self-describe this server: the full tool catalog, guided workflows, idempotency contract, and brand-scoping rules. Call this first so you can plan a sequence of tool calls.",
|
|
77
|
+
inputSchema: z.object({}),
|
|
78
|
+
}, async () => {
|
|
79
|
+
const catalog = {
|
|
80
|
+
server: "migma",
|
|
81
|
+
version,
|
|
82
|
+
brandScoping: "API key is account-scoped; pass projectId per tool (or set MIGMA_PROJECT_ID). Resources in another project return 404.",
|
|
83
|
+
idempotency: {
|
|
84
|
+
header: "Idempotency-Key",
|
|
85
|
+
maxLength: 100,
|
|
86
|
+
ttlHours: 24,
|
|
87
|
+
conflictCode: "IDEMPOTENCY_CONFLICT",
|
|
88
|
+
},
|
|
89
|
+
tools: TOOL_CATALOG,
|
|
90
|
+
workflows: WORKFLOWS,
|
|
91
|
+
errors: "Tools return text; failures include the API error message. HTTP errors map to Migma error responses.",
|
|
92
|
+
docs: "https://docs.migma.ai",
|
|
93
|
+
};
|
|
94
|
+
return {
|
|
95
|
+
content: [
|
|
96
|
+
{ type: "text", text: JSON.stringify(catalog, null, 2) },
|
|
97
|
+
],
|
|
98
|
+
};
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=capabilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/tools/capabilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contacts.d.ts","sourceRoot":"","sources":["../../src/tools/contacts.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;
|
|
1
|
+
{"version":3,"file":"contacts.d.ts","sourceRoot":"","sources":["../../src/tools/contacts.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;AAI3C,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,KAAK,EACb,MAAM,EAAE,MAAM,QAwMf"}
|
package/build/tools/contacts.js
CHANGED
|
@@ -7,7 +7,7 @@ export function registerContactTools(server, client, config) {
|
|
|
7
7
|
projectId: z
|
|
8
8
|
.string()
|
|
9
9
|
.optional()
|
|
10
|
-
.describe("Project ID.
|
|
10
|
+
.describe("Project ID. Local stdio uses MIGMA_PROJECT_ID if not provided; hosted remote clients should pass projectId."),
|
|
11
11
|
limit: z
|
|
12
12
|
.number()
|
|
13
13
|
.int()
|
|
@@ -17,7 +17,7 @@ export function registerContactTools(server, client, config) {
|
|
|
17
17
|
.describe("Max results (default 20)"),
|
|
18
18
|
page: z.number().int().min(1).optional().describe("Page number"),
|
|
19
19
|
status: z
|
|
20
|
-
.enum(["
|
|
20
|
+
.enum(["subscribed", "unsubscribed", "bounced", "non-subscribed"])
|
|
21
21
|
.optional()
|
|
22
22
|
.describe("Filter by status"),
|
|
23
23
|
search: z.string().optional().describe("Search by email or name"),
|
|
@@ -29,7 +29,7 @@ export function registerContactTools(server, client, config) {
|
|
|
29
29
|
}, async (args) => {
|
|
30
30
|
const projectId = args.projectId || config.projectId;
|
|
31
31
|
if (!projectId) {
|
|
32
|
-
return toolError("projectId is required. Provide
|
|
32
|
+
return toolError("projectId is required. Provide projectId, or set MIGMA_PROJECT_ID when using local stdio.");
|
|
33
33
|
}
|
|
34
34
|
const { data, error } = await client.contacts.list({
|
|
35
35
|
projectId,
|
|
@@ -50,29 +50,42 @@ export function registerContactTools(server, client, config) {
|
|
|
50
50
|
email: z.string().email().describe("Contact email address"),
|
|
51
51
|
firstName: z.string().optional().describe("First name"),
|
|
52
52
|
lastName: z.string().optional().describe("Last name"),
|
|
53
|
+
phone: z.string().max(30).optional().describe("Phone number"),
|
|
53
54
|
tags: z.array(z.string()).optional().describe("Tag IDs to assign"),
|
|
54
55
|
customFields: z
|
|
55
56
|
.record(z.unknown())
|
|
56
57
|
.optional()
|
|
57
58
|
.describe("Custom field values"),
|
|
59
|
+
status: z
|
|
60
|
+
.enum(["subscribed", "unsubscribed", "bounced", "non-subscribed"])
|
|
61
|
+
.optional()
|
|
62
|
+
.describe("Contact status. Defaults to subscribed."),
|
|
58
63
|
projectId: z
|
|
59
64
|
.string()
|
|
60
65
|
.optional()
|
|
61
|
-
.describe("Project ID.
|
|
66
|
+
.describe("Project ID. Local stdio uses MIGMA_PROJECT_ID if not provided; hosted remote clients should pass projectId."),
|
|
67
|
+
idempotency_key: z
|
|
68
|
+
.string()
|
|
69
|
+
.max(100)
|
|
70
|
+
.optional()
|
|
71
|
+
.describe("Optional Idempotency-Key for safe retries; same key+body within 24h replays the original result."),
|
|
62
72
|
}),
|
|
63
73
|
}, async (args) => {
|
|
64
74
|
const projectId = args.projectId || config.projectId;
|
|
65
75
|
if (!projectId) {
|
|
66
|
-
return toolError("projectId is required. Provide
|
|
76
|
+
return toolError("projectId is required. Provide projectId, or set MIGMA_PROJECT_ID when using local stdio.");
|
|
67
77
|
}
|
|
68
|
-
const
|
|
78
|
+
const contact = {
|
|
69
79
|
email: args.email,
|
|
70
80
|
firstName: args.firstName,
|
|
71
81
|
lastName: args.lastName,
|
|
82
|
+
phone: args.phone,
|
|
72
83
|
tags: args.tags,
|
|
73
84
|
customFields: args.customFields,
|
|
85
|
+
status: args.status,
|
|
74
86
|
projectId,
|
|
75
|
-
}
|
|
87
|
+
};
|
|
88
|
+
const { data, error } = await client.contacts.create(contact, args.idempotency_key ? { idempotencyKey: args.idempotency_key } : undefined);
|
|
76
89
|
if (error)
|
|
77
90
|
return toolError(error.message);
|
|
78
91
|
return toolResult(data);
|
|
@@ -85,12 +98,12 @@ export function registerContactTools(server, client, config) {
|
|
|
85
98
|
projectId: z
|
|
86
99
|
.string()
|
|
87
100
|
.optional()
|
|
88
|
-
.describe("Project ID.
|
|
101
|
+
.describe("Project ID. Local stdio uses MIGMA_PROJECT_ID if not provided; hosted remote clients should pass projectId."),
|
|
89
102
|
}),
|
|
90
103
|
}, async (args) => {
|
|
91
104
|
const projectId = args.projectId || config.projectId;
|
|
92
105
|
if (!projectId) {
|
|
93
|
-
return toolError("projectId is required. Provide
|
|
106
|
+
return toolError("projectId is required. Provide projectId, or set MIGMA_PROJECT_ID when using local stdio.");
|
|
94
107
|
}
|
|
95
108
|
const { data, error } = await client.contacts.get(args.id, projectId);
|
|
96
109
|
if (error)
|
|
@@ -105,18 +118,45 @@ export function registerContactTools(server, client, config) {
|
|
|
105
118
|
projectId: z
|
|
106
119
|
.string()
|
|
107
120
|
.optional()
|
|
108
|
-
.describe("Project ID.
|
|
121
|
+
.describe("Project ID. Local stdio uses MIGMA_PROJECT_ID if not provided; hosted remote clients should pass projectId."),
|
|
109
122
|
}),
|
|
110
123
|
}, async (args) => {
|
|
111
124
|
const projectId = args.projectId || config.projectId;
|
|
112
125
|
if (!projectId) {
|
|
113
|
-
return toolError("projectId is required. Provide
|
|
126
|
+
return toolError("projectId is required. Provide projectId, or set MIGMA_PROJECT_ID when using local stdio.");
|
|
114
127
|
}
|
|
115
128
|
const { data, error } = await client.contacts.remove(args.id, projectId);
|
|
116
129
|
if (error)
|
|
117
130
|
return toolError(error.message);
|
|
118
131
|
return toolResult(data);
|
|
119
132
|
});
|
|
133
|
+
server.registerTool("migma_batch_delete_contacts_by_email", {
|
|
134
|
+
title: "Batch Delete Contacts",
|
|
135
|
+
description: "Delete up to 1000 contacts by email in one call. Emails with no matching contact are returned in `notFound`, not treated as errors.",
|
|
136
|
+
inputSchema: z.object({
|
|
137
|
+
emails: z
|
|
138
|
+
.array(z.string().email())
|
|
139
|
+
.min(1)
|
|
140
|
+
.max(1000)
|
|
141
|
+
.describe("Email addresses to delete (1-1000)"),
|
|
142
|
+
projectId: z
|
|
143
|
+
.string()
|
|
144
|
+
.optional()
|
|
145
|
+
.describe("Project ID. Local stdio uses MIGMA_PROJECT_ID if not provided; hosted remote clients should pass projectId."),
|
|
146
|
+
}),
|
|
147
|
+
}, async (args) => {
|
|
148
|
+
const projectId = args.projectId || config.projectId;
|
|
149
|
+
if (!projectId) {
|
|
150
|
+
return toolError("projectId is required. Provide projectId, or set MIGMA_PROJECT_ID when using local stdio.");
|
|
151
|
+
}
|
|
152
|
+
const { data, error } = await client.contacts.bulkDeleteByEmail({
|
|
153
|
+
emails: args.emails,
|
|
154
|
+
projectId,
|
|
155
|
+
});
|
|
156
|
+
if (error)
|
|
157
|
+
return toolError(error.message);
|
|
158
|
+
return toolResult(data);
|
|
159
|
+
});
|
|
120
160
|
}
|
|
121
161
|
function toolResult(data) {
|
|
122
162
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contacts.js","sourceRoot":"","sources":["../../src/tools/contacts.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"contacts.js","sourceRoot":"","sources":["../../src/tools/contacts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domains.d.ts","sourceRoot":"","sources":["../../src/tools/domains.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAGnC,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"domains.d.ts","sourceRoot":"","sources":["../../src/tools/domains.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAGnC,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,QAyHnE"}
|
package/build/tools/domains.js
CHANGED
|
@@ -37,6 +37,67 @@ export function registerDomainTools(server, client) {
|
|
|
37
37
|
return toolError(error.message);
|
|
38
38
|
return toolResult(data);
|
|
39
39
|
});
|
|
40
|
+
server.registerTool("migma_provision_stream", {
|
|
41
|
+
title: "Provision Stream Identity",
|
|
42
|
+
description: "Provision a transactional or marketing sending identity on a domain you own. Creates notify.<rootDomain> (transactional) or send.<rootDomain> (marketing) to isolate transactional reputation from marketing. Returns DNS records to publish.",
|
|
43
|
+
inputSchema: z.object({
|
|
44
|
+
rootDomain: z
|
|
45
|
+
.string()
|
|
46
|
+
.describe("The apex domain you own, e.g. 'acme.com'"),
|
|
47
|
+
stream: z
|
|
48
|
+
.enum(["transactional", "marketing"])
|
|
49
|
+
.describe("transactional → notify.<domain>; marketing → send.<domain>"),
|
|
50
|
+
region: z
|
|
51
|
+
.enum(["us-east-1", "eu-west-1"])
|
|
52
|
+
.optional()
|
|
53
|
+
.describe("AWS region. Defaults to us-east-1."),
|
|
54
|
+
vanityRootFrom: z
|
|
55
|
+
.boolean()
|
|
56
|
+
.optional()
|
|
57
|
+
.describe("Show the apex domain in the From header when DMARC passes."),
|
|
58
|
+
}),
|
|
59
|
+
}, async (args) => {
|
|
60
|
+
const { data, error } = await client.domains.provisionStream({
|
|
61
|
+
rootDomain: args.rootDomain,
|
|
62
|
+
stream: args.stream,
|
|
63
|
+
region: args.region,
|
|
64
|
+
vanityRootFrom: args.vanityRootFrom,
|
|
65
|
+
});
|
|
66
|
+
if (error)
|
|
67
|
+
return toolError(error.message);
|
|
68
|
+
return toolResult(data);
|
|
69
|
+
});
|
|
70
|
+
server.registerTool("migma_setup_domain", {
|
|
71
|
+
title: "Set Up Domain (Both Streams)",
|
|
72
|
+
description: "Provision BOTH sending identities on a domain you own in one call: send.<rootDomain> (marketing) and notify.<rootDomain> (transactional), isolating transactional reputation from marketing. Idempotent. Returns DNS records for both identities.",
|
|
73
|
+
inputSchema: z.object({
|
|
74
|
+
rootDomain: z
|
|
75
|
+
.string()
|
|
76
|
+
.describe("The apex domain you own, e.g. 'acme.com'"),
|
|
77
|
+
region: z
|
|
78
|
+
.enum(["us-east-1", "eu-west-1"])
|
|
79
|
+
.optional()
|
|
80
|
+
.describe("AWS region. Defaults to us-east-1."),
|
|
81
|
+
fromName: z
|
|
82
|
+
.string()
|
|
83
|
+
.optional()
|
|
84
|
+
.describe("Default From display name for the provisioned identities."),
|
|
85
|
+
vanityRootFrom: z
|
|
86
|
+
.boolean()
|
|
87
|
+
.optional()
|
|
88
|
+
.describe("Show the apex domain in the From header when DMARC passes. Defaults to true."),
|
|
89
|
+
}),
|
|
90
|
+
}, async (args) => {
|
|
91
|
+
const { data, error } = await client.domains.setup({
|
|
92
|
+
rootDomain: args.rootDomain,
|
|
93
|
+
region: args.region,
|
|
94
|
+
fromName: args.fromName,
|
|
95
|
+
vanityRootFrom: args.vanityRootFrom,
|
|
96
|
+
});
|
|
97
|
+
if (error)
|
|
98
|
+
return toolError(error.message);
|
|
99
|
+
return toolResult(data);
|
|
100
|
+
});
|
|
40
101
|
}
|
|
41
102
|
function toolResult(data) {
|
|
42
103
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domains.js","sourceRoot":"","sources":["../../src/tools/domains.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,UAAU,mBAAmB,CAAC,MAAiB,EAAE,MAAa;IAClE,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;QACE,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,qDAAqD;KACnE,EACD,KAAK,IAAI,EAAE;QACT,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACpD,IAAI,KAAK;YAAE,OAAO,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3C,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,6BAA6B,EAC7B;QACE,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EACT,4GAA4G;QAC9G,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,QAAQ,CAAC,0DAA0D,CAAC;SACxE,CAAC;KACH,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC;YACzD,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;QACH,IAAI,KAAK;YAAE,OAAO,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3C,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;QACE,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,iDAAiD;QAC9D,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;SAC9E,CAAC;KACH,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjE,IAAI,KAAK;YAAE,OAAO,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3C,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CACF,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,IAAa;IAC/B,OAAO;QACL,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;SAC/D;KACF,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,OAAe;IAChC,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QACnD,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"domains.js","sourceRoot":"","sources":["../../src/tools/domains.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;
|
|
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;AAS3C,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,KAAK,EACb,MAAM,EAAE,MAAM,QAiJf"}
|
package/build/tools/generate.js
CHANGED
|
@@ -2,28 +2,36 @@ import { z } from "zod";
|
|
|
2
2
|
export function registerGenerateTools(server, client, config) {
|
|
3
3
|
server.registerTool("migma_generate_email", {
|
|
4
4
|
title: "Generate Email",
|
|
5
|
-
description: "Generate
|
|
5
|
+
description: "Generate one email or a series from a text prompt. Uses the project's brand identity and returns finished HTML, subject lines, email IDs, and screenshots when complete.",
|
|
6
6
|
inputSchema: z.object({
|
|
7
7
|
projectId: z
|
|
8
8
|
.string()
|
|
9
9
|
.optional()
|
|
10
|
-
.describe("Project/brand ID.
|
|
10
|
+
.describe("Project/brand ID. Local stdio uses MIGMA_PROJECT_ID if not provided; hosted remote clients should pass projectId."),
|
|
11
11
|
prompt: z.string().min(1).describe("Email generation prompt"),
|
|
12
12
|
languages: z
|
|
13
13
|
.array(z.string())
|
|
14
14
|
.max(5)
|
|
15
15
|
.optional()
|
|
16
16
|
.describe("Languages (e.g. ['en', 'fr']). Default: ['en']"),
|
|
17
|
+
count: z
|
|
18
|
+
.number()
|
|
19
|
+
.int()
|
|
20
|
+
.min(1)
|
|
21
|
+
.max(12)
|
|
22
|
+
.optional()
|
|
23
|
+
.describe("Target email count for a series. Omit to infer from prompt."),
|
|
17
24
|
}),
|
|
18
25
|
}, async (args) => {
|
|
19
26
|
const projectId = args.projectId || config.projectId;
|
|
20
27
|
if (!projectId) {
|
|
21
|
-
return toolError("projectId is required. Provide
|
|
28
|
+
return toolError("projectId is required. Provide projectId, or set MIGMA_PROJECT_ID when using local stdio.");
|
|
22
29
|
}
|
|
23
30
|
const { data, error } = await client.emails.generateAndWait({
|
|
24
31
|
projectId,
|
|
25
32
|
prompt: args.prompt,
|
|
26
33
|
languages: args.languages,
|
|
34
|
+
count: args.count,
|
|
27
35
|
});
|
|
28
36
|
if (error)
|
|
29
37
|
return toolError(error.message);
|
|
@@ -31,7 +39,7 @@ export function registerGenerateTools(server, client, config) {
|
|
|
31
39
|
});
|
|
32
40
|
server.registerTool("migma_get_generation_status", {
|
|
33
41
|
title: "Get Generation Status",
|
|
34
|
-
description: "Check the status of an email generation.
|
|
42
|
+
description: "Check the status of an email generation. When complete, result.emails[] contains each generated email's emailId, HTML, subject, and screenshot URLs.",
|
|
35
43
|
inputSchema: z.object({
|
|
36
44
|
conversationId: z.string().describe("The conversation/generation ID"),
|
|
37
45
|
}),
|
|
@@ -43,15 +51,60 @@ export function registerGenerateTools(server, client, config) {
|
|
|
43
51
|
});
|
|
44
52
|
server.registerTool("migma_send_test_email", {
|
|
45
53
|
title: "Send Test Email",
|
|
46
|
-
description: "Send a test email for a generated
|
|
54
|
+
description: "Send a test email for a generated email ID or a single-email conversation.",
|
|
47
55
|
inputSchema: z.object({
|
|
48
|
-
|
|
56
|
+
emailId: z
|
|
57
|
+
.string()
|
|
58
|
+
.optional()
|
|
59
|
+
.describe("Generated email ID from result.emails[].emailId"),
|
|
60
|
+
conversationId: z
|
|
61
|
+
.string()
|
|
62
|
+
.optional()
|
|
63
|
+
.describe("Conversation ID. Works when the conversation contains a single email."),
|
|
49
64
|
to: z.string().email().describe("Recipient email address"),
|
|
50
65
|
}),
|
|
51
66
|
}, async (args) => {
|
|
52
|
-
|
|
67
|
+
if (!args.emailId && !args.conversationId) {
|
|
68
|
+
return toolError("emailId or conversationId is required.");
|
|
69
|
+
}
|
|
70
|
+
const sendTestParams = {
|
|
71
|
+
emailId: args.emailId,
|
|
53
72
|
conversationId: args.conversationId,
|
|
54
73
|
to: args.to,
|
|
74
|
+
};
|
|
75
|
+
const { data, error } = await client.emails.sendTest(sendTestParams);
|
|
76
|
+
if (error)
|
|
77
|
+
return toolError(error.message);
|
|
78
|
+
return toolResult(data);
|
|
79
|
+
});
|
|
80
|
+
server.registerTool("migma_get_email", {
|
|
81
|
+
title: "Get Email",
|
|
82
|
+
description: "Fetch one generated email by emailId. Returns email-safe HTML, subject, screenshot URLs, and metadata.",
|
|
83
|
+
inputSchema: z.object({
|
|
84
|
+
emailId: z.string().describe("Generated email ID from result.emails[].emailId"),
|
|
85
|
+
}),
|
|
86
|
+
}, async (args) => {
|
|
87
|
+
const { data, error } = await client.emails.get(args.emailId);
|
|
88
|
+
if (error)
|
|
89
|
+
return toolError(error.message);
|
|
90
|
+
return toolResult(data);
|
|
91
|
+
});
|
|
92
|
+
server.registerTool("migma_edit_email", {
|
|
93
|
+
title: "Edit Email",
|
|
94
|
+
description: "Edit one generated email with a natural-language prompt. Returns the updated HTML, subject, screenshot URLs, and metadata.",
|
|
95
|
+
inputSchema: z.object({
|
|
96
|
+
emailId: z.string().describe("Generated email ID from result.emails[].emailId"),
|
|
97
|
+
prompt: z
|
|
98
|
+
.string()
|
|
99
|
+
.min(1)
|
|
100
|
+
.describe("Edit instruction, e.g. 'Make the welcome email shorter and more transactional.'"),
|
|
101
|
+
label: z.string().optional().describe("Optional version label for this edit."),
|
|
102
|
+
}),
|
|
103
|
+
}, async (args) => {
|
|
104
|
+
const emails = client.emails;
|
|
105
|
+
const { data, error } = await emails.edit(args.emailId, {
|
|
106
|
+
prompt: args.prompt,
|
|
107
|
+
label: args.label,
|
|
55
108
|
});
|
|
56
109
|
if (error)
|
|
57
110
|
return toolError(error.message);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/tools/generate.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/tools/generate.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAUxB,MAAM,UAAU,qBAAqB,CACnC,MAAiB,EACjB,MAAa,EACb,MAAc;IAEd,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,KAAK,EAAE,gBAAgB;QACvB,WAAW,EACT,0KAA0K;QAC5K,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,mHAAmH,CACpH;YACH,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC;YAC7D,SAAS,EAAE,CAAC;iBACT,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,EAAE;iBACV,QAAQ,CAAC,gDAAgD,CAAC;YAC7D,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,EAAE,CAAC;iBACP,QAAQ,EAAE;iBACV,QAAQ,CAAC,6DAA6D,CAAC;SAC3E,CAAC;KACH,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC;QACrD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,SAAS,CACd,2FAA2F,CAC5F,CAAC;QACJ,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC;YAC1D,SAAS;YACT,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;QACH,IAAI,KAAK;YAAE,OAAO,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3C,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,6BAA6B,EAC7B;QACE,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EACT,sJAAsJ;QACxJ,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;SACtE,CAAC;KACH,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAC7D,IAAI,CAAC,cAAc,CACpB,CAAC;QACF,IAAI,KAAK;YAAE,OAAO,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3C,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,KAAK,EAAE,iBAAiB;QACxB,WAAW,EACT,4EAA4E;QAC9E,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,iDAAiD,CAAC;YAC9D,cAAc,EAAE,CAAC;iBACd,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,uEAAuE,CAAC;YACpF,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;SAC3D,CAAC;KACH,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YAC1C,OAAO,SAAS,CAAC,wCAAwC,CAAC,CAAC;QAC7D,CAAC;QAED,MAAM,cAAc,GAAG;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,EAAE,EAAE,IAAI,CAAC,EAAE;SAC2D,CAAC;QAEzE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QACrE,IAAI,KAAK;YAAE,OAAO,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3C,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,KAAK,EAAE,WAAW;QAClB,WAAW,EACT,wGAAwG;QAC1G,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;SAChF,CAAC;KACH,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9D,IAAI,KAAK;YAAE,OAAO,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3C,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,KAAK,EAAE,YAAY;QACnB,WAAW,EACT,4HAA4H;QAC9H,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;YAC/E,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CAAC,iFAAiF,CAAC;YAC9F,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;SAC/E,CAAC;KACH,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,MAAM,GAAG,MAAM,CAAC,MAAyB,CAAC;QAChD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACtD,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;QACH,IAAI,KAAK;YAAE,OAAO,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3C,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CACF,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,IAAa;IAC/B,OAAO;QACL,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;SAC/D;KACF,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,OAAe;IAChC,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QACnD,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/tools/projects.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;
|
|
1
|
+
{"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/tools/projects.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;AAS3C,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,KAAK,EACb,MAAM,EAAE,MAAM,QAsGf"}
|
package/build/tools/projects.js
CHANGED
|
@@ -57,6 +57,27 @@ export function registerProjectTools(server, client, config) {
|
|
|
57
57
|
return toolError(error.message);
|
|
58
58
|
return toolResult(data);
|
|
59
59
|
});
|
|
60
|
+
server.registerTool("migma_get_field_catalog", {
|
|
61
|
+
title: "Get Project Field Catalog",
|
|
62
|
+
description: "Get the project's subscriber field catalog: which fields exist (e.g. firstName, company), how often each is populated (fillRate 0–1), example values, and whether the field is auto-filled at send time. Use this to discover available template variables before drafting an email. Optionally scope by segmentId or tag.",
|
|
63
|
+
inputSchema: z.object({
|
|
64
|
+
projectId: z.string().describe("The project ID"),
|
|
65
|
+
segmentId: z
|
|
66
|
+
.string()
|
|
67
|
+
.optional()
|
|
68
|
+
.describe("Restrict the catalog to subscribers in this segment"),
|
|
69
|
+
tag: z
|
|
70
|
+
.string()
|
|
71
|
+
.optional()
|
|
72
|
+
.describe("Restrict the catalog to subscribers with this tag id"),
|
|
73
|
+
}),
|
|
74
|
+
}, async (args) => {
|
|
75
|
+
const projects = client.projects;
|
|
76
|
+
const { data, error } = await projects.fieldCatalog(args.projectId, { segmentId: args.segmentId, tag: args.tag });
|
|
77
|
+
if (error)
|
|
78
|
+
return toolError(error.message);
|
|
79
|
+
return toolResult(data);
|
|
80
|
+
});
|
|
60
81
|
}
|
|
61
82
|
function toolResult(data) {
|
|
62
83
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/tools/projects.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/tools/projects.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAUxB,MAAM,UAAU,oBAAoB,CAClC,MAAiB,EACjB,MAAa,EACb,MAAc;IAEd,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;QACE,KAAK,EAAE,eAAe;QACtB,WAAW,EACT,sFAAsF;QACxF,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,GAAG,CAAC;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,0BAA0B,CAAC;YACvC,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,EAAE;iBACV,QAAQ,CAAC,mBAAmB,CAAC;SACjC,CAAC;KACH,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;YACjD,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;QACH,IAAI,KAAK;YAAE,OAAO,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3C,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;QACE,KAAK,EAAE,qBAAqB;QAC5B,WAAW,EACT,yGAAyG;QAC3G,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;SACjD,CAAC;KACH,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClE,IAAI,KAAK;YAAE,OAAO,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3C,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;QACE,KAAK,EAAE,cAAc;QACrB,WAAW,EACT,+HAA+H;QACjI,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,CAAC;iBACJ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,EAAE,CAAC;iBACP,QAAQ,CAAC,mCAAmC,CAAC;SACjD,CAAC;KACH,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC;YAC1D,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC,CAAC;QACH,IAAI,KAAK;YAAE,OAAO,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3C,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,yBAAyB,EACzB;QACE,KAAK,EAAE,2BAA2B;QAClC,WAAW,EACT,4TAA4T;QAC9T,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YAChD,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,qDAAqD,CAAC;YAClE,GAAG,EAAE,CAAC;iBACH,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,sDAAsD,CAAC;SACpE,CAAC;KACH,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAqC,CAAC;QAC9D,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,YAAY,CACjD,IAAI,CAAC,SAAS,EACd,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAC7C,CAAC;QACF,IAAI,KAAK;YAAE,OAAO,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3C,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CACF,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,IAAa;IAC/B,OAAO;QACL,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;SAC/D;KACF,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,OAAe;IAChC,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QACnD,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"segments.d.ts","sourceRoot":"","sources":["../../src/tools/segments.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;
|
|
1
|
+
{"version":3,"file":"segments.d.ts","sourceRoot":"","sources":["../../src/tools/segments.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;AAyC3C,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,KAAK,EACb,MAAM,EAAE,MAAM,QA2Ff"}
|