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
/
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 }
No line in this hunk matches that.