-
Notifications
You must be signed in to change notification settings - Fork 10
add Zapier MCP connector docs #710
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
3 commits
Select commit
Hold shift + click to select a range
03665c8
add Zapier MCP connector docs with capability bullets and common work…
Pranesh-Raghu dbdc984
fix Zapier connector docs: correct skillDefinition param name and API…
Pranesh-Raghu a8fc2e3
resolve merge conflict: keep API Key title-case for zendesk
Pranesh-Raghu File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
254 changes: 254 additions & 0 deletions
254
.../templates/agent-connectors/_section-after-setup-zapiermcp-common-workflows.mdx
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,254 @@ | ||
| export const sectionTitle = 'Common workflows' | ||
|
|
||
| import { Tabs, TabItem, Aside } from '@astrojs/starlight/components' | ||
|
|
||
| <details> | ||
| <summary>Auto-provision from existing Zapier connections</summary> | ||
|
|
||
| The fastest way to get started is to auto-provision the MCP server based on apps the user has already connected in Zapier. | ||
|
|
||
| <Tabs syncKey="tech-stack"> | ||
| <TabItem label="Node.js"> | ||
| ```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); | ||
| ``` | ||
| </TabItem> | ||
| <TabItem label="Python"> | ||
| ```python | ||
| result = actions.execute_tool( | ||
| tool_name="zapiermcp_auto_provision_mcp", | ||
| connection_name="zapiermcp", | ||
| identifier="user_123", | ||
| tool_input={}, | ||
| ) | ||
| print(result.data["result"]) | ||
| ``` | ||
| </TabItem> | ||
| </Tabs> | ||
|
|
||
| After provisioning, call `zapiermcp_list_enabled_zapier_actions` to see which apps and action keys are now active. | ||
|
|
||
| </details> | ||
|
|
||
| <details> | ||
| <summary>Discover and enable an app</summary> | ||
|
|
||
| Search Zapier's catalog for an app, then enable its actions on the MCP server so the agent can use them. | ||
|
|
||
| <Tabs syncKey="tech-stack"> | ||
| <TabItem label="Node.js"> | ||
| ```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); | ||
| ``` | ||
| </TabItem> | ||
| <TabItem label="Python"> | ||
| ```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"]) | ||
| ``` | ||
| </TabItem> | ||
| </Tabs> | ||
|
|
||
| Pass a specific `action` key alongside `app` to enable only one action instead of all. | ||
|
|
||
| </details> | ||
|
|
||
| <details> | ||
| <summary>List enabled actions and execute a read action</summary> | ||
|
|
||
| Always list enabled actions first to get the exact `app` and `action` keys before calling execute tools. | ||
|
|
||
| <Tabs syncKey="tech-stack"> | ||
| <TabItem label="Node.js"> | ||
| ```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); | ||
| ``` | ||
| </TabItem> | ||
| <TabItem label="Python"> | ||
| ```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"]) | ||
| ``` | ||
| </TabItem> | ||
| </Tabs> | ||
|
|
||
| </details> | ||
|
|
||
| <details> | ||
| <summary>Execute a write action</summary> | ||
|
|
||
| Use `zapiermcp_execute_zapier_write_action` to create or modify data in a connected app. The `instructions` and `output` fields accept natural language. | ||
|
|
||
| <Tabs syncKey="tech-stack"> | ||
| <TabItem label="Node.js"> | ||
| ```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); | ||
| ``` | ||
| </TabItem> | ||
| <TabItem label="Python"> | ||
| ```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"]) | ||
| ``` | ||
| </TabItem> | ||
| </Tabs> | ||
|
|
||
| <Aside type="caution" title="Write actions modify data"> | ||
| `zapiermcp_execute_zapier_write_action` creates or modifies records in the connected app. Confirm the `action` key from `zapiermcp_list_enabled_zapier_actions` before calling this tool. | ||
| </Aside> | ||
|
|
||
| </details> | ||
|
|
||
| <details> | ||
| <summary>Create and reuse a Zapier Skill</summary> | ||
|
|
||
| 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. | ||
|
|
||
| <Tabs syncKey="tech-stack"> | ||
| <TabItem label="Node.js"> | ||
| ```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); | ||
| ``` | ||
| </TabItem> | ||
| <TabItem label="Python"> | ||
| ```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"]) | ||
| ``` | ||
| </TabItem> | ||
| </Tabs> | ||
|
|
||
| </details> | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -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' | ||
|
|
||
| <Steps> | ||
|
|
||
| 1. ### Install the SDK | ||
|
|
||
| <Tabs syncKey="tech-stack"> | ||
| <TabItem label="Node.js"> | ||
| ```bash frame="terminal" | ||
| npm install @scalekit-sdk/node | ||
| ``` | ||
| </TabItem> | ||
| <TabItem label="Python"> | ||
| ```bash frame="terminal" | ||
| pip install scalekit | ||
| ``` | ||
| </TabItem> | ||
| </Tabs> | ||
|
|
||
| Full SDK reference: [Node.js](/agentkit/sdks/node/) | [Python](/agentkit/sdks/python/) | ||
|
|
||
| 2. ### Set your credentials | ||
|
|
||
| <AgentKitCredentials /> | ||
|
|
||
| 3. ### Authorize and make your first call | ||
|
|
||
| <QuickstartGenericOauthSection connector="zapiermcp" toolName="zapiermcp_get_configuration_url" providerName="Zapier MCP" /> | ||
|
|
||
| </Steps> | ||
|
|
||
| ## 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 | ||
|
|
||
| <SectionAfterSetupZapiermcpCommonWorkflows /> | ||
|
|
||
| ## 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. | ||
|
|
||
| <ToolList tools={tools} /> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.