@zapier/zapier-sdk-mcp 0.27.11 → 0.27.13
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 +14 -0
- package/README.md +102 -80
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# @zapier/zapier-sdk-mcp
|
|
2
2
|
|
|
3
|
+
## 0.27.13
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [6397776]
|
|
8
|
+
- @zapier/zapier-sdk@0.118.0
|
|
9
|
+
|
|
10
|
+
## 0.27.12
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- Updated dependencies [5e4e5fc]
|
|
15
|
+
- @zapier/zapier-sdk@0.117.0
|
|
16
|
+
|
|
3
17
|
## 0.27.11
|
|
4
18
|
|
|
5
19
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -150,7 +150,19 @@ pnpm test
|
|
|
150
150
|
- [`create-client-credentials`](#create-client-credentials)
|
|
151
151
|
- [`delete-client-credentials`](#delete-client-credentials)
|
|
152
152
|
- [`list-client-credentials`](#list-client-credentials)
|
|
153
|
-
- [
|
|
153
|
+
- [Connections](#connections)
|
|
154
|
+
- [`create-connection`](#create-connection)
|
|
155
|
+
- [`find-first-connection`](#find-first-connection)
|
|
156
|
+
- [`find-unique-connection`](#find-unique-connection)
|
|
157
|
+
- [`get-connection`](#get-connection)
|
|
158
|
+
- [`get-connection-start-url`](#get-connection-start-url)
|
|
159
|
+
- [`list-connections`](#list-connections)
|
|
160
|
+
- [`wait-for-new-connection`](#wait-for-new-connection)
|
|
161
|
+
- [HTTP Requests](#http-requests)
|
|
162
|
+
- [`fetch`](#fetch)
|
|
163
|
+
- [Human Inputs (Experimental)](#human-inputs-experimental)
|
|
164
|
+
- [`create-form`](#create-form--experimental)
|
|
165
|
+
- [Next Gen Zaps (Experimental)](#next-gen-zaps-experimental)
|
|
154
166
|
- [`cancel-durable-run`](#cancel-durable-run--experimental)
|
|
155
167
|
- [`create-workflow`](#create-workflow--experimental)
|
|
156
168
|
- [`create-workflow-draft`](#create-workflow-draft--experimental)
|
|
@@ -184,18 +196,6 @@ pnpm test
|
|
|
184
196
|
- [`update-workflow`](#update-workflow--experimental)
|
|
185
197
|
- [`update-workflow-draft`](#update-workflow-draft--experimental)
|
|
186
198
|
- [`validate-workflow`](#validate-workflow--experimental)
|
|
187
|
-
- [Connections](#connections)
|
|
188
|
-
- [`create-connection`](#create-connection)
|
|
189
|
-
- [`find-first-connection`](#find-first-connection)
|
|
190
|
-
- [`find-unique-connection`](#find-unique-connection)
|
|
191
|
-
- [`get-connection`](#get-connection)
|
|
192
|
-
- [`get-connection-start-url`](#get-connection-start-url)
|
|
193
|
-
- [`list-connections`](#list-connections)
|
|
194
|
-
- [`wait-for-new-connection`](#wait-for-new-connection)
|
|
195
|
-
- [HTTP Requests](#http-requests)
|
|
196
|
-
- [`fetch`](#fetch)
|
|
197
|
-
- [Human Inputs (Experimental)](#human-inputs-experimental)
|
|
198
|
-
- [`create-form`](#create-form--experimental)
|
|
199
199
|
- [Tables](#tables)
|
|
200
200
|
- [`create-table`](#create-table)
|
|
201
201
|
- [`create-table-fields`](#create-table-fields)
|
|
@@ -243,12 +243,16 @@ All SDK functions are automatically exposed as MCP tools using kebab-case naming
|
|
|
243
243
|
|
|
244
244
|
### Accounts
|
|
245
245
|
|
|
246
|
+
Your Zapier user account, the one the SDK is signed in as. Use these to check who that is.
|
|
247
|
+
|
|
246
248
|
#### `get-profile`
|
|
247
249
|
|
|
248
250
|
Get current user's profile information
|
|
249
251
|
|
|
250
252
|
### Actions
|
|
251
253
|
|
|
254
|
+
An action is something an app can do, like sending an email or creating a contact. Use these to find an app's actions, see what inputs they need, and run them directly, outside a Zap.
|
|
255
|
+
|
|
252
256
|
#### `create-action-run`
|
|
253
257
|
|
|
254
258
|
Start an action run and return its ID without waiting for the result. Running an action is asynchronous: this hands back a run ID immediately, and `getActionRun` fetches the outcome. Reach for this pair when you want to start work and collect it later (fan out many runs, hand the ID to another process, survive a restart). `runAction` is the one-call form that starts a run and waits for its result.
|
|
@@ -283,6 +287,8 @@ Execute an action with the given inputs and wait for its results. Each result pa
|
|
|
283
287
|
|
|
284
288
|
### Apps
|
|
285
289
|
|
|
290
|
+
An app is a web service that connects with Zapier, like Gmail or Slack. Use these to find apps and the keys other methods use to refer to them.
|
|
291
|
+
|
|
286
292
|
#### `get-app`
|
|
287
293
|
|
|
288
294
|
Get detailed information about a specific app
|
|
@@ -293,6 +299,8 @@ List all available apps with optional filtering
|
|
|
293
299
|
|
|
294
300
|
### Client Credentials
|
|
295
301
|
|
|
302
|
+
SDK client credentials are a client ID and client secret that authenticate your code to the Zapier SDK, separate from the connections that authenticate apps. Use these to create, list, and revoke them.
|
|
303
|
+
|
|
296
304
|
#### `create-client-credentials`
|
|
297
305
|
|
|
298
306
|
Create new client credentials for the authenticated user
|
|
@@ -305,7 +313,81 @@ Delete client credentials by client ID
|
|
|
305
313
|
|
|
306
314
|
List client credentials for the authenticated user
|
|
307
315
|
|
|
308
|
-
###
|
|
316
|
+
### Connections
|
|
317
|
+
|
|
318
|
+
A connection is an authenticated link between Zapier and your account in an app, like your company's Slack workspace, made with OAuth or an API key. Use these to find existing connections or create new ones for actions, triggers, and API requests to use.
|
|
319
|
+
|
|
320
|
+
#### `create-connection`
|
|
321
|
+
|
|
322
|
+
Create a new app connection, end-to-end. Mints the start URL via `get-connection-start-url`, prints it to stderr, opportunistically opens it in a browser when it looks safe to do so (skipping CI / SSH / headless-Linux by default — pass `--browser always` to force, `--browser never` to suppress), then polls via `wait-for-new-connection` until the user completes OAuth and the new connection appears. Returns the connection.
|
|
323
|
+
|
|
324
|
+
This is the right command for most callers. Reach for the lower-level building blocks when you want either of: (a) hand off the URL and _not_ block on completion — call `get-connection-start-url` alone, no `wait-for-new-connection` needed, or (b) do something custom between minting the URL and waiting — call `get-connection-start-url`, do your work (email or DM the URL, render a QR code, etc.), then `wait-for-new-connection`.
|
|
325
|
+
|
|
326
|
+
#### `find-first-connection`
|
|
327
|
+
|
|
328
|
+
Find the first connection matching the criteria
|
|
329
|
+
|
|
330
|
+
#### `find-unique-connection`
|
|
331
|
+
|
|
332
|
+
Find a unique connection matching the criteria
|
|
333
|
+
|
|
334
|
+
#### `get-connection`
|
|
335
|
+
|
|
336
|
+
Get details for a specific connection
|
|
337
|
+
|
|
338
|
+
#### `get-connection-start-url`
|
|
339
|
+
|
|
340
|
+
Mint a short-lived URL that begins an SDK-initiated connection flow. The URL is signed by zapier.com and bound to the current user/account — opening it in a different browser session will fail the binding check. Returns the URL as data so the caller decides what to do with it.
|
|
341
|
+
|
|
342
|
+
Use this directly (rather than the higher-level `create-connection`) when you want either of: (a) hand off the URL and _not_ block waiting for completion — call this alone, skip `wait-for-new-connection` entirely, or (b) do something custom between minting the URL and waiting for the connection — call this, then email or DM the URL, render it as a QR code for mobile sign-in, etc., then call `wait-for-new-connection`. For the common case where you'd just print and poll back-to-back, `create-connection` is one call.
|
|
343
|
+
|
|
344
|
+
Pair with `wait-for-new-connection` to detect completion: pass the `startedAt` returned here straight through (it's the server's mint time, so polling isn't affected by client clock skew). Example (JS):
|
|
345
|
+
|
|
346
|
+
```ts
|
|
347
|
+
const {
|
|
348
|
+
data: { url, app, startedAt },
|
|
349
|
+
} = await zapier.getConnectionStartUrl({ app: "slack" });
|
|
350
|
+
// hand `url` off — print it, DM it, email it, render a button, whatever
|
|
351
|
+
const { data: conn } = await zapier.waitForNewConnection({ app, startedAt });
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
#### `list-connections`
|
|
355
|
+
|
|
356
|
+
List available connections with optional filtering
|
|
357
|
+
|
|
358
|
+
#### `wait-for-new-connection`
|
|
359
|
+
|
|
360
|
+
Wait for a new connection to appear for the given app. Polls the connections list newest-first until the most recent matching row's `date` is at or after the started-at timestamp, then returns it. Pair with `get-connection-start-url` — that mints the URL the user opens, this waits for the resulting connection to land. Errors with a timeout after the configured timeout (default 5 min). Example (JS):
|
|
361
|
+
|
|
362
|
+
```ts
|
|
363
|
+
const {
|
|
364
|
+
data: { url, app, startedAt },
|
|
365
|
+
} = await zapier.getConnectionStartUrl({ app: "slack" });
|
|
366
|
+
// show `url` to the user via the channel they're reading from
|
|
367
|
+
const { data: conn } = await zapier.waitForNewConnection({ app, startedAt });
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
### HTTP Requests
|
|
371
|
+
|
|
372
|
+
Make authenticated requests to an app's API through Zapier's API proxy, using a connection's credentials so your code never handles tokens or keys. Useful when an app's actions don't cover what you need.
|
|
373
|
+
|
|
374
|
+
#### `fetch`
|
|
375
|
+
|
|
376
|
+
Make authenticated HTTP requests to any API through Zapier. Pass a connectionId to automatically inject the user's stored credentials (OAuth tokens, API keys, etc.) into the outgoing request. Mirrors the native fetch(url, init?) signature with additional Zapier-specific options.
|
|
377
|
+
|
|
378
|
+
### Human Inputs (Experimental)
|
|
379
|
+
|
|
380
|
+
Collect information from people with Zapier Forms. Use these to create a form and share its link to gather responses.
|
|
381
|
+
|
|
382
|
+
> ℹ️ **Experimental.** Still being designed; may change shape or disappear in any release, without notice. Pass `--stability experimental` to `zapier-sdk mcp`, or set `ZAPIER_STABILITY=experimental` in the environment, to use these tools.
|
|
383
|
+
|
|
384
|
+
#### `create-form` 🧪 _experimental_
|
|
385
|
+
|
|
386
|
+
Create a Zapier Form from a title and optional fields. Forms publish by default and return a shareable `hosted_url`; set `draft` to save without publishing.
|
|
387
|
+
|
|
388
|
+
### Next Gen Zaps (Experimental)
|
|
389
|
+
|
|
390
|
+
Next Gen Zaps are a new version of Zaps that run on code, which makes them easier for agents and AI tools to understand. Use these to build, test, publish, and run Next Gen Zaps, and to check on their runs.
|
|
309
391
|
|
|
310
392
|
> ℹ️ **Experimental.** Still being designed; may change shape or disappear in any release, without notice. Pass `--stability experimental` to `zapier-sdk mcp`, or set `ZAPIER_STABILITY=experimental` in the environment, to use these tools.
|
|
311
393
|
|
|
@@ -441,74 +523,10 @@ Update (autosave) an open workflow draft
|
|
|
441
523
|
|
|
442
524
|
Validate durable workflow source without publishing it. Returns source diagnostics; issue kinds are extensible and may be unfamiliar to the client.
|
|
443
525
|
|
|
444
|
-
### Connections
|
|
445
|
-
|
|
446
|
-
#### `create-connection`
|
|
447
|
-
|
|
448
|
-
Create a new app connection, end-to-end. Mints the start URL via `get-connection-start-url`, prints it to stderr, opportunistically opens it in a browser when it looks safe to do so (skipping CI / SSH / headless-Linux by default — pass `--browser always` to force, `--browser never` to suppress), then polls via `wait-for-new-connection` until the user completes OAuth and the new connection appears. Returns the connection.
|
|
449
|
-
|
|
450
|
-
This is the right command for most callers. Reach for the lower-level building blocks when you want either of: (a) hand off the URL and _not_ block on completion — call `get-connection-start-url` alone, no `wait-for-new-connection` needed, or (b) do something custom between minting the URL and waiting — call `get-connection-start-url`, do your work (email or DM the URL, render a QR code, etc.), then `wait-for-new-connection`.
|
|
451
|
-
|
|
452
|
-
#### `find-first-connection`
|
|
453
|
-
|
|
454
|
-
Find the first connection matching the criteria
|
|
455
|
-
|
|
456
|
-
#### `find-unique-connection`
|
|
457
|
-
|
|
458
|
-
Find a unique connection matching the criteria
|
|
459
|
-
|
|
460
|
-
#### `get-connection`
|
|
461
|
-
|
|
462
|
-
Get details for a specific connection
|
|
463
|
-
|
|
464
|
-
#### `get-connection-start-url`
|
|
465
|
-
|
|
466
|
-
Mint a short-lived URL that begins an SDK-initiated connection flow. The URL is signed by zapier.com and bound to the current user/account — opening it in a different browser session will fail the binding check. Returns the URL as data so the caller decides what to do with it.
|
|
467
|
-
|
|
468
|
-
Use this directly (rather than the higher-level `create-connection`) when you want either of: (a) hand off the URL and _not_ block waiting for completion — call this alone, skip `wait-for-new-connection` entirely, or (b) do something custom between minting the URL and waiting for the connection — call this, then email or DM the URL, render it as a QR code for mobile sign-in, etc., then call `wait-for-new-connection`. For the common case where you'd just print and poll back-to-back, `create-connection` is one call.
|
|
469
|
-
|
|
470
|
-
Pair with `wait-for-new-connection` to detect completion: pass the `startedAt` returned here straight through (it's the server's mint time, so polling isn't affected by client clock skew). Example (JS):
|
|
471
|
-
|
|
472
|
-
```ts
|
|
473
|
-
const {
|
|
474
|
-
data: { url, app, startedAt },
|
|
475
|
-
} = await zapier.getConnectionStartUrl({ app: "slack" });
|
|
476
|
-
// hand `url` off — print it, DM it, email it, render a button, whatever
|
|
477
|
-
const { data: conn } = await zapier.waitForNewConnection({ app, startedAt });
|
|
478
|
-
```
|
|
479
|
-
|
|
480
|
-
#### `list-connections`
|
|
481
|
-
|
|
482
|
-
List available connections with optional filtering
|
|
483
|
-
|
|
484
|
-
#### `wait-for-new-connection`
|
|
485
|
-
|
|
486
|
-
Wait for a new connection to appear for the given app. Polls the connections list newest-first until the most recent matching row's `date` is at or after the started-at timestamp, then returns it. Pair with `get-connection-start-url` — that mints the URL the user opens, this waits for the resulting connection to land. Errors with a timeout after the configured timeout (default 5 min). Example (JS):
|
|
487
|
-
|
|
488
|
-
```ts
|
|
489
|
-
const {
|
|
490
|
-
data: { url, app, startedAt },
|
|
491
|
-
} = await zapier.getConnectionStartUrl({ app: "slack" });
|
|
492
|
-
// show `url` to the user via the channel they're reading from
|
|
493
|
-
const { data: conn } = await zapier.waitForNewConnection({ app, startedAt });
|
|
494
|
-
```
|
|
495
|
-
|
|
496
|
-
### HTTP Requests
|
|
497
|
-
|
|
498
|
-
#### `fetch`
|
|
499
|
-
|
|
500
|
-
Make authenticated HTTP requests to any API through Zapier. Pass a connectionId to automatically inject the user's stored credentials (OAuth tokens, API keys, etc.) into the outgoing request. Mirrors the native fetch(url, init?) signature with additional Zapier-specific options.
|
|
501
|
-
|
|
502
|
-
### Human Inputs (Experimental)
|
|
503
|
-
|
|
504
|
-
> ℹ️ **Experimental.** Still being designed; may change shape or disappear in any release, without notice. Pass `--stability experimental` to `zapier-sdk mcp`, or set `ZAPIER_STABILITY=experimental` in the environment, to use these tools.
|
|
505
|
-
|
|
506
|
-
#### `create-form` 🧪 _experimental_
|
|
507
|
-
|
|
508
|
-
Create a Zapier Form from a title and optional fields. Forms publish by default and return a shareable `hosted_url`; set `draft` to save without publishing.
|
|
509
|
-
|
|
510
526
|
### Tables
|
|
511
527
|
|
|
528
|
+
Tables is Zapier's database tool for storing and managing data. Use these to manage tables, their fields, and their records.
|
|
529
|
+
|
|
512
530
|
#### `create-table`
|
|
513
531
|
|
|
514
532
|
Create a new table
|
|
@@ -559,6 +577,8 @@ Update one or more records in a table
|
|
|
559
577
|
|
|
560
578
|
### Triggers
|
|
561
579
|
|
|
580
|
+
A trigger is an event in an app that starts your automation, like a new email received. Use these to find an app's triggers and receive their events directly in your code, outside a Zap.
|
|
581
|
+
|
|
562
582
|
#### `ack-trigger-inbox-messages`
|
|
563
583
|
|
|
564
584
|
Acknowledge messages from a lease. Acked messages are removed from the inbox; unacked ones return to the available pool when the lease expires.
|
|
@@ -625,6 +645,8 @@ Update settings on an existing trigger inbox
|
|
|
625
645
|
|
|
626
646
|
### Virtual File System (Experimental)
|
|
627
647
|
|
|
648
|
+
The Virtual File System is file storage hosted by Zapier. Use these to read, write, and organize files and folders.
|
|
649
|
+
|
|
628
650
|
> ℹ️ **Experimental.** Still being designed; may change shape or disappear in any release, without notice. Pass `--stability experimental` to `zapier-sdk mcp`, or set `ZAPIER_STABILITY=experimental` in the environment, to use these tools.
|
|
629
651
|
|
|
630
652
|
#### `append-vfs-file` 🧪 _experimental_
|
package/dist/index.mjs
CHANGED
|
@@ -270,7 +270,7 @@ function convertZodType(def, schema) {
|
|
|
270
270
|
// package.json
|
|
271
271
|
var package_default = {
|
|
272
272
|
name: "@zapier/zapier-sdk-mcp",
|
|
273
|
-
version: "0.27.
|
|
273
|
+
version: "0.27.13",
|
|
274
274
|
description: "MCP server for Zapier SDK",
|
|
275
275
|
main: "dist/index.mjs",
|
|
276
276
|
types: "dist/index.d.mts",
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/utils/schema-converter.ts","../package.json"],"sourcesContent":["import { Server } from \"@modelcontextprotocol/sdk/server/index.js\";\nimport { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\";\nimport {\n CallToolRequestSchema,\n ListToolsRequestSchema,\n type CallToolRequest,\n} from \"@modelcontextprotocol/sdk/types.js\";\nimport {\n addPlugin,\n applyStabilityLabel,\n createSdk,\n SDK_OPTIONS_ID,\n CORE_OPTIONS_ID,\n zapierCoreOptions,\n DEPRECATION_NOTICE_EVENT,\n zapierSdkPlugin,\n runWithCallerContext,\n isZapierApprovalError,\n type ZapierSdkOptions,\n type ZapierSdk,\n type FunctionRegistryEntry,\n // The free reader, not `zapierSdk.getRegistry()`: the accessor is a\n // re-exportable built-in, so an SDK is free not to surface it.\n getRegistry,\n logDeprecation,\n formatExtensionPluginFailure,\n type Plugin,\n type StabilityLevel,\n} from \"@zapier/zapier-sdk\";\nimport { zapierBetaSdkPlugin } from \"@zapier/zapier-sdk/beta\";\nimport { zapierExperimentalSdkPlugin } from \"@zapier/zapier-sdk/experimental\";\nimport { convertZodToMcpSchema } from \"./utils/schema-converter.js\";\nimport packageJson from \"../package.json\" with { type: \"json\" };\n\ninterface ZapierMcpServerOptions {\n debug?: boolean;\n /**\n * Forwarded to the underlying SDK so a CLI invocation like\n * `zapier-sdk --max-concurrent-requests 50 mcp` actually constrains\n * the MCP server's tool calls. Undefined falls through to the SDK's\n * own resolution chain (option > env var > default).\n */\n maxConcurrentRequests?: number;\n /**\n * Extra plugins to layer onto the SDK before exposing it as MCP tools.\n * Used by the CLI's `mcp` command to forward extensions discovered via\n * the `ZAPIER_SDK_EXTENSIONS` env var. Standalone callers can omit this;\n * the server then uses a vanilla public SDK. Each is forwarded to\n * `addPlugin`, so each must be a descriptor from a `define*` factory.\n */\n extensions?: readonly Plugin[];\n /**\n * Which stability tier of the SDK to build the server against:\n * `\"beta\"` uses `@zapier/zapier-sdk/beta`, `\"experimental\"` uses\n * `@zapier/zapier-sdk/experimental`, so that tier's plugins appear as\n * MCP tools. Mirrors the CLI's `--stability <level>` opt-in: a default\n * invocation only ever sees stable plugins.\n */\n stability?: StabilityLevel;\n /**\n * @deprecated Use `stability: \"experimental\"` instead. `true` selects\n * the experimental tier when `stability` is not set.\n */\n experimental?: boolean;\n}\n\n/**\n * Creates an MCP server that exposes Zapier SDK functions as MCP tools.\n *\n * The server automatically discovers all available SDK functions and converts\n * their Zod schemas to MCP-compatible JSON schemas. It handles tool execution\n * by validating inputs and calling the appropriate SDK functions.\n *\n * @param options - Configuration options for the MCP server\n * @param options.debug - Enable debug logging for detailed error information\n * @returns An MCP server instance configured to expose Zapier SDK tools\n *\n * @example\n * ```typescript\n * const server = createZapierMcpServer({ debug: true });\n * const transport = new StdioServerTransport();\n * await server.connect(transport);\n * ```\n */\nfunction createZapierMcpServer({\n debug = false,\n maxConcurrentRequests,\n extensions = [],\n stability,\n experimental = false,\n}: ZapierMcpServerOptions = {}) {\n // Pick the SDK root by opt-in: each tier's aggregate is a strict superset\n // of the one below it (beta re-exports zapierSdkPlugin plus the beta\n // plugins; experimental re-exports beta), so the registry path used below\n // works the same regardless of root. The deprecated `experimental`\n // boolean only applies when no level is declared.\n let level: StabilityLevel = \"stable\";\n if (stability) {\n level = stability;\n } else if (experimental) {\n // Warn as it resolves, so a host still passing the released boolean\n // learns the replacement. Stderr, which is where the SDK's own notices\n // go and is not part of the stdio protocol stream.\n logDeprecation(\n 'The `experimental` option is deprecated. Use `stability: \"experimental\"` instead.',\n );\n level = \"experimental\";\n }\n const sdkRootPlugin = {\n stable: zapierSdkPlugin,\n beta: zapierBetaSdkPlugin,\n experimental: zapierExperimentalSdkPlugin,\n }[level];\n\n // Active SDK deprecation notices, keyed by notice id. The SDK's own\n // console.warn goes to stderr, which agents never see over stdio — so the\n // server attaches each active notice to every tool result, instructing the\n // agent to relay it to the user. No per-call dedupe: an agent that ignores\n // the block once still surfaces it on a later call. Keying by id keeps a\n // single result from repeating the same notice.\n const activeDeprecationNotices = new Map<string, string>();\n\n const deprecationNoticeContent = () =>\n Array.from(activeDeprecationNotices.values(), (message) => ({\n type: \"text\" as const,\n text: `⚠️ Zapier SDK deprecation notice: ${message} You **must** relay this warning to the user — this will break soon.`,\n }));\n\n const stackOptions: ZapierSdkOptions = {\n debug,\n maxConcurrentRequests,\n eventEmission: { callContext: \"mcp\" },\n callerPackage: { name: packageJson.name, version: packageJson.version },\n approvalMode: \"throw\",\n onEvent: (event) => {\n if (event.type !== DEPRECATION_NOTICE_EVENT) return;\n const { id, message } = event.payload ?? {};\n if (typeof id === \"string\" && typeof message === \"string\") {\n activeDeprecationNotices.set(id, message);\n }\n },\n };\n const zapierSdk: ZapierSdk = createSdk(sdkRootPlugin, {\n configuration: {\n [SDK_OPTIONS_ID]: stackOptions,\n [CORE_OPTIONS_ID]: zapierCoreOptions,\n },\n }) as unknown as ZapierSdk;\n\n // Layer extension plugins on top of the vanilla SDK so their methods show\n // up in `getRegistry({ package: \"mcp\" })` alongside the public surface.\n // Same robustness contract as the CLI: a broken extension warns and\n // skips rather than killing the MCP server. `addPlugin` is atomic\n // (validate-then-apply), so a failed extension leaves the sdk in its\n // prior consistent state.\n for (const ext of extensions) {\n try {\n addPlugin(zapierSdk, ext);\n } catch (err) {\n console.warn(formatExtensionPluginFailure(err));\n }\n }\n\n // Create MCP server\n const server = new Server(\n {\n name: \"zapier-sdk\",\n version: \"1.0.0\",\n },\n {\n capabilities: {\n tools: {},\n },\n },\n );\n\n // Register list_tools handler - dynamically list all SDK functions as tools\n server.setRequestHandler(ListToolsRequestSchema, async () => {\n const tools = getRegistry(zapierSdk, \"mcp\").functions.map(\n (functionInfo: FunctionRegistryEntry) => {\n const toolName = functionInfo.name\n .replace(/([A-Z])/g, \"-$1\")\n .toLowerCase();\n\n const inputSchema = functionInfo.inputSchema;\n const baseDescription =\n functionInfo.description ||\n inputSchema?.description ||\n `Execute ${functionInfo.name}`;\n // Label non-stable tools where an LLM listing them reads first —\n // the front of the description — so it can tell which tier's\n // contract a beta / experimental tool carries. The label follows the\n // plugin's declared level, not the tier the server was built with.\n const description = applyStabilityLabel({\n description: baseDescription,\n stability: functionInfo.stability,\n placement: \"prefix\",\n });\n\n return {\n name: toolName,\n description,\n inputSchema: inputSchema\n ? convertZodToMcpSchema(inputSchema)\n : { type: \"object\", properties: {} },\n };\n },\n );\n\n return { tools };\n });\n\n // Execute SDK functions as tool calls. Kept separate from the registered\n // handler so every return path — success, approval, and error results —\n // flows through the deprecation-notice attachment below.\n const handleToolCall = async (request: CallToolRequest) => {\n const { name, arguments: args } = request.params;\n // Convert kebab-case tool name back to camelCase function name\n const functionName = name.replace(/-([a-z])/g, (_, letter) =>\n letter.toUpperCase(),\n );\n\n // Find the function info\n const functionInfo: FunctionRegistryEntry | undefined = getRegistry(\n zapierSdk,\n \"mcp\",\n ).functions.find(\n (info: FunctionRegistryEntry) => info.name === functionName,\n );\n\n if (!functionInfo) {\n const availableTools = getRegistry(zapierSdk, \"mcp\")\n .functions.map((info) =>\n info.name.replace(/([A-Z])/g, \"-$1\").toLowerCase(),\n )\n .join(\", \");\n throw new Error(\n `Unknown tool: ${name}. Available tools: ${availableTools}`,\n );\n }\n\n try {\n let result: unknown;\n\n if (functionInfo.inputSchema) {\n const validatedArgs = functionInfo.inputSchema.parse(\n args || {},\n ) as Record<string, unknown>;\n const sdkFn = (\n zapierSdk as unknown as Record<\n string,\n (...args: unknown[]) => Promise<unknown>\n >\n )[functionInfo.name];\n // A method with a `positional` projection (fetch's `(url, init)`) takes\n // ordered args, not the single bag; spread the validated object by its\n // positional keys. Everything else is single-object.\n result = functionInfo.positional?.length\n ? await sdkFn(\n ...functionInfo.positional.map((name) => validatedArgs[name]),\n )\n : await sdkFn(validatedArgs);\n } else {\n const sdkFn = (\n zapierSdk as unknown as Record<\n string,\n (...args: unknown[]) => Promise<unknown>\n >\n )[functionInfo.name];\n result = await sdkFn();\n }\n\n return {\n content: [\n {\n type: \"text\",\n text: JSON.stringify(result, null, 2),\n },\n ],\n };\n } catch (error) {\n if (debug) {\n console.error(\n `Error executing function '${functionInfo.name}' (tool: ${name}):`,\n error,\n );\n }\n\n if (isZapierApprovalError(error)) {\n switch (error.approvalStatus) {\n // Pending approval: return the URL so the LLM can instruct the user\n case \"pending\":\n return {\n content: [\n {\n type: \"text\",\n text: `This action requires approval. The end user must open this link in their browser to approve this action, then retry this tool call:\\n\\n${error.approvalUrl}`,\n },\n ],\n isError: false,\n };\n // Policy denied: hard deny, cannot be approved\n case \"policy_denied\":\n return {\n content: [\n {\n type: \"text\",\n text: `This action was denied by policy and cannot be approved:\\n\\n${error.message}`,\n },\n ],\n isError: true,\n };\n }\n }\n\n let errorMessage: string;\n let isValidationError = false;\n\n if (error instanceof Error) {\n // Check if it's a Zod validation error\n if (error.name === \"ZodError\") {\n isValidationError = true;\n errorMessage = `Validation error for ${functionInfo.name}: ${error.message}`;\n } else {\n errorMessage = `Error in ${functionInfo.name}: ${error.message}`;\n }\n } else {\n errorMessage = `Unexpected error in ${functionInfo.name}: ${String(error)}`;\n }\n\n const errorSchema = functionInfo.inputSchema\n ? convertZodToMcpSchema(functionInfo.inputSchema)\n : {};\n\n return {\n content: [\n {\n type: \"text\",\n text: isValidationError\n ? `${errorMessage}\\n\\nExpected input format:\\n${JSON.stringify(errorSchema, null, 2)}`\n : errorMessage,\n },\n ],\n isError: true,\n };\n }\n };\n\n server.setRequestHandler(CallToolRequestSchema, async (request) => {\n const { name } = request.params;\n // Use the external wire name (e.g. \"run-action\"), not the camelCase SDK method.\n return runWithCallerContext({ packageOperation: name }, async () => {\n const result = await handleToolCall(request);\n const notices = deprecationNoticeContent();\n if (notices.length === 0) return result;\n return { ...result, content: [...result.content, ...notices] };\n });\n });\n\n return server;\n}\n\n/**\n * Starts an MCP server with stdio transport for CLI usage.\n *\n * This is the main entry point when running the MCP server from the command line.\n * It creates the server and connects it using stdio transport for communication\n * with MCP clients like Claude Code.\n *\n * @param options - Configuration options for the MCP server\n * @param options.debug - Enable debug logging for detailed error information\n *\n * @example\n * ```typescript\n * // Start server with debug logging\n * await startMcpServer({ debug: true });\n * ```\n */\nasync function startMcpServer(\n options: ZapierMcpServerOptions = {},\n): Promise<void> {\n const server = createZapierMcpServer(options);\n const transport = new StdioServerTransport();\n\n return new Promise<void>((resolve) => {\n let isShuttingDown = false;\n\n const cleanup = async () => {\n if (isShuttingDown) return;\n isShuttingDown = true;\n\n try {\n await server.close();\n } finally {\n resolve();\n }\n };\n\n // Handle clean shutdown when client closes connection\n server.onclose = () => {\n cleanup();\n };\n\n // Handle termination signals (Ctrl+C, kill, etc.)\n // Using process.once() to prevent handler accumulation\n process.once(\"SIGINT\", cleanup);\n process.once(\"SIGTERM\", cleanup);\n\n server.connect(transport).catch((error) => {\n console.error(\"Failed to start MCP server:\", error);\n process.exit(1);\n });\n });\n}\n\nexport { createZapierMcpServer, startMcpServer };\n// Exported so the cross-surface description conformance test can read what\n// `tools/list` would advertise without standing up a server over stdio.\nexport { convertZodToMcpSchema } from \"./utils/schema-converter.js\";\n","/**\n * A robust schema converter that handles conversion from Zod schemas to JSON Schema format:\n *\n * **Core Types:**\n * - ✅ Objects, arrays, strings, numbers, booleans\n * - ✅ Enums, unions, intersections, literals\n * - ✅ Optional and nullable fields\n * - ✅ Records and dates\n * - ✅ Nested schemas and complex types\n *\n * **Additional Types:**\n * - ✅ Any, unknown, bigint, null, undefined, void, NaN\n * - ✅ Default values and catch handlers (unwrapped to inner type)\n * - ✅ Graceful fallback for unsupported types\n */\n\nimport type { z } from \"zod\";\nimport { descriptionFor, isInternalField } from \"@zapier/zapier-sdk\";\n\ninterface McpSchema {\n type?: string | string[];\n properties?: Record<string, McpSchema>;\n required?: string[];\n description?: string;\n items?: McpSchema;\n enum?: unknown[];\n anyOf?: McpSchema[];\n oneOf?: McpSchema[];\n allOf?: McpSchema[];\n additionalProperties?: McpSchema | boolean;\n format?: string;\n}\n\n// Zod internal definition structure\ninterface ZodDef {\n type: string; // e.g., \"string\", \"number\", \"object\", \"optional\", etc.\n element?: z.ZodSchema; // For arrays\n innerType?: z.ZodSchema; // For optional, nullable, default, catch\n entries?: Record<string, string>; // For enums\n values?: unknown[]; // For literals\n options?: z.ZodSchema[]; // For unions\n left?: z.ZodSchema; // For intersections\n right?: z.ZodSchema; // For intersections\n keyType?: z.ZodSchema; // For records (key type)\n valueType?: z.ZodSchema; // For records (value type)\n shape?: Record<string, z.ZodSchema>; // For objects (function in some cases)\n}\n\n// Zod schema with description (description is on the schema, not the def)\ninterface ZodSchemaWithDescription extends z.ZodSchema {\n description?: string;\n}\n\ninterface ZodSchemaWithShape extends z.ZodSchema {\n shape?: Record<string, z.ZodSchema>;\n}\n\n/**\n * Gets the Zod def from a schema, with fallback for edge cases\n */\nfunction getZodDef(schema: z.ZodSchema): ZodDef | undefined {\n const schemaAny = schema as unknown as { _zod?: { def?: ZodDef } };\n return schemaAny._zod?.def;\n}\n\n/**\n * Whether a parameter is marked deprecated and should not be advertised.\n *\n * The CLI hides these from `--help` and the docs generator drops them, but the\n * MCP converter emitted every key in the shape — so `tools/list` advertised\n * deprecated parameters alongside their replacements. On `run-action` that was\n * worse than cosmetic: the sentence stating when a connection is required was\n * attached to the deprecated `connectionId`, so MCP callers were shown the rule\n * on the parameter they should not use and CLI callers were shown it nowhere.\n *\n * Checked at every wrapper level because `.meta()` does not propagate through\n * `.optional()` / `.nullable()` / `.default()`, which is how the CLI reads it too.\n */\nfunction isDeprecatedSchema(schema: z.ZodSchema): boolean {\n let current: z.ZodSchema | undefined = schema;\n while (current) {\n const meta = (\n current as unknown as {\n meta?: () => { deprecated?: boolean } | undefined;\n }\n ).meta?.();\n if (meta?.deprecated) return true;\n current = getZodDef(current)?.innerType;\n }\n return false;\n}\n\n/**\n * Gets the description from a Zod schema (description is on the schema object, not the def)\n */\nfunction getDescription(schema?: z.ZodSchema): string | undefined {\n if (!schema) return undefined;\n return descriptionFor(schema as ZodSchemaWithDescription);\n}\n\n/**\n * Put the resolved description where clients read it: the property level.\n *\n * Wrapper branches return the inner conversion, which drops the text declared\n * on the wrapper; and for a nullable union the inner conversion is nested\n * under `anyOf`, leaving its description a level below where any client looks.\n * Both are repaired by writing the resolved text onto the result and clearing\n * the copy the nesting stranded.\n */\nfunction withDescription(\n result: McpSchema,\n description: string | undefined,\n): McpSchema {\n if (!description) return result;\n const anyOf = result.anyOf?.map((branch) => {\n if (branch.description !== description) return branch;\n const { description: _stranded, ...rest } = branch;\n return rest;\n });\n return { ...result, ...(anyOf ? { anyOf } : {}), description };\n}\n\n/**\n * Converts a Zod schema to MCP-compatible JSON Schema format.\n *\n * This function handles the conversion of Zod validation schemas (used internally\n * by the Zapier SDK) to JSON Schema format required by the MCP protocol. It supports\n * most common Zod types including objects, arrays, primitives, enums, unions, and more.\n *\n * @param zodSchema - The Zod schema to convert\n * @returns An MCP-compatible JSON Schema object\n *\n * @example\n * ```typescript\n * import { z } from \"zod\";\n *\n * const userSchema = z.object({\n * name: z.string(),\n * age: z.number().optional(),\n * email: z.string().email()\n * });\n *\n * const mcpSchema = convertZodToMcpSchema(userSchema);\n * // Result: { type: \"object\", properties: { ... }, required: [\"name\", \"email\"] }\n * ```\n */\nfunction convertZodToMcpSchema(zodSchema: z.ZodSchema): McpSchema {\n const def = getZodDef(zodSchema);\n if (!def) {\n // Fallback for schemas without _zod.def (e.g., custom or invalid schemas)\n return {\n type: \"string\",\n description: \"Unsupported schema type\",\n };\n }\n return convertZodType(def, zodSchema);\n}\n\n/**\n * Internal function that recursively converts Zod type definitions to MCP schema format.\n *\n * This function handles the actual conversion logic for different Zod types by examining\n * the internal type definition and converting it to the appropriate JSON Schema structure.\n *\n * @param def - The Zod internal definition object\n * @param schema - The original Zod schema (used for accessing shape in objects)\n * @returns An MCP-compatible JSON Schema object\n * @internal\n */\nfunction convertZodType(def: ZodDef, schema?: z.ZodSchema): McpSchema {\n const description = getDescription(schema);\n\n // Handle object\n if (def.type === \"object\" && schema) {\n const schemaWithShape = schema as ZodSchemaWithShape;\n const properties: Record<string, McpSchema> = {};\n const required: string[] = [];\n\n if (schemaWithShape.shape) {\n for (const [key, value] of Object.entries(schemaWithShape.shape)) {\n // Deprecated and internal fields are left out of what the model sees\n // but stay in the schema calls are parsed with, so they're still\n // accepted when passed.\n if (isDeprecatedSchema(value) || isInternalField(value)) continue;\n const fieldDef = getZodDef(value);\n if (fieldDef) {\n properties[key] = convertZodType(fieldDef, value);\n\n // Check if field is required (not optional or nullable)\n if (fieldDef.type !== \"optional\" && fieldDef.type !== \"nullable\") {\n required.push(key);\n }\n }\n }\n }\n\n const result: McpSchema = {\n type: \"object\",\n properties,\n };\n\n if (description) result.description = description;\n if (required.length > 0) result.required = required;\n\n return result;\n }\n\n // Handle string\n if (def.type === \"string\") {\n const result: McpSchema = { type: \"string\" };\n if (description) result.description = description;\n return result;\n }\n\n // Handle number\n if (def.type === \"number\") {\n const result: McpSchema = { type: \"number\" };\n if (description) result.description = description;\n return result;\n }\n\n // Handle boolean\n if (def.type === \"boolean\") {\n const result: McpSchema = { type: \"boolean\" };\n if (description) result.description = description;\n return result;\n }\n\n // Handle array\n if (def.type === \"array\" && def.element) {\n const elementDef = getZodDef(def.element);\n const result: McpSchema = {\n type: \"array\",\n items: elementDef\n ? convertZodType(elementDef, def.element)\n : { type: \"string\" },\n };\n if (description) result.description = description;\n return result;\n }\n\n // Handle optional\n if (def.type === \"optional\" && def.innerType) {\n const innerDef = getZodDef(def.innerType);\n if (innerDef) {\n return withDescription(\n convertZodType(innerDef, def.innerType),\n description,\n );\n }\n }\n\n // Handle nullable\n if (def.type === \"nullable\" && def.innerType) {\n const innerDef = getZodDef(def.innerType);\n if (innerDef) {\n const innerSchema = convertZodType(innerDef, def.innerType);\n if (innerSchema.type !== undefined) {\n return withDescription(\n {\n ...innerSchema,\n type: Array.isArray(innerSchema.type)\n ? [...innerSchema.type, \"null\"]\n : [innerSchema.type, \"null\"],\n },\n description ?? innerSchema.description,\n );\n }\n return withDescription(\n { anyOf: [innerSchema, { type: \"null\" }] },\n description ?? innerSchema.description,\n );\n }\n }\n\n // Handle enum\n if (def.type === \"enum\" && def.entries) {\n const result: McpSchema = {\n type: \"string\",\n enum: Object.keys(def.entries),\n };\n if (description) result.description = description;\n return result;\n }\n\n // Handle union\n if (def.type === \"union\" && def.options) {\n const result: McpSchema = {\n oneOf: def.options\n .map((option) => {\n const optionDef = getZodDef(option);\n return optionDef ? convertZodType(optionDef, option) : null;\n })\n .filter((s): s is McpSchema => s !== null),\n };\n if (description) result.description = description;\n return result;\n }\n\n // Handle intersection\n if (def.type === \"intersection\" && def.left && def.right) {\n const leftDef = getZodDef(def.left);\n const rightDef = getZodDef(def.right);\n const result: McpSchema = {\n allOf: [\n leftDef ? convertZodType(leftDef, def.left) : { type: \"string\" },\n rightDef ? convertZodType(rightDef, def.right) : { type: \"string\" },\n ],\n };\n if (description) result.description = description;\n return result;\n }\n\n // Handle literal\n if (def.type === \"literal\" && def.values && def.values.length > 0) {\n const value = def.values[0];\n const result: McpSchema = {\n type: typeof value as \"string\" | \"number\" | \"boolean\",\n enum: [value],\n };\n if (description) result.description = description;\n return result;\n }\n\n // Handle record\n if (def.type === \"record\") {\n let additionalProperties: McpSchema | boolean = true;\n if (def.valueType) {\n const valueDef = getZodDef(def.valueType);\n if (valueDef) {\n additionalProperties = convertZodType(valueDef, def.valueType);\n }\n }\n const result: McpSchema = {\n type: \"object\",\n additionalProperties,\n };\n if (description) result.description = description;\n return result;\n }\n\n // Handle any\n if (def.type === \"any\") {\n const result: McpSchema = {};\n if (description) result.description = description;\n return result;\n }\n\n // Handle unknown\n if (def.type === \"unknown\") {\n const result: McpSchema = {};\n if (description) result.description = description;\n return result;\n }\n\n // Handle date\n if (def.type === \"date\") {\n return {\n type: \"string\",\n format: \"date-time\",\n description: description || \"ISO 8601 date-time string\",\n };\n }\n\n // Handle bigint\n if (def.type === \"bigint\") {\n return {\n type: \"string\",\n description: description || \"BigInt as string\",\n };\n }\n\n // Handle undefined\n if (def.type === \"undefined\") {\n return {\n type: \"null\",\n description: description || \"Undefined value\",\n };\n }\n\n // Handle null\n if (def.type === \"null\") {\n return {\n type: \"null\",\n description: description || \"Null value\",\n };\n }\n\n // Handle void\n if (def.type === \"void\") {\n return {\n type: \"null\",\n description: description || \"Void (null) value\",\n };\n }\n\n // Handle nan\n if (def.type === \"nan\") {\n return {\n type: \"number\",\n description: description || \"Not-a-Number value\",\n };\n }\n\n // Handle default\n if (def.type === \"default\" && def.innerType) {\n const innerDef = getZodDef(def.innerType);\n if (innerDef) {\n return withDescription(\n convertZodType(innerDef, def.innerType),\n description,\n );\n }\n }\n\n // Handle catch (with fallback value)\n if (def.type === \"catch\" && def.innerType) {\n const innerDef = getZodDef(def.innerType);\n if (innerDef) {\n return withDescription(\n convertZodType(innerDef, def.innerType),\n description,\n );\n }\n }\n\n // Fallback for unhandled types\n console.warn(\n `Unhandled Zod type: ${def.type}. Please consider adding support for this type.`,\n );\n return {\n type: \"string\",\n description: description || `Unsupported type: ${def.type}`,\n };\n}\n\nexport { convertZodToMcpSchema };\n","{\n \"name\": \"@zapier/zapier-sdk-mcp\",\n \"version\": \"0.27.11\",\n \"description\": \"MCP server for Zapier SDK\",\n \"main\": \"dist/index.mjs\",\n \"types\": \"dist/index.d.mts\",\n \"exports\": {\n \".\": {\n \"source\": \"./src/index.ts\",\n \"import\": {\n \"types\": \"./dist/index.d.mts\",\n \"default\": \"./dist/index.mjs\"\n },\n \"default\": \"./dist/index.mjs\"\n }\n },\n \"scripts\": {\n \"build\": \"tsup\",\n \"clean\": \"rm -rf dist\",\n \"rebuild\": \"pnpm clean && pnpm build\",\n \"dev\": \"tsup --watch\",\n \"typecheck\": \"tsc --noEmit\",\n \"test\": \"vitest\",\n \"test:run\": \"vitest run\",\n \"prepublishOnly\": \"node ../../scripts/check-version.js\"\n },\n \"keywords\": [\n \"zapier\",\n \"sdk\",\n \"mcp\",\n \"model-context-protocol\"\n ],\n \"author\": \"\",\n \"license\": \"SEE LICENSE IN LICENSE\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://gitlab.com/zapier/zapier-sdk/zapier-sdk.git\",\n \"directory\": \"packages/zapier-sdk-mcp\"\n },\n \"publishConfig\": {\n \"access\": \"public\"\n },\n \"dependencies\": {\n \"@modelcontextprotocol/sdk\": \"^1.17.3\",\n \"@zapier/zapier-sdk\": \"workspace:*\",\n \"zod\": \"4.3.6\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^20.0.0\",\n \"tsup\": \"^8.0.0\",\n \"typescript\": \"^5.0.0\",\n \"vitest\": \"^4.1.4\"\n },\n \"files\": [\n \"dist\",\n \"README.md\",\n \"CHANGELOG.md\"\n ]\n}\n"],"mappings":"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","names":["name"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/utils/schema-converter.ts","../package.json"],"sourcesContent":["import { Server } from \"@modelcontextprotocol/sdk/server/index.js\";\nimport { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\";\nimport {\n CallToolRequestSchema,\n ListToolsRequestSchema,\n type CallToolRequest,\n} from \"@modelcontextprotocol/sdk/types.js\";\nimport {\n addPlugin,\n applyStabilityLabel,\n createSdk,\n SDK_OPTIONS_ID,\n CORE_OPTIONS_ID,\n zapierCoreOptions,\n DEPRECATION_NOTICE_EVENT,\n zapierSdkPlugin,\n runWithCallerContext,\n isZapierApprovalError,\n type ZapierSdkOptions,\n type ZapierSdk,\n type FunctionRegistryEntry,\n // The free reader, not `zapierSdk.getRegistry()`: the accessor is a\n // re-exportable built-in, so an SDK is free not to surface it.\n getRegistry,\n logDeprecation,\n formatExtensionPluginFailure,\n type Plugin,\n type StabilityLevel,\n} from \"@zapier/zapier-sdk\";\nimport { zapierBetaSdkPlugin } from \"@zapier/zapier-sdk/beta\";\nimport { zapierExperimentalSdkPlugin } from \"@zapier/zapier-sdk/experimental\";\nimport { convertZodToMcpSchema } from \"./utils/schema-converter.js\";\nimport packageJson from \"../package.json\" with { type: \"json\" };\n\ninterface ZapierMcpServerOptions {\n debug?: boolean;\n /**\n * Forwarded to the underlying SDK so a CLI invocation like\n * `zapier-sdk --max-concurrent-requests 50 mcp` actually constrains\n * the MCP server's tool calls. Undefined falls through to the SDK's\n * own resolution chain (option > env var > default).\n */\n maxConcurrentRequests?: number;\n /**\n * Extra plugins to layer onto the SDK before exposing it as MCP tools.\n * Used by the CLI's `mcp` command to forward extensions discovered via\n * the `ZAPIER_SDK_EXTENSIONS` env var. Standalone callers can omit this;\n * the server then uses a vanilla public SDK. Each is forwarded to\n * `addPlugin`, so each must be a descriptor from a `define*` factory.\n */\n extensions?: readonly Plugin[];\n /**\n * Which stability tier of the SDK to build the server against:\n * `\"beta\"` uses `@zapier/zapier-sdk/beta`, `\"experimental\"` uses\n * `@zapier/zapier-sdk/experimental`, so that tier's plugins appear as\n * MCP tools. Mirrors the CLI's `--stability <level>` opt-in: a default\n * invocation only ever sees stable plugins.\n */\n stability?: StabilityLevel;\n /**\n * @deprecated Use `stability: \"experimental\"` instead. `true` selects\n * the experimental tier when `stability` is not set.\n */\n experimental?: boolean;\n}\n\n/**\n * Creates an MCP server that exposes Zapier SDK functions as MCP tools.\n *\n * The server automatically discovers all available SDK functions and converts\n * their Zod schemas to MCP-compatible JSON schemas. It handles tool execution\n * by validating inputs and calling the appropriate SDK functions.\n *\n * @param options - Configuration options for the MCP server\n * @param options.debug - Enable debug logging for detailed error information\n * @returns An MCP server instance configured to expose Zapier SDK tools\n *\n * @example\n * ```typescript\n * const server = createZapierMcpServer({ debug: true });\n * const transport = new StdioServerTransport();\n * await server.connect(transport);\n * ```\n */\nfunction createZapierMcpServer({\n debug = false,\n maxConcurrentRequests,\n extensions = [],\n stability,\n experimental = false,\n}: ZapierMcpServerOptions = {}) {\n // Pick the SDK root by opt-in: each tier's aggregate is a strict superset\n // of the one below it (beta re-exports zapierSdkPlugin plus the beta\n // plugins; experimental re-exports beta), so the registry path used below\n // works the same regardless of root. The deprecated `experimental`\n // boolean only applies when no level is declared.\n let level: StabilityLevel = \"stable\";\n if (stability) {\n level = stability;\n } else if (experimental) {\n // Warn as it resolves, so a host still passing the released boolean\n // learns the replacement. Stderr, which is where the SDK's own notices\n // go and is not part of the stdio protocol stream.\n logDeprecation(\n 'The `experimental` option is deprecated. Use `stability: \"experimental\"` instead.',\n );\n level = \"experimental\";\n }\n const sdkRootPlugin = {\n stable: zapierSdkPlugin,\n beta: zapierBetaSdkPlugin,\n experimental: zapierExperimentalSdkPlugin,\n }[level];\n\n // Active SDK deprecation notices, keyed by notice id. The SDK's own\n // console.warn goes to stderr, which agents never see over stdio — so the\n // server attaches each active notice to every tool result, instructing the\n // agent to relay it to the user. No per-call dedupe: an agent that ignores\n // the block once still surfaces it on a later call. Keying by id keeps a\n // single result from repeating the same notice.\n const activeDeprecationNotices = new Map<string, string>();\n\n const deprecationNoticeContent = () =>\n Array.from(activeDeprecationNotices.values(), (message) => ({\n type: \"text\" as const,\n text: `⚠️ Zapier SDK deprecation notice: ${message} You **must** relay this warning to the user — this will break soon.`,\n }));\n\n const stackOptions: ZapierSdkOptions = {\n debug,\n maxConcurrentRequests,\n eventEmission: { callContext: \"mcp\" },\n callerPackage: { name: packageJson.name, version: packageJson.version },\n approvalMode: \"throw\",\n onEvent: (event) => {\n if (event.type !== DEPRECATION_NOTICE_EVENT) return;\n const { id, message } = event.payload ?? {};\n if (typeof id === \"string\" && typeof message === \"string\") {\n activeDeprecationNotices.set(id, message);\n }\n },\n };\n const zapierSdk: ZapierSdk = createSdk(sdkRootPlugin, {\n configuration: {\n [SDK_OPTIONS_ID]: stackOptions,\n [CORE_OPTIONS_ID]: zapierCoreOptions,\n },\n }) as unknown as ZapierSdk;\n\n // Layer extension plugins on top of the vanilla SDK so their methods show\n // up in `getRegistry({ package: \"mcp\" })` alongside the public surface.\n // Same robustness contract as the CLI: a broken extension warns and\n // skips rather than killing the MCP server. `addPlugin` is atomic\n // (validate-then-apply), so a failed extension leaves the sdk in its\n // prior consistent state.\n for (const ext of extensions) {\n try {\n addPlugin(zapierSdk, ext);\n } catch (err) {\n console.warn(formatExtensionPluginFailure(err));\n }\n }\n\n // Create MCP server\n const server = new Server(\n {\n name: \"zapier-sdk\",\n version: \"1.0.0\",\n },\n {\n capabilities: {\n tools: {},\n },\n },\n );\n\n // Register list_tools handler - dynamically list all SDK functions as tools\n server.setRequestHandler(ListToolsRequestSchema, async () => {\n const tools = getRegistry(zapierSdk, \"mcp\").functions.map(\n (functionInfo: FunctionRegistryEntry) => {\n const toolName = functionInfo.name\n .replace(/([A-Z])/g, \"-$1\")\n .toLowerCase();\n\n const inputSchema = functionInfo.inputSchema;\n const baseDescription =\n functionInfo.description ||\n inputSchema?.description ||\n `Execute ${functionInfo.name}`;\n // Label non-stable tools where an LLM listing them reads first —\n // the front of the description — so it can tell which tier's\n // contract a beta / experimental tool carries. The label follows the\n // plugin's declared level, not the tier the server was built with.\n const description = applyStabilityLabel({\n description: baseDescription,\n stability: functionInfo.stability,\n placement: \"prefix\",\n });\n\n return {\n name: toolName,\n description,\n inputSchema: inputSchema\n ? convertZodToMcpSchema(inputSchema)\n : { type: \"object\", properties: {} },\n };\n },\n );\n\n return { tools };\n });\n\n // Execute SDK functions as tool calls. Kept separate from the registered\n // handler so every return path — success, approval, and error results —\n // flows through the deprecation-notice attachment below.\n const handleToolCall = async (request: CallToolRequest) => {\n const { name, arguments: args } = request.params;\n // Convert kebab-case tool name back to camelCase function name\n const functionName = name.replace(/-([a-z])/g, (_, letter) =>\n letter.toUpperCase(),\n );\n\n // Find the function info\n const functionInfo: FunctionRegistryEntry | undefined = getRegistry(\n zapierSdk,\n \"mcp\",\n ).functions.find(\n (info: FunctionRegistryEntry) => info.name === functionName,\n );\n\n if (!functionInfo) {\n const availableTools = getRegistry(zapierSdk, \"mcp\")\n .functions.map((info) =>\n info.name.replace(/([A-Z])/g, \"-$1\").toLowerCase(),\n )\n .join(\", \");\n throw new Error(\n `Unknown tool: ${name}. Available tools: ${availableTools}`,\n );\n }\n\n try {\n let result: unknown;\n\n if (functionInfo.inputSchema) {\n const validatedArgs = functionInfo.inputSchema.parse(\n args || {},\n ) as Record<string, unknown>;\n const sdkFn = (\n zapierSdk as unknown as Record<\n string,\n (...args: unknown[]) => Promise<unknown>\n >\n )[functionInfo.name];\n // A method with a `positional` projection (fetch's `(url, init)`) takes\n // ordered args, not the single bag; spread the validated object by its\n // positional keys. Everything else is single-object.\n result = functionInfo.positional?.length\n ? await sdkFn(\n ...functionInfo.positional.map((name) => validatedArgs[name]),\n )\n : await sdkFn(validatedArgs);\n } else {\n const sdkFn = (\n zapierSdk as unknown as Record<\n string,\n (...args: unknown[]) => Promise<unknown>\n >\n )[functionInfo.name];\n result = await sdkFn();\n }\n\n return {\n content: [\n {\n type: \"text\",\n text: JSON.stringify(result, null, 2),\n },\n ],\n };\n } catch (error) {\n if (debug) {\n console.error(\n `Error executing function '${functionInfo.name}' (tool: ${name}):`,\n error,\n );\n }\n\n if (isZapierApprovalError(error)) {\n switch (error.approvalStatus) {\n // Pending approval: return the URL so the LLM can instruct the user\n case \"pending\":\n return {\n content: [\n {\n type: \"text\",\n text: `This action requires approval. The end user must open this link in their browser to approve this action, then retry this tool call:\\n\\n${error.approvalUrl}`,\n },\n ],\n isError: false,\n };\n // Policy denied: hard deny, cannot be approved\n case \"policy_denied\":\n return {\n content: [\n {\n type: \"text\",\n text: `This action was denied by policy and cannot be approved:\\n\\n${error.message}`,\n },\n ],\n isError: true,\n };\n }\n }\n\n let errorMessage: string;\n let isValidationError = false;\n\n if (error instanceof Error) {\n // Check if it's a Zod validation error\n if (error.name === \"ZodError\") {\n isValidationError = true;\n errorMessage = `Validation error for ${functionInfo.name}: ${error.message}`;\n } else {\n errorMessage = `Error in ${functionInfo.name}: ${error.message}`;\n }\n } else {\n errorMessage = `Unexpected error in ${functionInfo.name}: ${String(error)}`;\n }\n\n const errorSchema = functionInfo.inputSchema\n ? convertZodToMcpSchema(functionInfo.inputSchema)\n : {};\n\n return {\n content: [\n {\n type: \"text\",\n text: isValidationError\n ? `${errorMessage}\\n\\nExpected input format:\\n${JSON.stringify(errorSchema, null, 2)}`\n : errorMessage,\n },\n ],\n isError: true,\n };\n }\n };\n\n server.setRequestHandler(CallToolRequestSchema, async (request) => {\n const { name } = request.params;\n // Use the external wire name (e.g. \"run-action\"), not the camelCase SDK method.\n return runWithCallerContext({ packageOperation: name }, async () => {\n const result = await handleToolCall(request);\n const notices = deprecationNoticeContent();\n if (notices.length === 0) return result;\n return { ...result, content: [...result.content, ...notices] };\n });\n });\n\n return server;\n}\n\n/**\n * Starts an MCP server with stdio transport for CLI usage.\n *\n * This is the main entry point when running the MCP server from the command line.\n * It creates the server and connects it using stdio transport for communication\n * with MCP clients like Claude Code.\n *\n * @param options - Configuration options for the MCP server\n * @param options.debug - Enable debug logging for detailed error information\n *\n * @example\n * ```typescript\n * // Start server with debug logging\n * await startMcpServer({ debug: true });\n * ```\n */\nasync function startMcpServer(\n options: ZapierMcpServerOptions = {},\n): Promise<void> {\n const server = createZapierMcpServer(options);\n const transport = new StdioServerTransport();\n\n return new Promise<void>((resolve) => {\n let isShuttingDown = false;\n\n const cleanup = async () => {\n if (isShuttingDown) return;\n isShuttingDown = true;\n\n try {\n await server.close();\n } finally {\n resolve();\n }\n };\n\n // Handle clean shutdown when client closes connection\n server.onclose = () => {\n cleanup();\n };\n\n // Handle termination signals (Ctrl+C, kill, etc.)\n // Using process.once() to prevent handler accumulation\n process.once(\"SIGINT\", cleanup);\n process.once(\"SIGTERM\", cleanup);\n\n server.connect(transport).catch((error) => {\n console.error(\"Failed to start MCP server:\", error);\n process.exit(1);\n });\n });\n}\n\nexport { createZapierMcpServer, startMcpServer };\n// Exported so the cross-surface description conformance test can read what\n// `tools/list` would advertise without standing up a server over stdio.\nexport { convertZodToMcpSchema } from \"./utils/schema-converter.js\";\n","/**\n * A robust schema converter that handles conversion from Zod schemas to JSON Schema format:\n *\n * **Core Types:**\n * - ✅ Objects, arrays, strings, numbers, booleans\n * - ✅ Enums, unions, intersections, literals\n * - ✅ Optional and nullable fields\n * - ✅ Records and dates\n * - ✅ Nested schemas and complex types\n *\n * **Additional Types:**\n * - ✅ Any, unknown, bigint, null, undefined, void, NaN\n * - ✅ Default values and catch handlers (unwrapped to inner type)\n * - ✅ Graceful fallback for unsupported types\n */\n\nimport type { z } from \"zod\";\nimport { descriptionFor, isInternalField } from \"@zapier/zapier-sdk\";\n\ninterface McpSchema {\n type?: string | string[];\n properties?: Record<string, McpSchema>;\n required?: string[];\n description?: string;\n items?: McpSchema;\n enum?: unknown[];\n anyOf?: McpSchema[];\n oneOf?: McpSchema[];\n allOf?: McpSchema[];\n additionalProperties?: McpSchema | boolean;\n format?: string;\n}\n\n// Zod internal definition structure\ninterface ZodDef {\n type: string; // e.g., \"string\", \"number\", \"object\", \"optional\", etc.\n element?: z.ZodSchema; // For arrays\n innerType?: z.ZodSchema; // For optional, nullable, default, catch\n entries?: Record<string, string>; // For enums\n values?: unknown[]; // For literals\n options?: z.ZodSchema[]; // For unions\n left?: z.ZodSchema; // For intersections\n right?: z.ZodSchema; // For intersections\n keyType?: z.ZodSchema; // For records (key type)\n valueType?: z.ZodSchema; // For records (value type)\n shape?: Record<string, z.ZodSchema>; // For objects (function in some cases)\n}\n\n// Zod schema with description (description is on the schema, not the def)\ninterface ZodSchemaWithDescription extends z.ZodSchema {\n description?: string;\n}\n\ninterface ZodSchemaWithShape extends z.ZodSchema {\n shape?: Record<string, z.ZodSchema>;\n}\n\n/**\n * Gets the Zod def from a schema, with fallback for edge cases\n */\nfunction getZodDef(schema: z.ZodSchema): ZodDef | undefined {\n const schemaAny = schema as unknown as { _zod?: { def?: ZodDef } };\n return schemaAny._zod?.def;\n}\n\n/**\n * Whether a parameter is marked deprecated and should not be advertised.\n *\n * The CLI hides these from `--help` and the docs generator drops them, but the\n * MCP converter emitted every key in the shape — so `tools/list` advertised\n * deprecated parameters alongside their replacements. On `run-action` that was\n * worse than cosmetic: the sentence stating when a connection is required was\n * attached to the deprecated `connectionId`, so MCP callers were shown the rule\n * on the parameter they should not use and CLI callers were shown it nowhere.\n *\n * Checked at every wrapper level because `.meta()` does not propagate through\n * `.optional()` / `.nullable()` / `.default()`, which is how the CLI reads it too.\n */\nfunction isDeprecatedSchema(schema: z.ZodSchema): boolean {\n let current: z.ZodSchema | undefined = schema;\n while (current) {\n const meta = (\n current as unknown as {\n meta?: () => { deprecated?: boolean } | undefined;\n }\n ).meta?.();\n if (meta?.deprecated) return true;\n current = getZodDef(current)?.innerType;\n }\n return false;\n}\n\n/**\n * Gets the description from a Zod schema (description is on the schema object, not the def)\n */\nfunction getDescription(schema?: z.ZodSchema): string | undefined {\n if (!schema) return undefined;\n return descriptionFor(schema as ZodSchemaWithDescription);\n}\n\n/**\n * Put the resolved description where clients read it: the property level.\n *\n * Wrapper branches return the inner conversion, which drops the text declared\n * on the wrapper; and for a nullable union the inner conversion is nested\n * under `anyOf`, leaving its description a level below where any client looks.\n * Both are repaired by writing the resolved text onto the result and clearing\n * the copy the nesting stranded.\n */\nfunction withDescription(\n result: McpSchema,\n description: string | undefined,\n): McpSchema {\n if (!description) return result;\n const anyOf = result.anyOf?.map((branch) => {\n if (branch.description !== description) return branch;\n const { description: _stranded, ...rest } = branch;\n return rest;\n });\n return { ...result, ...(anyOf ? { anyOf } : {}), description };\n}\n\n/**\n * Converts a Zod schema to MCP-compatible JSON Schema format.\n *\n * This function handles the conversion of Zod validation schemas (used internally\n * by the Zapier SDK) to JSON Schema format required by the MCP protocol. It supports\n * most common Zod types including objects, arrays, primitives, enums, unions, and more.\n *\n * @param zodSchema - The Zod schema to convert\n * @returns An MCP-compatible JSON Schema object\n *\n * @example\n * ```typescript\n * import { z } from \"zod\";\n *\n * const userSchema = z.object({\n * name: z.string(),\n * age: z.number().optional(),\n * email: z.string().email()\n * });\n *\n * const mcpSchema = convertZodToMcpSchema(userSchema);\n * // Result: { type: \"object\", properties: { ... }, required: [\"name\", \"email\"] }\n * ```\n */\nfunction convertZodToMcpSchema(zodSchema: z.ZodSchema): McpSchema {\n const def = getZodDef(zodSchema);\n if (!def) {\n // Fallback for schemas without _zod.def (e.g., custom or invalid schemas)\n return {\n type: \"string\",\n description: \"Unsupported schema type\",\n };\n }\n return convertZodType(def, zodSchema);\n}\n\n/**\n * Internal function that recursively converts Zod type definitions to MCP schema format.\n *\n * This function handles the actual conversion logic for different Zod types by examining\n * the internal type definition and converting it to the appropriate JSON Schema structure.\n *\n * @param def - The Zod internal definition object\n * @param schema - The original Zod schema (used for accessing shape in objects)\n * @returns An MCP-compatible JSON Schema object\n * @internal\n */\nfunction convertZodType(def: ZodDef, schema?: z.ZodSchema): McpSchema {\n const description = getDescription(schema);\n\n // Handle object\n if (def.type === \"object\" && schema) {\n const schemaWithShape = schema as ZodSchemaWithShape;\n const properties: Record<string, McpSchema> = {};\n const required: string[] = [];\n\n if (schemaWithShape.shape) {\n for (const [key, value] of Object.entries(schemaWithShape.shape)) {\n // Deprecated and internal fields are left out of what the model sees\n // but stay in the schema calls are parsed with, so they're still\n // accepted when passed.\n if (isDeprecatedSchema(value) || isInternalField(value)) continue;\n const fieldDef = getZodDef(value);\n if (fieldDef) {\n properties[key] = convertZodType(fieldDef, value);\n\n // Check if field is required (not optional or nullable)\n if (fieldDef.type !== \"optional\" && fieldDef.type !== \"nullable\") {\n required.push(key);\n }\n }\n }\n }\n\n const result: McpSchema = {\n type: \"object\",\n properties,\n };\n\n if (description) result.description = description;\n if (required.length > 0) result.required = required;\n\n return result;\n }\n\n // Handle string\n if (def.type === \"string\") {\n const result: McpSchema = { type: \"string\" };\n if (description) result.description = description;\n return result;\n }\n\n // Handle number\n if (def.type === \"number\") {\n const result: McpSchema = { type: \"number\" };\n if (description) result.description = description;\n return result;\n }\n\n // Handle boolean\n if (def.type === \"boolean\") {\n const result: McpSchema = { type: \"boolean\" };\n if (description) result.description = description;\n return result;\n }\n\n // Handle array\n if (def.type === \"array\" && def.element) {\n const elementDef = getZodDef(def.element);\n const result: McpSchema = {\n type: \"array\",\n items: elementDef\n ? convertZodType(elementDef, def.element)\n : { type: \"string\" },\n };\n if (description) result.description = description;\n return result;\n }\n\n // Handle optional\n if (def.type === \"optional\" && def.innerType) {\n const innerDef = getZodDef(def.innerType);\n if (innerDef) {\n return withDescription(\n convertZodType(innerDef, def.innerType),\n description,\n );\n }\n }\n\n // Handle nullable\n if (def.type === \"nullable\" && def.innerType) {\n const innerDef = getZodDef(def.innerType);\n if (innerDef) {\n const innerSchema = convertZodType(innerDef, def.innerType);\n if (innerSchema.type !== undefined) {\n return withDescription(\n {\n ...innerSchema,\n type: Array.isArray(innerSchema.type)\n ? [...innerSchema.type, \"null\"]\n : [innerSchema.type, \"null\"],\n },\n description ?? innerSchema.description,\n );\n }\n return withDescription(\n { anyOf: [innerSchema, { type: \"null\" }] },\n description ?? innerSchema.description,\n );\n }\n }\n\n // Handle enum\n if (def.type === \"enum\" && def.entries) {\n const result: McpSchema = {\n type: \"string\",\n enum: Object.keys(def.entries),\n };\n if (description) result.description = description;\n return result;\n }\n\n // Handle union\n if (def.type === \"union\" && def.options) {\n const result: McpSchema = {\n oneOf: def.options\n .map((option) => {\n const optionDef = getZodDef(option);\n return optionDef ? convertZodType(optionDef, option) : null;\n })\n .filter((s): s is McpSchema => s !== null),\n };\n if (description) result.description = description;\n return result;\n }\n\n // Handle intersection\n if (def.type === \"intersection\" && def.left && def.right) {\n const leftDef = getZodDef(def.left);\n const rightDef = getZodDef(def.right);\n const result: McpSchema = {\n allOf: [\n leftDef ? convertZodType(leftDef, def.left) : { type: \"string\" },\n rightDef ? convertZodType(rightDef, def.right) : { type: \"string\" },\n ],\n };\n if (description) result.description = description;\n return result;\n }\n\n // Handle literal\n if (def.type === \"literal\" && def.values && def.values.length > 0) {\n const value = def.values[0];\n const result: McpSchema = {\n type: typeof value as \"string\" | \"number\" | \"boolean\",\n enum: [value],\n };\n if (description) result.description = description;\n return result;\n }\n\n // Handle record\n if (def.type === \"record\") {\n let additionalProperties: McpSchema | boolean = true;\n if (def.valueType) {\n const valueDef = getZodDef(def.valueType);\n if (valueDef) {\n additionalProperties = convertZodType(valueDef, def.valueType);\n }\n }\n const result: McpSchema = {\n type: \"object\",\n additionalProperties,\n };\n if (description) result.description = description;\n return result;\n }\n\n // Handle any\n if (def.type === \"any\") {\n const result: McpSchema = {};\n if (description) result.description = description;\n return result;\n }\n\n // Handle unknown\n if (def.type === \"unknown\") {\n const result: McpSchema = {};\n if (description) result.description = description;\n return result;\n }\n\n // Handle date\n if (def.type === \"date\") {\n return {\n type: \"string\",\n format: \"date-time\",\n description: description || \"ISO 8601 date-time string\",\n };\n }\n\n // Handle bigint\n if (def.type === \"bigint\") {\n return {\n type: \"string\",\n description: description || \"BigInt as string\",\n };\n }\n\n // Handle undefined\n if (def.type === \"undefined\") {\n return {\n type: \"null\",\n description: description || \"Undefined value\",\n };\n }\n\n // Handle null\n if (def.type === \"null\") {\n return {\n type: \"null\",\n description: description || \"Null value\",\n };\n }\n\n // Handle void\n if (def.type === \"void\") {\n return {\n type: \"null\",\n description: description || \"Void (null) value\",\n };\n }\n\n // Handle nan\n if (def.type === \"nan\") {\n return {\n type: \"number\",\n description: description || \"Not-a-Number value\",\n };\n }\n\n // Handle default\n if (def.type === \"default\" && def.innerType) {\n const innerDef = getZodDef(def.innerType);\n if (innerDef) {\n return withDescription(\n convertZodType(innerDef, def.innerType),\n description,\n );\n }\n }\n\n // Handle catch (with fallback value)\n if (def.type === \"catch\" && def.innerType) {\n const innerDef = getZodDef(def.innerType);\n if (innerDef) {\n return withDescription(\n convertZodType(innerDef, def.innerType),\n description,\n );\n }\n }\n\n // Fallback for unhandled types\n console.warn(\n `Unhandled Zod type: ${def.type}. Please consider adding support for this type.`,\n );\n return {\n type: \"string\",\n description: description || `Unsupported type: ${def.type}`,\n };\n}\n\nexport { convertZodToMcpSchema };\n","{\n \"name\": \"@zapier/zapier-sdk-mcp\",\n \"version\": \"0.27.13\",\n \"description\": \"MCP server for Zapier SDK\",\n \"main\": \"dist/index.mjs\",\n \"types\": \"dist/index.d.mts\",\n \"exports\": {\n \".\": {\n \"source\": \"./src/index.ts\",\n \"import\": {\n \"types\": \"./dist/index.d.mts\",\n \"default\": \"./dist/index.mjs\"\n },\n \"default\": \"./dist/index.mjs\"\n }\n },\n \"scripts\": {\n \"build\": \"tsup\",\n \"clean\": \"rm -rf dist\",\n \"rebuild\": \"pnpm clean && pnpm build\",\n \"dev\": \"tsup --watch\",\n \"typecheck\": \"tsc --noEmit\",\n \"test\": \"vitest\",\n \"test:run\": \"vitest run\",\n \"prepublishOnly\": \"node ../../scripts/check-version.js\"\n },\n \"keywords\": [\n \"zapier\",\n \"sdk\",\n \"mcp\",\n \"model-context-protocol\"\n ],\n \"author\": \"\",\n \"license\": \"SEE LICENSE IN LICENSE\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://gitlab.com/zapier/zapier-sdk/zapier-sdk.git\",\n \"directory\": \"packages/zapier-sdk-mcp\"\n },\n \"publishConfig\": {\n \"access\": \"public\"\n },\n \"dependencies\": {\n \"@modelcontextprotocol/sdk\": \"^1.17.3\",\n \"@zapier/zapier-sdk\": \"workspace:*\",\n \"zod\": \"4.3.6\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^20.0.0\",\n \"tsup\": \"^8.0.0\",\n \"typescript\": \"^5.0.0\",\n \"vitest\": \"^4.1.4\"\n },\n \"files\": [\n \"dist\",\n \"README.md\",\n \"CHANGELOG.md\"\n ]\n}\n"],"mappings":"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","names":["name"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zapier/zapier-sdk-mcp",
|
|
3
|
-
"version": "0.27.
|
|
3
|
+
"version": "0.27.13",
|
|
4
4
|
"description": "MCP server for Zapier SDK",
|
|
5
5
|
"main": "dist/index.mjs",
|
|
6
6
|
"types": "dist/index.d.mts",
|
|
@@ -32,8 +32,8 @@
|
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"@modelcontextprotocol/sdk": "^1.17.3",
|
|
35
|
-
"
|
|
36
|
-
"
|
|
35
|
+
"@zapier/zapier-sdk": "0.118.0",
|
|
36
|
+
"zod": "4.3.6"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@types/node": "^20.0.0",
|