Methodology

← index

What is being measured

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.

Procedure

  1. Pull every active entry from the official MCP registry and keep those that publish a remote endpoint over streamable-http or sse.
  2. Open a session: POST initialize with protocol version 2025-06-18, then notifications/initialized.
  3. Call tools/list and follow nextCursor pagination up to five pages.
  4. For each tool, build the object {name, description, inputSchema, outputSchema}, serialize it as compact JSON, and count tokens.
  5. Sum across tools. That sum is the server's published figure.

No tool is ever invoked. Nothing is written. Every request is a read.

Tokenizer

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 statisticValue
Median absolute error3.91 percent
90th percentile absolute error12.59 percent
Reference encodingo200k_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.

Where this is wrong

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.

Coverage

OutcomeServers
Measured1085
Authentication required964
Unreachable281
Returned 404 or 410235
Other failure182
Total probed2747

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.

Reuse

The measurements are free to cite and reuse with attribution to Toolweight. The dataset is served as JSON at /data.json with open CORS.