@migma/mcp 1.7.3 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +45 -0
- package/build/index.d.ts +4 -0
- package/build/index.d.ts.map +1 -1
- package/build/index.js +25 -15
- package/build/index.js.map +1 -1
- package/build/profiles.d.ts +3 -0
- package/build/profiles.d.ts.map +1 -0
- package/build/profiles.js +14 -0
- package/build/profiles.js.map +1 -0
- package/build/prompts/index.d.ts +1 -0
- package/build/prompts/index.d.ts.map +1 -1
- package/build/prompts/index.js +38 -13
- package/build/prompts/index.js.map +1 -1
- package/build/tools/__tests__/catalog.test.js +36 -4
- package/build/tools/__tests__/catalog.test.js.map +1 -1
- package/build/tools/__tests__/connected-tools.test.d.ts +2 -0
- package/build/tools/__tests__/connected-tools.test.d.ts.map +1 -0
- package/build/tools/__tests__/connected-tools.test.js +66 -0
- package/build/tools/__tests__/connected-tools.test.js.map +1 -0
- package/build/tools/__tests__/contact-exports.test.d.ts +2 -0
- package/build/tools/__tests__/contact-exports.test.d.ts.map +1 -0
- package/build/tools/__tests__/contact-exports.test.js +70 -0
- package/build/tools/__tests__/contact-exports.test.js.map +1 -0
- package/build/tools/__tests__/context.test.js +11 -2
- package/build/tools/__tests__/context.test.js.map +1 -1
- package/build/tools/__tests__/openai-profile.test.d.ts +2 -0
- package/build/tools/__tests__/openai-profile.test.d.ts.map +1 -0
- package/build/tools/__tests__/openai-profile.test.js +56 -0
- package/build/tools/__tests__/openai-profile.test.js.map +1 -0
- package/build/tools/__tests__/provider-imports.test.d.ts +2 -0
- package/build/tools/__tests__/provider-imports.test.d.ts.map +1 -0
- package/build/tools/__tests__/provider-imports.test.js +93 -0
- package/build/tools/__tests__/provider-imports.test.js.map +1 -0
- package/build/tools/annotations.d.ts +14 -0
- package/build/tools/annotations.d.ts.map +1 -1
- package/build/tools/annotations.js +3 -2
- package/build/tools/annotations.js.map +1 -1
- package/build/tools/billing.d.ts +2 -1
- package/build/tools/billing.d.ts.map +1 -1
- package/build/tools/billing.js +8 -7
- package/build/tools/billing.js.map +1 -1
- package/build/tools/campaigns.js +2 -2
- package/build/tools/campaigns.js.map +1 -1
- package/build/tools/capabilities.d.ts +4 -2
- package/build/tools/capabilities.d.ts.map +1 -1
- package/build/tools/capabilities.js +40 -16
- package/build/tools/capabilities.js.map +1 -1
- package/build/tools/connected-tools.d.ts +5 -0
- package/build/tools/connected-tools.d.ts.map +1 -0
- package/build/tools/connected-tools.js +56 -0
- package/build/tools/connected-tools.js.map +1 -0
- package/build/tools/contact-exports.d.ts +4 -0
- package/build/tools/contact-exports.d.ts.map +1 -0
- package/build/tools/contact-exports.js +67 -0
- package/build/tools/contact-exports.js.map +1 -0
- package/build/tools/contacts.d.ts.map +1 -1
- package/build/tools/contacts.js +130 -6
- package/build/tools/contacts.js.map +1 -1
- package/build/tools/context.d.ts +2 -1
- package/build/tools/context.d.ts.map +1 -1
- package/build/tools/context.js +14 -13
- package/build/tools/context.js.map +1 -1
- package/build/tools/domains.d.ts +2 -1
- package/build/tools/domains.d.ts.map +1 -1
- package/build/tools/domains.js +15 -12
- package/build/tools/domains.js.map +1 -1
- package/build/tools/generate.js +5 -5
- package/build/tools/generate.js.map +1 -1
- package/build/tools/projects.js +6 -6
- package/build/tools/projects.js.map +1 -1
- package/build/tools/segments.d.ts +135 -0
- package/build/tools/segments.d.ts.map +1 -1
- package/build/tools/segments.js +1 -1
- package/build/tools/segments.js.map +1 -1
- package/build/tools/send.js +1 -1
- package/build/tools/send.js.map +1 -1
- package/package.json +7 -3
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import assert from 'node:assert/strict';
|
|
2
|
+
import { test } from 'node:test';
|
|
3
|
+
import { createMigmaMcpServer } from '../../index.js';
|
|
4
|
+
const projectId = 'a'.repeat(24), jobId = 'b'.repeat(24);
|
|
5
|
+
function tools(permissions = ['audience:read']) {
|
|
6
|
+
const server = createMigmaMcpServer({ permissions, config: { apiKey: 'test', baseUrl: 'https://api.test/v1', projectId } });
|
|
7
|
+
return server._registeredTools;
|
|
8
|
+
}
|
|
9
|
+
test('exports need audience read, not audience write; missing read hides both tools', () => {
|
|
10
|
+
assert.ok(tools().migma_create_contact_export);
|
|
11
|
+
assert.ok(tools().migma_get_contact_export);
|
|
12
|
+
assert.equal(tools(['audience:write']).migma_create_contact_export, undefined);
|
|
13
|
+
assert.equal(tools(['email:read']).migma_get_contact_export, undefined);
|
|
14
|
+
});
|
|
15
|
+
test('export preserves complex filters, search and stable replay key and returns queued truthfully', async () => {
|
|
16
|
+
const original = globalThis.fetch;
|
|
17
|
+
const calls = [];
|
|
18
|
+
globalThis.fetch = (async (url, init) => {
|
|
19
|
+
calls.push([String(url), init]);
|
|
20
|
+
return new Response(JSON.stringify({ success: true, data: { jobId, projectId, status: 'pending', contactCount: 4321 } }), { status: 202 });
|
|
21
|
+
});
|
|
22
|
+
try {
|
|
23
|
+
const tool = tools().migma_create_contact_export;
|
|
24
|
+
const filters = { status: 'unsubscribed', groups: [{ fields: [{ key: 'tier', mode: 'is', values: ['paid'] }] }] };
|
|
25
|
+
const args = tool.inputSchema.parse({ filters, search: '@example.com', idempotency_key: 'export-1' });
|
|
26
|
+
const result = await tool.handler(args, {});
|
|
27
|
+
assert.equal(calls[0][0], 'https://api.test/v1/contacts/exports');
|
|
28
|
+
assert.equal(calls[0][1].headers['Idempotency-Key'], 'export-1');
|
|
29
|
+
assert.deepEqual(JSON.parse(calls[0][1].body), { projectId, filters: { ...filters, search: '@example.com' } });
|
|
30
|
+
assert.equal(JSON.parse(result.content[0].text).status, 'pending');
|
|
31
|
+
assert.equal(tool.inputSchema.safeParse({ filters }).success, false);
|
|
32
|
+
}
|
|
33
|
+
finally {
|
|
34
|
+
globalThis.fetch = original;
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
test('poll targets exact job and surfaces server failure rather than zero contacts', async () => {
|
|
38
|
+
const original = globalThis.fetch;
|
|
39
|
+
const calls = [];
|
|
40
|
+
globalThis.fetch = (async (url) => {
|
|
41
|
+
calls.push(String(url));
|
|
42
|
+
return new Response(JSON.stringify({ success: false, error: 'Export not found or expired.' }), { status: 404 });
|
|
43
|
+
});
|
|
44
|
+
try {
|
|
45
|
+
const tool = tools().migma_get_contact_export;
|
|
46
|
+
const result = await tool.handler(tool.inputSchema.parse({ jobId }), {});
|
|
47
|
+
assert.equal(calls[0], `https://api.test/v1/contacts/exports/${jobId}?projectId=${projectId}`);
|
|
48
|
+
assert.equal(result.isError, true);
|
|
49
|
+
assert.match(result.content[0].text, /expired/);
|
|
50
|
+
}
|
|
51
|
+
finally {
|
|
52
|
+
globalThis.fetch = original;
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
test('ambiguous submission is never automatically repeated', async () => {
|
|
56
|
+
const original = globalThis.fetch;
|
|
57
|
+
let calls = 0;
|
|
58
|
+
globalThis.fetch = (async () => { calls++; throw new Error('lost acknowledgment'); });
|
|
59
|
+
try {
|
|
60
|
+
const tool = tools().migma_create_contact_export;
|
|
61
|
+
const result = await tool.handler(tool.inputSchema.parse({ idempotency_key: 'same-export' }), {});
|
|
62
|
+
assert.equal(calls, 1);
|
|
63
|
+
assert.equal(result.isError, true);
|
|
64
|
+
assert.match(result.content[0].text, /same idempotency_key/);
|
|
65
|
+
}
|
|
66
|
+
finally {
|
|
67
|
+
globalThis.fetch = original;
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
//# sourceMappingURL=contact-exports.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contact-exports.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/contact-exports.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,9 +21,9 @@ function clientStub() {
|
|
|
21
21
|
billing: { credits: () => ok({ hasCredits: true }) },
|
|
22
22
|
};
|
|
23
23
|
}
|
|
24
|
-
async function context(client, permissions, projectId) {
|
|
24
|
+
async function context(client, permissions, projectId, profile = "general") {
|
|
25
25
|
const server = new McpServer({ name: "test", version: "1" });
|
|
26
|
-
registerContextTools(server, client, permissions);
|
|
26
|
+
registerContextTools(server, client, permissions, undefined, profile);
|
|
27
27
|
const { migma_get_context } = server._registeredTools;
|
|
28
28
|
const result = await migma_get_context.handler({ projectId }, {});
|
|
29
29
|
return JSON.parse(result.content[0].text);
|
|
@@ -86,4 +86,13 @@ test("unavailable reference SDK and absent read permissions stay unknown", async
|
|
|
86
86
|
assert.equal(result.setup.sendingDomain, null);
|
|
87
87
|
assert.doesNotMatch(result.suggestions.join(" "), /migma_save_reference|migma_create_contact_import|migma_setup_domain/);
|
|
88
88
|
});
|
|
89
|
+
test("OpenAI account context explains missing credits without suggesting checkout", async () => {
|
|
90
|
+
const client = clientStub();
|
|
91
|
+
client.billing.credits = () => ok({ hasCredits: false });
|
|
92
|
+
const general = await context(client);
|
|
93
|
+
assert.match(general.suggestions.join(" "), /migma_get_upgrade_link/);
|
|
94
|
+
const openai = await context(client, undefined, undefined, "openai");
|
|
95
|
+
assert.match(openai.suggestions.join(" "), /generation needs more credits/);
|
|
96
|
+
assert.doesNotMatch(openai.suggestions.join(" "), /upgrade|checkout|migma_get_upgrade_link/);
|
|
97
|
+
});
|
|
89
98
|
//# sourceMappingURL=context.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/context.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,oBAAoB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"context.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/context.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai-profile.test.d.ts","sourceRoot":"","sources":["../../../src/tools/__tests__/openai-profile.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import assert from "node:assert/strict";
|
|
2
|
+
import test from "node:test";
|
|
3
|
+
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
4
|
+
import { InMemoryTransport } from "@modelcontextprotocol/sdk/inMemory.js";
|
|
5
|
+
import { createMigmaMcpServer, createOpenAIMcpServer } from "../../index.js";
|
|
6
|
+
import { buildCapabilitiesPayload, TOOL_CATALOG } from "../capabilities.js";
|
|
7
|
+
const excluded = ["migma_search_buyable_domains", "migma_buy_domain", "migma_get_upgrade_link", "migma_list_connected_tools", "migma_get_connected_tool", "migma_call_connected_tool"];
|
|
8
|
+
test("OpenAI wire surface excludes commerce and rejects direct calls without accessing SDK", async () => {
|
|
9
|
+
const server = createOpenAIMcpServer({
|
|
10
|
+
getClient: () => { throw new Error("Must not call SDK"); },
|
|
11
|
+
});
|
|
12
|
+
const client = new Client({ name: "profile-test", version: "1" });
|
|
13
|
+
const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
|
|
14
|
+
try {
|
|
15
|
+
await server.connect(serverTransport);
|
|
16
|
+
await client.connect(clientTransport);
|
|
17
|
+
const { tools } = await client.listTools();
|
|
18
|
+
const names = tools.map(tool => tool.name).sort();
|
|
19
|
+
assert.deepEqual(names, TOOL_CATALOG.map(tool => tool.name).filter(name => !excluded.includes(name)).sort());
|
|
20
|
+
for (const name of excluded) {
|
|
21
|
+
const result = await client.callTool({ name, arguments: {} });
|
|
22
|
+
assert.equal(result.isError, true, name);
|
|
23
|
+
assert.match(JSON.stringify(result), /not found/);
|
|
24
|
+
assert.doesNotMatch(JSON.stringify(result), /Must not call SDK/);
|
|
25
|
+
}
|
|
26
|
+
assert.doesNotMatch(JSON.stringify(tools), /migma_buy_domain|migma_search_buyable_domains|migma_get_upgrade_link/);
|
|
27
|
+
const capabilities = await client.callTool({ name: "migma_get_capabilities", arguments: {} });
|
|
28
|
+
assert.doesNotMatch(JSON.stringify(capabilities), /migma_buy_domain|migma_search_buyable_domains|migma_get_upgrade_link/);
|
|
29
|
+
assert.doesNotMatch(client.getInstructions() ?? "", /checkout|billing portal|chosen plan|offer.*billing/i);
|
|
30
|
+
}
|
|
31
|
+
finally {
|
|
32
|
+
await client.close();
|
|
33
|
+
await server.close();
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
test("OpenAI catalog retains scope checks without advertising excluded tools as unlockable", () => {
|
|
37
|
+
const permissions = ["email:read", "domain:read", "billing:read"];
|
|
38
|
+
const payload = buildCapabilitiesPayload("test", permissions, "openai");
|
|
39
|
+
assert.equal(payload.tools.some(tool => tool.name === "migma_generate_email"), false);
|
|
40
|
+
assert.equal(payload.tools.some(tool => tool.name === "migma_get_domain_purchases"), true);
|
|
41
|
+
assert.equal(payload.tools.some(tool => tool.name === "migma_get_credits"), true);
|
|
42
|
+
assert.doesNotMatch(JSON.stringify(payload), /migma_buy_domain|migma_search_buyable_domains|migma_get_upgrade_link/);
|
|
43
|
+
const server = createOpenAIMcpServer({ permissions });
|
|
44
|
+
const tools = server._registeredTools;
|
|
45
|
+
assert.deepEqual(Object.keys(tools).sort(), payload.tools.map(tool => tool.name).sort());
|
|
46
|
+
});
|
|
47
|
+
test("general MCP retains commerce operations", () => {
|
|
48
|
+
const server = createMigmaMcpServer();
|
|
49
|
+
const tools = server._registeredTools;
|
|
50
|
+
const payload = buildCapabilitiesPayload("test");
|
|
51
|
+
for (const name of excluded) {
|
|
52
|
+
assert.ok(tools[name], name);
|
|
53
|
+
assert.ok(payload.tools.some(tool => tool.name === name), name);
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
//# sourceMappingURL=openai-profile.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai-profile.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/openai-profile.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-imports.test.d.ts","sourceRoot":"","sources":["../../../src/tools/__tests__/provider-imports.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import assert from "node:assert/strict";
|
|
2
|
+
import { test } from "node:test";
|
|
3
|
+
import { createMigmaMcpServer } from "../../index.js";
|
|
4
|
+
const projectId = "a".repeat(24);
|
|
5
|
+
const importId = "b".repeat(24);
|
|
6
|
+
function tools(permissions = ["audience:read", "audience:write"]) {
|
|
7
|
+
const server = createMigmaMcpServer({
|
|
8
|
+
permissions,
|
|
9
|
+
config: { apiKey: "test", baseUrl: "https://api.test/v1", projectId },
|
|
10
|
+
});
|
|
11
|
+
return server._registeredTools;
|
|
12
|
+
}
|
|
13
|
+
test("provider list requires audience:read; import requires audience:write", () => {
|
|
14
|
+
assert.ok(tools(["audience:read"]).migma_list_provider_import_sources);
|
|
15
|
+
assert.equal(tools(["audience:read"]).migma_import_contacts_from_provider, undefined);
|
|
16
|
+
assert.ok(tools(["audience:write"]).migma_import_contacts_from_provider);
|
|
17
|
+
assert.equal(tools(["audience:write"]).migma_list_provider_import_sources, undefined);
|
|
18
|
+
});
|
|
19
|
+
test("list provider sources calls GET with projectId and optional connectionId", async () => {
|
|
20
|
+
const original = globalThis.fetch;
|
|
21
|
+
const calls = [];
|
|
22
|
+
globalThis.fetch = (async (url, init) => {
|
|
23
|
+
calls.push([String(url), init]);
|
|
24
|
+
return new Response(JSON.stringify({
|
|
25
|
+
success: true,
|
|
26
|
+
data: { sources: [{ id: "seg-1", type: "segment", name: "VIP" }] },
|
|
27
|
+
}), { status: 200 });
|
|
28
|
+
});
|
|
29
|
+
try {
|
|
30
|
+
const tool = tools(["audience:read"]).migma_list_provider_import_sources;
|
|
31
|
+
const result = await tool.handler(tool.inputSchema.parse({ provider: "klaviyo", connectionId: "c".repeat(24) }));
|
|
32
|
+
assert.equal(calls[0][0], `https://api.test/v1/contacts/imports/providers/klaviyo/sources?projectId=${projectId}&connectionId=${"c".repeat(24)}`);
|
|
33
|
+
assert.equal(calls[0][1].method, "GET");
|
|
34
|
+
assert.match(JSON.parse(result.content[0].text).sources[0].name, /VIP/);
|
|
35
|
+
}
|
|
36
|
+
finally {
|
|
37
|
+
globalThis.fetch = original;
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
test("provider import posts JSON with idempotency header and can skip wait", async () => {
|
|
41
|
+
const original = globalThis.fetch;
|
|
42
|
+
const calls = [];
|
|
43
|
+
globalThis.fetch = (async (url, init) => {
|
|
44
|
+
calls.push([String(url), init]);
|
|
45
|
+
const path = String(url);
|
|
46
|
+
if (path.endsWith("/contacts/imports/provider")) {
|
|
47
|
+
return new Response(JSON.stringify({
|
|
48
|
+
success: true,
|
|
49
|
+
data: {
|
|
50
|
+
object: "contact_import",
|
|
51
|
+
id: importId,
|
|
52
|
+
status: "pending",
|
|
53
|
+
tag: { id: "t1", name: "VIP" },
|
|
54
|
+
segment: { id: "s1", name: "VIP" },
|
|
55
|
+
},
|
|
56
|
+
}), { status: 201 });
|
|
57
|
+
}
|
|
58
|
+
return new Response(JSON.stringify({ success: true, data: { id: importId, status: "pending" } }), {
|
|
59
|
+
status: 200,
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
try {
|
|
63
|
+
const tool = tools(["audience:write"]).migma_import_contacts_from_provider;
|
|
64
|
+
const sources = [{ id: "seg-1", type: "segment", name: "VIP" }];
|
|
65
|
+
const args = tool.inputSchema.parse({
|
|
66
|
+
provider: "mailchimp",
|
|
67
|
+
sources,
|
|
68
|
+
consentMode: "include-all",
|
|
69
|
+
idempotency_key: "import-1",
|
|
70
|
+
wait: false,
|
|
71
|
+
});
|
|
72
|
+
const result = await tool.handler(args);
|
|
73
|
+
assert.equal(calls[0][0], "https://api.test/v1/contacts/imports/provider");
|
|
74
|
+
assert.equal(calls[0][1].method, "POST");
|
|
75
|
+
const headers = calls[0][1].headers;
|
|
76
|
+
assert.equal(headers["Idempotency-Key"], "import-1");
|
|
77
|
+
assert.equal(headers["Content-Type"], "application/json");
|
|
78
|
+
assert.deepEqual(JSON.parse(String(calls[0][1].body)), {
|
|
79
|
+
projectId,
|
|
80
|
+
provider: "mailchimp",
|
|
81
|
+
sources,
|
|
82
|
+
consentMode: "include-all",
|
|
83
|
+
});
|
|
84
|
+
assert.equal(calls.length, 1);
|
|
85
|
+
const payload = JSON.parse(result.content[0].text);
|
|
86
|
+
assert.equal(payload.status, "pending");
|
|
87
|
+
assert.match(payload.hint, /migma_get_contact_import/);
|
|
88
|
+
}
|
|
89
|
+
finally {
|
|
90
|
+
globalThis.fetch = original;
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
//# sourceMappingURL=provider-imports.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-imports.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/provider-imports.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,13 @@ export declare const READ_ONLY_TOOL: {
|
|
|
5
5
|
idempotentHint?: boolean | undefined;
|
|
6
6
|
openWorldHint?: boolean | undefined;
|
|
7
7
|
};
|
|
8
|
+
export declare const OPEN_WORLD_READ_ONLY_TOOL: {
|
|
9
|
+
title?: string | undefined;
|
|
10
|
+
readOnlyHint?: boolean | undefined;
|
|
11
|
+
destructiveHint?: boolean | undefined;
|
|
12
|
+
idempotentHint?: boolean | undefined;
|
|
13
|
+
openWorldHint?: boolean | undefined;
|
|
14
|
+
};
|
|
8
15
|
export declare const MUTATING_TOOL: {
|
|
9
16
|
title?: string | undefined;
|
|
10
17
|
readOnlyHint?: boolean | undefined;
|
|
@@ -40,6 +47,13 @@ export declare const DESTRUCTIVE_TOOL: {
|
|
|
40
47
|
idempotentHint?: boolean | undefined;
|
|
41
48
|
openWorldHint?: boolean | undefined;
|
|
42
49
|
};
|
|
50
|
+
export declare const IDEMPOTENT_DESTRUCTIVE_TOOL: {
|
|
51
|
+
title?: string | undefined;
|
|
52
|
+
readOnlyHint?: boolean | undefined;
|
|
53
|
+
destructiveHint?: boolean | undefined;
|
|
54
|
+
idempotentHint?: boolean | undefined;
|
|
55
|
+
openWorldHint?: boolean | undefined;
|
|
56
|
+
};
|
|
43
57
|
export declare const OPEN_WORLD_DESTRUCTIVE_TOOL: {
|
|
44
58
|
title?: string | undefined;
|
|
45
59
|
readOnlyHint?: boolean | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"annotations.d.ts","sourceRoot":"","sources":["../../src/tools/annotations.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"annotations.d.ts","sourceRoot":"","sources":["../../src/tools/annotations.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,cAAc;;;;;;CAAwC,CAAC;AACpE,eAAO,MAAM,yBAAyB;;;;;;CAAuC,CAAC;AAC9E,eAAO,MAAM,aAAa;;;;;;CAA0C,CAAC;AACrE,eAAO,MAAM,wBAAwB;;;;;;CAAyC,CAAC;AAC/E,eAAO,MAAM,wBAAwB;;;;;;CAAyC,CAAC;AAC/E,eAAO,MAAM,mCAAmC;;;;;;CAK/C,CAAC;AACF,eAAO,MAAM,gBAAgB;;;;;;CAAyC,CAAC;AACvE,eAAO,MAAM,2BAA2B;;;;;;CAAwC,CAAC;AACjF,eAAO,MAAM,2BAA2B;;;;;;CAAwC,CAAC;AACjF,eAAO,MAAM,sCAAsC;;;;;;CAKlD,CAAC"}
|
|
@@ -6,14 +6,15 @@ function annotations(readOnlyHint, destructiveHint, idempotentHint, openWorldHin
|
|
|
6
6
|
openWorldHint,
|
|
7
7
|
};
|
|
8
8
|
}
|
|
9
|
-
// Keep every hint explicit
|
|
10
|
-
// each advertised value, and omitted hints can be interpreted as unsafe defaults.
|
|
9
|
+
// Keep every hint explicit and tied to behavior; omitted hints use MCP defaults.
|
|
11
10
|
export const READ_ONLY_TOOL = annotations(true, false, true, false);
|
|
11
|
+
export const OPEN_WORLD_READ_ONLY_TOOL = annotations(true, false, true, true);
|
|
12
12
|
export const MUTATING_TOOL = annotations(false, false, false, false);
|
|
13
13
|
export const IDEMPOTENT_MUTATING_TOOL = annotations(false, false, true, false);
|
|
14
14
|
export const OPEN_WORLD_MUTATING_TOOL = annotations(false, false, false, true);
|
|
15
15
|
export const IDEMPOTENT_OPEN_WORLD_MUTATING_TOOL = annotations(false, false, true, true);
|
|
16
16
|
export const DESTRUCTIVE_TOOL = annotations(false, true, false, false);
|
|
17
|
+
export const IDEMPOTENT_DESTRUCTIVE_TOOL = annotations(false, true, true, false);
|
|
17
18
|
export const OPEN_WORLD_DESTRUCTIVE_TOOL = annotations(false, true, false, true);
|
|
18
19
|
export const IDEMPOTENT_OPEN_WORLD_DESTRUCTIVE_TOOL = annotations(false, true, true, true);
|
|
19
20
|
//# sourceMappingURL=annotations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"annotations.js","sourceRoot":"","sources":["../../src/tools/annotations.ts"],"names":[],"mappings":"AAEA,SAAS,WAAW,CAClB,YAAqB,EACrB,eAAwB,EACxB,cAAuB,EACvB,aAAsB;IAEtB,OAAO;QACL,YAAY;QACZ,eAAe;QACf,cAAc;QACd,aAAa;KACd,CAAC;AACJ,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"annotations.js","sourceRoot":"","sources":["../../src/tools/annotations.ts"],"names":[],"mappings":"AAEA,SAAS,WAAW,CAClB,YAAqB,EACrB,eAAwB,EACxB,cAAuB,EACvB,aAAsB;IAEtB,OAAO;QACL,YAAY;QACZ,eAAe;QACf,cAAc;QACd,aAAa;KACd,CAAC;AACJ,CAAC;AAED,iFAAiF;AACjF,MAAM,CAAC,MAAM,cAAc,GAAG,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACpE,MAAM,CAAC,MAAM,yBAAyB,GAAG,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC9E,MAAM,CAAC,MAAM,aAAa,GAAG,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AACrE,MAAM,CAAC,MAAM,wBAAwB,GAAG,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAC/E,MAAM,CAAC,MAAM,wBAAwB,GAAG,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAC/E,MAAM,CAAC,MAAM,mCAAmC,GAAG,WAAW,CAC5D,KAAK,EACL,KAAK,EACL,IAAI,EACJ,IAAI,CACL,CAAC;AACF,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AACvE,MAAM,CAAC,MAAM,2BAA2B,GAAG,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACjF,MAAM,CAAC,MAAM,2BAA2B,GAAG,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AACjF,MAAM,CAAC,MAAM,sCAAsC,GAAG,WAAW,CAC/D,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,IAAI,CACL,CAAC"}
|
package/build/tools/billing.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
2
|
import type { Migma } from "migma";
|
|
3
|
-
|
|
3
|
+
import { type MigmaMcpProfile } from "../profiles.js";
|
|
4
|
+
export declare function registerBillingTools(server: McpServer, client: Migma, grantedPermissions?: string[], profile?: MigmaMcpProfile): void;
|
|
4
5
|
//# sourceMappingURL=billing.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"billing.d.ts","sourceRoot":"","sources":["../../src/tools/billing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"billing.d.ts","sourceRoot":"","sources":["../../src/tools/billing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAGnC,OAAO,EAAmB,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAYvE,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,KAAK,EACb,kBAAkB,CAAC,EAAE,MAAM,EAAE,EAC7B,OAAO,GAAE,eAA2B,QA2CrC"}
|
package/build/tools/billing.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { canUse } from "../permissions.js";
|
|
3
|
-
import {
|
|
3
|
+
import { isToolInProfile } from "../profiles.js";
|
|
4
|
+
import { OPEN_WORLD_DESTRUCTIVE_TOOL, READ_ONLY_TOOL } from "./annotations.js";
|
|
4
5
|
const UPGRADE_PLANS = [
|
|
5
6
|
"basic",
|
|
6
7
|
"premium",
|
|
@@ -9,7 +10,7 @@ const UPGRADE_PLANS = [
|
|
|
9
10
|
"premium_annual",
|
|
10
11
|
"business_annual",
|
|
11
12
|
];
|
|
12
|
-
export function registerBillingTools(server, client, grantedPermissions) {
|
|
13
|
+
export function registerBillingTools(server, client, grantedPermissions, profile = "general") {
|
|
13
14
|
if (canUse(grantedPermissions, ["billing:read"])) {
|
|
14
15
|
server.registerTool("migma_get_credits", {
|
|
15
16
|
title: "Get Plan & Credits",
|
|
@@ -22,16 +23,16 @@ export function registerBillingTools(server, client, grantedPermissions) {
|
|
|
22
23
|
return toolResult(data);
|
|
23
24
|
});
|
|
24
25
|
}
|
|
25
|
-
if (canUse(grantedPermissions, ["billing:write"])) {
|
|
26
|
+
if (isToolInProfile("migma_get_upgrade_link", profile) && canUse(grantedPermissions, ["billing:write"])) {
|
|
26
27
|
server.registerTool("migma_get_upgrade_link", {
|
|
27
|
-
title: "Get
|
|
28
|
-
annotations:
|
|
29
|
-
description: "
|
|
28
|
+
title: "Get Billing Link",
|
|
29
|
+
annotations: OPEN_WORLD_DESTRUCTIVE_TOOL,
|
|
30
|
+
description: "Get a Migma checkout or billing-portal URL after the user asks to subscribe or manage billing, including accepting a relevant offer when credits block their task. For existing subscribers, omit plan so they review changes in the billing portal. For new subscribers, pass only the plan the user chose. Passing plan for an existing subscription can change it and charge a prorated payment immediately; require explicit approval for that charge before doing so. Show the returned link once. Never invent prices, automatically retry an unknown billing write, or claim payment completed from a link; recheck credits before resuming blocked work.",
|
|
30
31
|
inputSchema: z.object({
|
|
31
32
|
plan: z
|
|
32
33
|
.enum(UPGRADE_PLANS)
|
|
33
34
|
.optional()
|
|
34
|
-
.describe("
|
|
35
|
+
.describe("User-chosen plan for new subscription checkout. Omit for an existing subscriber's billing portal. Passing a plan for an existing subscription can change it and charge immediately; needs explicit charge approval. Never choose a plan for the user."),
|
|
35
36
|
}),
|
|
36
37
|
}, async (args) => {
|
|
37
38
|
const { data, error } = await client.billing.upgradeLink({ plan: args.plan });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"billing.js","sourceRoot":"","sources":["../../src/tools/billing.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"billing.js","sourceRoot":"","sources":["../../src/tools/billing.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAwB,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,2BAA2B,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAE/E,MAAM,aAAa,GAAG;IACpB,OAAO;IACP,SAAS;IACT,UAAU;IACV,cAAc;IACd,gBAAgB;IAChB,iBAAiB;CACT,CAAC;AAEX,MAAM,UAAU,oBAAoB,CAClC,MAAiB,EACjB,MAAa,EACb,kBAA6B,EAC7B,UAA2B,SAAS;IAEpC,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC;QACjD,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;YACE,KAAK,EAAE,oBAAoB;YAC3B,WAAW,EAAE,cAAc;YAC3B,WAAW,EACT,4LAA4L;SAC/L,EACD,KAAK,IAAI,EAAE;YACT,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACvD,IAAI,KAAK;gBAAE,OAAO,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC3C,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC,CACF,CAAC;IACJ,CAAC;IAED,IAAI,eAAe,CAAC,wBAAwB,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC;QACxG,MAAM,CAAC,YAAY,CACjB,wBAAwB,EACxB;YACE,KAAK,EAAE,kBAAkB;YACzB,WAAW,EAAE,2BAA2B;YACxC,WAAW,EACT,koBAAkoB;YACpoB,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpB,IAAI,EAAE,CAAC;qBACJ,IAAI,CAAC,aAAa,CAAC;qBACnB,QAAQ,EAAE;qBACV,QAAQ,CACP,uPAAuP,CACxP;aACJ,CAAC;SACH,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;YACb,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9E,IAAI,KAAK;gBAAE,OAAO,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC3C,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC,CACF,CAAC;IACJ,CAAC;AACH,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"}
|
package/build/tools/campaigns.js
CHANGED
|
@@ -123,7 +123,7 @@ export function registerCampaignTools(server, client, config, grantedPermissions
|
|
|
123
123
|
server.registerTool("migma_send_campaign", {
|
|
124
124
|
title: "Send Campaign",
|
|
125
125
|
annotations: IDEMPOTENT_OPEN_WORLD_DESTRUCTIVE_TOOL,
|
|
126
|
-
description: "Send a draft or scheduled campaign immediately. The campaign must be in 'draft' or 'scheduled' status.",
|
|
126
|
+
description: "Send a draft or scheduled campaign immediately. The campaign must be in 'draft' or 'scheduled' status. Require explicit approval of audience, count, sender, subject, timing, and final preview. For future delivery use migma_schedule_campaign instead. Report the returned state; accepted or queued is not proof of delivered email.",
|
|
127
127
|
inputSchema: z.object({
|
|
128
128
|
campaignId: z.string().describe("Campaign ID to send"),
|
|
129
129
|
idempotency_key: z
|
|
@@ -143,7 +143,7 @@ export function registerCampaignTools(server, client, config, grantedPermissions
|
|
|
143
143
|
server.registerTool("migma_schedule_campaign", {
|
|
144
144
|
title: "Schedule Campaign",
|
|
145
145
|
annotations: IDEMPOTENT_OPEN_WORLD_DESTRUCTIVE_TOOL,
|
|
146
|
-
description: "Schedule a campaign for future delivery.
|
|
146
|
+
description: "Schedule a campaign for future delivery. scheduledAt must be in the future. Require explicit approval of audience, count, sender, subject, final preview, and exact date, time, and timezone. Resolve ambiguous 'Friday' or 'Black Friday' before calling. Say 'Scheduled' with its date and time only after the result confirms the saved schedule; scheduling is not delivery.",
|
|
147
147
|
inputSchema: z.object({
|
|
148
148
|
campaignId: z.string().describe("Campaign ID to schedule"),
|
|
149
149
|
scheduledAt: z
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"campaigns.js","sourceRoot":"","sources":["../../src/tools/campaigns.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"campaigns.js","sourceRoot":"","sources":["../../src/tools/campaigns.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { type MigmaMcpProfile } from "../profiles.js";
|
|
2
3
|
export interface ToolCatalogEntry {
|
|
3
4
|
name: string;
|
|
4
5
|
domain: string;
|
|
@@ -27,9 +28,10 @@ export declare function getToolRequiredScopes(name: string): string[];
|
|
|
27
28
|
export declare function getToolSecuritySchemes(name: string): OAuthSecurityScheme[];
|
|
28
29
|
/** Prefer explicit per-tool annotations; fall back to catalog. Always attach OAuth scopes. */
|
|
29
30
|
export declare function applyToolReviewMetadata(server: McpServer): void;
|
|
30
|
-
export declare function buildCapabilitiesPayload(version: string, grantedPermissions?: string[]): {
|
|
31
|
+
export declare function buildCapabilitiesPayload(version: string, grantedPermissions?: string[], profile?: MigmaMcpProfile): {
|
|
31
32
|
server: string;
|
|
32
33
|
version: string;
|
|
34
|
+
profile: MigmaMcpProfile;
|
|
33
35
|
grantedScopes: string[] | null;
|
|
34
36
|
voice: string;
|
|
35
37
|
deliveryAccess: {
|
|
@@ -58,5 +60,5 @@ export declare function buildCapabilitiesPayload(version: string, grantedPermiss
|
|
|
58
60
|
errors: string;
|
|
59
61
|
docs: string;
|
|
60
62
|
};
|
|
61
|
-
export declare function registerCapabilitiesTool(server: McpServer, grantedPermissions?: string[]): void;
|
|
63
|
+
export declare function registerCapabilitiesTool(server: McpServer, grantedPermissions?: string[], profile?: MigmaMcpProfile): void;
|
|
62
64
|
//# sourceMappingURL=capabilities.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../src/tools/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../src/tools/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,OAAO,EAAmB,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEvE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AA2CD;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,gBAAgB,EA2G1C,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,CAa5E;AAeD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAsC5D;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,EAAE,CAE1E;AAED,8FAA8F;AAC9F,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA0B/D;AAWD,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,EACf,kBAAkB,CAAC,EAAE,MAAM,EAAE,EAC7B,OAAO,GAAE,eAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwDrC;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,SAAS,EACjB,kBAAkB,CAAC,EAAE,MAAM,EAAE,EAC7B,OAAO,GAAE,eAA2B,QAyBrC"}
|