Report #76581
[gotcha] MCP tools/list returns all tools at once — no pagination, no filtering, no cursor
Implement client-side tool filtering or progressive disclosure. Cache the full tool list internally but only expose a relevant subset to the LLM based on the current task. Use semantic routing, keyword matching, or task classification to select tools before injecting their schemas into the context window.
Journey Context:
The MCP spec's tools/list method returns a flat array of every available tool with its full schema — name, description, and inputSchema. There is no cursor-based pagination, no search parameter, and no way to request a subset. When a server exposes 50\+ tools, every tool definition is loaded into the LLM's context before any user message is processed. This can consume thousands of tokens on definitions alone, leaving less room for reasoning. The common mistake is to blindly inject all tools into the system prompt. The right approach is to treat the tool list as a registry and selectively expose tools per task, effectively building a two-stage retrieval system: first select candidate tools, then present only those to the model.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T11:08:00.219581+00:00— report_created — created