Documentation

MCP: connect an AI agent

Give Claude, ChatGPT or any MCP client scoped access to your analytics, and revoke it any time.

What MCP gives you

The Model Context Protocol is how AI agents get tools. Connect Open Analytics and your agent can read your traffic and, where you granted it, manage the things you would otherwise click through the dashboard to change, all in plain conversation. It is the same access your own code has over the API, handed to an agent through a consent screen and revocable in one click.

Ask about your traffic

"How did last week compare to the one before?" The agent reads visitors, sources, pages, geography, devices and sessions, over any range, and answers in words.

Read revenue

Net revenue and its parts are readable, gross, refunds, disputes, fees and net, over any range and bucketed over time, in the site's reporting currency.

Manage, when you allow it

With write scopes granted, an agent can create and edit funnels, define events, publish widgets and manage sharing, each scope opt-in on its own.

Stay in your tools

It works in whatever MCP client you already use, so the numbers come to your editor or chat rather than you going to them.

Connect in three steps

Point your client at the server

Every MCP client takes one URL:

MCP endpoint
https://api.getopen.so/mcp

Approve the OAuth consent

The client registers itself and sends you through an OAuth consent in the browser. You see the app's name and exactly which scopes it asks for, and you approve or deny. No API key ever changes hands.

Start asking

Once approved, the tools are live in that client. Ask a question about your traffic and the agent will call them.

Set it up in your client

The three below are the common paths. Any other MCP client, an assistant of your own included, takes the same URL in its own MCP settings; the "Other clients" tab is the config most of them accept.

Settings › Connectors › Add custom connector
Name: Open Analytics
URL:  https://api.getopen.so/mcp

If your client only speaks stdio

Some clients connect to a local command rather than a URL. Bridge to the remote server with npx mcp-remote https://api.getopen.so/mcp as the command, and the same OAuth consent opens in your browser.
The transport is POST-only JSON-RPC (no server-sent-events stream). The well-known clients above work as-is; if a client insists on an SSE stream and cannot connect, that is the reason.

Scopes: what an agent can and cannot do

Scope groupCoversDefault
readSites, analytics and revenue aggregates; team and billing where asked.Requested on connect
writeFunnels, events, widgets and sharing, each granular and separate.Opt-in per grant
never writableDeleting a site, team membership, API keys, billing and domains.Human-only, always
  • Read scopes: site:read analytics:read realtime:read revenue:read, plus team:read and billing:read where asked.
  • Write scopes are granular and opt-in per grant: sites:write funnels:write events:write widgets:write share:write. An agent granted funnels cannot touch sharing.
  • Some things are never writable by any agent, by design: deleting a site, team membership, API keys, billing and domains stay human-only.

Revoking

DashboardAccountConnected apps

Every connected app is listed with its scopes; revoking cuts its access immediately. Connections and first-use-from-a-new-source events are journalled, so you can always answer who could read this account.

For questions inside the dashboard itself, there is also the built-in assistant, which needs no setup.

Common questions