Pulse MCP server

Connect Pulse to Claude, Claude Code, Cursor, or any MCP-compatible agent and ask growth questions where you already work: “@pulse why did revenue drop last week?” The same server sets Pulse up for you — your agent can install the SDK, generate connect links for your ad accounts, and verify that data is flowing.

Endpoint

https://mcp.pulse.pulsecircle.studio/mcp

Transport: streamable HTTP. Authentication: your Pulse API key (shown once in the web app under Settings → API keys) in the Authorization header.

Claude Code

claude mcp add --transport http pulse https://mcp.pulse.pulsecircle.studio/mcp \
  --header "Authorization: Bearer YOUR_PULSE_API_KEY"

Cursor

Put this in .cursor/mcp.json in the project, or ~/.cursor/mcp.json to make it available everywhere:

{
  "mcpServers": {
    "pulse": {
      "url": "https://mcp.pulse.pulsecircle.studio/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_PULSE_API_KEY"
      }
    }
  }
}

If your Cursor build wants an explicit transport, add "type": "streamable-http" alongside the URL. Treat mcp.json as a secret-bearing file: it holds a live key, so keep it out of version control (.cursor/ in .gitignore), or use the global ~/.cursor/mcp.json instead of the project one.

Claude Desktop / other MCP clients

{
  "mcpServers": {
    "pulse": {
      "type": "streamable-http",
      "url": "https://mcp.pulse.pulsecircle.studio/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_PULSE_API_KEY"
      }
    }
  }
}

ChatGPT & claude.ai (OAuth — no API key)

Clients that connect over OAuth (ChatGPT connectors, the claude.ai web connectors) don’t take a pasted key — add the server by URL and it will send you to Pulse to sign in:

https://mcp.pulse.pulsecircle.studio/mcp

You’ll be redirected to Pulse, sign in (GitHub or an email link), pick the app to connect, and approve read-only access. The client registers itself automatically (dynamic client registration) and handles token refresh — nothing to copy. Revoke access any time by signing out of the client; the grant is scoped to the one app you chose.

Under the hood the server implements OAuth 2.1 (PKCE, pulse.read scope); static API keys keep working for clients that prefer a header.

Tools

Setup

Analytics

Offline alternative (no network)

Some agents run behind an allow-list that blocks our domains outright. For those there is a second, local server delivered over npm instead of HTTP — it carries the setup and connection guides only (no account data, so no key needed):

npx @pulse-circle/mcp
{
  "mcpServers": {
    "pulse": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@pulse-circle/mcp"]
    }
  }
}

It is listed in the official MCP registry as studio.pulsecircle/pulse. Use the hosted server above when you want pulse_ask and real numbers.

Privacy

The server sees only aggregated metrics — no end-user personal data. Every answer carries data-quality metadata (completeness and caveats), and AI answers never contain numbers that don’t come from your data.