[BUG] MCP tool calls with dict/array parameters serialized as strings, fails mid-session after working correctly
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
MCP tool calls with an object or array-shaped parameter fail validation with the parameter arriving as a JSON string instead of a parsed object/dict. Simple scalar-only parameters (plain strings/ints) continue to work normally. This matches the pattern already described in #5504, #3084, #2747, and #6249, but those threads are closed/locked, so filing fresh per the bot's own instruction on #5504.
What Should Happen?
The tool call's object/array parameter should arrive at the MCP server as a parsed dict/array, not as a raw JSON string, so the server's schema validation succeeds.
Error Messages/Logs
1 validation error for call[<tool_name>]
body
Input should be a valid dictionary or instance of <SomeQuery> [type=model_type, input_value='{"data": {...}}', input_type=str]
Steps to Reproduce
- In a long-running Claude Code session, call an MCP tool whose schema expects an object-shaped parameter (e.g. a "body" field containing a nested dict), passing a well-formed JSON object.
- Observe the call succeeds initially.
- Later in the same session (no code/prompt changes on the client side), call the same tool again with an equivalently-shaped object.
- Observe it now fails with the error above, as if the object were stringified before reaching the server.
- Restarting the session does not resolve it.
- Tried multiple payload shapes/field names to rule out a schema mismatch; all fail identically, pointing at client-side serialization rather than the tool's own schema.
Affected in this case: two independent MCP servers (a Klaviyo integration and a separate image-generation service). Related closed/locked threads: #5504, #3084, #2747, #6249.
Claude Model
Sonnet (default)
Is this a regression?
Yes, this worked in a previous version
Last Working Version
same session, no version change
Claude Code Version
2.1.62 (Claude Code)
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Terminal.app (macOS)
Additional Information
_No response_
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