@cookiemunch/mcp 0.7.0 → 0.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/CHANGELOG.md +9 -0
- package/dist/bin.cjs +30 -12
- package/dist/bin.cjs.map +1 -1
- package/dist/bin.d.ts +8 -0
- package/dist/bin.js +1 -1
- package/dist/{chunk-QCLUFJZ5.js → chunk-E2YZUVQY.js} +31 -13
- package/dist/chunk-E2YZUVQY.js.map +1 -0
- package/dist/design-warnings.d.ts +18 -0
- package/dist/index.cjs +30 -12
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +6 -37
- package/dist/index.js +1 -1
- package/dist/tools-config.d.ts +12 -0
- package/dist/tools-integrations.d.ts +7 -0
- package/dist/tools-keys-tags.d.ts +8 -0
- package/dist/tools-platform.d.ts +13 -0
- package/dist/tools-rights-page.d.ts +6 -0
- package/dist/tools.d.ts +33 -0
- package/package.json +3 -3
- package/dist/chunk-QCLUFJZ5.js.map +0 -1
- package/dist/index.d.cts +0 -52
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
Every published release, newest first. Dates are the day the version was cut. Each release tracks the same-numbered `@cookiemunch/sdk`.
|
|
4
4
|
|
|
5
|
+
## 0.8.0 (2026-10-30)
|
|
6
|
+
|
|
7
|
+
- Added: `connect_dsar_executor` takes `mintFrom` and `externalId`; `secretKey` is optional. Built on `@cookiemunch/sdk` 0.8.0.
|
|
8
|
+
- Added: `connect_identity_provider`: one-call connect for an identity provider's privacy orchestrator.
|
|
9
|
+
|
|
10
|
+
## 0.7.1 (2026-10-24)
|
|
11
|
+
|
|
12
|
+
- Changed: tool descriptions name each vendor's own embed manifest (`/.well-known/<product>-embed.json`); built on `@cookiemunch/sdk` 0.7.1.
|
|
13
|
+
|
|
5
14
|
## 0.7.0 (2026-10-24)
|
|
6
15
|
|
|
7
16
|
- Added: `get_sandbox`, `create_sandbox` (erasing a sandbox stays a person's `cookiemunch sandbox delete`), `list_api_versions`, `set_own_api_version`.
|
package/dist/bin.cjs
CHANGED
|
@@ -557,8 +557,10 @@ function registerPlatformTools(tool, client) {
|
|
|
557
557
|
revokeAtlasIdGrant: import_zod2.z.boolean().optional().describe("A preset param, when the preset's params list it: default false. True adds an optional step that revokes the person's app grant on erasure; a credential without the scope reports skipped: insufficient_scope."),
|
|
558
558
|
label: import_zod2.z.string().optional().describe("Your name for the credential, shown beside keyPrefix."),
|
|
559
559
|
system: import_zod2.z.string().optional().describe("The name this connection answers to in a plan, e.g. identity or crm. Required unless the preset has a default."),
|
|
560
|
-
baseUrl: import_zod2.z.string().optional().describe("The system's public https origin. Required unless the preset sets it."),
|
|
561
|
-
secretKey: import_zod2.z.string().describe("Its API key, with whatever scope that system needs to export and erase a user."),
|
|
560
|
+
baseUrl: import_zod2.z.string().optional().describe("The system's public https origin, or a base with a path (cm-standard-v1 v4 on: the path replaces /api/privacy; cm-standard-v2: the contract paths hang off it). Required unless the preset sets it."),
|
|
561
|
+
secretKey: import_zod2.z.string().optional().describe("Its API key, with whatever scope that system needs to export and erase a user. Send this or mintFrom."),
|
|
562
|
+
mintFrom: import_zod2.z.string().optional().describe("In place of secretKey: a partner id (one that registered an executorKeyUrl, e.g. chatly, forumulate, referalli) that mints the key for the site under its partner link. The connection is scoped to that site. With dryRun, the answer's mint says who would mint it; nothing is minted."),
|
|
563
|
+
externalId: import_zod2.z.string().optional().describe("With mintFrom: the partner account the key is minted for. Default: the one the site's live link for that partner names."),
|
|
562
564
|
webhookSecret: import_zod2.z.string().optional().describe("Signing secret of its webhook endpoint. Optional: polling closes tasks without it."),
|
|
563
565
|
auto: import_zod2.z.boolean().optional().describe("Open a sub-task automatically when a request reaches fulfilment. Default true."),
|
|
564
566
|
orchestrator: import_zod2.z.union([import_zod2.z.literal(1), import_zod2.z.literal(2)]).optional().describe("How it takes part in cases. Default 2 (v2 headers on every call); 1 is the v1 adapter. The answer carries a completionSecret, shown once, that signs its completions."),
|
|
@@ -805,7 +807,7 @@ function registerIntegrationTools(tool, client) {
|
|
|
805
807
|
);
|
|
806
808
|
tool(
|
|
807
809
|
"get_embed_manifest",
|
|
808
|
-
"A site\u2019s embed manifest (the tenant variant of /.well-known/
|
|
810
|
+
"A site\u2019s embed manifest (the tenant variant of /.well-known/cookiemunch-embed.json): every origin the Cookie Munch embed touches on that site, by CSP directive (non-origin sources such as 'unsafe-inline' under requires), every cookie and browser-storage key it writes with category and lifetime, the checkers\u2019 User-Agent, and the hosts of the site\u2019s rights page and preference centre. Use it to build a Content-Security-Policy. Read-only.",
|
|
809
811
|
{ cbid: import_zod3.z.string() },
|
|
810
812
|
(a) => client.embedManifest(a.cbid)
|
|
811
813
|
);
|
|
@@ -927,12 +929,12 @@ function registerKeyAndTagTools(tool, client) {
|
|
|
927
929
|
const tagsSchema = import_zod4.z.object({
|
|
928
930
|
type: import_zod4.z.enum(TAGGED),
|
|
929
931
|
id: import_zod4.z.string(),
|
|
930
|
-
metadata: import_zod4.z.record(import_zod4.z.union([import_zod4.z.string(), import_zod4.z.number(), import_zod4.z.boolean(), import_zod4.z.null()])).describe("Keys to set; null removes one.
|
|
932
|
+
metadata: import_zod4.z.record(import_zod4.z.union([import_zod4.z.string(), import_zod4.z.number(), import_zod4.z.boolean(), import_zod4.z.null()])).describe("Keys to set; null removes one. stack_sandbox cannot be set here."),
|
|
931
933
|
dryRun: import_zod4.z.boolean().optional().describe("Answer with the diff, storing nothing. Do this first.")
|
|
932
934
|
});
|
|
933
935
|
tool(
|
|
934
936
|
"update_resource_tags",
|
|
935
|
-
"Change a resource\u2019s tags (merge). For adopting resources created before tags existed, e.g.
|
|
937
|
+
"Change a resource\u2019s tags (merge). For adopting resources created before tags existed, e.g. stack_product and stack_env. A resource can never be made a sandbox after it was created.",
|
|
936
938
|
tagsSchema.shape,
|
|
937
939
|
(a) => {
|
|
938
940
|
const { type, id, metadata, dryRun } = tagsSchema.parse(a);
|
|
@@ -967,7 +969,7 @@ function registerKeyAndTagTools(tool, client) {
|
|
|
967
969
|
);
|
|
968
970
|
tool(
|
|
969
971
|
"get_provision_env",
|
|
970
|
-
"What `
|
|
972
|
+
"What `env` writes for a product provisioned with this stack ref: variable names, non-secret values (cbid, script URL, API base) and references for secrets, never a secret. Read-only.",
|
|
971
973
|
{ ref: import_zod4.z.string() },
|
|
972
974
|
(a) => client.provisionEnv(a.ref)
|
|
973
975
|
);
|
|
@@ -1413,13 +1415,13 @@ ${JSON.stringify(r, null, 2)}` : r;
|
|
|
1413
1415
|
type: import_zod6.z.string().describe("access | deletion | closure | restriction | rectification, or erasure / erase / export."),
|
|
1414
1416
|
emails: import_zod6.z.array(import_zod6.z.string()).optional().describe("The person's addresses."),
|
|
1415
1417
|
identity: import_zod6.z.object({ iss: import_zod6.z.string(), sub: import_zod6.z.string(), ext: import_zod6.z.string().optional(), principal: import_zod6.z.string().optional() }).optional().describe("A signed-in identity from the site's sign-in issuer. People are never linked on email when it is present."),
|
|
1416
|
-
source: import_zod6.z.enum(["product", "
|
|
1418
|
+
source: import_zod6.z.enum(["product", "identity", "admin"]).optional().describe("identity: the site's sign-in provider, whichever it is."),
|
|
1417
1419
|
reason: import_zod6.z.string().optional(),
|
|
1418
1420
|
skipSystems: import_zod6.z.array(import_zod6.z.string()).optional().describe("System names, connection ids, or self."),
|
|
1419
1421
|
fulfill: import_zod6.z.boolean().optional(),
|
|
1420
1422
|
test: import_zod6.z.boolean().optional(),
|
|
1421
1423
|
idempotencyKey: import_zod6.z.string().optional(),
|
|
1422
|
-
trace: import_zod6.z.string().optional().describe("An X-
|
|
1424
|
+
trace: import_zod6.z.string().optional().describe("An X-Trace-Id to keep, from the caller.")
|
|
1423
1425
|
},
|
|
1424
1426
|
(a) => client.dsar.openCase(
|
|
1425
1427
|
{
|
|
@@ -1458,7 +1460,7 @@ ${JSON.stringify(r, null, 2)}` : r;
|
|
|
1458
1460
|
);
|
|
1459
1461
|
tool(
|
|
1460
1462
|
"find_dsar_by_trace",
|
|
1461
|
-
"The rights request carrying one X-
|
|
1463
|
+
"The rights request carrying one X-Trace-Id id \u2014 to follow one event across products. Read-only.",
|
|
1462
1464
|
{ trace: import_zod6.z.string() },
|
|
1463
1465
|
(a) => client.dsar.listByTrace(a.trace)
|
|
1464
1466
|
);
|
|
@@ -1488,6 +1490,22 @@ ${JSON.stringify(r, null, 2)}` : r;
|
|
|
1488
1490
|
typeof a.iss === "string" && typeof a.sub === "string" ? { iss: a.iss, sub: a.sub } : { email: String(a.email ?? "") }
|
|
1489
1491
|
)
|
|
1490
1492
|
);
|
|
1493
|
+
tool(
|
|
1494
|
+
"connect_identity_provider",
|
|
1495
|
+
"Connect an identity provider's privacy orchestrator in one call, so it opens a rights case here when a person deletes their account there. Mints a key holding only dsar:write, locked to the site (no keys:write needed), and hands it to the provider, authorised with the provider instance key. The minted key is never returned, only its prefix; connecting again replaces it. Built in: atlas. Any other provider: pass connector. Run with dryRun first: it mints and sends nothing.",
|
|
1496
|
+
{
|
|
1497
|
+
provider: import_zod6.z.string().describe("The provider id, e.g. atlas."),
|
|
1498
|
+
cbid: import_zod6.z.string().describe("The site the provider opens cases on."),
|
|
1499
|
+
providerKey: import_zod6.z.string().describe("The provider instance's secret key (Atlas: the instance secret key). Used for this one call, never stored."),
|
|
1500
|
+
connector: import_zod6.z.object({ url: import_zod6.z.string(), method: import_zod6.z.enum(["PUT", "POST"]).optional(), body: import_zod6.z.record(import_zod6.z.unknown()) }).optional().describe('Only for a provider with no built-in connector: its https orchestrator URL and JSON body; a body value "{apiKey}" becomes the minted key.'),
|
|
1501
|
+
dryRun: import_zod6.z.boolean().optional().describe("Show the key and the request that would be made, minting and sending nothing.")
|
|
1502
|
+
},
|
|
1503
|
+
(a) => client.integrations.connect(
|
|
1504
|
+
a.provider,
|
|
1505
|
+
{ cbid: a.cbid, providerKey: a.providerKey, ...a.connector ? { connector: a.connector } : {} },
|
|
1506
|
+
{ dryRun: a.dryRun === true }
|
|
1507
|
+
)
|
|
1508
|
+
);
|
|
1491
1509
|
tool(
|
|
1492
1510
|
"advance_dsar",
|
|
1493
1511
|
"Advance a DSAR to a new status (received \u2192 verifying \u2192 in_progress \u2192 completed, or rejected).",
|
|
@@ -1875,7 +1893,7 @@ ${JSON.stringify(r, null, 2)}` : r;
|
|
|
1875
1893
|
(a) => client.sites.applyImport(a.cbid, a.data, a.overwrite ? { overwrite: true } : void 0)
|
|
1876
1894
|
);
|
|
1877
1895
|
const declarationShape = {
|
|
1878
|
-
category: import_zod6.z.string().describe("necessary, preferences, statistics, marketing, or one of the site\u2019s categories.custom ids."),
|
|
1896
|
+
category: import_zod6.z.string().describe("necessary, preferences, statistics, marketing, or one of the site\u2019s categories.suite or categories.custom ids."),
|
|
1879
1897
|
purpose: import_zod6.z.string().describe("What the cookie does, as visitors will read it \u2014 and the fallback for any language purposes lacks."),
|
|
1880
1898
|
purposes: import_zod6.z.record(import_zod6.z.string(), import_zod6.z.string().max(1e3)).nullable().optional().describe('The purpose in other languages, keyed by BCP-47 tag: {"es": "\u2026", "pt-BR": "\u2026"}. The banner, data-cc="declaration" and cookie-declaration.js draw the visitor\u2019s language. null clears.'),
|
|
1881
1899
|
provider: import_zod6.z.string().optional(),
|
|
@@ -1968,7 +1986,7 @@ ${JSON.stringify(r, null, 2)}` : r;
|
|
|
1968
1986
|
);
|
|
1969
1987
|
tool(
|
|
1970
1988
|
"import_cookie_manifest",
|
|
1971
|
-
'Declare ANY vendor\u2019s cookies and browser storage from its embed manifest (/.well-known
|
|
1989
|
+
'Declare ANY vendor\u2019s cookies and browser storage from its embed manifest (/.well-known/<product>-embed.json): give its https URL (re-read hourly afterwards) or the manifest document. The vendor id is the manifest\u2019s product; rows are marked source "manifest". An invalid manifest is refused with each broken rule named. Use dryRun first; remove it with remove_cookie_preset and the product id.',
|
|
1972
1990
|
{
|
|
1973
1991
|
cbid: import_zod6.z.string(),
|
|
1974
1992
|
url: import_zod6.z.string().optional().describe("An https:// embed manifest URL."),
|
|
@@ -2425,7 +2443,7 @@ ${JSON.stringify(r, null, 2)}` : r;
|
|
|
2425
2443
|
}
|
|
2426
2444
|
|
|
2427
2445
|
// src/index.ts
|
|
2428
|
-
var MCP_VERSION = "0.
|
|
2446
|
+
var MCP_VERSION = "0.8.0";
|
|
2429
2447
|
function createCookieMunchMcp(opts) {
|
|
2430
2448
|
const client = opts.client ?? (0, import_sdk.createCookieMunch)({ apiKey: opts.apiKey, baseUrl: opts.baseUrl, userAgent: opts.userAgent ?? `cookiemunch-mcp/${MCP_VERSION}` });
|
|
2431
2449
|
const server = new import_mcp.McpServer({ name: "cookiemunch", version: "1.0.0" });
|