CEODash

Ask Claude about your numbers

CEODash speaks the Model Context Protocol. Point Claude at your workspace and it can read your KPIs and latest financial snapshot — the same numbers on your dashboard, answered in chat. Read-only, workspace-scoped, and authenticated with a token you mint yourself.

Enabled on this deployment

The endpoint below is live and accepting connections.

What it is

A Model Context Protocol server built into CEODash. MCP is the open standard for giving an AI assistant access to a system it would not otherwise know about — so instead of exporting a CSV and pasting it into a chat, Claude queries your live workspace directly and answers from it.

It runs on the CEODash API itself, so there is nothing to install and nothing to keep in sync. It talks JSON-RPC 2.0 over HTTP POST at https://ceodash.tools/api/mcp, identifies as ceodash-kpis v1.0.0, and implements protocol revision 2025-03-26. This version answers each request in a single response; there is no server-sent-event stream, so a GET to the endpoint returns 405.

What Claude can see

Three tools, listed here exactly as the server reports them from tools/list:

  • list_kpis

    List every KPI on the caller's active KPI version (level, scope, target, latest value, achievement %).

  • get_kpi

    Get one KPI by id (from list_kpis) with its recent measurement trend.

  • get_financial_summary

    Latest financial snapshot for the caller's workspace (same metrics as the dashboard hero strip: revenue/ARR/MRR, burn, runway, cash, headcount when connected).

  • get_runway

    How many months of cash the company has left, with the cash, the monthly burn, which burn window was used, the formula, the source files and whether the figures are real or demo. Returns an explanation instead of a number when the data cannot support one.

  • explain_margin_move

    Why gross profit and gross margin moved between the last two closed periods, split into cost rate, mix, volume and price. Splits the data cannot support are returned as not separated, with the money riding on them and what would unlock them. Includes the source files and whether the figures are real or demo.

That is the complete list. Claude sees the KPIs on your active KPI version and your latest financial snapshot — and nothing else in CEODash.

MCP vs. the AI inside CEODash

These are two different data scopes, and it is worth being precise about which is which. The MCP endpoint on this page is a narrow, read-only window your own AI client reaches from outside. Emma (the advisor) and the AI CFO live inside the product and read your data directly — they are not limited to the three MCP tools.

Through MCP (this page)Emma & the AI CFO (inside the product)
Three read-only tools, exactly as listed above.Read your uploaded financials and workspace data directly.
Enabled by an administrator; off by default.Part of the product for paid workspaces — no separate switch.
Authenticated with a 15-minute token you mint yourself.Authenticated by your signed-in session, workspace-scoped.
Active KPI version and latest financial snapshot only.Your KPIs, financial uploads, and scenario context.

A useful way to read what the in-product AI returns is by claim level, deepest last: L1 retelling (restating a number), L2 breakdown (splitting it into its parts), L3 cause (why it moved), and L4 recommendation (what to do about it). We describe answers by that ladder rather than as generic "AI insights".

Security

Read-only. Every tool is a read. The server exposes no way to create, edit, or delete anything in your workspace, so there is no instruction Claude could follow — or that could be smuggled into a document it reads — that would change your data through this endpoint.

Workspace-scoped. Requests carry a token that names your user and workspace, and every query is filtered to that workspace. A token without a workspace claim is rejected outright.

Short-lived credentials. Tokens are minted on demand and expire 15 minutes after issue. There is no long-lived API key to leak, and nothing to revoke if one does — it has already expired.

Off unless enabled. The endpoint is disabled by default and returns 404 until an administrator turns it on for the deployment.

Get a token

Sign in to CEODash as an administrator, then call the token endpoint from the same browser session. It returns a JWT scoped to your user and workspace.

curl -s https://ceodash.tools/api/auth/pipeline-token \
  -H "Cookie: <your session cookie>" | jq -r .data.token

The token is valid for 15 minutes. That is deliberately short, and it is the main rough edge of this release: an MCP client configured with a pasted token will start returning authentication errors once it expires, and you will need to mint a fresh one. Longer-lived credentials for MCP clients specifically are the next thing we want to add here.

Connect Claude Code

Claude Code speaks HTTP MCP natively. Add the server with the token in an Authorization header:

claude mcp add --transport http ceodash https://ceodash.tools/api/mcp \
  --header "Authorization: Bearer $CEODASH_TOKEN"

Then ask it something — "how are we tracking against our KPI targets?" — and it will call list_kpis and answer from the result.

Connect Claude Desktop

Claude Desktop connects to remote servers like this one through Settings → Connectors → Add custom connector. Give it the endpoint URL:

https://ceodash.tools/api/mcp

Note that claude_desktop_config.json is for locally-launched servers — it starts a command on your machine and talks to it over stdin and stdout, which is a different transport from the HTTP endpoint above. If you would rather configure this in the file than in the connectors UI, you need a bridge process that adapts one to the other, such as the community mcp-remote package:

{
  "mcpServers": {
    "ceodash": {
      "command": "npx",
      "args": [
        "-y", "mcp-remote", "https://ceodash.tools/api/mcp",
        "--header", "Authorization: Bearer ${CEODASH_TOKEN}"
      ],
      "env": { "CEODASH_TOKEN": "<token from the step above>" }
    }
  }
}

That bridge is third-party software we do not ship or control; the connectors UI is the supported path.

Check it by hand

If a client will not connect, call the endpoint directly. A working server answers with its three tools:

curl -s https://ceodash.tools/api/mcp \
  -H "Authorization: Bearer $CEODASH_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

A 404 means the server is not enabled on this deployment. A 401 means the token is missing, expired, or has no workspace — mint a new one.

MCP server - CEODash