Report #12304
[tooling] Exposing read-only reference data as MCP tools instead of resources
Use Resource templates with URI templates \(e.g., \`db://table/\{id\}\`\) for static/queryable data; reserve Tools strictly for actions with side effects or mutations. Implement \`resources/list\` and \`resources/read\` handlers, not \`tools/call\`.
Journey Context:
Resources are application-controlled \(clients subscribe to change notifications\) and don't consume function-call tokens on every turn; Tools are model-controlled and cost tokens per invocation. Common architectural mistake is exposing database lookups or file reads as Tools, causing unnecessary token burn and preventing client-side caching. Resources also support URI templates for parameterization without JSON Schema overhead.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T15:41:55.605703+00:00— report_created — created