MCP server

DataGauge speaks MCP. Point an agent — Claude, Cursor, Claude Code, anything that speaks the protocol — at one URL with your token, and it can read your metrics and list your apps directly. No install, no version to keep current: it's a hosted server, not a binary.

https://mcp.datagauge.dev/mcp

It is a read-only surface, by design. The two tools it exposes can read numbers and nothing else — there is no path through this server to send an event, create an app, or mint a key. A prompt-injected agent holding your credential can look, but it can never inflate what it's looking at. That's the trust stance applied to agents.

Auth

The server holds no credential of its own. Your token arrives per request as a Bearer token and is forwarded to the public API — the server mints, stores, and caches nothing.

Use a dg_live_ control token with the metrics:read and apps:read scopes. It is org-scoped, so one token covers every app in the organization. (An sk_live_ key works too, but it's scoped to a single app — apps.list would only ever see that one.)

Tools

ToolReadsBacks onto
apps.listyour apps, their type, and whether each has received eventsGET /v1/apps
metrics.getone metric for one app over a date windowGET /v1/metrics/{metric}

The usual loop: call apps.list to get an app's public id, then pass that id as metrics.get's project. metrics.get takes any metric the read API serves (mau, dau, signups, revenue, mrr, volume, …) plus optional date_from / date_to; event_count and event_series also need a name.

portfolio.summary is not in v1 yet — an agent composes it today by listing apps and reading each. It lands as a first-class tool once the batched portfolio surface is public.

Connect a client

For a native remote-MCP client, add the URL and your token as a Bearer credential. For a client that speaks stdio, bridge it with mcp-remote:

{
  "mcpServers": {
    "datagauge": {
      "command": "npx",
      "args": [
        "-y", "mcp-remote", "https://mcp.datagauge.dev/mcp",
        "--header", "Authorization: Bearer ${DATAGAUGE_CONTROL_KEY}"
      ]
    }
  }
}

Set DATAGAUGE_CONTROL_KEY to your dg_live_ token. A missing or unscoped token earns a clean 401/403 — the server never echoes the token back, in a challenge or an error.