E-TOOLS-004
Some tools have no declared request schema, no declared response schema, or neither. The agent can still call them, just without a contract to bind to.check tools/schemas · error_code E-TOOLS-004 · doctor exits 0 (warning only)
What you’re seeing
Doctor counts, per tool, whether its input schema and output schema each came from a real source (an OpenAPI response schema, a tRPC.output(), a
typed server action, or the AI judge) versus unknown. It warns whenever at
least one tool is blind on either side, and names up to eight of them.
Why
Nothing is broken here; a blind tool still runs, permissively. The cost is precision: the agent cannot know a blind tool’s arguments and must not assume it takes none, and it has to pass a blind tool’s whole output through instead of binding to the two fields a generated screen actually needs.The fix
Declare the shape in the contract you already publish. That is the rung that survives a refactor, since it is generated from your own source of truth rather than inferred:vendo sync with a model key so the judgment pass reads the
handler source and fills the blind slots. It never overwrites a slot your
contract already filled.
Leaving tools blind is safe. It only costs the agent precision.
Related errors
E-TOOLS-001
every tool disabled
E-TOOLS-002
tool surface is empty
E-TOOLS-003
tools ungraded