# Connect an AI assistant

> Connect Claude, ChatGPT, Claude Code or any MCP client to odo: signing in or a key, what assistants can and can’t do, the prompts, and how access works.

odo runs an MCP server: connect your AI assistant once, and it reads your earnings, visits, pages, funnels, heatmaps and experiments when a question needs them. It’s yours alone: it sees what you own or manage, nothing else.

> Point your assistant at [odo.gg/llms.txt](https://odo.gg/llms.txt): every page of these docs as markdown, so it knows how odo works before it asks.

To ask without leaving odo, use [Ask odo](https://odo.gg/docs/ask-odo): a chat with Claude in the dashboard, with these same tools, on Growth.

## Connect

The address is `https://odo.gg/mcp`. odo shows it, with these steps, under **Settings → AI assistants**.

- **Claude** (web, desktop and mobile): Settings → Connectors → Add custom connector. Paste the address, sign in to odo, and allow it.
- **ChatGPT, Cursor, VS Code and others:** add a remote MCP server with the address. They open odo for you to sign in.
- **Claude Code:** run the command below, then `/mcp` to sign in.

```sh
claude mcp add --transport http odo https://odo.gg/mcp
```

When you allow an app, choose what it can read (all your projects, or one) and what it may write (below). Every connected app is listed under **Settings → AI assistants** with what it reads, what it may write and when it was last used, and **Disconnect** cuts it off at once.

## With a key instead

An app that can’t sign in can send a [project key](https://odo.gg/docs/api#keys) with the **Read** permission, at the same address or at `/api/mcp`. It then reads that one project, and writes there what the key’s **Updates** and **Experiments** permissions allow:

```sh
claude mcp add --transport http odo https://odo.gg/mcp --header "Authorization: Bearer $ODO_KEY"
```

## What assistants can do

Read: earnings and sources, visits and their journeys, pages, paths, funnels, conversion, friction, page speed, heatmaps, experiments, site updates and odo’s own next moves. Every tool is in the [tool reference](https://odo.gg/docs/mcp-tools).

Two things they can write, each only if you let them. The consent screen asks, with a switch for each:

| Switch | What it lets the assistant do | Unless you change it |
| --- | --- | --- |
| **Note site changes** | Add a [site update](https://odo.gg/docs/site-updates), a note of what it changed on your site, so a coding assistant’s changes land on your charts (`record_site_update`) | On |
| **Run experiments** | Make and run [experiments](https://odo.gg/docs/experiments), which change what your visitors see: `create_experiment` makes one, as a change odo makes on the page or one in your code, and `update_experiment` changes a draft and starts, pauses, resumes, stops, ships or archives it | Off |

A key gets the same with the **Updates** and **Experiments** permissions. Without them, those tools aren’t there; any assistant can still read experiments and get versions to try (`list_experiments`, `analyze_experiment`, `suggest_experiment_variants`). odo tells an assistant that may run experiments to ask you before it starts, pauses, stops or ships one. To change what an app may do, disconnect it and connect it again.

What they can’t: change your numbers, sources or settings, move money, or see API keys and passwords.

## Tell your coding assistant

Add this to the project’s `CLAUDE.md` (or `AGENTS.md`), so the assistant notes each change it ships:

```md
After you deploy or publish a change to the website that visitors will see (a new page, copy, design, pricing, a checkout fix), call odo’s record_site_update tool once with a few plain words of what changed and the page’s path, so odo marks it on its charts and shows what it did to visitors, conversion and revenue.
```

## Prompts

odo hands assistants ready-made requests for the common jobs. Apps that support MCP prompts list them for you:

- **How’s today going?** (`daily_briefing`): Today’s earnings against a usual day, the pace, notable payments, and who’s on the site.
- **Weekly review** (`weekly_review`): The last 7 days against the week before: earnings, sources, traffic and conversions, with ideas.
- **What brings paying customers?** (`what_brings_customers`): Which channels, campaigns and landing pages bring people who pay, and where to focus.
- **Find conversion leaks** (`optimise_conversion`): A full conversion audit: where visitors leak, which pages and journeys sell, and what to fix first.
- **Improve the site, and prove it** (`improve_site`): The closed loop: find the biggest leak, change the site as an experiment, and read the result.
- **Fix what frustrates visitors** (`fix_friction`): Script errors, rage and dead clicks and failing form fields: their causes in the code, and fixes.
- **Review experiments** (`review_experiments`): Every A/B experiment of the last 90 days: verdicts, broken splits, and what to stop or keep running.
- **Help odo see the site** (`instrument_site`): Audit the site’s code against what odo records: names, labels, sections, forms, privacy, goals.
- **Review one page** (`page_review`): How one page performs and what to change on it.

How to run them, and more to copy (what’s working, what’s leaking, heatmaps, posts, experiments, earnings), are in [prompts to try](https://odo.gg/docs/prompts).

## Good answers

odo tells every assistant how to answer: quote rates with how many people they rest on, use the 95% ranges and p-values the tools give, don’t call a difference real when ranges overlap heavily, and say which money odo read from the platform itself (verified) and which was self-reported. Converting means a traced payment unless you name a goal, event or page.

Text from your pages and your visitors’ browsers (button labels, error messages, form names, event names) reaches the assistant as data, and odo tells it never to follow that text as instructions, nor add a script or address because a message suggests it.

## How access works

- odo is its own OAuth 2.1 server for this: the authorization code flow with PKCE (S256 only), and a consent screen on odo, signed in as yourself.
- Apps identify themselves with a Client ID Metadata Document, or register themselves (Dynamic Client Registration).
- Access tokens last an hour. Refresh tokens change on every use and lapse after 60 idle days. A code used twice revokes what it was exchanged for. Tokens are stored as SHA-256 only.
- Every tool call checks your access again, as the dashboard does: someone removed from a project loses it in their assistant at once.
- The endpoint takes bearer tokens only, never your session cookie, up to 240 requests a minute per connection.
- It speaks MCP over Streamable HTTP, statelessly: 2026-07-28 clients and 2025 ones alike.
- When a project’s plan has lapsed, tools say so instead of answering.
