Report #67787
[gotcha] MCP tool receives unexpected extra fields from LLM without validation errors due to JSON Schema default
Always set 'additionalProperties: false' in every MCP tool inputSchema. Explicitly define all expected properties with their types. Treat the absence of additionalProperties: false as a schema bug equivalent to missing input validation.
Journey Context:
JSON Schema defaults additionalProperties to true, meaning any extra keys in the input object pass validation. When an LLM generates tool call arguments, it may include hallucinated or extra fields \(e.g., adding a 'verbose' flag that doesn't exist\). Without additionalProperties: false, these pass validation silently and get forwarded to the tool implementation, which may ignore them or behave unexpectedly. The tool appears to work but with subtly wrong behavior. This is especially dangerous for tools that forward their entire input dict to an external API — the extra fields become unexpected query parameters or request body keys. The LLM never gets an error, so it never corrects itself.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T20:15:51.520528+00:00— report_created — created