Tools vs Resources vs Prompts: the MCP primitive you're misusing

MCP has three primitives, not one. Most servers cram everything into Tools, then blame the protocol for bloated context. The fix is one question per call: who pulls the trigger, the model, the app, or the user. Get it wrong on read-only data and you have handed the model a decision it should never have been making, and you cannot see the bad ones on a token counter.