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_42a $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
| Tool | What it does | Needs |
|---|---|---|
get_spend_by_end_user | AI spend per end user, highest first, for an optional from / to period, with the project total | any key |
list_budgets | The caps set on end users, a page at a time | any key |
get_budget | One end user's cap, what they've used this window, what's left and when it resets | any key |
recent_blocked_events | The latest calls noburn refused, optionally for one reason (for example loop_detected or user_budget_exceeded) or one end user | any key |
get_pricing | The model prices noburn costs calls with, and your project's overrides | any key |
set_end_user_budget | Create or replace an end user's cap: limit, limit_type (usd or requests), window (day, week, month or total), reset_spend | Can 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
401before any tool runs.