> **Building with AI coding agents?** Install the authstack plugin with one command. This equips your agent with accurate Scalekit implementation patterns.
>
> **Recommended** (the `-y` flags skip prompts, so the command runs without an interactive terminal):
> ```bash
> npx -y @scalekit-inc/cli setup -y
> ```
>
> Global:
> ```bash
> npm install -g @scalekit-inc/cli
> scalekit setup -y
> ```
>
> Supports Claude Code, Cursor, GitHub Copilot, Codex + skills for other Agent Skills-compatible agents in `~/.agents/skills`.
> Skills: integrate-agentkit, implement-saaskit, add-mcp-oauth, implement-sso, implement-scim.
> [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# Connect AI agents to the Zapier MCP server

The Zapier MCP connector routes your AI agent's tool calls to Zapier's own MCP server through Scalekit. Each user signs in to Zapier once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 17 tools.

**Authentication:** OAuth 2.1/DCR
**Categories:** Automation, Productivity, Developer Tools
**Tools:** 17: 7 read, 10 write, 0 destructive
**Users sign in with:** OAuth
**OAuth app:** Scalekit's or your own
**Built by:** Vendor MCP
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=ZAPIERMCP)

## What you can do

- **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

## Setup

1. ### Install the SDK

   **Node.js**

   ```bash
   npm install @scalekit-sdk/node dotenv
   ```

   **Python**

   ```bash
   pip install scalekit-sdk-python python-dotenv
   ```

