> ## Documentation Index
> Fetch the complete documentation index at: https://docs.zapier.com/llms.txt
> Use this file to discover all available pages before exploring further.

# How Zapier MCP tools work

> How Zapier MCP discovers and manages tools in agentic mode and managed mode: dynamic tool discovery via meta-tools, auto-provisioning, skills, and workflow tools.

Zapier MCP servers run in one of two modes:

* **Agentic mode (default):** your agent discovers and enables its own tools during conversation, with no manual setup.
* **Managed mode:** you choose the tools in advance, and your agent uses only those.

New servers default to agentic mode. A small number of programmatic or non-conversational MCP clients default to managed mode instead.

## Agentic mode

In agentic mode, your MCP client manages its own toolset through dynamic tool discovery. Zapier auto-provisions tools from your existing app connections, and from there your agent searches for, enables, and runs actions as your requests come up. It does not need a pre-configured list of tools before it can help.

The full set of always-available meta-tools that make this work is below.

### Meta-tools

In agentic mode, your server exposes 16 static meta-tools across six categories. These are always available regardless of which apps you have connected.

| Category | Tool | What it does |
| - | - | - |
| Action management | `inspect_zapier_actions` | Lists your enabled actions with what you need to run them |
| Action management | `discover_zapier_actions` | Searches for apps and actions available to add |
| Action management | `enable_zapier_action` | Enables a specific action as a callable tool |
| Action management | `disable_zapier_action` | Removes an action you no longer need |
| Action management | `auto_provision_mcp` | Automatically provisions tools from your existing Zapier app connections |
| Execution | `execute_zapier_read_action` | Runs a read or search action (find an email, look up a contact) |
| Execution | `execute_zapier_write_action` | Runs a write action (send a message, create a task, update a record) |
| App connections | `list_zapier_connections` | Lists the app connections available for an app |
| App connections | `manage_zapier_connections` | Returns a URL to add a new connection, or sets an app's default connection |
| Configuration | `get_configuration_url` | Returns the URL to your Zapier MCP configuration page |
| Skills | `list_zapier_skills` | Lists your saved Zapier skills |
| Skills | `get_zapier_skill` | Retrieves a specific skill by name |
| Skills | `create_zapier_skill` | Creates a new skill |
| Skills | `update_zapier_skill` | Updates an existing skill |
| Skills | `delete_zapier_skill` | Deletes a skill |
| Feedback | `send_feedback` | Sends feedback to Zapier |

<Note>
  Some servers also expose a `write_code_action` meta-tool. It creates a custom code action for an app when no built-in action matches the request, and runs the generated code in a secure sandbox with authenticated API access. This tool is rolling out to more accounts over time.
</Note>

When your agent inspects its enabled actions with `inspect_zapier_actions`, each action includes a human-readable description alongside its identifiers, when one is available. The description gives your agent context to choose the right action for a request.

### Auto-provisioning and app connections

Zapier auto-provisions your server based on the apps you have already connected in your Zapier account: it enables their actions and sets each app's default connection. Your agent can also trigger the same setup mid-conversation with the `auto_provision_mcp` tool, for example if you ask it to set up your tools from scratch.

After auto-provisioning completes, your agent can immediately start working with those apps using their default connections. You can expand coverage at any time by asking your agent to search for and enable additional actions, or change a default connection with `manage_zapier_connections`.

If your Zapier account has no app connections, auto-provisioning has nothing to pre-enable and your server starts empty. Your agent still works: it finds an action with `discover_zapier_actions`, enables it with `enable_zapier_action`, and prompts you to connect the app the first time it needs one.

<Note>
  Auto-provisioning covers your own app connections only. App connections shared with you by another Zapier user are not included.
</Note>

If you ask your agent to use a different connection than the default, for example "post to the marketing Slack, not the support one," it looks up the ID with `list_zapier_connections` and passes it as `connection_id`. You never handle the ID yourself.

