Repository navigation
fix(tools): coerce stringified argument types to schema expectations (#13350) - #13386
Open
patrickswedish wants to merge 1 commit into
Open
patrickswedish wants to merge 1 commit into
patrickswedish wants to merge 1 commit into
Conversation
Contributor
|
All contributors have signed the CLA ✍️ ✅ |
…ontinuedev#13350) Signed-off-by: Patrick Ribbsaeter <patrickswedish@gmail.com>
patrickswedish
force-pushed
the
fix/tool-args-schema-coercion-13350
branch
from
October 15, 2026 21:43
4d74130 to
9c81235
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Coerces stringified JSON arrays, objects, booleans, and numbers in tool arguments to match their expected schema types before invoking MCP and built-in tools.
Motivation & Context
Certain models (such as Ollama/Qwen) and serialization pipelines emit tool call arguments where array or object parameters are passed as serialized JSON strings (e.g.
{"paths": "[\"file1.jsx\", \"file2.jsx\"]"}or{"dryRun": "false"}). When received by tools (especially MCP servers validating with Zod/JSON Schema), these cause validation failures like:MCP error -32602: Input validation error: Invalid arguments for tool read_multiple_files: Invalid input: expected array, received string at pathsChanges
core/tools/parseArgs.ts, expandcoerceArgsToSchemato parse stringified JSON arrays and objects, and coerce boolean and numeric strings to their respective primitives when defined by the schema (including union/anyOf/oneOfconstructs).core/tools/callTool.ts, ensurecoerceArgsToSchemais run on parsed tool arguments before dispatching to built-in tools as well.core/tools/parseArgs.vitest.ts, add unit tests covering array, object, boolean, number, and union type coercion.Fixes #13350
Diff minimization and pre-flight validation performed with ZeroSlop™ CI — Ribbsaeter Systems.