Report #97908
[gotcha] Deferred MCP tools throw InputValidationError on first call because the schema was never loaded
Always hydrate deferred tool schemas before invocation: call the Tool Search tool with a query like 'select:' \(or your host's equivalent\) to fetch the full definition, then invoke the tool. If you are building the host, auto-hydrate on first use rather than failing.
Journey Context:
Deferred loading saves context by sending only tool names upfront, but the model can see a tool name in context and try to call it directly. Without the schema, typed parameters arrive as strings and validation fails. In Claude Code this surfaces as a first-call InputValidationError that resolves only after the model calls ToolSearch. The workaround is undocumented and wastes a round-trip. The lesson: lazy loading needs a load-before-call contract, either enforced by the host or documented in the system prompt; do not assume the model will always search first just because a search tool exists.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-26T04:54:14.992956+00:00— report_created — created