The whole hunk
from line 67, old and new numbered
/
lines
from line 67
6767 --argjson tools "$TOOLS" \
6868 --arg msg "$USER_MSG" \
6969 '{
70 model: "claude-opus-5",
70 model: "claude-opus-5-5",
7171 max_tokens: 1024,
7272 tools: $tools,
7373 tool_choice: {type: "auto", disable_parallel_tool_use: true},
from line 104
104104 --arg tool_use_id "$TOOL_USE_ID" \
105105 --arg result "$RESULT" \
106106 '{
107 model: "claude-opus-5",
107 model: "claude-opus-5-5",
108108 max_tokens: 1024,
109109 tools: $tools,
110110 tool_choice: {type: "auto", disable_parallel_tool_use: true},
from line 144
144144 # JSON, which YAML accepts as flow syntax.
145145 {
146146 cat <<'YAML'
147 model: claude-opus-5
147 model: claude-opus-5-5
148148 max_tokens: 1024
149149 tool_choice: {type: auto, disable_parallel_tool_use: true}
150150 tools:
from line 255
255255 # Send the user's request along with the tool definition. Claude decides
256256 # whether to call the tool based on the request and the tool description.
257257 response = client.messages.create(
258 model="claude-opus-5",
258 model="claude-opus-5-5",
259259 max_tokens=1024,
260260 tools=tools,
261261 tool_choice={"type": "auto", "disable_parallel_tool_use": True},
from line 285
285285 # its tool_use_id must match the id from the tool_use block above. The
286286 # assistant's previous response is included so Claude has the full history.
287287 followup = client.messages.create(
288 model="claude-opus-5",
288 model="claude-opus-5-5",
289289 max_tokens=1024,
290290 tools=tools,
291291 tool_choice={"type": "auto", "disable_parallel_tool_use": True},
from line 358
358358 // Send the user's request along with the tool definition. Claude decides
359359 // whether to call the tool based on the request and the tool description.
360360 const response = await client.messages.create({
361 model: "claude-opus-5",
361 model: "claude-opus-5-5",
362362 max_tokens: 1024,
363363 tools,
364364 tool_choice: { type: "auto", disable_parallel_tool_use: true },
from line 391
391391 // its tool_use_id must match the id from the tool_use block above. The
392392 // assistant's previous response is included so Claude has the full history.
393393 const followup = await client.messages.create({
394 model: "claude-opus-5",
394 model: "claude-opus-5-5",
395395 max_tokens: 1024,
396396 tools,
397397 tool_choice: { type: "auto", disable_parallel_tool_use: true },
from line 487
487487 // whether to call the tool based on the request and the tool description.
488488 var response = await client.Messages.Create(new MessageCreateParams
489489 {
490 Model = Model.ClaudeOpus5,
490 Model = Model.ClaudeOpus5_5,
491491 MaxTokens = 1024,
492492 Tools = tools,
493493 ToolChoice = toolChoice,
from line 530
530530
531531 var followup = await client.Messages.Create(new MessageCreateParams
532532 {
533 Model = Model.ClaudeOpus5,
533 Model = Model.ClaudeOpus5_5,
534534 MaxTokens = 1024,
535535 Tools = tools,
536536 ToolChoice = toolChoice,
from line 615
615615 // Send the user's request along with the tool definition. Claude decides
616616 // whether to call the tool based on the request and the tool description.
617617 response, err := client.Messages.New(ctx, anthropic.MessageNewParams{
618 Model: anthropic.ModelClaudeOpus5,
618 Model: anthropic.ModelClaudeOpus5_5,
619619 MaxTokens: 1024,
620620 Tools: tools,
621621 ToolChoice: toolChoice,
from line 654
654654 }
655655
656656 followup, err := client.Messages.New(ctx, anthropic.MessageNewParams{
657 Model: anthropic.ModelClaudeOpus5,
657 Model: anthropic.ModelClaudeOpus5_5,
658658 MaxTokens: 1024,
659659 Tools: tools,
660660 ToolChoice: toolChoice,
from line 741
741741 // Send the user's request along with the tool definition. Claude decides
742742 // whether to call the tool based on the request and the tool description.
743743 Message response = client.messages().create(MessageCreateParams.builder()
744 .model(Model.CLAUDE_OPUS_5)
744 .model(Model.CLAUDE_OPUS_5_5)
745745 .maxTokens(1024L)
746746 .addTool(calendarTool)
747747 .toolChoice(toolChoice)
from line 769
769769 // its tool_use_id must match the id from the tool_use block above. The
770770 // assistant's previous response is included so Claude has the full history.
771771 Message followup = client.messages().create(MessageCreateParams.builder()
772 .model(Model.CLAUDE_OPUS_5)
772 .model(Model.CLAUDE_OPUS_5_5)
773773 .maxTokens(1024L)
774774 .addTool(calendarTool)
775775 .toolChoice(toolChoice)
from line 845
845845 // Send the user's request along with the tool definition. Claude decides
846846 // whether to call the tool based on the request and the tool description.
847847 $response = $client->messages->create(
848 model: 'claude-opus-5',
848 model: 'claude-opus-5-5',
849849 maxTokens: 1024,
850850 tools: $tools,
851851 toolChoice: $toolChoice,
from line 876
876876 // its tool_use_id must match the id from the tool_use block above. The
877877 // assistant's previous response is included so Claude has the full history.
878878 $followup = $client->messages->create(
879 model: 'claude-opus-5',
879 model: 'claude-opus-5-5',
880880 maxTokens: 1024,
881881 tools: $tools,
882882 toolChoice: $toolChoice,
from line 957
957957 # Send the user's request along with the tool definition. Claude decides
958958 # whether to call the tool based on the request and the tool description.
959959 response = client.messages.create(
960 model: "claude-opus-5",
960 model: "claude-opus-5-5",
961961 max_tokens: 1024,
962962 tools: tools,
963963 tool_choice: tool_choice,
from line 982
982982 # its tool_use_id must match the id from the tool_use block above. The
983983 # assistant's previous response is included so Claude has the full history.
984984 followup = client.messages.create(
985 model: "claude-opus-5",
985 model: "claude-opus-5-5",
986986 max_tokens: 1024,
987987 tools: tools,
988988 tool_choice: tool_choice,
from line 1078
10781078 -H "anthropic-version: 2023-06-01" \
10791079 -H "content-type: application/json" \
10801080 -d "$(jq -n --argjson tools "$TOOLS" --argjson messages "$MESSAGES" \
1081 '{model: "claude-opus-5", max_tokens: 1024, tools: $tools, tool_choice: {type: "auto", disable_parallel_tool_use: true}, messages: $messages}')"
1081 '{model: "claude-opus-5-5", max_tokens: 1024, tools: $tools, tool_choice: {type: "auto", disable_parallel_tool_use: true}, messages: $messages}')"
10821082 }
10831083
10841084 RESPONSE=$(call_api)
from line 1136
11361136 # JSON, which YAML accepts as flow syntax.
11371137 {
11381138 cat <<'YAML'
1139 model: claude-opus-5
1139 model: claude-opus-5-5
11401140 max_tokens: 1024
11411141 tool_choice: {type: auto, disable_parallel_tool_use: true}
11421142 tools:
from line 1243
12431243 ]
12441244
12451245 response = client.messages.create(
1246 model="claude-opus-5",
1246 model="claude-opus-5-5",
12471247 max_tokens=1024,
12481248 tools=tools,
12491249 tool_choice={"type": "auto", "disable_parallel_tool_use": True},
from line 1271
12711271 )
12721272
12731273 response = client.messages.create(
1274 model="claude-opus-5",
1274 model="claude-opus-5-5",
12751275 max_tokens=1024,
12761276 tools=tools,
12771277 tool_choice={"type": "auto", "disable_parallel_tool_use": True},
from line 1334
13341334 ];
13351335
13361336 let response = await client.messages.create({
1337 model: "claude-opus-5",
1337 model: "claude-opus-5-5",
13381338 max_tokens: 1024,
13391339 tools,
13401340 tool_choice: { type: "auto", disable_parallel_tool_use: true },
from line 1362
13621362 });
13631363
13641364 response = await client.messages.create({
1365 model: "claude-opus-5",
1365 model: "claude-opus-5-5",
13661366 max_tokens: 1024,
13671367 tools,
13681368 tool_choice: { type: "auto", disable_parallel_tool_use: true },
from line 1448
14481448
14491449 var response = await client.Messages.Create(new MessageCreateParams
14501450 {
1451 Model = Model.ClaudeOpus5,
1451 Model = Model.ClaudeOpus5_5,
14521452 MaxTokens = 1024,
14531453 Tools = tools,
14541454 ToolChoice = toolChoice,
from line 1486
14861486
14871487 response = await client.Messages.Create(new MessageCreateParams
14881488 {
1489 Model = Model.ClaudeOpus5,
1489 Model = Model.ClaudeOpus5_5,
14901490 MaxTokens = 1024,
14911491 Tools = tools,
14921492 ToolChoice = toolChoice,
from line 1567
15671567 }
15681568
15691569 response, err := client.Messages.New(ctx, anthropic.MessageNewParams{
1570 Model: anthropic.ModelClaudeOpus5,
1570 Model: anthropic.ModelClaudeOpus5_5,
15711571 MaxTokens: 1024,
15721572 Tools: tools,
15731573 ToolChoice: toolChoice,
from line 1604
16041604 ))
16051605
16061606 response, err = client.Messages.New(ctx, anthropic.MessageNewParams{
1607 Model: anthropic.ModelClaudeOpus5,
1607 Model: anthropic.ModelClaudeOpus5_5,
16081608 MaxTokens: 1024,
16091609 Tools: tools,
16101610 ToolChoice: toolChoice,
from line 1693
16931693 .build());
16941694
16951695 Message response = client.messages().create(MessageCreateParams.builder()
1696 .model(Model.CLAUDE_OPUS_5)
1696 .model(Model.CLAUDE_OPUS_5_5)
16971697 .maxTokens(1024L)
16981698 .addTool(calendarTool)
16991699 .toolChoice(toolChoice)
from line 1721
17211721 .build());
17221722
17231723 response = client.messages().create(MessageCreateParams.builder()
1724 .model(Model.CLAUDE_OPUS_5)
1724 .model(Model.CLAUDE_OPUS_5_5)
17251725 .maxTokens(1024L)
17261726 .addTool(calendarTool)
17271727 .toolChoice(toolChoice)
from line 1796
17961796 ];
17971797
17981798 $response = $client->messages->create(
1799 model: 'claude-opus-5',
1799 model: 'claude-opus-5-5',
18001800 maxTokens: 1024,
18011801 tools: $tools,
18021802 toolChoice: $toolChoice,
from line 1829
18291829 ];
18301830
18311831 $response = $client->messages->create(
1832 model: 'claude-opus-5',
1832 model: 'claude-opus-5-5',
18331833 maxTokens: 1024,
18341834 tools: $tools,
18351835 toolChoice: $toolChoice,
from line 1898
18981898 ]
18991899
19001900 response = client.messages.create(
1901 model: "claude-opus-5",
1901 model: "claude-opus-5-5",
19021902 max_tokens: 1024,
19031903 tools: tools,
19041904 tool_choice: tool_choice,
from line 1924
19241924 }
19251925
19261926 response = client.messages.create(
1927 model: "claude-opus-5",
1927 model: "claude-opus-5-5",
19281928 max_tokens: 1024,
19291929 tools: tools,
19301930 tool_choice: tool_choice,
from line 2009
20092009 -H "anthropic-version: 2023-06-01" \
20102010 -H "content-type: application/json" \
20112011 -d "$(jq -n --argjson tools "$TOOLS" --argjson messages "$MESSAGES" \
2012 '{model: "claude-opus-5", max_tokens: 1024, tools: $tools, messages: $messages}')"
2012 '{model: "claude-opus-5-5", max_tokens: 1024, tools: $tools, messages: $messages}')"
20132013 }
20142014
20152015 RESPONSE=$(call_api)
from line 2066
20662066 # which YAML accepts as flow syntax.
20672067 {
20682068 cat <<'YAML'
2069 model: claude-opus-5
2069 model: claude-opus-5-5
20702070 max_tokens: 1024
20712071 tools:
20722072 - name: create_calendar_event
from line 2192
21922192 ]
21932193
21942194 response = client.messages.create(
2195 model="claude-opus-5",
2195 model="claude-opus-5-5",
21962196 max_tokens=1024,
21972197 tools=tools,
21982198 messages=messages,
from line 2217
22172217 messages.append({"role": "user", "content": tool_results})
22182218
22192219 response = client.messages.create(
2220 model="claude-opus-5",
2220 model="claude-opus-5-5",
22212221 max_tokens=1024,
22222222 tools=tools,
22232223 messages=messages,
from line 2294
22942294 ];
22952295
22962296 let response = await client.messages.create({
2297 model: "claude-opus-5",
2297 model: "claude-opus-5-5",
22982298 max_tokens: 1024,
22992299 tools,
23002300 messages,
from line 2319
23192319 messages.push({ role: "user", content: toolResults });
23202320
23212321 response = await client.messages.create({
2322 model: "claude-opus-5",
2322 model: "claude-opus-5-5",
23232323 max_tokens: 1024,
23242324 tools,
23252325 messages,
from line 2417
24172417
24182418 var response = await client.Messages.Create(new MessageCreateParams
24192419 {
2420 Model = Model.ClaudeOpus5,
2420 Model = Model.ClaudeOpus5_5,
24212421 MaxTokens = 1024,
24222422 Tools = tools,
24232423 Messages = messages,
from line 2449
24492449
24502450 response = await client.Messages.Create(new MessageCreateParams
24512451 {
2452 Model = Model.ClaudeOpus5,
2452 Model = Model.ClaudeOpus5_5,
24532453 MaxTokens = 1024,
24542454 Tools = tools,
24552455 Messages = messages,
from line 2537
25372537 }
25382538
25392539 response, err := client.Messages.New(ctx, anthropic.MessageNewParams{
2540 Model: anthropic.ModelClaudeOpus5,
2540 Model: anthropic.ModelClaudeOpus5_5,
25412541 MaxTokens: 1024,
25422542 Tools: tools,
25432543 Messages: messages,
from line 2569
25692569 messages = append(messages, anthropic.NewUserMessage(toolResults...))
25702570
25712571 response, err = client.Messages.New(ctx, anthropic.MessageNewParams{
2572 Model: anthropic.ModelClaudeOpus5,
2572 Model: anthropic.ModelClaudeOpus5_5,
25732573 MaxTokens: 1024,
25742574 Tools: tools,
25752575 Messages: messages,
from line 2666
26662666 .build());
26672667
26682668 Message response = client.messages().create(MessageCreateParams.builder()
2669 .model(Model.CLAUDE_OPUS_5)
2669 .model(Model.CLAUDE_OPUS_5_5)
26702670 .maxTokens(1024L)
26712671 .addTool(calendarTool)
26722672 .addTool(listTool)
from line 2696
26962696 .build());
26972697
26982698 response = client.messages().create(MessageCreateParams.builder()
2699 .model(Model.CLAUDE_OPUS_5)
2699 .model(Model.CLAUDE_OPUS_5_5)
27002700 .maxTokens(1024L)
27012701 .addTool(calendarTool)
27022702 .addTool(listTool)
from line 2783
27832783 ];
27842784
27852785 $response = $client->messages->create(
2786 model: 'claude-opus-5',
2786 model: 'claude-opus-5-5',
27872787 maxTokens: 1024,
27882788 tools: $tools,
27892789 messages: $messages,
from line 2807
28072807 $messages[] = ['role' => 'user', 'content' => $toolResults];
28082808
28092809 $response = $client->messages->create(
2810 model: 'claude-opus-5',
2810 model: 'claude-opus-5-5',
28112811 maxTokens: 1024,
28122812 tools: $tools,
28132813 messages: $messages,
from line 2885
28852885 ]
28862886
28872887 response = client.messages.create(
2888 model: "claude-opus-5",
2888 model: "claude-opus-5-5",
28892889 max_tokens: 1024,
28902890 tools: tools,
28912891 messages: messages
from line 2906
29062906 messages << {role: "user", content: tool_results}
29072907
29082908 response = client.messages.create(
2909 model: "claude-opus-5",
2909 model: "claude-opus-5-5",
29102910 max_tokens: 1024,
29112911 tools: tools,
29122912 messages: messages
from line 2922
29222922**What to expect**
29232923
29242924```text Output wrap
2925I checked your calendar for next Monday and found an existing meeting from 2pm to 3pm. I've scheduled the planning session for 10am to 11am to avoid the conflict.
2925I checked your calendar for Monday, March 30 and found an existing meeting from 2pm to 3pm. I've scheduled the planning session for 10am to 11am to avoid the conflict.
29262926```
29272927
29282928For more on concurrent execution and ordering guarantees, see [Parallel tool use](https://platform.claude.com/docs/en/agents-and-tools/tool-use/parallel-tool-use).
from line 2995
29952995 -H "anthropic-version: 2023-06-01" \
29962996 -H "content-type: application/json" \
29972997 -d "$(jq -n --argjson tools "$TOOLS" --argjson messages "$MESSAGES" \
2998 '{model: "claude-opus-5", max_tokens: 1024, tools: $tools, messages: $messages}')"
2998 '{model: "claude-opus-5-5", max_tokens: 1024, tools: $tools, messages: $messages}')"
29992999 }
30003000
30013001 RESPONSE=$(call_api)
from line 3064
30643064 # which YAML accepts as flow syntax.
30653065 {
30663066 cat <<'YAML'
3067 model: claude-opus-5
3067 model: claude-opus-5-5
30683068 max_tokens: 1024
30693069 tools:
30703070 - name: create_calendar_event
from line 3196
31963196 ]
31973197
31983198 response = client.messages.create(
3199 model="claude-opus-5",
3199 model="claude-opus-5-5",
32003200 max_tokens=1024,
32013201 tools=tools,
32023202 messages=messages,
from line 3226
32263226 messages.append({"role": "user", "content": tool_results})
32273227
32283228 response = client.messages.create(
3229 model="claude-opus-5",
3229 model="claude-opus-5-5",
32303230 max_tokens=1024,
32313231 tools=tools,
32323232 messages=messages,
from line 3307
33073307 ];
33083308
33093309 let response = await client.messages.create({
3310 model: "claude-opus-5",
3310 model: "claude-opus-5-5",
33113311 max_tokens: 1024,
33123312 tools,
33133313 messages,
from line 3340
33403340 messages.push({ role: "user", content: toolResults });
33413341
33423342 response = await client.messages.create({
3343 model: "claude-opus-5",
3343 model: "claude-opus-5-5",
33443344 max_tokens: 1024,
33453345 tools,
33463346 messages,
from line 3441
34413441
34423442 var response = await client.Messages.Create(new MessageCreateParams
34433443 {
3444 Model = Model.ClaudeOpus5,
3444 Model = Model.ClaudeOpus5_5,
34453445 MaxTokens = 1024,
34463446 Tools = tools,
34473447 Messages = messages,
from line 3482
34823482
34833483 response = await client.Messages.Create(new MessageCreateParams
34843484 {
3485 Model = Model.ClaudeOpus5,
3485 Model = Model.ClaudeOpus5_5,
34863486 MaxTokens = 1024,
34873487 Tools = tools,
34883488 Messages = messages,
from line 3579
35793579 }
35803580
35813581 response, err := client.Messages.New(ctx, anthropic.MessageNewParams{
3582 Model: anthropic.ModelClaudeOpus5,
3582 Model: anthropic.ModelClaudeOpus5_5,
35833583 MaxTokens: 1024,
35843584 Tools: tools,
35853585 Messages: messages,
from line 3614
36143614 messages = append(messages, anthropic.NewUserMessage(toolResults...))
36153615
36163616 response, err = client.Messages.New(ctx, anthropic.MessageNewParams{
3617 Model: anthropic.ModelClaudeOpus5,
3617 Model: anthropic.ModelClaudeOpus5_5,
36183618 MaxTokens: 1024,
36193619 Tools: tools,
36203620 Messages: messages,
from line 3724
37243724 .build());
37253725
37263726 Message response = client.messages().create(MessageCreateParams.builder()
3727 .model(Model.CLAUDE_OPUS_5)
3727 .model(Model.CLAUDE_OPUS_5_5)
37283728 .maxTokens(1024L)
37293729 .addTool(calendarTool)
37303730 .addTool(listTool)
from line 3756
37563756 .build());
37573757
37583758 response = client.messages().create(MessageCreateParams.builder()
3759 .model(Model.CLAUDE_OPUS_5)
3759 .model(Model.CLAUDE_OPUS_5_5)
37603760 .maxTokens(1024L)
37613761 .addTool(calendarTool)
37623762 .addTool(listTool)
from line 3849
38493849 ];
38503850
38513851 $response = $client->messages->create(
3852 model: 'claude-opus-5',
3852 model: 'claude-opus-5-5',
38533853 maxTokens: 1024,
38543854 tools: $tools,
38553855 messages: $messages,
from line 3881
38813881 $messages[] = ['role' => 'user', 'content' => $toolResults];
38823882
38833883 $response = $client->messages->create(
3884 model: 'claude-opus-5',
3884 model: 'claude-opus-5-5',
38853885 maxTokens: 1024,
38863886 tools: $tools,
38873887 messages: $messages,
from line 3963
39633963 ]
39643964
39653965 response = client.messages.create(
3966 model: "claude-opus-5",
3966 model: "claude-opus-5-5",
39673967 max_tokens: 1024,
39683968 tools: tools,
39693969 messages: messages
from line 3992
39923992 messages << {role: "user", content: tool_results}
39933993
39943994 response = client.messages.create(
3995 model: "claude-opus-5",
3995 model: "claude-opus-5-5",
39963996 max_tokens: 1024,
39973997 tools: tools,
39983998 messages: messages
from line 4089
40894089
40904090
40914091 final_message = client.beta.messages.tool_runner(
4092 model="claude-opus-5",
4092 model="claude-opus-5-5",
40934093 max_tokens=1024,
40944094 tools=[create_calendar_event, list_calendar_events],
40954095 messages=[
from line 4156
41564156 });
41574157
41584158 const finalMessage = await client.beta.messages.toolRunner({
4159 model: "claude-opus-5",
4159 model: "claude-opus-5-5",
41604160 max_tokens: 1024,
41614161 tools: [createCalendarEvent, listCalendarEvents],
41624162 messages: [
from line 4267
42674267 var runner = client.Beta.Messages.ToolRunner(
42684268 new MessageCreateParams
42694269 {
4270 Model = Model.ClaudeOpus5,
4270 Model = Model.ClaudeOpus5_5,
42714271 MaxTokens = 1024,
42724272 Messages =
42734273 [
from line 4374
43744374 []anthropic.BetaTool{createCalendarEvent, listCalendarEvents},
43754375 anthropic.BetaToolRunnerParams{
43764376 BetaMessageNewParams: anthropic.BetaMessageNewParams{
4377 Model: anthropic.ModelClaudeOpus5,
4377 Model: anthropic.ModelClaudeOpus5_5,
43784378 MaxTokens: 1024,
43794379 Messages: []anthropic.BetaMessageParam{
43804380 anthropic.NewBetaUserMessage(anthropic.NewBetaTextBlock(
from line 4460
44604460 BetaToolRunner runner = client.beta()
44614461 .messages()
44624462 .toolRunner(MessageCreateParams.builder()
4463 .model(Model.CLAUDE_OPUS_5)
4463 .model(Model.CLAUDE_OPUS_5_5)
44644464 .maxTokens(1024)
44654465 .addBeta("structured-outputs-2025-11-13")
44664466 .addUserMessage("Check what I have next Monday, then schedule a planning session that avoids any conflicts.")
from line 4559
45594559 'content' => 'Check what I have next Monday, then schedule a planning session that avoids any conflicts.',
45604560 ],
45614561 ],
4562 model: Model::CLAUDE_OPUS_5,
4562 model: Model::CLAUDE_OPUS_5_5,
45634563 tools: [$createCalendarEvent, $listCalendarEvents],
45644564 );
45654565
from line 4625
46254625 # The runner calls the API, runs requested tools, and feeds results back
46264626 # until Claude produces a final answer.
46274627 runner = client.beta.messages.tool_runner(
4628 model: "claude-opus-5",
4628 model: "claude-opus-5-5",
46294629 max_tokens: 1024,
46304630 tools: [CreateCalendarEvent.new, ListCalendarEvents.new],
46314631 messages: [
from line 4648
46484648**What to expect**
46494649
46504650```text Output wrap
4651I checked your calendar for next Monday and found an existing meeting from 2pm to 3pm. I've scheduled the planning session for 10am to 11am to avoid the conflict.
4651I checked your calendar for Monday, March 30 and found an existing meeting from 2pm to 3pm. I've scheduled the planning session for 10am to 11am to avoid the conflict.
46524652```
46534653
46544654The output is identical to Ring 3. The difference is in the code: roughly half the lines, no manual loop, and the schema lives next to the implementation.