docs / reference

MCP server

Ask Claude or Cursor what each customer spent, check their caps, see refused calls and loops, and change a customer's cap, through noburn's hosted MCP server.

noburn runs a hosted MCP server at https://noburn.dev/api/mcp. Connect your AI assistant to it with a project's SDK key, and you can ask things like:

  • "Who were our ten most expensive customers this month?"
  • "How much of ws_42's cap is left, and when does it reset?"
  • "Show me the runs noburn stopped for looping today."
  • "Give ws_42 a $50 monthly cap." (needs a key that can manage budgets)

Claude Code and Cursor connect to it directly; Claude Desktop needs a small bridge, shown below. The server only sees the project the SDK key belongs to.

Connect

You need the project's SDK key: open your project and find SDK key. To let the assistant change caps, turn on Can manage budgets there; without it, the assistant can read but not write.

Claude Code

claude mcp add --transport http noburn https://noburn.dev/api/mcp \
  --header "Authorization: Bearer <SDK key>"

Run /mcp in Claude Code to check that noburn is connected.

Cursor

Add this to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one repository):

{
  "mcpServers": {
    "noburn": {
      "url": "https://noburn.dev/api/mcp",
      "headers": { "Authorization": "Bearer <SDK key>" }
    }
  }
}

Claude Desktop

Claude Desktop connects to remote servers that need a header through the mcp-remote bridge (it needs Node.js). In Settings → Developer → Edit Config, add:

{
  "mcpServers": {
    "noburn": {
      "command": "npx",
      "args": [
        "-y", "mcp-remote", "https://noburn.dev/api/mcp",
        "--header", "Authorization:${NOBURN_AUTH}"
      ],
      "env": { "NOBURN_AUTH": "Bearer <SDK key>" }
    }
  }
}

Restart Claude Desktop afterwards.

Keep the key out of shared files: a .cursor/mcp.json committed to a repository shares the key with everyone who can read it.

Tools

ToolWhat it doesNeeds
get_spend_by_end_userAI spend per end user, highest first, for an optional from / to period, with the project totalany key
list_budgetsThe caps set on end users, a page at a timeany key
get_budgetOne end user's cap, what they've used this window, what's left and when it resetsany key
recent_blocked_eventsThe latest calls noburn refused, optionally for one reason (for example loop_detected or user_budget_exceeded) or one end userany key
get_pricingThe model prices noburn costs calls with, and your project's overridesany key
set_end_user_budgetCreate or replace an end user's cap: limit, limit_type (usd or requests), window (day, week, month or total), reset_spendCan manage budgets

These are the same data and rules as the REST API and per-customer budgets. A cap set through MCP applies on that end user's next check(), shows in the dashboard, and is recorded in the audit log against the SDK key. Writes share the key's limit of 120 per minute.

Limits

  • One project per key. To work across projects, add the server once per project with a different name, for example noburn-acme.
  • The server answers each request on its own (stateless), so it has no notifications or streaming.
  • A request without a valid key gets 401 before any tool runs.

On this page