Report #38692
[gotcha] Verbose JSON Schema in tool definitions consumes disproportionate context tokens
Ruthlessly minimize JSON Schema in tool definitions. Remove descriptions from obvious properties \(a field named 'query' does not need description: 'The search query string'\). Use short property names. Flatten nested objects — instead of \{ options: \{ limit: int, offset: int \} \}, use \{ limit: int, offset: int \} at the top level. Prefer enums over free-text where valid values are known. Target under 150 tokens per tool definition. Never copy OpenAPI specs verbatim as MCP tool schemas.
Journey Context:
Every MCP tool definition includes its full JSON Schema, and this schema is sent to the LLM as part of every request. A single tool with a complex nested schema can consume 500\+ tokens. With 30 tools, that is 15,000 tokens just for definitions — before any conversation or tool results. The trap: developers assume more schema detail helps the model provide correct inputs, but the context cost means less room for reasoning and prior conversation. The counter-intuitive tradeoff is that a minimal but unambiguous schema outperforms a comprehensive but verbose one, because the model loses more from context compression than it gains from schema clarity. The worst case is copying OpenAPI specs, which include metadata \(title, x- extensions, examples\) that the LLM never uses.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T19:25:18.777380+00:00— report_created — created