Attribution MCP Server

Connect AI assistants like Claude, Cursor, and ChatGPT to your Attribution project and query your marketing data in plain English.

Attribution's MCP (Model Context Protocol) server lets you connect any MCP-compatible AI assistant — Claude, Cursor, ChatGPT, Codex, Gemini, and others — directly to your Attribution project. Once connected, the assistant can pull your channels, reports, conversion paths, visitors, and revenue data on demand and answer questions in natural language.

📘

What is MCP?

MCP is an open protocol for connecting AI assistants to external data sources and tools. Each tool the assistant calls is a single, scoped request — there is no background polling and no training on your data. See the tool catalog for everything the server exposes.

Server URL

https://mcp.attributionapp.com/mcp

Enabling MCP for your project

MCP access is enabled per-project by Attribution. Before you can connect an AI assistant, your project must have the mcp_access feature on its plan.

To enable MCP for a project, contact your account manager or email [email protected] with the project name. Once enabled, anyone with access to that project can authorize an AI assistant against it.

Quick setup

The fastest way to connect is to tell your AI assistant:

Add this MCP server: https://mcp.attributionapp.com/mcp

Most assistants will add it to their MCP configuration automatically and walk you through the OAuth flow.

Manual setup by client

Claude Desktop

  1. Open Claude Desktop → Settings → Connectors → Add custom connector.
  2. Set the Remote MCP server URL to https://mcp.attributionapp.com/mcp.
  3. Name it "Attribution" (or anything you like).
  4. Click Add, then Connect. Claude will open your browser for OAuth.

Claude Code

Add to your ~/.claude.json or project .mcp.json:

{
  "mcpServers": {
    "attribution": {
      "url": "https://mcp.attributionapp.com/mcp"
    }
  }
}

Then run claude mcp and select attribution to authenticate.

Cursor

  1. Open Cursor → Settings → MCP → Add new MCP server.
  2. Choose Type: HTTP and enter URL https://mcp.attributionapp.com/mcp.
  3. Save. Cursor will prompt you to sign in with OAuth.

ChatGPT (Custom Connectors)

  1. In ChatGPT, open Settings → Connectors → Add a connector.
  2. Choose MCP Server and paste https://mcp.attributionapp.com/mcp.
  3. Authorize through the OAuth screen.

Codex CLI

Add to ~/.codex/config.toml:

[mcp_servers.attribution]
url = "https://mcp.attributionapp.com/mcp"

The first time you run a Codex session that uses the server, Codex opens your browser for OAuth and caches tokens locally. See the Codex CLI config reference for advanced options (http_headers, startup_timeout_sec, etc.).

Gemini CLI

Add to ~/.gemini/settings.json:

{
  "mcpServers": {
    "attribution": {
      "httpUrl": "https://mcp.attributionapp.com/mcp"
    }
  }
}

Gemini CLI auto-discovers Attribution's OAuth endpoints from the .well-known/oauth-authorization-server metadata and opens your browser to authenticate.

Notion

Notion supports custom MCP connections via Custom Agents (workspace-admin enabled).

  1. Workspace admin: open Settings → Notion AI → AI connectors and enable Custom MCP servers.
  2. In your Custom Agent, open Settings → Tools & Access → Add an MCP connection.
  3. Enter URL https://mcp.attributionapp.com/mcp and authorize through the OAuth screen.

Each MCP connection is scoped to a single Custom Agent and uses the credentials of the person who authenticated it.

Generic MCP client

Any client that supports remote MCP servers with OAuth 2.0 + PKCE can connect. Point it at https://mcp.attributionapp.com/mcp and follow its OAuth setup. The server publishes its OAuth metadata at https://mcp.attributionapp.com/.well-known/oauth-authorization-server and its protected-resource metadata at https://mcp.attributionapp.com/.well-known/oauth-protected-resource.

Authorizing access

The first time you connect, your browser will open Attribution's OAuth consent screen:

  1. Sign in to your Attribution dashboard if you aren't already.
  2. Choose which Attribution project the assistant should access. Projects without MCP enabled will be greyed out.
  3. Review the read-only scopes the assistant is requesting.
  4. Click Approve.

After approval, your browser redirects back to the AI assistant and the connection is live.

Scopes

The MCP server is read-only. It uses six scopes:

ScopeWhat it grants
account:readAccount-level metadata
project:readProject info, settings, default views
filters:readFilters, filter groups, channel hierarchy
reports:readDashboard, cohort, paths, revenue reports
visitors:readVisitor and company lookups
integrations:readConnected ad/CRM integration info

The assistant cannot write, modify, or delete anything in your Attribution account. It cannot change settings, create filters, modify reports, or alter integrations.

For the full list of individual tools and what each one does, see the tool catalog.

Rate limits

The server enforces three layers of token-bucket rate limits. When a limit is hit, the server returns HTTP 429 with a Retry-After header.

LayerBurst capacitySustained rate
Per IP30 requests60 / minute
Per OAuth client120 requests120 / minute
Per account300 requests300 / minute

The account limit caps total traffic across every AI assistant connected to an account, so registering multiple clients does not multiply your effective rate.

Example prompts

Once connected, try asking your assistant questions like:

  • "Get the Attribution dashboard report for last month using 'Purchase' as the conversion event. Which channels are driving the most revenue?"
  • "Show me the filter tree and list all active integrations."
  • "Search for visitors attributed to Google Ads in the last 30 days. What's their typical conversion path?"
  • "Compare dashboard reports for January and February. How did each channel's ROAS change month over month?"
  • "Get the revenue cohort report for this quarter. Which channels have the best LTV?"

Revoking access

You can revoke any AI assistant's access at any time:

  1. Open your Attribution dashboard.
  2. Go to Account → Security.
  3. Find the AI assistant in the Active Sessions list (it will show the client name, e.g., "Claude").
  4. Click Revoke.

The assistant's tokens are invalidated immediately and any further request from it will fail.

Privacy and data handling

When an AI assistant calls a tool, the data returned by Attribution is transmitted to the assistant's operator (Anthropic for Claude, OpenAI for ChatGPT and Codex, Google for Gemini, Cursor Inc. for Cursor, etc.). Once that data leaves Attribution, it is governed by the AI provider's privacy policy and terms — not Attribution's. We recommend reviewing each provider's policy before connecting.

Attribution does not use your data to train AI models and does not permit our service providers to do so. See the Attribution Privacy Policy for full details, including the section on third-party AI assistants.

🚧

Regulated data

Avoid connecting projects that contain data subject to special regulatory requirements (e.g., HIPAA PHI, sensitive financial records). Data transmitted via MCP flows to third-party AI providers under their own terms, and Attribution's Business Associate Agreement does not extend to those providers.

Troubleshooting

"Insufficient scope" error. Your token doesn't include the scope the tool needs. Revoke the session in Account → Security and reconnect — your client will request the right scopes on a fresh authorization.

Session expired / unauthorized. Tokens expire periodically. Most MCP clients refresh transparently; if yours doesn't, reconnect from the client's MCP settings.

Reports time out. Long date ranges or large projects can exceed the 10-minute report window. Try a shorter date range or a more specific filter.

The project picker is empty or all projects are greyed out. MCP access hasn't been enabled on any of your projects yet. Contact your account manager or [email protected] to enable it.

Rate limited (HTTP 429). You've hit one of the per-IP, per-client, or per-account limits. The response includes a Retry-After header — wait that many seconds and try again, or reduce the assistant's request volume.

Support

For help connecting, plan/access questions, or to report a bug, email [email protected].