# MCP server: Traqio in Claude and Cursor

URL: https://traqio.app/docs/api/mcp
Last updated: 2026-10-14

Connect Claude Code, Cursor or Claude Desktop to Traqio's hosted MCP server and ask about ROAS, cohorts and links in plain language, with a scoped API key.

Traqio hosts a **Model Context Protocol** (MCP) server at `https://api.traqio.app/mcp`. Each of its tools runs one endpoint of the [public API](https://traqio.app/docs/api), with the same API key and the same scopes — so a read-only key is read-only in Claude too. The server is stateless (Streamable HTTP, one JSON-RPC message per request).

## Connect

### Create an API key

In the console, **Settings → API keys**. Give the assistant the narrowest scopes that answer your questions — `reports:read` is enough to ask about ROAS. The console shows the Claude Code command with the key filled in, the one time the key is on screen.

### Add the server to your client

Claude Code:

```bash
claude mcp add --transport http traqio https://api.traqio.app/mcp \
  --header "Authorization: Bearer $TRAQIO_API_KEY"
```

Cursor — `.cursor/mcp.json`:

```json
{
  "mcpServers": {
    "traqio": {
      "url": "https://api.traqio.app/mcp",
      "headers": {
        "Authorization": "Bearer tq_live_…"
      }
    }
  }
}
```

Claude Desktop — `claude_desktop_config.json`, through the `mcp-remote` bridge:

```json
{
  "mcpServers": {
    "traqio": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://api.traqio.app/mcp",
        "--header",
        "Authorization:${TRAQIO_AUTH}"
      ],
      "env": {
        "TRAQIO_AUTH": "Bearer tq_live_…"
      }
    }
  }
}
```

### Ask a question

“Which Meta ads had the best ROAS last week?”, “Is my TikTok spend sync healthy?”, “Create a tracking link for the autumn campaign”. The `traqio_status` tool tells the assistant which workspace and scopes it holds.

## Tools

| Tool | Does | Scope |
| --- | --- | --- |
| list_apps | your apps | reports:read |
| get_roas | ROAS by campaign, ad set or ad | reports:read |
| get_roas_daily | spend, revenue and ROAS per day | reports:read |
| get_cohorts | install-day cohorts | reports:read |
| get_revenue | revenue by currency and attribution | reports:read |
| get_rejections | what Traqio refused, and why | reports:read |
| get_connector_health | ad-network connections and their last sync | reports:read |
| sync_spend | pull spend now | reports:write |
| list_links | an app's tracking links | links:read |
| create_tracking_link | create a tracking link | links:write |
| erase_user_data | erase a user's data (GDPR) — marked destructive, so your client asks you first | privacy:write |
| traqio_status | the workspace, the key and its scopes | any key |

`tools/list` returns only the tools the key may call. Dates follow the API's conventions: `YYYY-MM-DD`, `to` exclusive.

## Frequently asked questions

**Which MCP clients work with Traqio?**
Any client that speaks MCP's Streamable HTTP transport with a custom header: Claude Code and Cursor natively, Claude Desktop through the mcp-remote bridge.

**Can the assistant change anything in my account?**
Only what the key's scopes allow. A key with reports:read alone can only read reports: the server lists only the tools the key may call. Write scopes allow triggering a spend pull (reports:write), creating tracking links (links:write) and erasing a user's data on request (privacy:write, a tool marked destructive) — never managing keys, members, credentials or billing.
