Follow Discord
Sweep 22 Oct 2026 · 21:04Z Build v2.1.309 528 read Stable v2.1.308 Latest v2.1.309 Next v2.1.309 Feeds RSS JSON llms.txt llms-full.txt Unofficial
One change · api

advisor-tool changedagents-and-tools/tool-use/advisor-tool

Nearest release: v2.1.307, published 4 hours after this site recorded the change. Shown because the two are within 24 hours of each other. Nothing here says the release caused the edit.

Recorded here
Lines+17added
Lines−43removed
From line 153 where the diff opens
First seen 14 Aug 2026 this site's first read of the page
Recorded edits23to this page, all time

The whole hunk

from line 153, old and new numbered
/
lines
from line 153
153153 },
154154 Messages =
155155 [
156 new BetaMessageParam
156 new BetaUserMessageParam
157157 {
158 Role = Role.User,
159158 Content = "Build a concurrent worker pool in Go with graceful shutdown."
160159 }
161160 ],
from line 510
511510 
512511 var messages = new List<BetaMessageParam>
513512 {
514 new() { Role = Role.User, Content = "Build a concurrent worker pool in Go with graceful shutdown." }
513 new BetaUserMessageParam { Content = "Build a concurrent worker pool in Go with graceful shutdown." }
515514 };
516515 
517516 var response = await client.Beta.Messages.Create(new MessageCreateParams
from line 523
524523 });
525524 
526525 // Append the full response content, including any advisor_tool_result blocks
527 messages.Add(new BetaMessageParam
526 messages.Add(new BetaAssistantMessageParam
528527 {
529 Role = Role.Assistant,
530528 Content = response.Content.Select(block => new BetaContentBlockParam(block.Json)).ToList()
531529 });
532530 
533531 // Continue the conversation
534 messages.Add(new BetaMessageParam { Role = Role.User, Content = "Now add a max-in-flight limit of 10." });
532 messages.Add(new BetaUserMessageParam { Content = "Now add a max-in-flight limit of 10." });
535533 
536534 var followUp = await client.Beta.Messages.Create(new MessageCreateParams
537535 {
from line 589
591589 
592590 ```java Java
593591 import com.anthropic.models.beta.messages.BetaAdvisorTool20260301;
594 import com.anthropic.models.beta.messages.BetaContentBlock;
595592 import com.anthropic.models.beta.messages.BetaMessage;
596593 import com.anthropic.models.beta.messages.BetaMessageParam;
597594 import com.anthropic.models.beta.messages.BetaToolUnion;
from line 603
606603 BetaAdvisorTool20260301.builder().model(Model.CLAUDE_OPUS_5_5).build()));
607604 
608605 List<BetaMessageParam> messages = new ArrayList<>();
609 messages.add(BetaMessageParam.builder()
610 .role(BetaMessageParam.Role.USER)
611 .content("Build a concurrent worker pool in Go with graceful shutdown.")
612 .build());
606 messages.add(BetaMessageParam.ofUser(
607 "Build a concurrent worker pool in Go with graceful shutdown."));
613608 
614609 BetaMessage response = client.beta().messages().create(MessageCreateParams.builder()
615610 .model(Model.CLAUDE_SONNET_5)
from line 615
620615 .build());
621616 
622617 // Append the full response content, including any advisor_tool_result blocks
623 messages.add(BetaMessageParam.builder()
624 .role(BetaMessageParam.Role.ASSISTANT)
625 .contentOfBetaContentBlockParams(
626 response.content().stream().map(BetaContentBlock::toParam).toList())
627 .build());
618 messages.add(response.toParam());
628619 
629620 // Continue the conversation
630 messages.add(BetaMessageParam.builder()
631 .role(BetaMessageParam.Role.USER)
632 .content("Now add a max-in-flight limit of 10.")
633 .build());
621 messages.add(BetaMessageParam.ofUser("Now add a max-in-flight limit of 10."));
634622 
635623 BetaMessage followUp = client.beta().messages().create(MessageCreateParams.builder()
636624 .model(Model.CLAUDE_SONNET_5)
from line 893
905893 // ... your other tools
906894 };
907895 var task = "Build a concurrent worker pool in Go with graceful shutdown.";
908 var messages = new List<BetaMessageParam> { new() { Role = Role.User, Content = task } };
896 var messages = new List<BetaMessageParam> { new BetaUserMessageParam { Content = task } };
909897 var advisorCalled = false;
910898 
911899 for (var turn = 1; turn <= MaxTurns; turn++)
from line 906
918906 Messages = messages,
919907 Betas = ["advisor-tool-2026-03-01"]
920908 });
921 messages.Add(new BetaMessageParam
909 messages.Add(new BetaAssistantMessageParam
922910 {
923 Role = Role.Assistant,
924911 Content = response.Content.Select(block => new BetaContentBlockParam(block.Json)).ToList()
925912 });
926913 advisorCalled =
from line 928
941928 var results = RunYourTools(response.Content); // list of tool_result blocks
942929 if (results.Count > 0)
943930 {
944 messages.Add(new BetaMessageParam { Role = Role.User, Content = results });
931 messages.Add(new BetaUserMessageParam { Content = results });
945932 }
946933 // Skip this if your system prompt already tells the model to call sparingly.
947934 if (turn == NudgeTurn - 1 && !advisorCalled)
948935 {
949 messages.Add(new BetaMessageParam { Role = Role.User, Content = NudgeText });
936 messages.Add(new BetaUserMessageParam { Content = NudgeText });
950937 }
951938 }
952939 ```
from line 1061
10741061 );
10751062 String task = "Build a concurrent worker pool in Go with graceful shutdown.";
10761063 List<BetaMessageParam> messages = new ArrayList<>();
1077 messages.add(BetaMessageParam.builder()
1078 .role(BetaMessageParam.Role.USER)
1079 .content(task)
1080 .build());
1064 messages.add(BetaMessageParam.ofUser(task));
10811065 boolean advisorCalled = false;
10821066 
10831067 for (int turn = 1; turn <= MAX_TURNS; turn++) {
from line 1072
10881072 .messages(messages)
10891073 .addBeta("advisor-tool-2026-03-01")
10901074 .build());
1091 messages.add(BetaMessageParam.builder()
1092 .role(BetaMessageParam.Role.ASSISTANT)
1093 .contentOfBetaContentBlockParams(
1094 response.content().stream().map(BetaContentBlock::toParam).toList())
1095 .build());
1075 messages.add(response.toParam());
10961076 advisorCalled = advisorCalled
10971077 || response.content().stream().anyMatch(block ->
10981078 block.isServerToolUse()
from line 1087
11071087 
11081088 List<BetaContentBlockParam> results = runYourTools(response.content()); // list of tool_result blocks
11091089 if (!results.isEmpty()) {
1110 messages.add(BetaMessageParam.builder()
1111 .role(BetaMessageParam.Role.USER)
1112 .contentOfBetaContentBlockParams(results)
1113 .build());
1090 messages.add(BetaMessageParam.ofUserOfContentBlockParams(results));
11141091 }
11151092 // Skip this if your system prompt already tells the model to call sparingly.
11161093 if (turn == NUDGE_TURN - 1 && !advisorCalled) {
1117 messages.add(BetaMessageParam.builder()
1118 .role(BetaMessageParam.Role.USER)
1119 .content(NUDGE_TEXT)
1120 .build());
1094 messages.add(BetaMessageParam.ofUser(NUDGE_TEXT));
11211095 }
11221096 }
11231097 }
Feedback