Skip to main content
The consumer Claude app does not accept a pasted API key. It speaks OAuth. You give Claude one URL, it discovers Exo’s sign-in page, you click Allow, and the exo_* tools appear in your next chat.
Connecting Claude Code instead? That path pastes a static key and is a different setup. See Claude Code.

Before you start

  • An Exo account that is allowlisted for the private preview. Sign-in shows a waitlist message otherwise.
  • A paid Claude plan. Custom connectors are not available on the free tier.
  • Nothing else. No key, no terminal, no install.

The short version

Add this URL as a custom connector in Claude, keeping the trailing slash:

Set it up

1

Open the connector form

In claude.ai, go to Settings, then Connectors, then Add custom connector.
2

Paste the MCP URL

The trailing slash matters. A bare /mcp answers with a 307 redirect, and MCP clients drop the Authorization header across a redirect, so discovery fails with a 401 that looks like a server problem.
3

Sign in and allow

Claude sees that the endpoint is OAuth protected and sends you to Exo’s /connect page. Sign in with the same Google or Microsoft account you use for the dashboard, then click Allow to authorize Claude to act as your Exo identity.
4

Use it

You land back in Claude. Open a new chat and the Exo tools appear. Ask something that references your own history, such as “what did we decide about the pricing model?”, and Claude calls exo_context.

Claude Desktop, one command

The desktop app can be wired up from a terminal instead. This is the same OAuth sign-in, relayed through mcp-remote, with nothing to paste:
Requires Node.js. Restart Claude Desktop afterwards.
Windows must use --oauth=no. The --oauth=yes pre-flight spawns npx without a shell, which fails instantly on Windows with “Authentication failed. Use the client to authenticate.” and installs nothing at all. With --oauth=no the config is written normally and the same browser sign-in opens on Claude’s first launch. The dashboard shows the correct variant for your operating system.
To pre-authenticate by hand:

What the relay does

The relay registers a loopback OAuth client at http://127.0.0.1:<port>/oauth/callback per RFC 8252, and catches the authorization code on that local port. Exo matches loopback redirect URIs while ignoring the port, because the relay binds whatever port is free at sign-in time. PKCE with S256 stays mandatory on every path. Keys minted this way appear in your dashboard key list labeled MCP connector (one-click).

How auth and keys work

Every successful connect mints a new revocable exo_ API key under your user and organization: the same key type the dashboard and Claude Code use. The OAuth access token is that key, which means there is one trust root and revoking the key kills the connection immediately. Reconnecting mints another key, so keys accumulate. If you have removed and re-added the connector a few times, expect several. Revoke the stale ones. To disconnect fully: remove the connector in Claude, then revoke its key in the dashboard so the credential cannot be used again. Removing the connector alone leaves a live key behind.

When it goes wrong

Next

ChatGPT connector

The same OAuth server, with a different toolset per surface.

MCP tool reference

What each tool does and the REST route behind it.