@zapier/zapier-sdk-mcp 0.24.1 → 0.24.3

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 CHANGED
@@ -1,5 +1,20 @@
1
1
  # @zapier/zapier-sdk-mcp
2
2
 
3
+ ## 0.24.3
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [604bf7d]
8
+ - @zapier/zapier-sdk@0.111.0
9
+
10
+ ## 0.24.2
11
+
12
+ ### Patch Changes
13
+
14
+ - 545562b: Experimental `create-workflow` now records creation attribution automatically for workflows created through the local MCP server.
15
+ - Updated dependencies [545562b]
16
+ - @zapier/zapier-sdk@0.110.2
17
+
3
18
  ## 0.24.1
4
19
 
5
20
  ### Patch Changes
package/dist/index.mjs CHANGED
@@ -8,6 +8,7 @@ import {
8
8
  import {
9
9
  addPlugin,
10
10
  createSdk,
11
+ getAgent,
11
12
  SDK_OPTIONS_ID,
12
13
  CORE_OPTIONS_ID,
13
14
  zapierCoreOptions,
@@ -16,7 +17,11 @@ import {
16
17
  runWithCallerContext,
17
18
  isZapierApprovalError
18
19
  } from "@zapier/zapier-sdk";
19
- import { zapierExperimentalSdkPlugin } from "@zapier/zapier-sdk/experimental";
20
+ import {
21
+ INTERNAL_CREATE_WORKFLOW_FIELDS,
22
+ zapierExperimentalSdkPlugin
23
+ } from "@zapier/zapier-sdk/experimental";
24
+ import { z } from "zod";
20
25
 
21
26
  // src/utils/schema-converter.ts
22
27
  function getZodDef(schema) {
@@ -232,7 +237,7 @@ function convertZodType(def, schema) {
232
237
  // package.json
233
238
  var package_default = {
234
239
  name: "@zapier/zapier-sdk-mcp",
235
- version: "0.24.1",
240
+ version: "0.24.3",
236
241
  description: "MCP server for Zapier SDK",
237
242
  main: "dist/index.mjs",
238
243
  types: "dist/index.d.mts",
@@ -291,6 +296,29 @@ var package_default = {
291
296
  };
292
297
 
293
298
  // src/index.ts
299
+ var MCP_TOOL_OVERRIDES = {
300
+ createWorkflow: {
301
+ hiddenSdkArgs: INTERNAL_CREATE_WORKFLOW_FIELDS,
302
+ transformArgs: (args) => ({
303
+ ...args,
304
+ creationHarness: getAgent(),
305
+ creationAccessMethod: "sdk_mcp"
306
+ })
307
+ }
308
+ };
309
+ function getMcpInputSchema(functionInfo) {
310
+ const inputSchema = functionInfo.inputSchema;
311
+ const override = MCP_TOOL_OVERRIDES[functionInfo.name];
312
+ if (!inputSchema || !override) return inputSchema;
313
+ const shape = inputSchema.shape;
314
+ if (!shape) return inputSchema;
315
+ const hiddenSdkArgs = new Set(override.hiddenSdkArgs);
316
+ return z.object(
317
+ Object.fromEntries(
318
+ Object.entries(shape).filter(([name]) => !hiddenSdkArgs.has(name))
319
+ )
320
+ ).describe(inputSchema.description ?? `Execute ${functionInfo.name}`);
321
+ }
294
322
  function createZapierMcpServer({
295
323
  debug = false,
296
324
  maxConcurrentRequests,
@@ -346,11 +374,12 @@ function createZapierMcpServer({
346
374
  server.setRequestHandler(ListToolsRequestSchema, async () => {
347
375
  const tools = zapierSdk.getRegistry({ package: "mcp" }).functions.map((functionInfo) => {
348
376
  const toolName = functionInfo.name.replace(/([A-Z])/g, "-$1").toLowerCase();
349
- const description = functionInfo.description || functionInfo.inputSchema?.description || `Execute ${functionInfo.name}`;
377
+ const inputSchema = getMcpInputSchema(functionInfo);
378
+ const description = functionInfo.description || inputSchema?.description || `Execute ${functionInfo.name}`;
350
379
  return {
351
380
  name: toolName,
352
381
  description,
353
- inputSchema: functionInfo.inputSchema ? convertZodToMcpSchema(functionInfo.inputSchema) : { type: "object", properties: {} }
382
+ inputSchema: inputSchema ? convertZodToMcpSchema(inputSchema) : { type: "object", properties: {} }
354
383
  };
355
384
  });
356
385
  return { tools };
@@ -375,13 +404,12 @@ function createZapierMcpServer({
375
404
  try {
376
405
  let result;
377
406
  if (functionInfo.inputSchema) {
378
- const validatedArgs = functionInfo.inputSchema.parse(args || {});
407
+ const inputSchema = getMcpInputSchema(functionInfo);
408
+ const validatedArgs = inputSchema.parse(args || {});
409
+ const override = MCP_TOOL_OVERRIDES[functionInfo.name];
410
+ const sdkArgs = override ? override.transformArgs(validatedArgs) : validatedArgs;
379
411
  const sdkFn = zapierSdk[functionInfo.name];
380
- result = functionInfo.positional?.length ? await sdkFn(
381
- ...functionInfo.positional.map(
382
- (name2) => validatedArgs[name2]
383
- )
384
- ) : await sdkFn(validatedArgs);
412
+ result = functionInfo.positional?.length ? await sdkFn(...functionInfo.positional.map((name2) => sdkArgs[name2])) : await sdkFn(sdkArgs);
385
413
  } else {
386
414
  const sdkFn = zapierSdk[functionInfo.name];
387
415
  result = await sdkFn();
@@ -443,7 +471,8 @@ ${error.message}`
443
471
  } else {
444
472
  errorMessage = `Unexpected error in ${functionInfo.name}: ${String(error)}`;
445
473
  }
446
- const errorSchema = functionInfo.inputSchema ? convertZodToMcpSchema(functionInfo.inputSchema) : {};
474
+ const mcpInputSchema = getMcpInputSchema(functionInfo);
475
+ const errorSchema = mcpInputSchema ? convertZodToMcpSchema(mcpInputSchema) : {};
447
476
  return {
448
477
  content: [
449
478
  {
@@ -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 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 type Plugin,\n type PluginProvides,\n} from \"@zapier/zapier-sdk\";\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`, which accepts a legacy function plugin or a new-model plugin\n * descriptor (`{ pluginType }`).\n */\n extensions?: (\n | Plugin<unknown, PluginProvides>\n | { readonly pluginType: string }\n )[];\n /**\n * Build the server against `@zapier/zapier-sdk/experimental` instead of\n * the stable surface, so experimental plugins appear as MCP tools.\n * Mirrors the CLI's `--experimental` opt-in: a default invocation only\n * ever sees stable plugins.\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 experimental = false,\n}: ZapierMcpServerOptions = {}) {\n // Pick the SDK root by opt-in: the experimental aggregate is a strict\n // superset (it re-exports zapierSdkPlugin plus the experimental plugins),\n // so the registry path used below works the same regardless of root.\n const sdkRootPlugin = experimental\n ? zapierExperimentalSdkPlugin\n : zapierSdkPlugin;\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(\n `Extension plugin failed to construct: ${(err as Error).message}; skipping.`,\n );\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 = zapierSdk\n .getRegistry({ package: \"mcp\" })\n .functions.map((functionInfo: FunctionRegistryEntry) => {\n const toolName = functionInfo.name\n .replace(/([A-Z])/g, \"-$1\")\n .toLowerCase();\n\n const description =\n functionInfo.description ||\n functionInfo.inputSchema?.description ||\n `Execute ${functionInfo.name}`;\n\n return {\n name: toolName,\n description,\n inputSchema: functionInfo.inputSchema\n ? convertZodToMcpSchema(functionInfo.inputSchema)\n : { type: \"object\", properties: {} },\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 = zapierSdk\n .getRegistry({ package: \"mcp\" })\n .functions.find(\n (info: FunctionRegistryEntry) => info.name === functionName,\n );\n\n if (!functionInfo) {\n const availableTools = zapierSdk\n .getRegistry({ package: \"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(args || {});\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(\n (name) => (validatedArgs as Record<string, unknown>)[name],\n ),\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","/**\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\";\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 * 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 (schema as ZodSchemaWithDescription).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 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 convertZodType(innerDef, def.innerType);\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 {\n ...innerSchema,\n type: Array.isArray(innerSchema.type)\n ? [...innerSchema.type, \"null\"]\n : [innerSchema.type, \"null\"],\n };\n }\n return {\n anyOf: [innerSchema, { type: \"null\" }],\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 convertZodType(innerDef, def.innerType);\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 convertZodType(innerDef, def.innerType);\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.24.1\",\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 createSdk,\n getAgent,\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 type Plugin,\n type PluginProvides,\n} from \"@zapier/zapier-sdk\";\nimport {\n INTERNAL_CREATE_WORKFLOW_FIELDS,\n zapierExperimentalSdkPlugin,\n type CreateWorkflowOptions,\n} from \"@zapier/zapier-sdk/experimental\";\nimport { z } from \"zod\";\nimport { convertZodToMcpSchema } from \"./utils/schema-converter.js\";\nimport packageJson from \"../package.json\" with { type: \"json\" };\n\ntype CreationAccessMethod = NonNullable<\n CreateWorkflowOptions[\"creationAccessMethod\"]\n>;\n\ninterface McpToolOverride {\n hiddenSdkArgs: readonly string[];\n transformArgs: (args: Record<string, unknown>) => Record<string, unknown>;\n}\n\nconst MCP_TOOL_OVERRIDES: Record<string, McpToolOverride> = {\n createWorkflow: {\n hiddenSdkArgs: INTERNAL_CREATE_WORKFLOW_FIELDS,\n transformArgs: (args) => ({\n ...args,\n creationHarness: getAgent(),\n creationAccessMethod: \"sdk_mcp\" satisfies CreationAccessMethod,\n }),\n },\n};\n\nfunction getMcpInputSchema(\n functionInfo: FunctionRegistryEntry,\n): z.ZodSchema | undefined {\n const inputSchema = functionInfo.inputSchema;\n const override = MCP_TOOL_OVERRIDES[functionInfo.name];\n if (!inputSchema || !override) return inputSchema;\n\n const shape = (inputSchema as { shape?: Record<string, z.ZodType> }).shape;\n if (!shape) return inputSchema;\n\n const hiddenSdkArgs = new Set(override.hiddenSdkArgs);\n return z\n .object(\n Object.fromEntries(\n Object.entries(shape).filter(([name]) => !hiddenSdkArgs.has(name)),\n ),\n )\n .describe(inputSchema.description ?? `Execute ${functionInfo.name}`);\n}\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`, which accepts a legacy function plugin or a new-model plugin\n * descriptor (`{ pluginType }`).\n */\n extensions?: (\n | Plugin<unknown, PluginProvides>\n | { readonly pluginType: string }\n )[];\n /**\n * Build the server against `@zapier/zapier-sdk/experimental` instead of\n * the stable surface, so experimental plugins appear as MCP tools.\n * Mirrors the CLI's `--experimental` opt-in: a default invocation only\n * ever sees stable plugins.\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 experimental = false,\n}: ZapierMcpServerOptions = {}) {\n // Pick the SDK root by opt-in: the experimental aggregate is a strict\n // superset (it re-exports zapierSdkPlugin plus the experimental plugins),\n // so the registry path used below works the same regardless of root.\n const sdkRootPlugin = experimental\n ? zapierExperimentalSdkPlugin\n : zapierSdkPlugin;\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(\n `Extension plugin failed to construct: ${(err as Error).message}; skipping.`,\n );\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 = zapierSdk\n .getRegistry({ package: \"mcp\" })\n .functions.map((functionInfo: FunctionRegistryEntry) => {\n const toolName = functionInfo.name\n .replace(/([A-Z])/g, \"-$1\")\n .toLowerCase();\n\n const inputSchema = getMcpInputSchema(functionInfo);\n const description =\n functionInfo.description ||\n inputSchema?.description ||\n `Execute ${functionInfo.name}`;\n\n return {\n name: toolName,\n description,\n inputSchema: inputSchema\n ? convertZodToMcpSchema(inputSchema)\n : { type: \"object\", properties: {} },\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 = zapierSdk\n .getRegistry({ package: \"mcp\" })\n .functions.find(\n (info: FunctionRegistryEntry) => info.name === functionName,\n );\n\n if (!functionInfo) {\n const availableTools = zapierSdk\n .getRegistry({ package: \"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 inputSchema = getMcpInputSchema(functionInfo);\n const validatedArgs = inputSchema!.parse(args || {}) as Record<\n string,\n unknown\n >;\n const override = MCP_TOOL_OVERRIDES[functionInfo.name];\n const sdkArgs = override\n ? override.transformArgs(validatedArgs)\n : validatedArgs;\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(...functionInfo.positional.map((name) => sdkArgs[name]))\n : await sdkFn(sdkArgs);\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 mcpInputSchema = getMcpInputSchema(functionInfo);\n const errorSchema = mcpInputSchema\n ? convertZodToMcpSchema(mcpInputSchema)\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","/**\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\";\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 * 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 (schema as ZodSchemaWithDescription).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 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 convertZodType(innerDef, def.innerType);\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 {\n ...innerSchema,\n type: Array.isArray(innerSchema.type)\n ? [...innerSchema.type, \"null\"]\n : [innerSchema.type, \"null\"],\n };\n }\n return {\n anyOf: [innerSchema, { type: \"null\" }],\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 convertZodType(innerDef, def.innerType);\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 convertZodType(innerDef, def.innerType);\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.24.3\",\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.24.1",
3
+ "version": "0.24.3",
4
4
  "description": "MCP server for Zapier SDK",
5
5
  "main": "dist/index.mjs",
6
6
  "types": "dist/index.d.mts",
@@ -33,7 +33,7 @@
33
33
  "dependencies": {
34
34
  "@modelcontextprotocol/sdk": "^1.17.3",
35
35
  "zod": "4.3.6",
36
- "@zapier/zapier-sdk": "0.110.1"
36
+ "@zapier/zapier-sdk": "0.111.0"
37
37
  },
38
38
  "devDependencies": {
39
39
  "@types/node": "^20.0.0",