The whole hunk
from line 146, old and new numbered
/
lines
from line 146
146146 -H "anthropic-version: 2023-06-01" \
147147 -d @- <<'EOF'
148148 {
149 "model": "claude-opus-5",
149 "model": "claude-opus-5-5",
150150 "max_tokens": 1024,
151151 "tools": [
152152 {
from line 183
183183
184184 ```bash CLI
185185 ant messages create <<'YAML'
186 model: claude-opus-5
186 model: claude-opus-5-5
187187 max_tokens: 1024
188188 tools:
189189 - name: get_weather
from line 215
215215 client = anthropic.Anthropic()
216216
217217 response = client.messages.create(
218 model="claude-opus-5",
218 model="claude-opus-5-5",
219219 max_tokens=1024,
220220 tools=[
221221 {
from line 255
255255 const client = new Anthropic();
256256
257257 const response = await client.messages.create({
258 model: "claude-opus-5",
258 model: "claude-opus-5-5",
259259 max_tokens: 1024,
260260 tools: [
261261 {
from line 303
303303
304304 var parameters = new MessageCreateParams
305305 {
306 Model = Model.ClaudeOpus5,
306 Model = Model.ClaudeOpus5_5,
307307 MaxTokens = 1024,
308308 Tools = [
309309 new ToolUnion(new Tool()
from line 351
351351 client := anthropic.NewClient()
352352
353353 response, err := client.Messages.New(context.TODO(), anthropic.MessageNewParams{
354 Model: anthropic.ModelClaudeOpus5,
354 Model: anthropic.ModelClaudeOpus5_5,
355355 MaxTokens: 1024,
356356 Tools: []anthropic.ToolUnionParam{
357357 {OfTool: &anthropic.ToolParam{
from line 405
405405 AnthropicClient client = AnthropicOkHttpClient.fromEnv();
406406
407407 MessageCreateParams params = MessageCreateParams.builder()
408 .model(Model.CLAUDE_OPUS_5)
408 .model(Model.CLAUDE_OPUS_5_5)
409409 .maxTokens(1024L)
410410 .addTool(Tool.builder()
411411 .name("get_weather")
from line 454
454454 messages: [
455455 ['role' => 'user', 'content' => "What's the weather like in San Francisco?"]
456456 ],
457 model: 'claude-opus-5',
457 model: 'claude-opus-5-5',
458458 tools: [
459459 [
460460 'name' => 'get_weather',
from line 496
496496 client = Anthropic::Client.new
497497
498498 message = client.messages.create(
499 model: "claude-opus-5",
499 model: "claude-opus-5-5",
500500 max_tokens: 1024,
501501 tools: [
502502 {
from line 558
558558
559559| Model or setting | Restriction | What to use instead |
560560| ----------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
561| Manual [extended thinking](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) (`thinking: {type: "enabled"}`) | `any` and `tool` are not supported and result in an error | `auto` or `none`. [Adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking), including on models where thinking is on by default such as Claude Opus 5, supports forced tool use |
562| Claude Fable 5.1 and [Claude Mythos 5.1](https://anthropic.com/glasswing) | `any` and `tool` return a [400 error](https://platform.claude.com/docs/en/api/errors#forced-tool-use-not-supported) | `auto` with [strict tool use](https://platform.claude.com/docs/en/agents-and-tools/tool-use/strict-tool-use) to guarantee schema-valid tool inputs, or [structured outputs](https://platform.claude.com/docs/en/build-with-claude/structured-outputs) when you need a response in a fixed JSON shape. Prompting still influences which tool `auto` picks. `none` is also supported |
561| Manual [extended thinking](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) (`thinking: {type: "enabled"}`) | `any` and `tool` are not supported and result in an error | `auto` or `none`. [Adaptive thinking](https://platform.claude.com/docs/en/build-with-claude/thinking) itself doesn't block forced tool use (Claude Opus 5 supports it with thinking on); the models in the next row reject forced tool use regardless of thinking settings |
562| Claude Opus 5.5, Claude Fable 5.1, and [Claude Mythos 5.1](https://anthropic.com/glasswing) | `any` and `tool` return a [400 error](https://platform.claude.com/docs/en/api/errors#forced-tool-use-not-supported) | `auto` with [strict tool use](https://platform.claude.com/docs/en/agents-and-tools/tool-use/strict-tool-use) to guarantee schema-valid tool inputs, or [structured outputs](https://platform.claude.com/docs/en/build-with-claude/structured-outputs) when you need a response in a fixed JSON shape. Prompting still influences which tool `auto` picks. `none` is also supported |
563563
564564On models that support it, the highlighted lines are the only difference from a standard tool use request:
565565