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.

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.
| Need | Do this | Source of the rule |
|---|---|---|
| Pick the tool | Name generate_image in the instruction | Sume tools-and-gates |
| Know the arguments | Call tools_schema with the tool name | Sume tools-and-gates |
| Preview cost | Pass optional dry_run | Sume OAuth page |
| Cap spend | Pass optional max_spend_usd | Enforced only when provided |
| Avoid the 400 | Use tool_choice: auto | Claude 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
- Codex MCP input schema budget: how many Sume tools you load
Codex 0.158.0 makes MCP and Code Mode input schema budgets configurable. Sume keeps tool descriptions short and shows fewer tools to a read-only session.
- Apply a LUT to video by API: no .cube file, use lutrgb curves
Sume's video filter cannot load a .cube LUT because lut3d is not allowlisted. Per-channel curves with lutrgb or lutyuv are the supported way to grade.
- Deepgram Flux numerals toggle vs Sume STT digits
Deepgram Flux can switch numerals on mid-stream for PINs and phone numbers. Sume STT is a batch job with fixed provider settings and no numerals flag.
- Deepgram Flux TTS speed 0.5 to 1.5 vs Sume's 0.6 to 1.5
Deepgram widened Flux TTS speed to 0.5-1.5 in 0.05 steps on 2026-08-31. Sume TTS accepts generation_config.speed from 0.6 to 1.5, plus a deprecated enum.
Written by Sume