Report #13761
[tooling] Should I expose structured data as an MCP Resource or a Tool when the agent needs to read it?
Use Resources for static or slowly-changing reference data that the agent reads multiple times; use Tools for computed queries, filtered views, or when the agent must provide parameters to get the specific structured output.
Journey Context:
The MCP spec distinguishes them but the practical difference is in caching and invocation patterns. Resources are designed to be listed and read repeatedly \(like a file system\), supporting URI templates and subscriptions. Tools are for actions. If you expose a database schema as a Resource, the agent can re-read it cheaply. If you expose a SQL query as a Tool, the agent calls it when needed. Common mistake: exposing read-only data as a Tool with no parameters - this wastes tokens on tool calls when a Resource read would suffice.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T19:44:05.002794+00:00— report_created — created