Report #100727
[gotcha] MCP tool definitions are billed as input tokens on every turn, even when the tool is never called
Keep the always-loaded tool set small; defer rarely-used tools via tool search or progressive disclosure; write terse descriptions and compact JSON schemas; reserve \`alwaysLoad\` for tools used on nearly every turn.
Journey Context:
The Anthropic tool-use docs make clear that the \`tools\` parameter counts toward input tokens on every request, alongside every \`tool\_use\` and \`tool\_result\` block, plus a tool-use system prompt \(hundreds of tokens per model\). Because MCP servers are discovered once and then injected repeatedly, a multi-server setup can eat a large fraction of the context window before the user sends a message. Prompt caching only helps the static prefix; deferred loading is the real fix.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-07-02T04:59:34.231206+00:00— report_created — created