Every Claude Code session on this machine, measured from the usage
object the API returned — not from /context, which estimates
client-side and is known to over-count MCP tools. This is the invoice.
Median across every cold start. The top row is not logged anywhere — it is the arithmetic remainder once every component Claude Code does record is subtracted from what the API charged. Hatched bars are inferred, solid bars are read from the transcript.
Split on whether a deferred_tools_delta entry is present.
When it is absent, every tool schema loads upfront. Same machine, same account — an observed
association, not a randomised trial.
Tool schemas are the largest thing Claude Code sends and the one thing it never writes to disk, so a transcript can only give their total. These numbers come from asking each server directly for its tool list, which is the same JSON the API receives. Click a server for its heaviest tools.
Click a project to open its sessions. Click a session for the full breakdown and the raw usage object.
For each transcript under ~/.claude/projects/, the first assistant record
carrying a usage object, excluding subagent sidechains. At that instant the only thing in
context is what Claude Code put there plus the opening message.
Total = input_tokens + cache_creation_input_tokens + cache_read_input_tokens.
A cold start has cache_read_input_tokens == 0. Warm starts are shown but excluded from
the headline distribution, because a cache hit means part of the prefix was already paid for earlier.
Cameron Cooke replicated its counting logic and found it sums per-tool count_tokens
calls for MCP servers, double-charging the shared schema: 45,018 reported against 15,282 real.
async-let.com