# Set up the Sail MCP server

Sail's docs run on ReadMe, which gives every project a Model Context Protocol (MCP) server for free. Once your AI assistant is connected, it can search and inspect every endpoint in the Sail API straight from the OpenAPI spec, and — if you choose to allow it — call the live Sail API on your behalf. No separate account or sign-up needed.

<Callout type="info">
  **Scoped to the API reference**

  The MCP server searches Sail's **API endpoints** (everything generated from the OpenAPI spec — Users, Connections, Accounts, Expenses, Webhooks, and so on). It doesn't search prose pages like the Guides or Concepts group — for those, point your assistant at the page directly or keep using the site's regular search.
</Callout>

## What you get

<CardGroup cols={2}>
  <Card title="Find the right endpoint" icon="fa6-solid:magnifying-glass">
    Ask a question in plain language and get pointed to the exact Sail endpoint that answers it, pulled from the live OpenAPI spec, not a stale training-data guess.
  </Card>

  <Card title="Look up endpoints" icon="fa6-solid:plug">
    List and inspect any Sail endpoint, including parameters, request/response schemas, and required scopes.
  </Card>

  <Card title="Call the live API" icon="fa6-solid:bolt">
    Optionally let your assistant execute a real request against the Sail API using your own credentials.
  </Card>
</CardGroup>

## Quick setup

The Sail MCP server lives at:

```
https://docs.savewithsail.com/mcp
```

<Callout type="info">
  **Docs hosted somewhere else?**

  If your Sail docs are served from a different domain, or ReadMe's default `*.readme.io` subdomain, use that instead — the path is always `/mcp`.
</Callout>

Pick your tool below. No authentication is required for search and lookup — you'll only need to add credentials if you want the [`execute-request` tool](#executing-live-requests) to make real API calls.

<Tabs>
  <Tab title="Claude Code">

  Run:

  ```bash
  claude mcp add --transport http sail https://docs.savewithsail.com/mcp
  ```

  </Tab>

  <Tab title="Claude Desktop">

  Go to **Settings → Connectors → Add custom connector**, then enter:

  - **Name:** `Sail`
  - **URL:** `https://docs.savewithsail.com/mcp`

  </Tab>

  <Tab title="Cursor">

  Add to your project's or global `mcp.json`:

  ```json
  {
    "mcpServers": {
      "sail": {
        "url": "https://docs.savewithsail.com/mcp"
      }
    }
  }
  ```

  </Tab>

  <Tab title="VS Code">

  Add to `.vscode/mcp.json`:

  ```json
  {
    "servers": {
      "sail": {
        "type": "http",
        "url": "https://docs.savewithsail.com/mcp"
      }
    }
  }
  ```

  </Tab>

  <Tab title="Windsurf">

  Add to `~/.codeium/windsurf/mcp_config.json`:

  ```json
  {
    "mcpServers": {
      "sail": {
        "serverUrl": "https://docs.savewithsail.com/mcp"
      }
    }
  }
  ```

  </Tab>
</Tabs>

Restart your editor or start a new chat, then confirm the connection by asking something only Sail's API reference would know, like "What scope does Get Account & Routing Numbers need?"

## Available tools

| Tool | What it does |
| :--- | :--- |
| `search-endpoints` | Finds the Sail API endpoints relevant to a natural-language question, so your assistant doesn't have to guess which one answers it. |
| `list-endpoints` | Lists every endpoint in the Sail API, straight from the OpenAPI spec. |
| `get-endpoint` | Returns full detail for one endpoint: parameters, request/response schema, required scopes, and examples. |
| `get-server-variables` | Looks up server and environment variables defined in the spec, like Sail's live base URL. |
| `execute-request` | Executes a real request against the Sail API using the credentials you provide. See [Executing live requests](#executing-live-requests). |

## Executing live requests

`execute-request` lets your assistant make real calls against `https://live.savewithsail.com/api/v1`, not just read about them. To enable it, add your Sail API key as a header when you configure the server:

```json
{
  "mcpServers": {
    "sail": {
      "url": "https://docs.savewithsail.com/mcp",
      "headers": {
        "Authorization": "Bearer sk_live_..."
      }
    }
  }
}
```

<Callout type="warning">
  **Treat this like any other API key**

  Anything wired into your MCP config can be read by your assistant and any tool it calls. Use a key scoped to only what you need — see [Scoped API Keys](/docs/concepts/scoped-api-keys) — and never paste a key into a shared or public config file.
</Callout>

If you'd rather keep your assistant read-only, most clients let you disable individual tools. Turn off `execute-request` and it can still search and read the API reference, but it will never call the live API.

## Troubleshooting

<Accordion title="The server doesn't show up in my tool list">
  Confirm your config's JSON is valid — no trailing commas, every brace closed — then restart your editor or start a new session.
</Accordion>

<Accordion title="Answers seem out of date">
  Start a new conversation. MCP results reflect the latest published docs, but a long-running chat may still be reasoning from what it read earlier.
</Accordion>

<Accordion title="execute-request calls are failing">
  Check that the header carrying your API key is set correctly, and that the key has the scope the endpoint needs. See [Authentication](/docs/api-reference/authentication).
</Accordion>

<Accordion title="My docs are private and the server won't connect">
  Private ReadMe projects need an additional auth header carrying your site password or ReadMe API key, separate from your Sail API key.
</Accordion>

## Get better answers

Ask specific, endpoint-shaped questions instead of broad ones:

- Weaker: "How does Sail work?"
- Stronger: "What parameters does Create Hosted Session require?"

## Next steps

- New to Sail? Start with the [Get Started overview](/docs/get-started/get-started-overview).
- Building against a specific integration path? See [Enrich transactions](/docs/guides/enrich-transactions-with-item-level-data), [Classify transactions](/docs/guides/classify-your-own-transactions), or [Connect HSA/FSA accounts](/docs/guides/connect-hsa-fsa-accounts).