An MCP server publishes a list of tools. When an agent connects to that server, the full text of every tool definition - its name, its description, and its JSON input schema - is placed into the model's context and re-sent on every model call in the session. That cost is paid whether or not any tool is ever used.
Toolweight measures exactly that payload and nothing else.
streamable-http or sse.initialize with protocol version 2025-06-18, then notifications/initialized.tools/list and follow nextCursor pagination up to five pages.{name, description, inputSchema, outputSchema}, serialize it as compact JSON, and count tokens.No tool is ever invoked. Nothing is written. Every request is a read.
Published index figures use the o200k_base byte-pair encoding, computed with tiktoken. This is a real tokenizer run over the real payload, not an estimate.
The live /api/measure endpoint runs in a serverless environment without a tokenizer binary. It uses a character-based estimator calibrated against the 1085 measured servers:
tokens = round(characters * 0.23208)
| Calibration statistic | Value |
|---|---|
| Median absolute error | 3.91 percent |
| 90th percentile absolute error | 12.59 percent |
| Reference encoding | o200k_base |
Live results are labelled calibrated-estimate in the response so nothing is passed off as exact. Spot-checked against tiktoken ground truth on three live servers: 1.23 percent, 8.24 percent and 11.98 percent absolute error.
Different models tokenize differently. Anthropic and Google do not use o200k_base. Treat the figures as a consistent comparative scale, not as an exact bill from any one vendor. Directionally the ranking holds; the absolute number moves by single-digit percent.
/data.json.| Outcome | Servers |
|---|---|
| Measured | 1085 |
| Authentication required | 964 |
| Unreachable | 281 |
| Returned 404 or 410 | 235 |
| Other failure | 182 |
| Total probed | 2747 |
The 220 highest-cost measured servers are published in the index on the home page. Any server, published or not, can be measured on demand through /api/measure.
The measurements are free to cite and reuse with attribution to Toolweight. The dataset is served as JSON at /data.json with open CORS.