diff --git a/src/components/templates/agent-connectors/_section-after-setup-zapiermcp-common-workflows.mdx b/src/components/templates/agent-connectors/_section-after-setup-zapiermcp-common-workflows.mdx new file mode 100644 index 000000000..38adf3c25 --- /dev/null +++ b/src/components/templates/agent-connectors/_section-after-setup-zapiermcp-common-workflows.mdx @@ -0,0 +1,254 @@ +export const sectionTitle = 'Common workflows' + +import { Tabs, TabItem, Aside } from '@astrojs/starlight/components' + +
+Auto-provision from existing Zapier connections + +The fastest way to get started is to auto-provision the MCP server based on apps the user has already connected in Zapier. + + + + ```typescript + // Auto-provisions actions based on the user's existing Zapier accounts + const result = await actions.executeTool({ + toolName: 'zapiermcp_auto_provision_mcp', + connectionName: 'zapiermcp', + identifier: 'user_123', + toolInput: {}, + }); + console.log(result.data?.result); + ``` + + + ```python + result = actions.execute_tool( + tool_name="zapiermcp_auto_provision_mcp", + connection_name="zapiermcp", + identifier="user_123", + tool_input={}, + ) + print(result.data["result"]) + ``` + + + +After provisioning, call `zapiermcp_list_enabled_zapier_actions` to see which apps and action keys are now active. + +
+ +
+Discover and enable an app + +Search Zapier's catalog for an app, then enable its actions on the MCP server so the agent can use them. + + + + ```typescript + // Search for apps by name + const apps = await actions.executeTool({ + toolName: 'zapiermcp_discover_zapier_actions', + connectionName: 'zapiermcp', + identifier: 'user_123', + toolInput: { app: 'slack' }, + }); + + // Enable all actions for the app + const enabled = await actions.executeTool({ + toolName: 'zapiermcp_enable_zapier_action', + connectionName: 'zapiermcp', + identifier: 'user_123', + toolInput: { app: 'slack' }, + }); + console.log(enabled.data?.result); + ``` + + + ```python + # Search for apps by name + apps = actions.execute_tool( + tool_name="zapiermcp_discover_zapier_actions", + connection_name="zapiermcp", + identifier="user_123", + tool_input={"app": "slack"}, + ) + + # Enable all actions for the app + enabled = actions.execute_tool( + tool_name="zapiermcp_enable_zapier_action", + connection_name="zapiermcp", + identifier="user_123", + tool_input={"app": "slack"}, + ) + print(enabled.data["result"]) + ``` + + + +Pass a specific `action` key alongside `app` to enable only one action instead of all. + +
+ +
+List enabled actions and execute a read action + +Always list enabled actions first to get the exact `app` and `action` keys before calling execute tools. + + + + ```typescript + // List all enabled actions + const actions_list = await actions.executeTool({ + toolName: 'zapiermcp_list_enabled_zapier_actions', + connectionName: 'zapiermcp', + identifier: 'user_123', + toolInput: {}, + }); + + // Execute a read action using natural language instructions + const result = await actions.executeTool({ + toolName: 'zapiermcp_execute_zapier_read_action', + connectionName: 'zapiermcp', + identifier: 'user_123', + toolInput: { + app: 'gmail', + action: 'find_email', + instructions: 'Find the latest email from noreply@example.com', + output: 'subject and body of the email', + }, + }); + console.log(result.data?.result); + ``` + + + ```python + # List all enabled actions + actions_list = actions.execute_tool( + tool_name="zapiermcp_list_enabled_zapier_actions", + connection_name="zapiermcp", + identifier="user_123", + tool_input={}, + ) + + # Execute a read action using natural language instructions + result = actions.execute_tool( + tool_name="zapiermcp_execute_zapier_read_action", + connection_name="zapiermcp", + identifier="user_123", + tool_input={ + "app": "gmail", + "action": "find_email", + "instructions": "Find the latest email from noreply@example.com", + "output": "subject and body of the email", + }, + ) + print(result.data["result"]) + ``` + + + +
+ +
+Execute a write action + +Use `zapiermcp_execute_zapier_write_action` to create or modify data in a connected app. The `instructions` and `output` fields accept natural language. + + + + ```typescript + const result = await actions.executeTool({ + toolName: 'zapiermcp_execute_zapier_write_action', + connectionName: 'zapiermcp', + identifier: 'user_123', + toolInput: { + app: 'slack', + action: 'send_channel_message', + instructions: 'Send a message to #general saying the weekly report is ready', + output: 'confirmation that the message was sent', + }, + }); + console.log(result.data?.result); + ``` + + + ```python + result = actions.execute_tool( + tool_name="zapiermcp_execute_zapier_write_action", + connection_name="zapiermcp", + identifier="user_123", + tool_input={ + "app": "slack", + "action": "send_channel_message", + "instructions": "Send a message to #general saying the weekly report is ready", + "output": "confirmation that the message was sent", + }, + ) + print(result.data["result"]) + ``` + + + + + +
+ +
+Create and reuse a Zapier Skill + +Skills are named, versioned markdown documents that define how to accomplish a multi-step task. Save a workflow once and execute it by name in future calls. + + + + ```typescript + // Save a skill + await actions.executeTool({ + toolName: 'zapiermcp_create_zapier_skill', + connectionName: 'zapiermcp', + identifier: 'user_123', + toolInput: { + name: 'weekly-report', + description: 'Sends the weekly summary to Slack and logs it in Google Sheets', + skillDefinition: '1. Execute slack/send_channel_message to #reports\n2. Execute google-sheets/create_spreadsheet_row', + }, + }); + + // Retrieve and execute the skill later + const skill = await actions.executeTool({ + toolName: 'zapiermcp_get_zapier_skill', + connectionName: 'zapiermcp', + identifier: 'user_123', + toolInput: { name: 'weekly-report' }, + }); + console.log(skill.data?.result); + ``` + + + ```python + # Save a skill + actions.execute_tool( + tool_name="zapiermcp_create_zapier_skill", + connection_name="zapiermcp", + identifier="user_123", + tool_input={ + "name": "weekly-report", + "description": "Sends the weekly summary to Slack and logs it in Google Sheets", + "skillDefinition": "1. Execute slack/send_channel_message to #reports\n2. Execute google-sheets/create_spreadsheet_row", + }, + ) + + # Retrieve and execute the skill later + skill = actions.execute_tool( + tool_name="zapiermcp_get_zapier_skill", + connection_name="zapiermcp", + identifier="user_123", + tool_input={"name": "weekly-report"}, + ) + print(skill.data["result"]) + ``` + + + +
diff --git a/src/components/templates/agent-connectors/index.ts b/src/components/templates/agent-connectors/index.ts index 9847da425..24dee7366 100644 --- a/src/components/templates/agent-connectors/index.ts +++ b/src/components/templates/agent-connectors/index.ts @@ -147,6 +147,7 @@ export { default as SectionAfterSetupTrelloCommonWorkflows } from './_section-af export { default as SectionAfterSetupTwitterCommonWorkflows } from './_section-after-setup-twitter-common-workflows.mdx' export { default as SectionAfterSetupVercelCommonWorkflows } from './_section-after-setup-vercel-common-workflows.mdx' export { default as SectionAfterSetupXeroCommonWorkflows } from './_section-after-setup-xero-common-workflows.mdx' +export { default as SectionAfterSetupZapiermcpCommonWorkflows } from './_section-after-setup-zapiermcp-common-workflows.mdx' export { default as SectionAfterSetupZendeskCommonWorkflows } from './_section-after-setup-zendesk-common-workflows.mdx' export { default as SectionAfterSetupZoomCommonWorkflows } from './_section-after-setup-zoom-common-workflows.mdx' export { default as SectionAfterToolListSalesforceMetadataApiSoap } from './_section-after-tool-list-salesforce-metadata-api-soap.mdx' diff --git a/src/content/docs/agentkit/connectors/zapiermcp.mdx b/src/content/docs/agentkit/connectors/zapiermcp.mdx new file mode 100644 index 000000000..44f99d9f7 --- /dev/null +++ b/src/content/docs/agentkit/connectors/zapiermcp.mdx @@ -0,0 +1,77 @@ +--- +title: 'Zapier MCP connector' +tableOfContents: true +description: 'Connect to Zapier MCP to automate workflows and integrate with thousands of apps directly from your AI agent.' +sidebar: + label: 'Zapier MCP' +overviewTitle: 'Quickstart' +connectorIcon: https://cdn.scalekit.com/sk-connect/assets/provider-icons/zapier.svg +connectorAuthType: OAuth 2.0 +connectorCategories: [Automation, Productivity, Developer Tools] +head: + - tag: style + content: | + .sl-markdown-content h2 { + font-size: var(--sl-text-xl); + } + .sl-markdown-content h3 { + font-size: var(--sl-text-lg); + } +--- + +import ToolList from '@/components/ToolList.astro' +import { tools } from '@/data/agent-connectors/zapiermcp' +import { Steps, Tabs, TabItem } from '@astrojs/starlight/components' +import { AgentKitCredentials } from '@components/templates' +import { QuickstartGenericOauthSection } from '@components/templates' +import { SectionAfterSetupZapiermcpCommonWorkflows } from '@components/templates' + + + +1. ### Install the SDK + + + + ```bash frame="terminal" + npm install @scalekit-sdk/node + ``` + + + ```bash frame="terminal" + pip install scalekit + ``` + + + + Full SDK reference: [Node.js](/agentkit/sdks/node/) | [Python](/agentkit/sdks/python/) + +2. ### Set your credentials + + + +3. ### Authorize and make your first call + + + + + +## What you can do + +Connect this agent connector to let your agent: + +- **Execute actions across 8,000+ apps** — run read (search/retrieve) and write (create/modify) actions in any app connected to Zapier +- **Discover and enable app actions** — search Zapier's catalog for any app, enable its actions on this MCP server, and disable them when no longer needed +- **Auto-provision from existing connections** — automatically set up the MCP server based on the user's already-connected Zapier accounts +- **Manage Zapier Skills** — create, retrieve, update, and delete named reusable workflow documents that define how to accomplish multi-step tasks +- **List enabled actions** — inspect which apps and action keys are currently active so the agent always uses correct, up-to-date identifiers +- **Get configuration URL** — surface the Zapier MCP configuration page so users can add, edit, or remove connected apps and actions + +## Common workflows + + + +## Tool list + +Use the exact tool names from the **Tool list** below when you call `execute_tool`. If you're not sure which name to use, list the tools available for the current user first. + + diff --git a/src/data/agent-connectors/capabilities.json b/src/data/agent-connectors/capabilities.json index aee5f4808..5d550164a 100644 --- a/src/data/agent-connectors/capabilities.json +++ b/src/data/agent-connectors/capabilities.json @@ -150,5 +150,13 @@ "**Track rankings** \u2014 monitor keyword positions across countries and devices over time", "**Audit sites** \u2014 run crawls to surface broken pages, redirect chains, and on-page SEO issues", "**Analyze web analytics** \u2014 retrieve traffic stats, top pages, UTM breakdowns, and traffic sources for Web Analytics projects" + ], + "zapiermcp": [ + "**Execute actions across 8,000+ apps** \u2014 run read (search/retrieve) and write (create/modify) actions in any app connected to Zapier", + "**Discover and enable app actions** \u2014 search Zapier's catalog for any app, enable its actions on this MCP server, and disable them when no longer needed", + "**Auto-provision from existing connections** \u2014 automatically set up the MCP server based on the user's already-connected Zapier accounts", + "**Manage Zapier Skills** \u2014 create, retrieve, update, and delete named reusable workflow documents that define how to accomplish multi-step tasks", + "**List enabled actions** \u2014 inspect which apps and action keys are currently active so the agent always uses correct, up-to-date identifiers", + "**Get configuration URL** \u2014 surface the Zapier MCP configuration page so users can add, edit, or remove connected apps and actions" ] } diff --git a/src/data/agent-connectors/catalog.ts b/src/data/agent-connectors/catalog.ts index f5f986d9d..c020457bd 100644 --- a/src/data/agent-connectors/catalog.ts +++ b/src/data/agent-connectors/catalog.ts @@ -319,7 +319,7 @@ export const catalog: Record = { }, zendesk: { iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/zendesk.svg', - authType: 'API KEY', + authType: 'API Key', categories: ['Customer Support', 'Communication'], }, googleforms: { diff --git a/src/data/agent-connectors/zapiermcp.ts b/src/data/agent-connectors/zapiermcp.ts new file mode 100644 index 000000000..f2ca0295d --- /dev/null +++ b/src/data/agent-connectors/zapiermcp.ts @@ -0,0 +1,247 @@ +import type { Tool } from '../../types/agent-connectors' + +export const tools: Tool[] = [ + { + name: 'zapiermcp_auto_provision_mcp', + description: `Automatically set up this MCP server based on the user's existing connected accounts in Zapier.`, + params: [], + }, + { + name: 'zapiermcp_create_zapier_skill', + description: `Save a workflow as a reusable Zapier Skill. A skill is a named, versioned markdown document that defines how to accomplish a task using Zapier actions.`, + params: [ + { + name: 'description', + type: 'string', + required: true, + description: `One-sentence description of what this skill does`, + }, + { + name: 'name', + type: 'string', + required: true, + description: `Short, unique name for this skill (e.g. 'create jira ticket', 'daily standup'). Names are case-insensitive.`, + }, + { + name: 'skillDefinition', + type: 'string', + required: true, + description: `Full markdown content of the skill. IMPORTANT: Before creating, ask the user about their specific configuration — project keys, channel names, default assignees, recurring parameters — so those get baked in as fixed values. Reference each MCP tool the skill uses with a \`\`\`mcp-tool\\n\\n\`\`\` code fence. Include step-by-step instructions and any fixed parameter values.`, + }, + ], + }, + { + name: 'zapiermcp_delete_zapier_skill', + description: `Permanently delete a Zapier Skill by name.`, + params: [ + { + name: 'name', + type: 'string', + required: true, + description: `The exact name of the skill to delete`, + }, + ], + }, + { + name: 'zapiermcp_disable_zapier_action', + description: `Remove an app's actions from this MCP server. Use list_enabled_zapier_actions to see which apps are currently enabled.`, + params: [ + { + name: 'app', + type: 'string', + required: true, + description: `App name to remove (e.g., 'gmail', 'jira', 'slack'). Accepts short names or full IDs. Use list_enabled_zapier_actions to see enabled apps.`, + }, + { + name: 'action', + type: 'string', + required: false, + description: `Specific action key to remove. If omitted, all actions for the app are removed.`, + }, + ], + }, + { + name: 'zapiermcp_discover_zapier_actions', + description: `Search 8,000+ Zapier apps to find actions you can enable. Returns app IDs and action keys to use with enable_zapier_action.`, + params: [ + { + name: 'app', + type: 'string', + required: false, + description: `Search for apps by name. Omit to see popular apps. Search 8,000+ available apps.`, + }, + ], + }, + { + name: 'zapiermcp_enable_zapier_action', + description: `Enable an app's actions on this MCP server. Use discover_zapier_actions to find the app name first.`, + params: [ + { + name: 'app', + type: 'string', + required: true, + description: `App name or identifier (e.g., 'gmail', 'jira', 'slack'). Accepts short names or full IDs from discover_zapier_actions.`, + }, + { + name: 'action', + type: 'string', + required: false, + description: `Specific action key to enable. If omitted or '*', all actions for the app are enabled.`, + }, + ], + }, + { + name: 'zapiermcp_execute_zapier_read_action', + description: `Execute a search or read action to retrieve data from a connected app. Call list_enabled_zapier_actions first to get the app name and action key.`, + params: [ + { + name: 'action', + type: 'string', + required: true, + description: `Action key to execute. Use list_enabled_zapier_actions to get exact keys.`, + }, + { + name: 'app', + type: 'string', + required: true, + description: `App identifier. Use list_enabled_zapier_actions to see available apps.`, + }, + { + name: 'instructions', + type: 'string', + required: true, + description: `Natural language instructions for the action`, + }, + { + name: 'output', + type: 'string', + required: true, + description: `Natural language description of what data you want from the results. Example: 'just the title and created date' or 'only items with status active'. A filter will be automatically generated to extract this data.`, + }, + { + name: 'params', + type: 'object', + required: false, + description: `Optional direct parameter values to pass to the action`, + }, + ], + }, + { + name: 'zapiermcp_execute_zapier_write_action', + description: `Execute a write or create action in a connected app. Call list_enabled_zapier_actions first to get the app name and action key.`, + params: [ + { + name: 'action', + type: 'string', + required: true, + description: `Action key to execute. Use list_enabled_zapier_actions to get exact keys.`, + }, + { + name: 'app', + type: 'string', + required: true, + description: `App identifier. Use list_enabled_zapier_actions to see available apps.`, + }, + { + name: 'instructions', + type: 'string', + required: true, + description: `Natural language instructions for the action`, + }, + { + name: 'output', + type: 'string', + required: true, + description: `Natural language description of what data you want from the results. Example: 'just the title and created date' or 'only items with status active'. A filter will be automatically generated to extract this data.`, + }, + { + name: 'params', + type: 'object', + required: false, + description: `Optional direct parameter values to pass to the action`, + }, + ], + }, + { + name: 'zapiermcp_get_configuration_url', + description: `Get the URL where users can configure this MCP server — adding, editing, or removing actions and connecting accounts.`, + params: [], + }, + { + name: 'zapiermcp_get_zapier_skill', + description: `Fetch the full markdown content of a Zapier Skill by name. Call this before executing a skill.`, + params: [ + { + name: 'name', + type: 'string', + required: true, + description: `The exact name of the skill to retrieve`, + }, + ], + }, + { + name: 'zapiermcp_list_enabled_zapier_actions', + description: `List all apps and actions currently enabled on this Zapier MCP server. Pass an app name to see its available action keys. Use action keys with execute_zapier_read_action and execute_zapier_write_action.`, + params: [ + { + name: 'action', + type: 'string', + required: false, + description: `Filter by action key. Omit to list all actions.`, + }, + { + name: 'app', + type: 'string', + required: false, + description: `Filter by app name (e.g., 'gmail', 'jira', 'slack'). Omit to list all apps.`, + }, + ], + }, + { + name: 'zapiermcp_list_zapier_skills', + description: `List all saved Zapier Skills with their names and descriptions.`, + params: [], + }, + { + name: 'zapiermcp_send_feedback', + description: `Send feedback about your Zapier MCP experience to the Zapier team.`, + params: [ + { + name: 'feedback', + type: 'string', + required: true, + description: `Feedback message to send to the Zapier MCP team`, + }, + { + name: 'feedback_positive', + type: 'boolean', + required: true, + description: `Whether this is positive feedback (true) or negative (false)`, + }, + ], + }, + { + name: 'zapiermcp_update_zapier_skill', + description: `Update an existing Zapier Skill's description or content by name.`, + params: [ + { + name: 'name', + type: 'string', + required: true, + description: `The exact name of the skill to update`, + }, + { + name: 'description', + type: 'string', + required: false, + description: `Updated one-sentence description (optional)`, + }, + { + name: 'skillDefinition', + type: 'string', + required: false, + description: `Updated full markdown content (optional)`, + }, + ], + }, +]