Four beats, one design decision.
Connect a few MCP servers and, before you type a word, your model is handed full JSON schemas for every tool. A large, growing slice of its context window, spent on instructions it will mostly never use.
Neither problem is a bug. Both fall out of one design decision: MCP delivers the entire tool catalog eagerly and unauthenticated at a single point — tools/list — and treats every tool's name, description, and schema as trusted documentation, streamed straight into the model's context.
From that one choice: no budget → the token tax — nothing accounts for what metadata costs. No integrity → metadata trust — nothing normalizes, verifies, or pins the bytes the model actually reads.
A tool description is just text, and the model reads it as instruction. So it can hide an instruction a human reviewer will never see — the approval-view fidelity gap: you approve clean-looking text; the model receives a concealed payload.