2. ### Set your credentials

   Add your Scalekit credentials to your `.env` file. Find values in **[app.scalekit.com](https://app.scalekit.com)** > **Developers** > **API Credentials**.

   ```sh title=".env"
   SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
   SCALEKIT_CLIENT_ID=<your-client-id>
   SCALEKIT_CLIENT_SECRET=<your-client-secret>
   ```

3. ### Create the Zapier MCP connection

   In **AgentKit > Connections**, create a Zapier MCP connection. The name you give it is the `connection_name` your code passes. See [Configure connections](/agentkit/connections/).

   Scalekit credentials are available for Zapier MCP server, so you don't need to register an OAuth app.

4. ### Authorize a user and make your first call

   **Node.js** (`quickstart.mts`)

   ```typescript
   import { ScalekitClient } from '@scalekit-sdk/node'
   import 'dotenv/config'
   import { createInterface } from 'node:readline/promises'

   const scalekit = new ScalekitClient(
     process.env.SCALEKIT_ENVIRONMENT_URL,
     process.env.SCALEKIT_CLIENT_ID,
     process.env.SCALEKIT_CLIENT_SECRET,
   )
   const actions = scalekit.actions

   const connector = 'zapiermcp'
   const identifier = 'user_123'

   // Generate an authorization link for the user
   const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
   console.log('Authorize Zapier MCP:', link)
   const rl = createInterface({ input: process.stdin, output: process.stdout })
   await rl.question('Press Enter after authorizing...')
   rl.close()

   // Make your first call
   const result = await actions.executeTool({
     connector,
     identifier,
     toolName: 'zapiermcp_discover_zapier_actions',
     toolInput: {},
   })
   console.log(result)
   ```

   ```bash
   npx tsx quickstart.mts
   ```

   **Python** (`quickstart.py`)

   ```python
   import os
   from scalekit import ScalekitClient
   from dotenv import load_dotenv
   load_dotenv()

   scalekit_client = ScalekitClient(
       env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),
       client_id=os.getenv("SCALEKIT_CLIENT_ID"),
       client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),
   )
   actions = scalekit_client.actions

   connection_name = "zapiermcp"
   identifier = "user_123"

   # Generate an authorization link for the user
   link_response = actions.get_authorization_link(
       connection_name=connection_name,
       identifier=identifier,
   )
   print("Authorize Zapier MCP:", link_response.link)
   input("Press Enter after authorizing...")

   # Make your first call
   result = actions.execute_tool(
       tool_input={},
       tool_name="zapiermcp_discover_zapier_actions",
       connection_name=connection_name,
       identifier=identifier,
   )
   print(result)
   ```

   ```bash
   python quickstart.py
   ```

   Each user signs in once. See [Authorize a user](/agentkit/tools/authorize/) for the full flow and statuses.

## Tools

Pass the exact name to `execute_tool`, with an input like each tool's example. To ask for a tool that's missing, use the [request form](https://scalekitsupport.portal.usepylon.com/forms/request-a-connector-tool).

**Node.js**

```typescript
const result = await actions.executeTool({
  toolName: 'zapiermcp_discover_zapier_actions',
  toolInput: {},
  connector: 'zapiermcp',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="zapiermcp_discover_zapier_actions",
    tool_input={},
    connection_name="zapiermcp",
    identifier="user_123",
)
```

`result.data` is the app's response as JSON, and `result.execution_id` (`executionId` in Node.js) is the ID of the call.

### `zapiermcp_discover_zapier_actions`

Discover Zapier Actions · Read-only

Search 8,000+ Zapier apps to find actions you can enable. Returns app IDs and action keys to use with enable_zapier_action.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `app` (`string`, optional): Search for apps by name. Omit to see popular apps. Search 8,000+ available apps.

Example input: `{}`

### `zapiermcp_execute_zapier_read_action`

Execute Zapier Read Action · Read-only

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.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `action` (`string`, required): Action key to execute. Use list_enabled_zapier_actions to get exact keys.
- `app` (`string`, required): App identifier. Use list_enabled_zapier_actions to see available apps.
- `instructions` (`string`, required): Natural language instructions for the action
- `output` (`string`, required): 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.
- `params` (`object`, optional): Optional direct parameter values to pass to the action

Example input: `{"action":"<action>","app":"gmail","instructions":"<instructions>","output":"just the title and created date"}`

### `zapiermcp_get_configuration_url`

Get Configuration Url · Read-only

Get the URL where users can configure this MCP server — adding, editing, or removing actions and connecting accounts.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs: none.

Example input: `{}`

### `zapiermcp_get_zapier_skill`

Get Zapier Skill · Read-only

Fetch the full markdown content of a Zapier Skill by name. Call this before executing a skill.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): The exact name of the skill to retrieve

Example input: `{"name":"create jira ticket"}`

### `zapiermcp_inspect_zapier_actions`

Inspect Zapier Actions · Read-only

Inspects all enabled apps and their actions with everything needed to build an execute call: the exact `app`, `action`, and `tool_name` identifiers plus parameter schema. Call this before any execute_zapier_read_action or execute_zapier_write_action call. Use `tool_name` for exact action details. For a parameter flagged `is_dynamic_enum: true`, call this tool again with `tool_name`, `enum_property`, and any parent values in `params` to resolve values. For actions with `dynamic_properties_depends_on`, settle those parameters first, then call this tool again with `tool_name` and `params` to get `dynamic_properties_schema`.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `action` (`string`, optional): Filter by action key. Omit to list all actions.
- `connection_id` (`string`, optional): Optional. The connected account to run this action against. Apps can have multiple connected accounts; by default the action runs against the app's default connection. Set it only when the user's request implies or names a specific account, or asks to switch accounts. Look up the id with list_zapier_connections.
- `enum_cursor` (`string`, optional): Pagination cursor from a previous dynamic enum response. Use with `enum_property`.
- `enum_property` (`string`, optional): The dynamic enum property to resolve or search. Required to get `dynamic_enum_values`; omit when you only need the action's parameter schema.
- `enum_search` (`string`, optional): Optional search text for `enum_property` when its dynamic enum has many values.
- `params` (`object`, optional): Partial argument values for the action. Pass parent values here to resolve dynamic enum values and the `dynamic_properties` schema inline before executing.
- `selected_api` (`string`, optional): Filter by selectedApi (e.g., 'GoogleMailV2CLIAPI'). Use the `selected_api` from a previous list call or from discover_zapier_actions. Omit to list all apps.
- `tool_name` (`string`, optional): Filter by the `tool_name` returned for an action. Preferred when resolving an exact action schema because it is collision-safe.

Example input: `{}`

### `zapiermcp_list_zapier_connections`

List Zapier Connections · Read-only

List the Zapier connections (authenticated accounts) available for an app. Use the `selected_api` from discover_zapier_actions or inspect_zapier_actions. Returns each connection's `connection_id`, which you can pass to execute_zapier_read_action / execute_zapier_write_action to run with that specific account. By default only the user's own connections are returned; pass `include_shared: true` to also return connections shared with them. Paginated via `cursor`.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `selected_api` (`string`, required): The selectedApi ID of the app to list connections for (e.g. 'SlackCLIAPI'). Use the `selected_api` from discover_zapier_actions or inspect_zapier_actions.
- `cursor` (`string`, optional): Pagination cursor from a previous response's `next_cursor`. Omit to fetch the first page.
- `include_shared` (`boolean`, optional): Include connections shared with the user by others. By default only the user's own connections are returned. Only show the user their shared connections if they explicitly ask for it.
- `limit` (`number`, optional): Maximum number of connections to return per page (1-100). Defaults to 20.

Example input: `{"selected_api":"SlackCLIAPI"}`

### `zapiermcp_list_zapier_skills`

List Zapier Skills · Read-only

List all saved Zapier Skills with their names and descriptions.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs: none.

Example input: `{}`

### `zapiermcp_auto_provision_mcp`

Auto Provision Mcp · Write

Automatically set up this MCP server based on the user's existing connected accounts in Zapier.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs: none.

Example input: `{}`

### `zapiermcp_create_zapier_skill`

Create Zapier Skill · Write

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.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `description` (`string`, required): One-sentence description of what this skill does
- `name` (`string`, required): Short, unique name for this skill (e.g. 'create jira ticket', 'daily standup'). Names are case-insensitive.
- `skillDefinition` (`string`, required): 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<tool_name>\n``` code fence. Include step-by-step instructions and any fixed parameter values.

Example input: `{"description":"<description>","name":"create jira ticket","skillDefinition":"<skillDefinition>"}`

### `zapiermcp_delete_zapier_skill`

Delete Zapier Skill · Write

Permanently delete a Zapier Skill by name.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): The exact name of the skill to delete

Example input: `{"name":"create jira ticket"}`

### `zapiermcp_disable_zapier_action`

Disable Zapier Action · Write

Remove an app's actions from this MCP server. Use list_enabled_zapier_actions to see which apps are currently enabled.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `app` (`string`, required): App name to remove (e.g., 'gmail', 'jira', 'slack'). Accepts short names or full IDs. Use list_enabled_zapier_actions to see enabled apps.
- `action` (`string`, optional): Specific action key to remove. If omitted, all actions for the app are removed.

Example input: `{"app":"gmail"}`

### `zapiermcp_enable_zapier_action`

Enable Zapier Action · Write

Enable an app's actions on this MCP server. Use discover_zapier_actions to find the app name first.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `app` (`string`, required): App name or identifier (e.g., 'gmail', 'jira', 'slack'). Accepts short names or full IDs from discover_zapier_actions.
- `action` (`string`, optional): Specific action key to enable. If omitted or '*', all actions for the app are enabled.

Example input: `{"app":"gmail"}`

### `zapiermcp_execute_zapier_write_action`

Execute Zapier Write Action · Write

Execute a write or create action in a connected app. Call list_enabled_zapier_actions first to get the app name and action key.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `action` (`string`, required): Action key to execute. Use list_enabled_zapier_actions to get exact keys.
- `app` (`string`, required): App identifier. Use list_enabled_zapier_actions to see available apps.
- `instructions` (`string`, required): Natural language instructions for the action
- `output` (`string`, required): 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.
- `params` (`object`, optional): Optional direct parameter values to pass to the action

Example input: `{"action":"<action>","app":"gmail","instructions":"<instructions>","output":"just the title and created date"}`

### `zapiermcp_manage_zapier_connections`

Manage Zapier Connections · Write

Manage an app's Zapier connections. Returns a URL the user can open to connect a new account, and optionally sets the app's default connection. An app requires a default connection before any of its actions can run. `selected_api` must come verbatim from discover_zapier_actions or inspect_zapier_actions - never guess or construct it (e.g. Gmail is `GoogleMailV2CLIAPI`, not `GmailCLIAPI`). To set the default account every action for this app should use, pass `default_connection_id` (look it up with list_zapier_connections).

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `selected_api` (`string`, required): The exact selectedApi ID of the app (e.g. 'SlackCLIAPI'). Must come verbatim from discover_zapier_actions (or inspect_zapier_actions) - do not guess or construct it (e.g. Gmail is 'GoogleMailV2CLIAPI', not 'GmailCLIAPI').
- `app_display_name` (`string`, optional): Optional human-readable app name (from discover_zapier_actions) used to make the response easier to read.
- `default_connection_id` (`string`, optional): Optional. Set this connection as the app's default so every action for the app runs against it without passing `connection_id` each time. Look up the id with list_zapier_connections. Omit to only get a URL for connecting a new account.

Example input: `{"selected_api":"SlackCLIAPI"}`

### `zapiermcp_send_feedback`

Send Feedback · Write

Send feedback about your Zapier MCP experience to the Zapier team.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `feedback` (`string`, required): Feedback message to send to the Zapier MCP team
- `feedback_positive` (`boolean`, required): Whether this is positive feedback (true) or negative (false)

Example input: `{"feedback":"<feedback>","feedback_positive":true}`

### `zapiermcp_update_zapier_skill`

Update Zapier Skill · Write

Update an existing Zapier Skill's description or content by name.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): The exact name of the skill to update
- `description` (`string`, optional): Updated one-sentence description (optional)
- `skillDefinition` (`string`, optional): Updated full markdown content (optional)

Example input: `{"name":"create jira ticket"}`

### `zapiermcp_write_code_action`

Write Code Action · Write

Create or update a custom code action for an app. Use this when inspect_zapier_actions does not have the action you need and the app's service API should support it. The code is generated from your requirements and executes in a secure sandbox with authenticated API access. Never include API keys, tokens, passwords, or other credentials in the requirements - code actions authenticate automatically through Zapier's connected accounts. If a code action with the same name already exists, it will be regenerated with the new requirements. After creation, the action is immediately available as a tool.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `code_action_name` (`string`, required): A short, descriptive name for the code action (e.g. 'list_channel_users', 'close_stale_issues'). Used as the tool name suffix.
- `requirements` (`string`, required): Natural language description of what the code action should do. Never include API keys, tokens, or credentials - authentication is handled automatically via connected accounts. Be specific about the API endpoint, data format, and any filtering/pagination needs.
- `selected_api` (`string`, required): The app's API identifier from discover_zapier_actions (e.g. 'GoogleMailV2CLIAPI', 'JiraSoftwareCloudCLIAPI').

Example input: `{"code_action_name":"list_channel_users","requirements":"<requirements>","selected_api":"GoogleMailV2CLIAPI"}`

## Workflows

**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.

  **Node.js**

  ```typescript
  // Auto-provisions actions based on the user's existing Zapier accounts
  const result = await actions.executeTool({
    toolName: 'zapiermcp_auto_provision_mcp',
    connector: 'zapiermcp',
    identifier: 'user_123',
    toolInput: {},
  });
  console.log(result.data?.result);
  ```

  **Python**

  ```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_inspect_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.

  **Node.js**

  ```typescript
  // Search for apps by name
  const apps = await actions.executeTool({
    toolName: 'zapiermcp_discover_zapier_actions',
    connector: 'zapiermcp',
    identifier: 'user_123',
    toolInput: { app: 'slack' },
  });

  // Enable all actions for the app
  const enabled = await actions.executeTool({
    toolName: 'zapiermcp_enable_zapier_action',
    connector: 'zapiermcp',
    identifier: 'user_123',
    toolInput: { app: 'slack' },
  });
  console.log(enabled.data?.result);
  ```

  **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"])
  ```

Pass a specific `action` key alongside `app` to enable only one action instead of all.

**List enabled actions and execute a read action**

Always inspect enabled actions first to get the exact `app` and `action` keys before calling execute tools.

  **Node.js**

  ```typescript
  // List all enabled actions
  const actions_list = await actions.executeTool({
    toolName: 'zapiermcp_inspect_zapier_actions',
    connector: 'zapiermcp',
    identifier: 'user_123',
    toolInput: {},
  });

  // Execute a read action using natural language instructions
  const result = await actions.executeTool({
    toolName: 'zapiermcp_execute_zapier_read_action',
    connector: '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**

  ```python
  # List all enabled actions
  actions_list = actions.execute_tool(
      tool_name="zapiermcp_inspect_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.

  **Node.js**

  ```typescript
  const result = await actions.executeTool({
    toolName: 'zapiermcp_execute_zapier_write_action',
    connector: '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**

  ```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"])
  ```

> caution: Write actions modify data
>
> `zapiermcp_execute_zapier_write_action` creates or modifies records in the connected app. Confirm the `action` key from `zapiermcp_inspect_zapier_actions` before calling this tool.

**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.

  **Node.js**

  ```typescript
  // Save a skill
  await actions.executeTool({
    toolName: 'zapiermcp_create_zapier_skill',
    connector: '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',
    connector: 'zapiermcp',
    identifier: 'user_123',
    toolInput: { name: 'weekly-report' },
  });
  console.log(skill.data?.result);
  ```

  **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"])
  ```

## Related

Other Automation connectors ([all 58](/agentkit/connectors/?category=automation)):

- [Mailchimp](/agentkit/connectors/mailchimp/): Scalekit connector, OAuth, 73 tools
- [Twilio](/agentkit/connectors/twilio/): Scalekit connector, Username and password, 61 tools
- [Stripe](/agentkit/connectors/stripe/): Scalekit connector, Access token, 178 tools


---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
