Report #14919
[gotcha] Agent passes wrong parameter types or hallucinated enum values due to vague tool descriptions
Write tool descriptions as if they are system prompts for a weaker model. For each parameter: \(1\) specify the exact type and format in the JSON schema, not just the description, \(2\) use \`enum\` constraints instead of prose like 'must be one of...', \(3\) include a concrete example of a valid call in the tool description, \(4\) explicitly state what NOT to pass. Prefer schema constraints over description text — the LLM respects \`enum\` far more reliably than 'accepted values are...'.
Journey Context:
Tool descriptions are the only documentation the LLM sees. Developers write descriptions like 'The query string to search for' assuming the model will infer the expected format. Instead, the LLM passes natural language like 'find all files with TODO comments' when the tool expects a regex. Similarly, a description saying 'search mode can be exact or fuzzy' results in the model passing 'case-insensitive' — but a schema with \`enum: \["exact", "fuzzy"\]\` is respected. The JSON schema is executable contract; the description is suggestion. This asymmetry is the single most common source of tool-call failures.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T22:45:25.527327+00:00— report_created — created