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

# MCP Server

> Connect AI agents to Redbark so they can read banking data and manage syncs through controlled API access.

The Redbark MCP server connects AI assistants like Claude, ChatGPT, and Cursor to your Redbark account. The AI can read accounts, balances, transactions and brokerage data live, and it can manage the rest of your account: syncs, destinations, rules, categories and event destinations.

<Info>
  MCP access requires an active **Developer** or **Professional** plan. Trial subscriptions, legacy accounts in their 14-day grace period, and grandfathered accounts also retain access. Brokerage data (holdings, trades) requires **Professional** (or an active trial).
</Info>

## What is MCP?

[Model Context Protocol](https://modelcontextprotocol.io) is an open standard that lets AI tools call external services. The Redbark MCP server is a thin layer over the [Redbark API v2](/docs/api-reference/v2/overview): each API operation is one tool, with the same name as the operation id in the API reference. A few composite tools, prompts and a guide tool sit on top so the AI can finish common jobs in fewer steps. When connected, your AI assistant can answer questions and do work like:

* "What bank accounts do I have connected?"
* "What is my current balance across all accounts?"
* "What did I spend on groceries this month?"
* "Show me my brokerage holdings and P\&L"
* "Create a sync from my everyday account to the Budget sheet and run it now"
* "Pause the YNAB sync until Monday"
* "Add a rule that tags Uber transactions as Travel"

Banking data is fetched live from your provider on each request. Nothing is stored by Redbark or sent to the AI until you ask.

## What your AI can do

The AI only gets what you grant on the consent screen. Reads need `mcp:read`. Each write family is a separate scope; leave it unticked and the matching tools refuse with a message that says which scope to grant. Brokerage reads need `brokerage:read`.

| Family                              | Example tools                                                                                              | Scope                                     | Example prompt                                                                       |
| ----------------------------------- | ---------------------------------------------------------------------------------------------------------- | ----------------------------------------- | ------------------------------------------------------------------------------------ |
| Account                             | `get_me`                                                                                                   | none                                      | "Which plan am I on?"                                                                |
| Connections, consents, institutions | `list_connections`, `get_connection`, `list_consents`, `list_institutions`, `revoke_connection`            | `mcp:read`, `connections:write` to revoke | "Which of my bank connections expire this month?"                                    |
| Accounts and balances               | `list_accounts`, `get_account`, `get_account_balance`, `get_account_details`                               | `mcp:read`                                | "What is the balance on my offset account?"                                          |
| Transactions                        | `list_transactions`, `get_transaction`                                                                     | `mcp:read`                                | "List my transactions over \$500 since 1 July"                                       |
| Holdings and trades                 | `list_holdings`, `list_trades`                                                                             | `mcp:read` + `brokerage:read`             | "What are my largest positions?"                                                     |
| Syncs and runs                      | `list_syncs`, `create_sync`, `update_sync`, `run_sync`, `resync_sync`, `list_sync_runs`, `cancel_sync_run` | `mcp:read`, `syncs:write`                 | "Run the Notion sync now and tell me when it finishes"                               |
| Destinations                        | `list_destinations`, `create_destination`, `list_destination_resources`, `rotate_destination_secret`       | `mcp:read`, `destinations:write`          | "Which tabs does my Budget spreadsheet have?"                                        |
| Categories                          | `list_categories`, `create_category`, `set_category_sources`, `list_provider_categories`                   | `mcp:read`, `categories:write`            | "Make a Subscriptions category and map streaming merchants to it"                    |
| Rules                               | `list_rulesets`, `create_rule`, `preview_ruleset`, `reorder_ruleset_rules`, `attach_sync_ruleset`          | `mcp:read`, `rules:write`                 | "Preview what my cleanup ruleset would do to last month"                             |
| Events                              | `list_events`, `get_event`, `redeliver_event`, `list_event_destinations`, `create_event_destination`       | `mcp:read`, `events:write`                | "Show the last failed sync run event and redeliver it"                               |
| Link sessions                       | `create_link_session`, `get_link_session`                                                                  | `connections:write`                       | "Give me a link to connect another bank"                                             |
| API keys                            | `list_api_keys`, `get_api_key`                                                                             | not available over OAuth                  | Keys are created in the dashboard. API-key clients with `keys:write` can manage keys |

Ids are the public ids from the API (`acct_...`, `conn_...`, `sync_...`, `dest_...`). Lists are paginated the same way as the API: the AI passes `limit` and follows the `page` token.

The AI chooses which tool to call based on your question. You do not need to know the tool names. The full list, with every argument, is the [API reference](/docs/api-reference/v2/overview).

## Default and admin toolsets

By default the server lists the 62 core tools: everything in the table above except key management and a few rarely used operations. Keeping the list short helps the AI pick the right tool.

The admin toolset adds 19 more: `list_api_keys`, `create_api_key`, `get_api_key`, `update_api_key`, `revoke_api_key`, `rotate_api_key`, `list_consents`, `get_consent`, `list_sync_category_mappings`, `set_sync_category_mappings`, `reset_categories`, `enable_event_destination`, `disable_event_destination`, `ping_event_destination`, `rotate_event_destination_secret`, `rotate_destination_secret`, `enable_destination`, `duplicate_ruleset` and `reorder_ruleset_rules`.

To enable it, add `?toolsets=admin` to the server URL in your AI tool:

```text theme={null}
https://mcp.redbark.com/mcp?toolsets=admin
```

Tools are also filtered to the scopes you granted on the consent screen. A tool whose scope you did not grant is not listed at all.

## Composite tools

Five tools bundle several API calls into one. The AI reaches for them when your request matches, and falls back to the single-operation tools for anything else.

| Tool               | What it does                                                                           | When the AI uses it                              |
| ------------------ | -------------------------------------------------------------------------------------- | ------------------------------------------------ |
| `account_overview` | Lists every account with its live balance, grouped by institution                      | "What do my accounts look like right now?"       |
| `spending_summary` | Totals a month of spending by category and account                                     | "What did I spend in July?"                      |
| `setup_sync`       | Creates a sync against an active destination and queues the first run                  | After you have picked a destination and accounts |
| `diagnose_sync`    | Reads a sync, its latest runs and its connection and destination, and recommends a fix | "Why is my Sheets sync failing?"                 |
| `connect_bank`     | Finds the institution and creates a link session for you to finish                     | "Connect my ANZ account"                         |

## Prompts

The server also publishes four prompts. In clients that support them (Claude, Cursor and others) they appear as slash-style commands and drop a short brief into the conversation that tells the AI which tools to call and how to report back.

| Prompt                    | Arguments                                      | What it covers                                                                            |
| ------------------------- | ---------------------------------------------- | ----------------------------------------------------------------------------------------- |
| `set_up_sync`             | `destination_type`, `accounts` (both optional) | Authorise a destination, pick a target and accounts, create the sync, watch the first run |
| `monthly_spending_review` | `month` (optional, `YYYY-MM`)                  | Spending by category and account with current balances                                    |
| `fix_failing_sync`        | `sync` (optional)                              | Diagnose a sync that needs attention and apply the recommended action                     |
| `connect_bank`            | `institution` (optional)                       | Start a bank consent flow and confirm the new connection and accounts                     |

## Guides

`redbark_guide` returns a short guide condensed from these docs so the AI gets the sequence right before a multi-step task. Topics:

* `onboarding`: connect a bank, authorise a destination, first sync
* `syncs_and_destinations`: sync types, destinations, mappings, runs, resync
* `rules_and_categories`: rulesets, rules, preview, taxonomy, source claims
* `events_and_webhooks`: event destinations, events, redelivery, signatures
* `errors_and_scopes`: error envelope, codes, request ids, scopes, plan gates
* `api_conventions`: ids, lists and pagination, idempotency, versioning

## Why tools ask for a context argument

Every tool accepts an optional `context` argument: one line describing what you are trying to do, written by the AI. We use it for product analytics, to see which jobs people bring to the MCP server. It never contains your banking data.

## How it is different from other destinations

|                     | Google Sheets, You Need a Budget, etc. | MCP Server                                      |
| ------------------- | -------------------------------------- | ----------------------------------------------- |
| **When data moves** | On a schedule (every few hours)        | On demand, when you ask                         |
| **What moves**      | Transactions are written and stored    | Nothing is stored; data is fetched live         |
| **Set up in**       | Redbark dashboard                      | Your AI tool's config file                      |
| **Best for**        | Record-keeping, budgeting, automation  | Asking questions, analysis, managing your syncs |

## Setup

<Steps>
  <Step title="Copy the MCP URL">
    Go to [Settings > API & MCP](https://app.redbark.com/settings/api-mcp) in the Redbark dashboard and copy the MCP URL:

    ```text theme={null}
    https://mcp.redbark.com/mcp
    ```
  </Step>

  <Step title="Add the server to your AI tool">
    Paste the URL into Claude, ChatGPT, Cursor, or any remote MCP client. Your tool will open a Redbark OAuth consent screen.
  </Step>

  <Step title="Start asking questions">
    Open a conversation and ask about your accounts, balances, or transactions. The AI will call the MCP server automatically.
  </Step>
</Steps>

## Configuration

<Tabs>
  <Tab title="Claude (claude.ai, Desktop, Cowork, mobile)">
    Anthropic's Custom Connectors flow works the same in claude.ai, Claude Desktop, Cowork, and the mobile apps, once added, the connector is available everywhere you use Claude.

    **Pro / Max (personal):**

    1. Open **Customize > Connectors** in Claude.
    2. Click `+` then **Add custom connector**.
    3. Paste the URL:
       ```
       https://mcp.redbark.com/mcp
       ```
    4. Click **Add**, then **Connect** on the new `redbark` entry to run through the OAuth consent screen.

    **Team / Enterprise:** an owner adds the connector once at **Organization settings > Connectors > Add > Custom > Web**, pastes the same URL, and clicks **Add**. Members then go to **Customize > Connectors** and click **Connect**.

    Leave OAuth client ID/secret blank, Redbark uses dynamic client registration, so Claude provisions a client automatically. See Anthropic's [custom connectors guide](https://support.claude.com/en/articles/11175166-get-started-with-custom-connectors-using-remote-mcp) for screenshots.
  </Tab>

  <Tab title="Claude Code">
    Use the CLI (recommended):

    ```bash theme={null}
    claude mcp add --transport http redbark https://mcp.redbark.com/mcp
    ```

    Then run `/mcp` inside Claude Code to complete the OAuth flow.

    Or add the server to `.mcp.json` in your project root (or `~/.claude.json` for user scope):

    ```json theme={null}
    {
      "mcpServers": {
        "redbark": {
          "type": "http",
          "url": "https://mcp.redbark.com/mcp"
        }
      }
    }
    ```

    `"type": "streamable-http"` is an accepted alias for `"http"`.
  </Tab>

  <Tab title="Cursor">
    Add to `~/.cursor/mcp.json` (global) or `.cursor/mcp.json` (project):

    ```json theme={null}
    {
      "mcpServers": {
        "redbark": {
          "url": "https://mcp.redbark.com/mcp"
        }
      }
    }
    ```

    Cursor will open the Redbark OAuth consent screen on first connection. See [Cursor's MCP docs](https://cursor.com/docs/mcp).
  </Tab>

  <Tab title="ChatGPT">
    Custom MCP connectors require **Developer Mode** in ChatGPT. Available on Plus, Pro, Business, Enterprise, and Edu plans.

    1. Go to **Settings > Apps & Connectors > Advanced settings** and toggle **Developer Mode** on.
    2. Back in **Settings > Connectors**, click **Create**.
    3. Fill in:
       * **Connector name**: `Redbark`
       * **Description**: e.g. `Live bank and brokerage data from Redbark`
       * **Connector URL**: `https://mcp.redbark.com/mcp`
       * **Authentication**: OAuth
       * Tick **I trust this application**
    4. Click **Create**, then connect the new connector to run the OAuth flow.

    See OpenAI's [ChatGPT connector setup guide](https://developers.openai.com/apps-sdk/deploy/connect-chatgpt).
  </Tab>
</Tabs>

<Tip>
  API keys are still supported for direct REST API consumers and advanced local MCP setups, but OAuth is recommended for hosted AI connectors.
</Tip>

## Security

* **Scoped access**: the AI can only use the scopes you granted. Reads and each write family are separate. Nothing can touch your bank itself; writes change Redbark syncs, destinations, rules, categories and event destinations only.
* **Your data stays yours**: banking data is fetched live from your bank and returned to your AI tool. Redbark never stores transaction data.
* **OAuth auth**: hosted AI tools receive short-lived OAuth access tokens and refresh them without storing your Redbark API keys.
* **Plan-gated**: MCP access requires an active Developer or Professional plan; trial subscriptions, legacy accounts in their 14-day grace period, and grandfathered accounts also qualify. Brokerage tools are restricted to Professional (or an active trial).
* **Revocable**: you can revoke a connected app from [Settings > API & MCP](https://app.redbark.com/settings/api-mcp) at any time. The MCP server immediately stops accepting its tokens.
* **Traceable**: every error carries a request id you can quote to support.

## Troubleshooting

| Problem                                                                         | Fix                                                                                                                                                                                           |
| ------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| "Missing Authorization header" / "Invalid or expired OAuth access token"        | Reconnect the Redbark MCP server from your AI tool so it can complete the OAuth flow again                                                                                                    |
| "MCP server not available" / 405 Method Not Allowed / connection fails silently | In Claude Code's `.mcp.json`, make sure `"type"` is `"http"` (or `"streamable-http"`), not `"sse"`. Our server is Streamable HTTP only and will reject SSE-style GET requests                 |
| "Add custom connector" button not visible in Claude                             | You are on the wrong screen. Custom Connectors live under **Customize > Connectors** (personal) or **Organization settings > Connectors** (Team/Enterprise owners), not Settings > Connectors |
| ChatGPT will not let you add a custom MCP server                                | Toggle **Developer Mode** on first under **Settings > Apps & Connectors > Advanced settings**                                                                                                 |
| "Invalid or revoked API key"                                                    | If you are using legacy API-key auth, create a new key in [Settings > API & MCP](https://app.redbark.com/settings/api-mcp)                                                                    |
| "Your plan does not include API access" (error `code: plan_upgrade_required`)   | This is a plan gate, not a credentials problem. The MCP server needs the Developer or Professional plan. [Upgrade your plan](https://app.redbark.com/settings/billing) and reconnect          |
| "This connection does not include the syncs:write scope" (or another scope)     | The AI tool was connected without that scope. Disconnect and reconnect, and tick it on the consent screen                                                                                     |
| "This connection does not include brokerage access"                             | The AI tool was connected without the `brokerage:read` scope. Disconnect and reconnect, and grant brokerage access on the consent screen                                                      |
| "insufficient\_scope" or "plan\_upgrade\_required" from a tool                  | The API refused the call. The message says which scope or plan is needed, and carries a request id                                                                                            |
| Server not responding                                                           | The server scales from zero; retry after a few seconds                                                                                                                                        |
| Tools not showing up                                                            | Restart your AI tool after editing the config file                                                                                                                                            |

<Tip>
  For the full technical reference (schemas, error formats, endpoint details), see the [API Reference](/docs/api-reference/v2/overview). Each MCP tool is one operation there, under the same name.
</Tip>
