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

# Reached MCP

> Connect Reached to Claude, Claude Code, Codex or any MCP-compatible AI assistant, then manage your leads, campaigns, calls and tasks in plain language.

# Reached MCP

Connect Reached once, then ask your AI assistant about your leads, campaigns, calls, statistics and tasks in plain language. Setup takes about a minute and needs no code.

> [!NOTE]
>
> **Before you start, create an API key** in Reached under **Settings > API**. You paste it once, when your AI assistant asks you to sign in. The key acts with your own rights, and revoking it cuts the assistant's access immediately.

> **[Connect Claude in one click](https://claude.ai/settings/connectors?modal=add-custom-connector\&connectorName=Reached\&connectorUrl=https%3A%2F%2Fkdjmltmhxvvmiuehafgl.supabase.co%2Ffunctions%2Fv1%2Fmcp)**
>
> Opens Claude with the Reached connector pre-filled. Click **Add**, then **Connect**, and paste your API key. Works on the web, desktop and mobile apps.

## Server URL

```text theme={null}
https://kdjmltmhxvvmiuehafgl.supabase.co/functions/v1/mcp
```

The server uses the Streamable HTTP transport and supports OAuth sign-in (with automatic client registration) as well as a direct API key sent in the `x-api-key` header.

***

## Claude (web, desktop and mobile)

**1. Add a custom connector**

In [Claude](https://claude.ai), open **Settings > Connectors**, then click **Add custom connector**.

**2. Enter the Reached server**

Name the connector `Reached` and enter the server URL above. Leave the OAuth client ID and secret empty: Claude registers itself with the Reached server automatically.

**3. Sign in with your API key**

Click **Connect**. Claude opens the Reached authorization page: paste your API key (it starts with `rchd_live_`) and click **Connect**.

**4. Turn Reached on in a chat**

In a conversation, open the **+** menu at the lower left, choose **Connectors**, and switch on Reached.

> [!NOTE]
>
> On Team and Enterprise plans, an Owner first adds the connector under **Organization settings > Connectors**. Each member then connects it with their own API key.

## Claude Code

Add Reached as a remote HTTP server:

```bash theme={null}
claude mcp add --transport http reached https://kdjmltmhxvvmiuehafgl.supabase.co/functions/v1/mcp
```

Then start Claude Code, run `/mcp`, select **reached** and authenticate. Your browser opens the Reached authorization page: paste your API key and click **Connect**. Claude Code stores the access token and refreshes it on its own.

Prefer to skip the browser step? Pass your key directly:

```bash theme={null}
claude mcp add --transport http reached https://kdjmltmhxvvmiuehafgl.supabase.co/functions/v1/mcp \
  --header "x-api-key: rchd_live_xxxxxxxxxxxx"
```

## Codex

Add this to your `~/.codex/config.toml` file:

```toml theme={null}
[mcp_servers.reached]
url = "https://kdjmltmhxvvmiuehafgl.supabase.co/functions/v1/mcp"
http_headers = { "x-api-key" = "rchd_live_xxxxxxxxxxxx" }
```

## Other MCP clients

Any assistant that supports remote MCP servers over HTTP works with Reached. Use the server URL above and either:

* let the client sign in through OAuth (it opens the Reached authorization page, where you paste your API key), or
* send your API key in an `x-api-key` header (or `Authorization: Bearer rchd_live_...`).

***

## What you can ask

Once connected, just talk to your assistant:

* "Create a *Trade show follow-up* campaign with the contacts in this CSV."
* "What are my call stats this week, by outcome?"
* "Summarize the last 5 conversations where a meeting was booked."
* "Add a task to call Marie Dupont back tomorrow at 10am."
* "Find the lead Jean Martin and add a note about our call."
* "Which caller had the best connection rate last month?"

The assistant answers in your language and always asks for confirmation before deleting anything.

## Available tools

> **Accounts and team**
>
> | Tool | What it does | Type |
> | - | - | - |
> | `list_accounts` | Lists the Reached accounts the connection can access | Read |
> | `get_accounts_overview` | One line of key figures per supervised account over a period (manager keys only) | Read |
> | `list_users` | Lists the users (callers) of an account | Read |
> | `list_workspaces` | Lists the workspaces of an account | Read |
> | `list_dispositions` | Lists the possible call outcomes, standard and custom | Read |

> **Leads and notes**
>
> | Tool | What it does | Type |
> | - | - | - |
> | `search_leads` | Searches leads by name, email, phone or company, with filters on status, outcome, workspace and campaign | Read |
> | `get_lead` | Full details of a lead, with notes, recent calls and campaigns | Read |
> | `create_lead` | Creates a lead (returns the existing one if the phone or email already exists) | Write |
> | `update_lead` | Updates the fields of a lead | Write |
> | `list_lead_notes` | Lists the notes of a lead | Read |
> | `create_lead_note` | Adds a note on a lead | Write |
> | `update_lead_note` | Edits a note | Write |
> | `delete_lead_note` | Permanently deletes a note | Delete |

> **Campaigns**
>
> | Tool | What it does | Type |
> | - | - | - |
> | `list_campaigns` | Lists campaigns, newest first | Read |
> | `get_campaign` | A campaign with its statistics and, optionally, its leads | Read |
> | `create_campaign` | Creates a draft campaign, optionally filled with contacts (e.g. from a CSV), existing leads or a lead list | Write |
> | `add_leads_to_campaign` | Adds contacts, leads or a lead list to a campaign (duplicates are skipped) | Write |
> | `update_campaign` | Renames a campaign or changes its status (draft, active, paused, archived) | Write |
> | `remove_leads_from_campaign` | Removes leads from a campaign (the leads and their call history are kept) | Delete |
> | `list_lead_lists` | Lists the saved lead lists | Read |

> **Calls and statistics**
>
> | Tool | What it does | Type |
> | - | - | - |
> | `list_calls` | Lists calls, filtered by lead, campaign, user, outcome, direction and date range | Read |
> | `get_call` | A call with its transcript, AI summary, notes and lead | Read |
> | `get_call_stats` | Call statistics over a period, computed exactly like the Statistics page, with optional breakdown by outcome, user, campaign, day, workspace or account | Read |

> **Tasks**
>
> | Tool | What it does | Type |
> | - | - | - |
> | `list_tasks` | Lists tasks (follow-ups, callbacks), soonest due first | Read |
> | `get_task` | Gets one task | Read |
> | `create_task` | Creates a task, optionally linked to a lead and assigned to a user | Write |
> | `update_task` | Edits, completes, reopens or reschedules a task | Write |
> | `delete_task` | Permanently deletes a task | Delete |

> [!TIP]
>
> Statistics returned by the assistant use the same definitions as the [Get Statistics](https://docs.reachedapp.com/rest-api/statistics/get-stats) endpoint and the Statistics page of the app, so the numbers always match.

## For managers

Create a **manager key** in **Settings > API**: a single key gives access to your own account and every account you supervise. Just name the account in your request, or ask for all of them at once:

* "Give me an overview of all my accounts over the last 30 days."
* "Which account has the best connection rate this month?"
* "Compare meetings booked per account this week."

***

## Security and limits

* **Your rights, nothing more**: the assistant can only see and change what your API key allows.
* **Instant revocation**: delete the API key in **Settings > API** and every assistant connected with it loses access immediately.
* **Stays connected**: the connection renews itself automatically. You only need to sign in again after about 3 months without any use.
* **Rate limit**: 300 requests per minute per API key.

## Troubleshooting

> **"This key is invalid or has been revoked"**
>
> Check that you pasted the full key, starting with `rchd_live_`, and that it has not been deleted in **Settings > API**. Create a new key if needed.

> **"This link has expired"**
>
> The authorization page stays valid for 15 minutes. Start the connection again from your assistant.

> **The assistant does not use Reached**
>
> In Claude, make sure the Reached connector is switched on for the conversation (**+** menu > **Connectors**). In Claude Code, run `/mcp` and check that **reached** is connected.

> **The assistant asks which account to use**
>
> Your key is a manager key covering several accounts. Name the account in your request, for example "for the Acme account".


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.