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

# Connect Claude, ChatGPT or Cursor (MCP)

> Connect Claude, ChatGPT, Claude Code or Cursor to Darwin's MCP server to read results, find unanswered questions, add knowledge and manage the agent. Setup, tools, read-only mode and disconnecting.

<div className="darwin-location"><strong>Find it in Darwin</strong> Profile menu → Workspace settings → API → AI assistants <a href="https://app.meetdarwin.ai/admin/settings/api">Open this screen ↗</a></div>

Darwin runs a [Model Context Protocol](https://modelcontextprotocol.io) server, so the AI assistant you already use can work with your workspace. Ask it things like *"How did the chat do this week compared with last?"*, *"What did visitors ask that the agent couldn't answer?"* or *"Add our new refund policy to the agent's knowledge."*

| | |
| - | - |
| Server URL | `https://app.meetdarwin.ai/api/mcp` |
| Read-only server URL | `https://app.meetdarwin.ai/api/mcp/readonly` |
| Transport | Streamable HTTP |
| Sign-in | OAuth (Claude, ChatGPT) or an API key in an `Authorization` header (Claude Code, Cursor, scripts) |

The read-only URL offers only the tools that read, whatever the connection is allowed to do.

Not a developer? [Use Darwin in Claude or ChatGPT](/integrations/ai-assistants) covers connecting and what to ask, in plain words.

## Connect Claude

<Steps>
  <Step title="Add a custom connector">
    In Claude, open **Settings → Connectors** and add a custom connector. Name it **Darwin** and paste `https://app.meetdarwin.ai/api/mcp` as its URL. On a Team or Enterprise plan, an owner may need to add it for the organisation first.
  </Step>

  <Step title="Sign in to Darwin">
    Select **Connect**. Darwin's sign-in opens; sign in if you aren't already. The connection belongs to the **workspace you are signed in to**, so switch to the right workspace in Darwin first if you have several.
  </Step>

  <Step title="Review and allow">
    Darwin shows **Connect Claude to Darwin** and lists what it will be able to do. Tick **Read only: let it look, never change anything** if you only want answers. Select **Allow**. You return to Claude.

    Only an owner or admin can allow a connection. The request expires after 15 minutes; start again from Claude if it does.
  </Step>

  <Step title="Check it">
    Ask Claude: *"Using Darwin, how many meetings did the chat book in the last 7 days?"* **It worked if** Claude calls Darwin's `get_performance` or `get_overview` tool and answers with your numbers. In Darwin, the connection appears under **AI assistants**.
  </Step>
</Steps>

## Connect ChatGPT

In ChatGPT, open **Plugins → + → Add custom MCP server**, enter `https://app.meetdarwin.ai/api/mcp` under **Connection**, choose OAuth, and select **Create as a plugin**. When ChatGPT sends you to Darwin, sign in, choose **Read only** if you like, and select **Allow**. [Step by step →](/integrations/chatgpt)

## Connect Claude Code

Create an API key in **Settings → API → Create key** with the scopes you want the assistant to have (see [what each tool needs](#tools)), then:

```bash theme={null}
claude mcp add --transport http darwin https://app.meetdarwin.ai/api/mcp \
  --header "Authorization: Bearer YOUR_API_KEY"
```

**Settings → API → AI assistants** shows this command ready to copy. To sign in with OAuth instead of a key, leave out `--header`, then run `/mcp` in Claude Code and choose Darwin to authenticate.

## Connect Cursor

Add Darwin to `~/.cursor/mcp.json` (all projects) rather than a project's `.cursor/mcp.json`, so the key never lands in a repository:

```json theme={null}
{
  "mcpServers": {
    "darwin": {
      "url": "https://app.meetdarwin.ai/api/mcp",
      "headers": { "Authorization": "Bearer YOUR_API_KEY" }
    }
  }
}
```

Restart Cursor, or reload MCP servers in its settings, and check that Darwin's tools are listed.

The same URL and header work with any MCP client that supports Streamable HTTP, including the Claude Agent SDK.

## Tools

What a connection can use depends on its access. An API key gets the tools its [scopes](/api-reference/authentication#scopes) allow. An OAuth connection gets every read, plus changes to knowledge, the agent and opening tests, unless you ticked **Read only**.

### Tools that read

| Tool | What it does | Needs |
| - | - | - |
| `get_overview` | The Home overview for today, 7 or 30 days: key numbers, what needs attention, test status and conversations worth reading | `analytics:read` |
| `get_performance` | Visitors, chats, leads and meetings against the previous period, the funnel and its biggest drop, top pages and sources (AI assistants marked) and conversation quality | `analytics:read` |
| `list_conversations` | Recent conversations with page, first message, outcome, grade and source; filter to leads, meetings or requests for a person | `conversations:read` |
| `get_conversation` | One conversation in full: transcript, visitor, lead and Darwin's grades | `conversations:read` |
| `find_unanswered_questions` | Conversations where the agent failed or didn't answer, with the visitor's question and what to add | `conversations:read` |
| `list_meetings` | Meetings booked from the chat, with invitee, time and source conversation | `meetings:read` |
| `list_contacts` | People who gave their email or booked; look one up by email | `contacts:read` |
| `list_knowledge` | The website pages (with read status) and documents the agent answers from | `knowledge:read` |
| `list_experiments` | Opening tests with each opening's words and latest results | `experiments:read` |
| `get_agent` | The agent's name, tone, greeting, booking link, business context, opening and whether the chat is live | `agent:read` |
| `search_help` | Searches this documentation | `agent:read` |

The conversation and meeting tools include visitors' names and emails only when the connection has the `contacts:read` scope, as the REST API does; without it, those fields are empty.

### Tools that change things

Your assistant should ask you before using these. Darwin tells it which tools change the live website, and marks the ones that remove or switch something as destructive.

| Tool | What it does | Changes what visitors see | Needs |
| - | - | - | - |
| `add_pages` | Adds up to 50 public website pages for the agent to learn from; read within minutes | Answers | `knowledge:write` |
| `add_document` | Teaches the agent something that isn't on the website, from text or Markdown (at least 80 characters) | Answers | `knowledge:write` |
| `remove_page` | Stops the agent answering from one page (destructive) | Answers | `knowledge:write` |
| `refresh_page` | Reads one page again now | Answers | `knowledge:write` |
| `update_agent` | Changes the agent's name, tone, greeting, suggestions, booking link, business context or opening | Yes | `agent:write` |
| `update_appearance` | Changes colors, corners, text size, launcher icon, sounds and motion | Yes | `agent:write` |
| `set_chat_live` | Switches the chat on or off for every visitor (destructive) | Yes | `agent:write` |
| `pause_experiment` | Pauses a running opening test; visitors see the current opening | Yes | `experiments:write` |
| `resume_experiment` | Resumes a paused test | Yes | `experiments:write` |
| `apply_winner` | Makes an opening the one every visitor sees. Refused unless it has the evidence Darwin requires (destructive). | Yes | `experiments:write` |
| `add_opening` | Adds your own opening (a headline and up to four buttons) to a running test | Yes | `experiments:write` |

Changes take effect exactly as if you made them in Agent Studio or Experiments, with the same rules. An opening an assistant adds carries the hypothesis *Added by an AI assistant over MCP.*

## What an assistant can never do

Through MCP, an assistant cannot see or change billing, your team, API keys or webhook endpoints; cannot delete conversations; cannot erase or export a person's data; and cannot change experiment results. It can only act in the one workspace it was connected to. The chat on your website never gets these tools.

## Disconnect an assistant

Open **Settings → API → AI assistants**. Each OAuth connection shows the app's name, when it was connected and last used, and its access (**Read only** or a number of scopes). Select **Disconnect** and confirm. It loses access at once; connecting again needs a new sign-in.

For Claude Code, Cursor or anything using an API key, revoke that key in **API keys**.

An OAuth connection stays signed in while it is used. One that goes unused for 30 days has to sign in again.

## Limits

Each tool call counts as one request against the connection's per-minute [rate limit](/api-reference/rate-limits). Tool results are capped at 200,000 characters.

## Troubleshooting

<AccordionGroup>
  <Accordion title="The assistant says Darwin has no tool for what I asked">
    The connection's access doesn't include that tool. A read-only connection, the read-only URL, or a key without the scope hides it. Reconnect without **Read only**, or create a key with the scope.
  </Accordion>

  <Accordion title="Only an owner or admin of this workspace can connect an app">
    Ask an owner or admin of the workspace to connect it, or to change your role in **Team**.
  </Accordion>

  <Accordion title="This request expired">
    Consent requests last 15 minutes. Start connecting again from your assistant.
  </Accordion>

  <Accordion title="Finish adding a card to this workspace">
    The workspace has to complete its card step in Darwin before any API or MCP access works.
  </Accordion>
</AccordionGroup>


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