Every tool call runs through your existing Zapier app connections, so each one is recorded in the <img src="https://cdn.zapier.com/storage/photos/8aeb328e01a50022821101e080183443.png" alt="clock icon" noZoom style={{ display: "inline-block", width: "14px", margin: "0 0.15em", verticalAlign: "baseline" }} /> **History** tab at [mcp.zapier.com](https://mcp.zapier.com) alongside the rest of your Zapier activity.

### Skills

Skills are reusable, Markdown-based workflow instructions your agent can load on demand. Skills are not available in managed mode. Go to [Skills](/mcp/manage/skills) to create, edit, and manage them.

### Workflow tools <Badge color="orange" shape="rounded">Early Access</Badge>

Workflow tools let you build [Next Gen Zaps](/mcp/get-started/build-a-workflow). These tools are available if you have early access enabled.

| Category | Tool | What it does |
| - | - | - |
| Build and manage | `create_workflow` | Creates a durable workflow container |
| Build and manage | `import_zap_to_workflow` | Converts an existing Zap into a new, disabled workflow draft, without changing the original Zap |
| Build and manage | `update_workflow` | Updates a workflow's name or description |
| Build and manage | `delete_workflow` | Deletes a workflow |
| Build and manage | `enable_workflow` | Enables a workflow |
| Build and manage | `disable_workflow` | Disables a workflow |
| Drafts | `create_workflow_draft` | Forks an editable draft from a workflow's live version, or a blank stub before the first publish |
| Drafts | `update_workflow_draft` | Saves source, connections, trigger configuration, dependencies, and the runtime version to an open draft |
| Drafts | `list_workflow_drafts` | Lists a workflow's open drafts |
| Drafts | `get_workflow_draft` | Retrieves a draft, including its source files |
| Drafts | `run_workflow_draft` | Test-runs a draft's current source without publishing it |
| Drafts | `discard_workflow_draft` | Discards a draft's unpublished edits |
| Drafts | `publish_workflow_draft` | Publishes a draft as a new immutable workflow version, consuming the draft |
| Run and inspect | `run_workflow` | Runs a workflow's published version on demand, returning a trigger ID for `get_trigger_run` |
| Run and inspect | `list_workflows` | Lists active workflows for the authenticated account |
| Run and inspect | `get_workflow` | Retrieves a workflow, including its current version and trigger state |
| Run and inspect | `list_workflow_versions` | Lists a workflow's published versions |
| Run and inspect | `get_workflow_version` | Retrieves one published version |
| Run and inspect | `list_workflow_runs` | Lists live and draft test runs, filterable by kind |
| Run and inspect | `check_workflow_run` | Checks a workflow run's status, using the ID from `run_workflow` or `get_trigger_run` |
| Run and inspect | `get_run_output` | Retrieves a run's output, condensed by default, or with the full operations journal using `include_results` |
| Trigger discovery | `search_triggers` | Lists the triggers available for a given app |
| Trigger discovery | `get_trigger_fields` | Retrieves a trigger's configuration fields |
| Trigger discovery | `get_trigger_field_choices` | Retrieves the valid values for a trigger field |
| Trigger discovery | `get_trigger_run` | Retrieves the run a trigger delivery started, returning an ID for `check_workflow_run` and a durable run ID for `get_run_output` |

<Note>
  Before building or modifying a workflow, your agent reads the `zapier:build-workflows` skill with `get_zapier_skill`. Several workflow tools link to this skill directly in their descriptions, so most agents load it automatically.
</Note>

## Managed mode

In managed mode, each action is exposed as a dedicated tool, and you configure tools at [mcp.zapier.com](https://mcp.zapier.com) rather than through the agent.

Managed mode is useful when you need:

* **A fixed, predictable toolset:** your MCP client always has the same tools available, with no dynamic tool discovery.
* **Tightly scoped access:** you control exactly which actions are available, with no ability for the agent to enable new ones.
* **Pre-configured field values:** lock specific field values for each tool, useful for repeatable or automated tasks.

## Next steps

<CardGroup cols={3}>
  <Card title="Quickstart" href="/mcp/get-started/quickstart">
    Connect via OAuth, auto-provision tools, and run your first tool call end to end.
  </Card>

  <Card title="Switch between agentic and managed mode" href="/mcp/manage/switch-modes">
    Change your server's mode, and refresh your MCP client's tool list afterward.
  </Card>

  <Card title="Tool bundles" href="/mcp/get-started/tool-bundles">
    Share your tool configuration with other users.
  </Card>

  <Card title="Create your first Next Gen Zap" href="/mcp/get-started/build-a-workflow">
    Build a workflow end to end, including security considerations and limitations.
  </Card>

  <Card title="Get started with Next Gen Zaps" href="https://help.zapier.com/hc/en-us/articles/48391476448141">
    Use-case ideas for Next Gen Zaps, in the Help Center.
  </Card>
</CardGroup>
