Claude Opus 5.5 tool_choice any 400: steer Sume tools instead

Opus 5.5 returns 400 for tool_choice any or tool. Use auto, then steer to generate_image with instructions and tools_schema, and keep dry_run before paid calls.

4 min readSume
All posts

On Claude Opus 5.5, tool_choice types any and tool return a 400, so you cannot force a Sume tool call that way. Send auto, name the tool in the instruction (generate_image, the live underscore id), and have the model read its contract with tools_schema first.

The 400 is from the Claude release notes read 2026-10-01; the Sume details from MCP tools and gates.

What exactly changed on Opus 5.5?

The September 22, 2026 note says: "tool_choice types any and tool also return a 400 error, as on Claude Fable 5.1; use auto with strict tool use." It also says thinking cannot be disabled on this model; omit the field and use effort. This post covers only the tool-choice part.

How do I get the model to call the right Sume tool?

Live Sume tool ids are underscore names, and the server canonicalizes dots to underscores, so tools.list still works. State the id you want in the system prompt. The docs' own example instruction is: "Call tools_schema with name \"generate_image\" and explain idempotency_key and dry_run before submitting any paid generation." Retired aliases such as image-generations_create map to generate_image, so avoid hard-coding them.

Steering options without forced tool_choice, from the docs read 2026-10-01.
NeedDo thisSource of the rule
Pick the toolName generate_image in the instructionSume tools-and-gates
Know the argumentsCall tools_schema with the tool nameSume tools-and-gates
Preview costPass optional dry_runSume OAuth page
Cap spendPass optional max_spend_usdEnforced only when provided
Avoid the 400Use tool_choice: autoClaude release notes

What happens when a tool call fails?

Sume's server returns tool failures as a tool result with isError: true and a structured envelope containing a code and message, rather than only a JSON-RPC error. That lets the model read the failure and adapt, for example an insufficient_scope on a read-only session. See Opus 5.5 with dry_run and a spend cap for the cost side.

Do paid calls need extra guards?

There is no mcp:paid scope; spend is wallet and admission. Paid and write calls require idempotency_key, which the docs describe as a stable key for transport and dedup, not human approval. Since you cannot force the call, also check the visible tool list: a mcp:read session will not list generate_image at all.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume