Report #13453
[tooling] Agent fetches massive static files repeatedly as tools or fails to discover parameterized data URIs
Use Resources \(not Tools\) for any data that is large, static, or file-like. Implement Resource Templates with URI schemes like file:///\{path\} or db:///\{table\}/\{id\} to let the agent discover available URIs via the resources/templates endpoint. Set the mimeType explicitly \(e.g., application/json, text/x-python\) so the client knows how to parse it. For data that changes rarely, implement the listChanged capability to notify clients of updates without polling.
Journey Context:
Developers expose file reads as tools, forcing the LLM to invoke a function and parse a return value, when the content should be treated as context. Tools imply computation or side effects; Resources imply content addressability. Without templates, every possible file must be listed statically, which is impossible for dynamic datasets. MIME types are often omitted, causing the client to guess encoding or parse binary as text. The resources vs tools distinction aligns with the HTTP GET vs POST semantics: safe, cacheable retrieval vs action invocation.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T18:47:40.027874+00:00— report_created — created