A consulting firm wants their internal agent to "know about" its 200-record client list and a library of ~50 frequently-referenced engagement playbooks. Currently, every conversation begins with the agent calling list_clients and list_playbooks just to load the available reference data — even when the conversation has nothing to do with either.
What's the cleanest pattern?
Why did you pick that answer? Two or three sentences. The act of articulating it is what builds the judgment — not the click that follows.
MCP resources are designed for exactly this case — content catalogs that should be discoverable without forcing the agent to execute tool calls just to find out what's available. Resources surface to the agent as a known inventory; the agent fetches detail on the specific items relevant to the current conversation. This is fundamentally different from tools, which represent actions. The distinction matters: it eliminates the "exploratory tool call" pattern that wastes tokens and round-trips on every session.
A local cache is an ad-hoc solution to a problem MCP already solves. The agent now has to know about the cache, refresh logic has to be built, and you've added infrastructure to replicate functionality that exists in the protocol.
200 client records plus 50 playbooks consumes thousands of tokens on every single call, including calls that have nothing to do with either. System prompts are for instructions and context that every turn needs — reference catalogs are not that.
get_anything collapses meaningful structural distinctions (client vs. playbook) into one ambiguous tool the agent will misuse. And it still doesn't solve the discovery problem — the agent doesn't know what to ask for unless it can see what's available.