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

One read of Claude Developer Platformapi-20261020T020708Z

124 pages moved out of 785 read.

Pages moved 124 significant first
Pages read 785 in this capture
Captured 02:07 UTC
Corpus hash 05505ffc3bb1 index-hash

What this read moved

1-25 of 124, page 1 of 5

This capture is too large to show at once. Changes 1-25 of 124 are below, significant first; the rest are on the following screens.

about-claude/use-case-guides/content-moderation Changed · +4 / -10 lines

from line 204
204204 "Specialized Advice",
205205 "Violent Crimes",
206206 }
207 
208207 ```
209208 
210209 ```java Java
from line 485
486485 const containsViolation = assessment.violation;
487486 
488487 // If there's a violation, get the categories and explanation; otherwise, use empty defaults
489 const violatedCategories = containsViolation ? assessment.categories ?? [] : [];
488 const violatedCategories = containsViolation ? (assessment.categories ?? []) : [];
490489 const explanation = containsViolation ? assessment.explanation : undefined;
491490 
492491 return { violation: containsViolation, violatedCategories, explanation };
from line 662
663662 }
664663 }
665664 }
666 
667665 ```
668666 
669667 ```java Java
from line 1198
12001198 }
12011199 }
12021200 }
1203 
12041201 ```
12051202 
12061203 ```java Java
from line 1552
15551552 "Content that depicts child nudity or that enables, encourages, excuses, or depicts the sexual abuse of children.",
15561553 "Conspiracy Theories": `Content that promotes or endorses unfounded, false, or misleading theories about events, situations, or individuals,
15571554 which can incite harm or undermine public trust in institutions or facts.`,
1558 "Hate": `Content that is hateful toward people on the basis of their protected characteristics
1555 Hate: `Content that is hateful toward people on the basis of their protected characteristics
15591556 (race, color, ethnicity, national origin, disability, religious affiliation, caste, sexual orientation, sex, gender identity and serious disease),
15601557 or content that perpetuates negative stereotypes.`,
15611558 "Indiscriminate Weapons":
from line 1561
15641561 "Content that violates the intellectual property rights of third parties.",
15651562 "Non-Violent Crimes":
15661563 "Content that enables, encourages, or excuses the commission of non-violent crimes.",
1567 "Privacy":
1568 "Content that contains sensitive, personal information about private individuals.",
1564 Privacy: "Content that contains sensitive, personal information about private individuals.",
15691565 "Self-Harm": "Content that enables, encourages, or excuses acts of intentional self-harm.",
15701566 "Sex Crimes": "Content that enables, encourages, or excuses the commission of sex crimes.",
15711567 "Sexual Content":
from line 1620
16241620 const containsViolation = assessment.violation;
16251621 
16261622 // If there's a violation, get the categories and explanation; otherwise, use empty defaults
1627 const violatedCategories = containsViolation ? assessment.categories ?? [] : [];
1623 const violatedCategories = containsViolation ? (assessment.categories ?? []) : [];
16281624 const explanation = containsViolation ? assessment.explanation : undefined;
16291625 
16301626 return { violation: containsViolation, violatedCategories, explanation };
from line 1876
18801876 }
18811877 }
18821878 }
1883 
18841879 ```
18851880 
18861881 ```java Java
from line 2510
25152510 `, userComments[violation.ID], strings.Join(violation.Categories, ", "), violation.Explanation)
25162511 }
25172512 }
2518 
25192513 ```
25202514 
25212515 ```java Java

about-claude/use-case-guides/customer-support-chat Changed · +17 / -13 lines

from line 513
513513 return f"An error occurred: {follow_up_response['error']}"
514514 
515515 response_text = next(
516 (block.text for block in follow_up_response.content if block.type == "text"),
516 (
517 block.text
518 for block in follow_up_response.content
519 if block.type == "text"
520 ),
517521 None,
518522 )
519523 if response_text is None:
from line 586
582586 
583587 const followUpResponse = await this.generateMessage(this.messages, 2048);
584588 
585 const followUpBlock = followUpResponse.content.find(
586 (block): block is Anthropic.TextBlock => block.type === "text"
587 );
589 const followUpBlock = followUpResponse.content.find((block) => block.type === "text");
588590 if (!followUpBlock) {
589591 throw new Error("An error occurred: Unexpected response type");
590592 }
from line 594
592594 return followUpBlock.text;
593595 }
594596 
595 const firstBlock = responseMessage.content.find(
596 (block): block is Anthropic.TextBlock => block.type === "text"
597 );
597 const firstBlock = responseMessage.content.find((block) => block.type === "text");
598598 if (firstBlock) {
599599 this.messages.push({ role: "assistant", content: firstBlock.text });
600600 return firstBlock.text;
from line 609
609609 if (
610610 toolInput === null ||
611611 typeof toolInput !== "object" ||
612 !("make" in toolInput) || typeof toolInput.make !== "string" ||
613 !("model" in toolInput) || typeof toolInput.model !== "string" ||
614 !("year" in toolInput) || typeof toolInput.year !== "number" ||
615 !("mileage" in toolInput) || typeof toolInput.mileage !== "number" ||
616 !("driver_age" in toolInput) || typeof toolInput.driver_age !== "number"
612 !("make" in toolInput) ||
613 typeof toolInput.make !== "string" ||
614 !("model" in toolInput) ||
615 typeof toolInput.model !== "string" ||
616 !("year" in toolInput) ||
617 typeof toolInput.year !== "number" ||
618 !("mileage" in toolInput) ||
619 typeof toolInput.mileage !== "number" ||
620 !("driver_age" in toolInput) ||
621 typeof toolInput.driver_age !== "number"
617622 ) {
618623 throw new Error("An error occurred: Unexpected tool input");
619624 }
from line 822
817822 premium := getQuote(input.Make, input.Model, input.Year, input.Mileage, input.DriverAge)
818823 return fmt.Sprintf("Quote generated: $%.2f per month", premium), nil
819824 }
820 
821825 ```
822826 
823827 ```java Java

about-claude/use-case-guides/legal-summarization Changed · +6 / -8 lines

from line 84
8484 "Consent and notices (landlord's consent, and notice requirements)",
8585 "Special provisions (furniture, parking, and subletting restrictions)",
8686 }
87 
8887 ```
8988 
9089 ```java Java
from line 374
375374 }
376375 fmt.Println(documentText[:min(50000, len(documentText))])
377376 }
378 
379377 ```
380378 
381379 ```java Java
from line 417
419417 ```
420418 
421419 ```php PHP
420 use Smalot\PdfParser\Parser;
421 
422422 $getLlmText = function (string $pdfData): string {
423 $document = (new \Smalot\PdfParser\Parser())->parseContent($pdfData);
423 $document = (new Parser())->parseContent($pdfData);
424424 $text = implode("\n", array_map(fn ($page) => $page->getText(), $document->getPages()));
425425 
426426 // Remove page numbers
from line 689
689689 subleaseSummary := summarizeDocument(documentText, detailsToExtract, anthropic.ModelClaudeOpus5_5, 16000)
690690 fmt.Println(subleaseSummary)
691691 }
692 
693692 ```
694693 
695694 ```java Java
from line 742
743742 
744743 ```php PHP
745744 // Initialize the Anthropic client
746 $client = new \Anthropic\Client();
745 $client = new Client();
747746 
748747 $summarizeDocument = function (
749748 string $text,
750749 array $detailsToExtract,
751 \Anthropic\Messages\Model $model = \Anthropic\Messages\Model::CLAUDE_OPUS_5_5,
750 Model $model = Model::CLAUDE_OPUS_5_5,
752751 int $maxTokens = 16000,
753752 ) use ($client): string {
754753 // Format the details to extract to be placed within the prompt's context
from line 1152
11531152 longSummary := summarizeLongDocument(documentText, detailsToExtract, anthropic.ModelClaudeOpus5_5, 16000)
11541153 fmt.Println(longSummary)
11551154 }
1156 
11571155 ```
11581156 
11591157 ```java Java
from line 1220
12221220 $summarizeLongDocument = function (
12231221 string $text,
12241222 array $detailsToExtract,
1225 \Anthropic\Messages\Model $model = \Anthropic\Messages\Model::CLAUDE_OPUS_5_5,
1223 Model $model = Model::CLAUDE_OPUS_5_5,
12261224 int $maxTokens = 16000,
12271225 ) use ($client, $chunkText, $summarizeDocument): string {
12281226 // Format the details to extract to be placed within the prompt's context

about-claude/use-case-guides/ticket-routing Changed · +2 / -6 lines

from line 763
763763 output_config: { effort: "low" },
764764 messages: [{ role: "user", content: classificationPrompt }]
765765 });
766 const textBlock = message.content.find(
767 (block): block is Anthropic.TextBlock => block.type === "text"
768 );
766 const textBlock = message.content.find((block) => block.type === "text");
769767 const reasoningAndIntent = textBlock?.text ?? "";
770768 
771769 // Use a regular expression to extract `reasoning`.
from line 1116
11181116 });
11191117 // Get the usage statistics for the API call for how many input and output tokens were used.
11201118 const usage = message.usage;
1121 const textBlock = message.content.find(
1122 (block): block is Anthropic.TextBlock => block.type === "text"
1123 );
1119 const textBlock = message.content.find((block) => block.type === "text");
11241120 const reasoningAndIntent = textBlock?.text ?? "";
11251121 
11261122 // Use a regular expression to extract `reasoning`.

agents-and-tools/agent-skills/quickstart Changed · +6 / -8 lines

from line 8
88 
99## Prerequisites
1010 
11* A [Claude API key](https://platform.claude.com/settings/keys) or a logged-in [ant CLI](https://platform.claude.com/docs/en/cli-sdks-libraries/cli/authentication)
11* A [Claude API key](https://platform.claude.com/settings/keys) from the Claude Console, or a logged-in [ant CLI](https://platform.claude.com/docs/en/cli-sdks-libraries/cli/authentication)
1212* A [client SDK](https://platform.claude.com/docs/en/cli-sdks-libraries/overview) for your language, or `curl` and `jq`
1313* Basic familiarity with making API requests
1414 
from line 189
189189 model: "claude-opus-5-5",
190190 max_tokens: 16000,
191191 container: {
192 skills: [{ type: "anthropic", skill_id: "pptx", version: "latest" }],
192 skills: [{ type: "anthropic", skill_id: "pptx", version: "latest" }]
193193 },
194194 messages: [
195195 {
196196 role: "user",
197 content: "Create a presentation about renewable energy with 5 slides",
198 },
197 content: "Create a presentation about renewable energy with 5 slides"
198 }
199199 ],
200 tools: [{ type: "code_execution_20260521", name: "code_execution" }],
200 tools: [{ type: "code_execution_20260521", name: "code_execution" }]
201201 });
202202 
203 console.log(
204 `stop_reason=${response.stop_reason}, blocks=${response.content.length}`,
205 );
203 console.log(`stop_reason=${response.stop_reason}, blocks=${response.content.length}`);
206204 ```
207205 
208206 ```csharp C#

agents-and-tools/tool-use/browser-use-tool Changed · +16 / -18 lines

from line 341
341341 return [
342342 {
343343 "type": "image",
344 "source": {"type": "base64", "media_type": "image/png", "data": PLACEHOLDER_PNG},
344 "source": {
345 "type": "base64",
346 "media_type": "image/png",
347 "data": PLACEHOLDER_PNG,
348 },
345349 }
346350 ]
347351 
from line 367
363367 
364368 ```typescript TypeScript
365369 // Placeholder image data; a real executor captures the viewport as PNG bytes
366 const PLACEHOLDER_PNG = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg==";
370 const PLACEHOLDER_PNG =
371 "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg==";
367372 
368373 function navigate(url: string): string {
369374 return `navigated to ${url}`;
from line 398
393398 source: {
394399 type: "base64",
395400 media_type: "image/png",
396 data: PLACEHOLDER_PNG,
397 },
398 },
401 data: PLACEHOLDER_PNG
402 }
403 }
399404 ];
400405 }
401406 
402407 function handleBrowserAction(
403408 action: string,
404 input: unknown,
409 input: unknown
405410 ): string | Anthropic.ImageBlockParam[] {
406 const params: object =
407 typeof input === "object" && input !== null ? input : {};
411 const params: object = typeof input === "object" && input !== null ? input : {};
408412 if (action === "navigate" && "url" in params) {
409413 return navigate(String(params.url));
410414 } else if (action === "read_page") {
from line 416
412416 } else if (action === "left_click" && "target" in params) {
413417 // target is an element reference from read_page or a viewport coordinate
414418 const target: object =
415 typeof params.target === "object" && params.target !== null
416 ? params.target
417 : {};
419 typeof params.target === "object" && params.target !== null ? params.target : {};
418420 if ("type" in target && target.type === "ref" && "ref" in target) {
419421 return clickElement(String(target.ref));
420422 } else if ("x" in target && "y" in target) {
from line 558
556558 // Reached when a member's input is missing a field or a field has the wrong type
557559 return nil, fmt.Errorf("invalid input for %s", action)
558560 }
559 
560561 ```
561562 
562563 ```java Java
from line 782
781782 function browserResult(
782783 toolUseId: string,
783784 content: string | Anthropic.ImageBlockParam[],
784 isError?: boolean,
785 isError?: boolean
785786 ): Anthropic.ToolResultBlockParam {
786787 return {
787788 type: "tool_result",
from line 789
788789 tool_use_id: toolUseId,
789790 toolset_name: "browser",
790791 content,
791 is_error: isError,
792 is_error: isError
792793 };
793794 }
794795 
795 function processToolCalls(
796 response: Anthropic.Message,
797 ): Anthropic.ToolResultBlockParam[] {
796 function processToolCalls(response: Anthropic.Message): Anthropic.ToolResultBlockParam[] {
798797 const toolResults: Anthropic.ToolResultBlockParam[] = [];
799798 let failed = false;
800799 for (const block of response.content) {
from line 936
937936 }
938937 return toolResults
939938 }
940 
941939 ```
942940 
943941 ```java Java

agents-and-tools/tool-use/build-a-tool-using-agent Changed · +112 / -98 lines

from line 146
146146 const tools: Anthropic.Tool[] = [
147147 {
148148 name: "create_calendar_event",
149 description:
150 "Create a calendar event with attendees and optional recurrence.",
149 description: "Create a calendar event with attendees and optional recurrence.",
151150 input_schema: {
152151 type: "object",
153152 properties: {
from line 155
156155 end: { type: "string", format: "date-time" },
157156 attendees: {
158157 type: "array",
159 items: { type: "string", format: "email" },
158 items: { type: "string", format: "email" }
160159 },
161160 recurrence: {
162161 type: "object",
163162 properties: {
164163 frequency: { enum: ["daily", "weekly", "monthly"] },
165 count: { type: "integer", minimum: 1 },
166 },
167 },
164 count: { type: "integer", minimum: 1 }
165 }
166 }
168167 },
169 required: ["title", "start", "end"],
170 },
171 },
168 required: ["title", "start", "end"]
169 }
170 }
172171 ];
173172 
174173 // Send the user's request along with the tool definition. Claude decides
from line 181
182181 {
183182 role: "user",
184183 content:
185 "Schedule a 30-minute sync with [email protected] and [email protected] on Monday, March 30, 2026 at 10am.",
186 },
187 ],
184 "Schedule a 30-minute sync with [email protected] and [email protected] on Monday, March 30, 2026 at 10am."
185 }
186 ]
188187 });
189188 
190189 // When Claude calls a tool, the response has stop_reason "tool_use"
from line 192
193192 
194193 // Find the tool_use block. A response may contain text blocks before the
195194 // tool_use block, so scan the content array rather than assuming position.
196 const toolUse = response.content.find(
197 (block): block is Anthropic.ToolUseBlock => block.type === "tool_use",
198 )!;
195 const toolUse = response.content.find((block) => block.type === "tool_use")!;
199196 console.log(`Tool: ${toolUse.name}`);
200197 console.log(`Input: ${JSON.stringify(toolUse.input)}`);
201198 
from line 212
215212 {
216213 role: "user",
217214 content:
218 "Schedule a 30-minute sync with [email protected] and [email protected] on Monday, March 30, 2026 at 10am.",
215 "Schedule a 30-minute sync with [email protected] and [email protected] on Monday, March 30, 2026 at 10am."
219216 },
220217 { role: "assistant", content: response.content },
221218 {
from line 221
224221 {
225222 type: "tool_result",
226223 tool_use_id: toolUse.id,
227 content: JSON.stringify(result),
228 },
229 ],
230 },
231 ],
224 content: JSON.stringify(result)
225 }
226 ]
227 }
228 ]
232229 });
233230 
234231 // With the tool result in hand, Claude produces a final natural-language
from line 890
893890 
894891 def run_tool(name, tool_input):
895892 if name == "create_calendar_event":
896 return {"event_id": "evt_123", "status": "created", "title": tool_input["title"]}
893 return {
894 "event_id": "evt_123",
895 "status": "created",
896 "title": tool_input["title"],
897 }
897898 return {"error": f"Unknown tool: {name}"}
898899 
899900 
from line 956
955956 const tools: Anthropic.Tool[] = [
956957 {
957958 name: "create_calendar_event",
958 description:
959 "Create a calendar event with attendees and optional recurrence.",
959 description: "Create a calendar event with attendees and optional recurrence.",
960960 input_schema: {
961961 type: "object",
962962 properties: {
from line 965
965965 end: { type: "string", format: "date-time" },
966966 attendees: {
967967 type: "array",
968 items: { type: "string", format: "email" },
968 items: { type: "string", format: "email" }
969969 },
970970 recurrence: {
971971 type: "object",
972972 properties: {
973973 frequency: { enum: ["daily", "weekly", "monthly"] },
974 count: { type: "integer", minimum: 1 },
975 },
976 },
974 count: { type: "integer", minimum: 1 }
975 }
976 }
977977 },
978 required: ["title", "start", "end"],
979 },
980 },
978 required: ["title", "start", "end"]
979 }
980 }
981981 ];
982982 
983983 function runTool(name: string, input: Record<string, unknown>) {
from line 992
992992 {
993993 role: "user",
994994 content:
995 "Schedule a weekly team standup every Monday at 9am for the next 4 weeks, starting Monday, March 30, 2026. Invite the whole team: [email protected], [email protected], [email protected].",
996 },
995 "Schedule a weekly team standup every Monday at 9am for the next 4 weeks, starting Monday, March 30, 2026. Invite the whole team: [email protected], [email protected], [email protected]."
996 }
997997 ];
998998 
999999 let response = await client.messages.create({
from line 1001
10011001 max_tokens: 1024,
10021002 tools,
10031003 tool_choice: { type: "auto", disable_parallel_tool_use: true },
1004 messages,
1004 messages
10051005 });
10061006 
10071007 // Loop until Claude stops asking for tools. Each iteration runs the requested
10081008 // tool, appends the result to history, and asks Claude to continue.
10091009 while (response.stop_reason === "tool_use") {
1010 const toolUse = response.content.find(
1011 (block): block is Anthropic.ToolUseBlock => block.type === "tool_use",
1012 )!;
1010 const toolUse = response.content.find((block) => block.type === "tool_use")!;
10131011 const result = runTool(toolUse.name, toolUse.input as Record<string, unknown>);
10141012 
10151013 messages.push({ role: "assistant", content: response.content });
from line 1017
10191017 {
10201018 type: "tool_result",
10211019 tool_use_id: toolUse.id,
1022 content: JSON.stringify(result),
1023 },
1024 ],
1020 content: JSON.stringify(result)
1021 }
1022 ]
10251023 });
10261024 
10271025 response = await client.messages.create({
from line 1027
10291027 max_tokens: 1024,
10301028 tools,
10311029 tool_choice: { type: "auto", disable_parallel_tool_use: true },
1032 messages,
1030 messages
10331031 });
10341032 }
10351033 
from line 1672
16741672 
16751673 def run_tool(name, tool_input):
16761674 if name == "create_calendar_event":
1677 return {"event_id": "evt_123", "status": "created", "title": tool_input["title"]}
1675 return {
1676 "event_id": "evt_123",
1677 "status": "created",
1678 "title": tool_input["title"],
1679 }
16781680 if name == "list_calendar_events":
1679 return {"events": [{"title": "Existing meeting", "start": "14:00", "end": "15:00"}]}
1681 return {
1682 "events": [{"title": "Existing meeting", "start": "14:00", "end": "15:00"}]
1683 }
16801684 return {"error": f"Unknown tool: {name}"}
16811685 
16821686 
from line 1737
17331737 const tools: Anthropic.Tool[] = [
17341738 {
17351739 name: "create_calendar_event",
1736 description:
1737 "Create a calendar event with attendees and optional recurrence.",
1740 description: "Create a calendar event with attendees and optional recurrence.",
17381741 input_schema: {
17391742 type: "object",
17401743 properties: {
from line 1746
17431746 end: { type: "string", format: "date-time" },
17441747 attendees: {
17451748 type: "array",
1746 items: { type: "string", format: "email" },
1749 items: { type: "string", format: "email" }
17471750 },
17481751 recurrence: {
17491752 type: "object",
17501753 properties: {
17511754 frequency: { enum: ["daily", "weekly", "monthly"] },
1752 count: { type: "integer", minimum: 1 },
1753 },
1754 },
1755 count: { type: "integer", minimum: 1 }
1756 }
1757 }
17551758 },
1756 required: ["title", "start", "end"],
1757 },
1759 required: ["title", "start", "end"]
1760 }
17581761 },
17591762 {
17601763 name: "list_calendar_events",
from line 1765
17621765 input_schema: {
17631766 type: "object",
17641767 properties: {
1765 date: { type: "string", format: "date" },
1768 date: { type: "string", format: "date" }
17661769 },
1767 required: ["date"],
1768 },
1769 },
1770 required: ["date"]
1771 }
1772 }
17701773 ];
17711774 
17721775 function runTool(name: string, input: Record<string, unknown>) {
from line 1778
17751778 }
17761779 if (name === "list_calendar_events") {
17771780 return {
1778 events: [{ title: "Existing meeting", start: "14:00", end: "15:00" }],
1781 events: [{ title: "Existing meeting", start: "14:00", end: "15:00" }]
17791782 };
17801783 }
17811784 return { error: `Unknown tool: ${name}` };
from line 1788
17851788 {
17861789 role: "user",
17871790 content:
1788 "Check what I have on Monday, March 30, 2026, then schedule a one-hour planning session that day that avoids any conflicts.",
1789 },
1791 "Check what I have on Monday, March 30, 2026, then schedule a one-hour planning session that day that avoids any conflicts."
1792 }
17901793 ];
17911794 
17921795 let response = await client.messages.create({
from line 1796
17931796 model: "claude-opus-5-5",
17941797 max_tokens: 1024,
17951798 tools,
1796 messages,
1799 messages
17971800 });
17981801 
17991802 while (response.stop_reason === "tool_use") {
from line 1809
18061809 toolResults.push({
18071810 type: "tool_result",
18081811 tool_use_id: block.id,
1809 content: JSON.stringify(result),
1812 content: JSON.stringify(result)
18101813 });
18111814 }
18121815 }
from line 1821
18181821 model: "claude-opus-5-5",
18191822 max_tokens: 1024,
18201823 tools,
1821 messages,
1824 messages
18221825 });
18231826 }
18241827 
from line 2491
24882491 if name == "create_calendar_event":
24892492 if "attendees" in tool_input and len(tool_input["attendees"]) > 10:
24902493 raise ValueError("Too many attendees (max 10)")
2491 return {"event_id": "evt_123", "status": "created", "title": tool_input["title"]}
2494 return {
2495 "event_id": "evt_123",
2496 "status": "created",
2497 "title": tool_input["title"],
2498 }
24922499 if name == "list_calendar_events":
2493 return {"events": [{"title": "Existing meeting", "start": "14:00", "end": "15:00"}]}
2500 return {
2501 "events": [{"title": "Existing meeting", "start": "14:00", "end": "15:00"}]
2502 }
24942503 raise ValueError(f"Unknown tool: {name}")
24952504 
24962505 
from line 2506
24972506 messages = [
24982507 {
24992508 "role": "user",
2500 "content": "Schedule a one-hour all-hands on Monday, March 30, 2026 at 10am with everyone: " + ", ".join(f"user{i}@example.com" for i in range(15)),
2509 "content": "Schedule a one-hour all-hands on Monday, March 30, 2026 at 10am with everyone: "
2510 + ", ".join(f"user{i}@example.com" for i in range(15)),
25012511 }
25022512 ]
25032513 
from line 2525
25152525 try:
25162526 result = run_tool(block.name, block.input)
25172527 tool_results.append(
2518 {"type": "tool_result", "tool_use_id": block.id, "content": json.dumps(result)}
2528 {
2529 "type": "tool_result",
2530 "tool_use_id": block.id,
2531 "content": json.dumps(result),
2532 }
25192533 )
25202534 except Exception as exc:
25212535 # Signal failure so Claude can retry or ask for clarification.
from line 2566
25522566 const tools: Anthropic.Tool[] = [
25532567 {
25542568 name: "create_calendar_event",
2555 description:
2556 "Create a calendar event with attendees and optional recurrence.",
2569 description: "Create a calendar event with attendees and optional recurrence.",
25572570 input_schema: {
25582571 type: "object",
25592572 properties: {
from line 2575
25622575 end: { type: "string", format: "date-time" },
25632576 attendees: {
25642577 type: "array",
2565 items: { type: "string", format: "email" },
2578 items: { type: "string", format: "email" }
25662579 },
25672580 recurrence: {
25682581 type: "object",
25692582 properties: {
25702583 frequency: { enum: ["daily", "weekly", "monthly"] },
2571 count: { type: "integer", minimum: 1 },
2572 },
2573 },
2584 count: { type: "integer", minimum: 1 }
2585 }
2586 }
25742587 },
2575 required: ["title", "start", "end"],
2576 },
2588 required: ["title", "start", "end"]
2589 }
25772590 },
25782591 {
25792592 name: "list_calendar_events",
from line 2594
25812594 input_schema: {
25822595 type: "object",
25832596 properties: {
2584 date: { type: "string", format: "date" },
2597 date: { type: "string", format: "date" }
25852598 },
2586 required: ["date"],
2587 },
2588 },
2599 required: ["date"]
2600 }
2601 }
25892602 ];
25902603 
25912604 function runTool(name: string, input: Record<string, unknown>) {
from line 2611
25982611 }
25992612 if (name === "list_calendar_events") {
26002613 return {
2601 events: [{ title: "Existing meeting", start: "14:00", end: "15:00" }],
2614 events: [{ title: "Existing meeting", start: "14:00", end: "15:00" }]
26022615 };
26032616 }
26042617 throw new Error(`Unknown tool: ${name}`);
26052618 }
26062619 
2607 const emails = Array.from({ length: 15 }, (_, i) => `user${i}@example.com`);
2620 const emails = Array.from({ length: 15 }, (_, i) => `user${i}@example.com`).join(", ");
26082621 const messages: Anthropic.MessageParam[] = [
26092622 {
26102623 role: "user",
2611 content: `Schedule a one-hour all-hands on Monday, March 30, 2026 at 10am with everyone: ${emails.join(", ")}`,
2612 },
2624 content: `Schedule a one-hour all-hands on Monday, March 30, 2026 at 10am with everyone: ${emails}`
2625 }
26132626 ];
26142627 
26152628 let response = await client.messages.create({
from line 2629
26162629 model: "claude-opus-5-5",
26172630 max_tokens: 1024,
26182631 tools,
2619 messages,
2632 messages
26202633 });
26212634 
26222635 while (response.stop_reason === "tool_use") {
from line 2641
26282641 toolResults.push({
26292642 type: "tool_result",
26302643 tool_use_id: block.id,
2631 content: JSON.stringify(result),
2644 content: JSON.stringify(result)
26322645 });
26332646 } catch (err) {
26342647 // Signal failure so Claude can retry or ask for clarification.
from line 2649
26362649 type: "tool_result",
26372650 tool_use_id: block.id,
26382651 content: String(err),
2639 is_error: true,
2652 is_error: true
26402653 });
26412654 }
26422655 }
from line 2662
26492662 model: "claude-opus-5-5",
26502663 max_tokens: 1024,
26512664 tools,
2652 messages,
2665 messages
26532666 });
26542667 }
26552668 
from line 3387
33743387 Args:
33753388 date: Date in YYYY-MM-DD format.
33763389 """
3377 return json.dumps({"events": [{"title": "Existing meeting", "start": "14:00", "end": "15:00"}]})
3390 return json.dumps(
3391 {"events": [{"title": "Existing meeting", "start": "14:00", "end": "15:00"}]}
3392 )
33783393 
33793394 
33803395 final_message = client.beta.messages.tool_runner(
from line 3420
34053420 
34063421 const createCalendarEvent = betaZodTool({
34073422 name: "create_calendar_event",
3408 description:
3409 "Create a calendar event with attendees and optional recurrence.",
3423 description: "Create a calendar event with attendees and optional recurrence.",
34103424 inputSchema: z.object({
34113425 title: z.string(),
34123426 start: z.string().datetime(),
from line 3429
34153429 recurrence: z
34163430 .object({
34173431 frequency: z.enum(["daily", "weekly", "monthly"]),
3418 count: z.number().int().min(1),
3432 count: z.number().int().min(1)
34193433 })
3420 .optional(),
3434 .optional()
34213435 }),
34223436 run: async (input) => {
34233437 if (input.attendees && input.attendees.length > 10) {
from line 3440
34263440 return JSON.stringify({
34273441 event_id: "evt_123",
34283442 status: "created",
3429 title: input.title,
3443 title: input.title
34303444 });
3431 },
3445 }
34323446 });
34333447 
34343448 const listCalendarEvents = betaZodTool({
from line 3449
34353449 name: "list_calendar_events",
34363450 description: "List all calendar events on a given date.",
34373451 inputSchema: z.object({
3438 date: z.string().date(),
3452 date: z.string().date()
34393453 }),
34403454 run: async () => {
34413455 return JSON.stringify({
3442 events: [{ title: "Existing meeting", start: "14:00", end: "15:00" }],
3456 events: [{ title: "Existing meeting", start: "14:00", end: "15:00" }]
34433457 });
3444 },
3458 }
34453459 });
34463460 
34473461 const finalMessage = await client.beta.messages.toolRunner({
from line 3466
34523466 {
34533467 role: "user",
34543468 content:
3455 "Check what I have on Monday, March 30, 2026, then schedule a one-hour planning session that day that avoids any conflicts.",
3456 },
3457 ],
3469 "Check what I have on Monday, March 30, 2026, then schedule a one-hour planning session that day that avoids any conflicts."
3470 }
3471 ]
34583472 });
34593473 
34603474 for (const block of finalMessage.content) {

agents-and-tools/tool-use/computer-use-tool Changed · +18 / -20 lines

from line 510
510510 async function samplingLoop(
511511 model: string,
512512 messages: Anthropic.MessageParam[],
513 maxIterations = 10,
513 maxIterations = 10
514514 ): Promise<Anthropic.MessageParam[]> {
515515 // Run the computer-use agent loop until Claude stops requesting tools
516516 // or the iteration limit is reached.
from line 519
519519 model,
520520 max_tokens: 4096,
521521 messages,
522 tools,
522 tools
523523 });
524524 
525525 // Add Claude's response to the conversation history
from line 615
615615 }
616616 return messages, nil
617617 }
618 
619618 ```
620619 
621620 ```java Java
from line 935
936935 return [
937936 {
938937 "type": "image",
939 "source": {"type": "base64", "media_type": "image/png", "data": PLACEHOLDER_PNG},
938 "source": {
939 "type": "base64",
940 "media_type": "image/png",
941 "data": PLACEHOLDER_PNG,
942 },
940943 }
941944 ]
942945 
from line 970
967970 
968971 ```typescript TypeScript
969972 // Placeholder image data; a real executor captures the screen as PNG bytes
970 const PLACEHOLDER_PNG = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg==";
973 const PLACEHOLDER_PNG =
974 "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg==";
971975 
972976 function captureScreenshot(): Anthropic.ImageBlockParam[] {
973977 // screenshot answers with an image block rather than text
from line 981
977981 source: {
978982 type: "base64",
979983 media_type: "image/png",
980 data: PLACEHOLDER_PNG,
981 },
982 },
984 data: PLACEHOLDER_PNG
985 }
986 }
983987 ];
984988 }
985989 
from line 1001
9971001 
9981002 function handleComputerAction(
9991003 action: string,
1000 input: unknown,
1004 input: unknown
10011005 ): string | Anthropic.ImageBlockParam[] {
1002 const params: object =
1003 typeof input === "object" && input !== null ? input : {};
1006 const params: object = typeof input === "object" && input !== null ? input : {};
10041007 switch (action) {
10051008 case "screenshot":
10061009 return captureScreenshot();
from line 1128
11251128 // Reached when a member's input is missing a field or a field has the wrong type
11261129 return nil, fmt.Errorf("invalid input for %s", action)
11271130 }
1128 
11291131 ```
11301132 
11311133 ```java Java
from line 1308
13061308 ```
13071309 
13081310 ```typescript TypeScript
1309 const HALT_TEXT =
1310 "Not executed: an earlier computer action in this turn failed.";
1311 const HALT_TEXT = "Not executed: an earlier computer action in this turn failed.";
13111312 
13121313 function computerResult(
13131314 toolUseId: string,
13141315 content: string | Anthropic.ImageBlockParam[],
1315 isError?: boolean,
1316 isError?: boolean
13161317 ): Anthropic.ToolResultBlockParam {
13171318 return {
13181319 type: "tool_result",
from line 1320
13191320 tool_use_id: toolUseId,
13201321 toolset_name: "computer",
13211322 content,
1322 is_error: isError,
1323 is_error: isError
13231324 };
13241325 }
13251326 
1326 function processToolCalls(
1327 response: Anthropic.Message,
1328 ): Anthropic.ToolResultBlockParam[] {
1327 function processToolCalls(response: Anthropic.Message): Anthropic.ToolResultBlockParam[] {
13291328 const toolResults: Anthropic.ToolResultBlockParam[] = [];
13301329 let failed = false;
13311330 for (const block of response.content) {
from line 1465
14661465 }
14671466 return toolResults
14681467 }
1469 
14701468 ```
14711469 
14721470 ```java Java

agents-and-tools/tool-use/overview Changed · +2 / -6 lines

from line 237
237237 tool_choice: { type: "auto", disable_parallel_tool_use: true },
238238 messages
239239 });
240 const toolUse = response.content.find(
241 (block): block is Anthropic.ToolUseBlock => block.type === "tool_use"
242 )!;
240 const toolUse = response.content.find((block) => block.type === "tool_use")!;
243241 console.log(`Claude called ${toolUse.name} with ${JSON.stringify(toolUse.input)}`);
244242 
245243 // Run the tool, then send the result back in a tool_result block.
from line 258
260258 });
261259 
262260 // Claude uses the result to answer the original question.
263 const finalText = followup.content.find(
264 (block): block is Anthropic.TextBlock => block.type === "text"
265 )!;
261 const finalText = followup.content.find((block) => block.type === "text")!;
266262 console.log(finalText.text);
267263 ```
268264 

agents-and-tools/tool-use/web-fetch-tool Changed · +55 / -3 lines

### URL sources

from line 27
2727<Warning>
2828 Enabling the web fetch tool in environments where Claude processes untrusted input alongside sensitive data poses data exfiltration risks. Only use this tool in trusted environments or when handling non-sensitive data.
2929 
30 To minimize exfiltration risks, Claude cannot fetch URLs that appear only in its own output. Claude can only fetch URLs that have previously appeared in the conversation: URLs in user messages, URLs in client-side tool results (even when a result echoes text that Claude generated), and URLs from previous web search or web fetch results (see [URL validation](https://platform.claude.com/docs/en/agents-and-tools/tool-use/web-fetch-tool#url-validation)). Claude also cannot fetch a URL that appears to contain a credential, such as an API key or a password, unless that credential appears in the system prompt or in the text of a user message.
30 To minimize exfiltration risks, Claude cannot fetch URLs that appear only in its own output. Claude can only fetch URLs that have previously appeared in the conversation: URLs in user messages, URLs in client-side tool results, and URLs from previous web search or web fetch results (see [URL validation](https://platform.claude.com/docs/en/agents-and-tools/tool-use/web-fetch-tool#url-validation)). Claude also cannot fetch a URL that appears to contain a credential, such as an API key or a password, unless that credential appears in the system prompt or in the text of a user message.
3131 
3232 However, there is still residual risk that you should carefully consider when using this tool.
3333 
from line 36
3636 * Disabling the web fetch tool entirely
3737 * Using the `max_uses` parameter to limit the number of requests
3838 * Using the `allowed_domains` parameter to restrict to known safe domains
39 * Using the `url_sources` parameter to stop client-side tool results from counting as a source (see [URL sources](https://platform.claude.com/docs/en/agents-and-tools/tool-use/web-fetch-tool#url-sources))
3940</Warning>
4041 
4142For model support, see the [Tool reference](https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-reference).
from line 429
428429 // Optional: Never fetch from these domains (cannot be combined with allowed_domains)
429430 "blocked_domains": ["private.example.com"],
430431 
432 // Optional: Don't fetch URLs that appear only in client-side tool results
433 "url_sources": {
434 "client_tool_results": { "type": "none" }
435 },
436 
431437 // Optional: Enable citations for fetched content
432438 "citations": {
433439 "enabled": true
from line 643
637643* `invalid_tool_input`: Invalid tool input, such as a malformed URL or a non-HTTP(S) scheme
638644* `url_too_long`: URL exceeds maximum length (250 characters)
639645* `url_not_allowed`: URL blocked by domain filtering rules (including your organization's settings) or by Anthropic-side restrictions, such as private addresses, `robots.txt`, and URLs that appear to contain a credential you did not provide
640* `url_not_in_prior_context`: URL did not appear earlier in the conversation (see [URL validation](https://platform.claude.com/docs/en/agents-and-tools/tool-use/web-fetch-tool#url-validation))
646* `url_not_in_prior_context`: URL did not appear earlier in the conversation, or appeared only in sources that `url_sources` excludes (see [URL validation](https://platform.claude.com/docs/en/agents-and-tools/tool-use/web-fetch-tool#url-validation))
641647* `url_not_accessible`: Failed to fetch content (HTTP error)
642648* `too_many_requests`: Rate limit exceeded
643649* `unsupported_content_type`: Content type not supported (only text, HTML, and PDF)
from line 658
652658* URLs in client-side tool results
653659* URLs from previous web search or web fetch results
654660 
655The tool cannot fetch URLs that appear only in Claude's own output or only in the system prompt. To make a URL from the system prompt fetchable, also include it in a user message. Results of other server-side tools, such as [code execution](https://platform.claude.com/docs/en/agents-and-tools/tool-use/code-execution-tool), the [MCP connector](https://platform.claude.com/docs/en/agents-and-tools/mcp-connector), or [tool search](https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-search-tool), are not an allowed source either. Client-side tool results are an allowed source even when they echo text that Claude produced (for example, a command that prints its input, or an error message that quotes it).
661The tool cannot fetch URLs that appear only in Claude's own output or only in the system prompt. To make a URL from the system prompt fetchable, also include it in a user message. Results of other server-side tools, such as [code execution](https://platform.claude.com/docs/en/agents-and-tools/tool-use/code-execution-tool), the [MCP connector](https://platform.claude.com/docs/en/agents-and-tools/mcp-connector), or [tool search](https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-search-tool), are not an allowed source either. By default, client-side tool results are an allowed source even when they echo text that Claude produced (for example, a command that prints its input, or an error message that quotes it).
656662 
657663The tool also refuses a URL that appears to contain a credential, such as an API key or a password, unless that credential appears in the system prompt or in the text of a user message. A credential that appears only in a tool result does not count. The result is a `url_not_allowed` error. To fetch such a URL, include it in a user message.
664 
665### URL sources
666 
667<Note>
668 Works with `web_fetch_20250910`, `web_fetch_20260209`, `web_fetch_20260309`, and `web_fetch_20260318`.
669</Note>
670 
671The optional `url_sources` parameter lets you turn off any of the three allowed sources, or limit tool results to certain tools. It has one key per source, and each key defaults to `{"type": "all"}`:
672 
673* `user_input`: URLs in user messages. Its `type` is `"all"` or `"none"`.
674* `client_tool_results`: URLs in client-side tool results. Its `type` is `"all"`, `"none"`, or an `"only"` or `"except"` filter that names tools, as in the following example.
675* `server_tool_results`: URLs from previous web search or web fetch results. It takes the same values, and its filters name `web_search` or `web_fetch`.
676 
677For example, a tool that runs code Claude wrote returns whatever that code prints, including any URL Claude put in it. To stop that tool's results from counting as a source, name it in an `"except"` filter:
678 
679```json
680{
681 "tools": [
682 {
683 "type": "web_fetch_20260318",
684 "name": "web_fetch",
685 "url_sources": {
686 "client_tool_results": {
687 "type": "except",
688 "tools": [{ "type": "tool_reference", "name": "run_code" }]
689 }
690 }
691 },
692 {
693 "name": "run_code",
694 "description": "Run Python code and return its output",
695 "input_schema": {
696 "type": "object",
697 "properties": { "code": { "type": "string" } },
698 "required": ["code"]
699 }
700 }
701 ]
702}
703```
704 
705A filter lists tools as `tool_reference` objects. Each name must match a tool in the request's `tools` array: a client tool for `client_tool_results`, or a server tool for `server_tool_results`. Otherwise, the request fails with an error. Under `"except"`, a tool you add to `tools` later counts as a source. Under `"only"`, it doesn't.
706 
707Client-side tools other than `run_code` can also return text Claude wrote, for example in an error message that quotes it. To exclude all client-side tool results, set `client_tool_results` to `{"type": "none"}`.
708 
709If a URL appeared only in sources that `url_sources` excludes, fetching it returns the `url_not_in_prior_context` error.
658710 
659711## Combined search and fetch
660712 

api/beta Changed · +151 / -97 lines

### Create a Vault ### Retrieve a Vault ### Update a Vault ### Delete a Vault ### Archive a Vault ### Create a Credential ### Retrieve a Credential ### Update a Credential ### Delete a Credential ### Archive a Credential ### Validate an MCP OAuth Credential ### Create Vault ### Get Vault ### Update Vault ### Delete Vault ### Archive Vault ### Create Credential ### Get Credential ### Update Credential ### Delete Credential ### Archive Credential ### Validate Credential

This page is larger than the 256 KiB this site keeps, so one side of the diff below stops where the stored text does.

from line 743
743743 
744744 Whether the model accepts thinking with type 'adaptive' (the model decides whether and how much to think).
745745 
746 - `between_tools: BetaCapabilitySupport`
747 
748 Whether the model accepts thinking with type 'between_tools' (thinking turned off, and any short progress updates the model writes between tool calls come back as thinking blocks). False exactly when a request that sends it gets a 400 from this model. A request that sends 'between_tools' can still be rejected for another reason, such as an effort level the model does not allow with thinking off.
749 
746750 - `disabled: BetaCapabilitySupport`
747751 
748 Whether the model accepts thinking with type 'disabled' (thinking turned off). False exactly when a request that sends it gets a 400 from this model. True on a model that does not support thinking.
752 Whether the model accepts thinking with type 'disabled' (thinking turned off). False exactly when a request that sends it gets a 400 from this model. True on a model that does not support thinking. A request that sends 'disabled' can still be rejected for another reason, such as an effort level the model does not allow with thinking off.
749753 
750754 - `enabled: BetaCapabilitySupport`
751755 
from line 915
911915 "adaptive": {
912916 "supported": true
913917 },
918 "between_tools": {
919 "supported": true
920 },
914921 "disabled": {
915922 "supported": true
916923 },
from line 1224
12171224 
12181225 Whether the model accepts thinking with type 'adaptive' (the model decides whether and how much to think).
12191226 
1227 - `between_tools: BetaCapabilitySupport`
1228 
1229 Whether the model accepts thinking with type 'between_tools' (thinking turned off, and any short progress updates the model writes between tool calls come back as thinking blocks). False exactly when a request that sends it gets a 400 from this model. A request that sends 'between_tools' can still be rejected for another reason, such as an effort level the model does not allow with thinking off.
1230 
12201231 - `disabled: BetaCapabilitySupport`
12211232 
1222 Whether the model accepts thinking with type 'disabled' (thinking turned off). False exactly when a request that sends it gets a 400 from this model. True on a model that does not support thinking.
1233 Whether the model accepts thinking with type 'disabled' (thinking turned off). False exactly when a request that sends it gets a 400 from this model. True on a model that does not support thinking. A request that sends 'disabled' can still be rejected for another reason, such as an effort level the model does not allow with thinking off.
12231234 
12241235 - `enabled: BetaCapabilitySupport`
12251236 
from line 1382
13711382 "adaptive": {
13721383 "supported": true
13731384 },
1385 "between_tools": {
1386 "supported": true
1387 },
13741388 "disabled": {
13751389 "supported": true
13761390 },
from line 7701
76877701 
76887702 Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.
76897703 
7690 - `enabled: optional boolean or null`
7691 
7692 Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.
7693 
7694 - `triple_click: optional BetaComputerTripleClickConfig or null`
7695 
7696 `triple_click`'s config overrides.
7697 
7698 - `defer_loading: optional boolean or null`
7699 
7700 Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.
7701 
7702 - `enabled: optional boolean or null`
7703 
7704 Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.
7705 
7706 - `wait: optional BetaComputerWaitConfig or null`
7707 
7708 `wait`'s config overrides.
7709 
7710 - `defer_loading: optional boolean or null`
7711 
7712 Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.
7713 
7714 - `enabled: optional boolean or null`
7715 
7716 Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resol
7704 - `enabled: optiona

api/beta/models Changed · +36 / -6 lines

from line 309
309309 
310310 Whether the model accepts thinking with type 'adaptive' (the model decides whether and how much to think).
311311 
312 - `between_tools: BetaCapabilitySupport`
313 
314 Whether the model accepts thinking with type 'between_tools' (thinking turned off, and any short progress updates the model writes between tool calls come back as thinking blocks). False exactly when a request that sends it gets a 400 from this model. A request that sends 'between_tools' can still be rejected for another reason, such as an effort level the model does not allow with thinking off.
315 
312316 - `disabled: BetaCapabilitySupport`
313317 
314 Whether the model accepts thinking with type 'disabled' (thinking turned off). False exactly when a request that sends it gets a 400 from this model. True on a model that does not support thinking.
318 Whether the model accepts thinking with type 'disabled' (thinking turned off). False exactly when a request that sends it gets a 400 from this model. True on a model that does not support thinking. A request that sends 'disabled' can still be rejected for another reason, such as an effort level the model does not allow with thinking off.
315319 
316320 - `enabled: BetaCapabilitySupport`
317321 
from line 481
477481 "adaptive": {
478482 "supported": true
479483 },
484 "between_tools": {
485 "supported": true
486 },
480487 "disabled": {
481488 "supported": true
482489 },
from line 790
783790 
784791 Whether the model accepts thinking with type 'adaptive' (the model decides whether and how much to think).
785792 
793 - `between_tools: BetaCapabilitySupport`
794 
795 Whether the model accepts thinking with type 'between_tools' (thinking turned off, and any short progress updates the model writes between tool calls come back as thinking blocks). False exactly when a request that sends it gets a 400 from this model. A request that sends 'between_tools' can still be rejected for another reason, such as an effort level the model does not allow with thinking off.
796 
786797 - `disabled: BetaCapabilitySupport`
787798 
788 Whether the model accepts thinking with type 'disabled' (thinking turned off). False exactly when a request that sends it gets a 400 from this model. True on a model that does not support thinking.
799 Whether the model accepts thinking with type 'disabled' (thinking turned off). False exactly when a request that sends it gets a 400 from this model. True on a model that does not support thinking. A request that sends 'disabled' can still be rejected for another reason, such as an effort level the model does not allow with thinking off.
789800 
790801 - `enabled: BetaCapabilitySupport`
791802 
from line 948
937948 "adaptive": {
938949 "supported": true
939950 },
951 "between_tools": {
952 "supported": true
953 },
940954 "disabled": {
941955 "supported": true
942956 },
from line 1190
11761190 
11771191 Whether the model accepts thinking with type 'adaptive' (the model decides whether and how much to think).
11781192 
1193 - `between_tools: BetaCapabilitySupport`
1194 
1195 Whether the model accepts thinking with type 'between_tools' (thinking turned off, and any short progress updates the model writes between tool calls come back as thinking blocks). False exactly when a request that sends it gets a 400 from this model. A request that sends 'between_tools' can still be rejected for another reason, such as an effort level the model does not allow with thinking off.
1196 
11791197 - `disabled: BetaCapabilitySupport`
11801198 
1181 Whether the model accepts thinking with type 'disabled' (thinking turned off). False exactly when a request that sends it gets a 400 from this model. True on a model that does not support thinking.
1199 Whether the model accepts thinking with type 'disabled' (thinking turned off). False exactly when a request that sends it gets a 400 from this model. True on a model that does not support thinking. A request that sends 'disabled' can still be rejected for another reason, such as an effort level the model does not allow with thinking off.
11821200 
11831201 - `enabled: BetaCapabilitySupport`
11841202 
from line 1346
13281346 
13291347 Whether the model accepts thinking with type 'adaptive' (the model decides whether and how much to think).
13301348 
1349 - `between_tools: BetaCapabilitySupport`
1350 
1351 Whether the model accepts thinking with type 'between_tools' (thinking turned off, and any short progress updates the model writes between tool calls come back as thinking blocks). False exactly when a request that sends it gets a 400 from this model. A request that sends 'between_tools' can still be rejected for another reason, such as an effort level the model does not allow with thinking off.
1352 
13311353 - `disabled: BetaCapabilitySupport`
13321354 
1333 Whether the model accepts thinking with type 'disabled' (thinking turned off). False exactly when a request that sends it gets a 400 from this model. True on a model that does not support thinking.
1355 Whether the model accepts thinking with type 'disabled' (thinking turned off). False exactly when a request that sends it gets a 400 from this model. True on a model that does not support thinking. A request that sends 'disabled' can still be rejected for another reason, such as an effort level the model does not allow with thinking off.
13341356 
13351357 - `enabled: BetaCapabilitySupport`
13361358 
from line 1478
14561478 
14571479 Whether this capability is supported by the model.
14581480 
1481 - `between_tools: BetaCapabilitySupport`
1482 
1483 Whether the model accepts thinking with type 'between_tools' (thinking turned off, and any short progress updates the model writes between tool calls come back as thinking blocks). False exactly when a request that sends it gets a 400 from this model. A request that sends 'between_tools' can still be rejected for another reason, such as an effort level the model does not allow with thinking off.
1484 
14591485 - `disabled: BetaCapabilitySupport`
14601486 
1461 Whether the model accepts thinking with type 'disabled' (thinking turned off). False exactly when a request that sends it gets a 400 from this model. True on a model that does not support thinking.
1487 Whether the model accepts thinking with type 'disabled' (thinking turned off). False exactly when a request that sends it gets a 400 from this model. True on a model that does not support thinking. A request that sends 'disabled' can still be rejected for another reason, such as an effort level the model does not allow with thinking off.
14621488 
14631489 - `enabled: BetaCapabilitySupport`
14641490 
from line 1504
14781504 
14791505 Whether this capability is supported by the model.
14801506 
1507 - `between_tools: BetaCapabilitySupport`
1508 
1509 Whether the model accepts thinking with type 'between_tools' (thinking turned off, and any short progress updates the model writes between tool calls come back as thinking blocks). False exactly when a request that sends it gets a 400 from this model. A request that sends 'between_tools' can still be rejected for another reason, such as an effort level the model does not allow with thinking off.
1510 
14811511 - `disabled: BetaCapabilitySupport`
14821512 
1483 Whether the model accepts thinking with type 'disabled' (thinking turned off). False exactly when a request that sends it gets a 400 from this model. True on a model that does not support thinking.
1513 Whether the model accepts thinking with type 'disabled' (thinking turned off). False exactly when a request that sends it gets a 400 from this model. True on a model that does not support thinking. A request that sends 'disabled' can still be rejected for another reason, such as an effort level the model does not allow with thinking off.
14841514 
14851515 - `enabled: BetaCapabilitySupport`
14861516 

api/beta/models/list Changed · +8 / -1 lines

from line 307
307307 
308308 Whether the model accepts thinking with type 'adaptive' (the model decides whether and how much to think).
309309 
310 - `between_tools: BetaCapabilitySupport`
311 
312 Whether the model accepts thinking with type 'between_tools' (thinking turned off, and any short progress updates the model writes between tool calls come back as thinking blocks). False exactly when a request that sends it gets a 400 from this model. A request that sends 'between_tools' can still be rejected for another reason, such as an effort level the model does not allow with thinking off.
313 
310314 - `disabled: BetaCapabilitySupport`
311315 
312 Whether the model accepts thinking with type 'disabled' (thinking turned off). False exactly when a request that sends it gets a 400 from this model. True on a model that does not support thinking.
316 Whether the model accepts thinking with type 'disabled' (thinking turned off). False exactly when a request that sends it gets a 400 from this model. True on a model that does not support thinking. A request that sends 'disabled' can still be rejected for another reason, such as an effort level the model does not allow with thinking off.
313317 
314318 - `enabled: BetaCapabilitySupport`
315319 
from line 477
473477 "supported": true,
474478 "types": {
475479 "adaptive": {
480 "supported": true
481 },
482 "between_tools": {
476483 "supported": true
477484 },
478485 "disabled": {

api/beta/models/retrieve Changed · +8 / -1 lines

from line 283
283283 
284284 Whether the model accepts thinking with type 'adaptive' (the model decides whether and how much to think).
285285 
286 - `between_tools: BetaCapabilitySupport`
287 
288 Whether the model accepts thinking with type 'between_tools' (thinking turned off, and any short progress updates the model writes between tool calls come back as thinking blocks). False exactly when a request that sends it gets a 400 from this model. A request that sends 'between_tools' can still be rejected for another reason, such as an effort level the model does not allow with thinking off.
289 
286290 - `disabled: BetaCapabilitySupport`
287291 
288 Whether the model accepts thinking with type 'disabled' (thinking turned off). False exactly when a request that sends it gets a 400 from this model. True on a model that does not support thinking.
292 Whether the model accepts thinking with type 'disabled' (thinking turned off). False exactly when a request that sends it gets a 400 from this model. True on a model that does not support thinking. A request that sends 'disabled' can still be rejected for another reason, such as an effort level the model does not allow with thinking off.
289293 
290294 - `enabled: BetaCapabilitySupport`
291295 
from line 439
435439 "supported": true,
436440 "types": {
437441 "adaptive": {
442 "supported": true
443 },
444 "between_tools": {
438445 "supported": true
439446 },
440447 "disabled": {

api/beta/organization Changed · +32 / -16 lines

This page is larger than the 256 KiB this site keeps, so one side of the diff below stops where the stored text does.

Nothing in the body moved in this read. What changed is above.

api/beta/organization/plugins Changed · +36 / -16 lines

from line 291
291291 
292292 - `manifest_version: string or null`
293293 
294 The version string the served version's manifest declares.
294 The served version's manifest `version`, normalized for display, or `null` (the Plugin Version's `manifest_version` says how and when).
295295 
296296 - `marketplace_id: string`
297297 
from line 343
343343 
344344 - `reach: "contained" or "privileged" or "remote" or null`
345345 
346 How far the served version reaches: `remote` when it declares an MCP server or a CLI, `privileged` when it declares a hook, monitor, language server or settings but nothing remote, `contained` otherwise; null when not classifiable.
346 How far the served version reaches, or `null` if it is not classified.
347347 
348 `remote` means it declares an MCP server or a CLI. `privileged` means it declares no MCP server or CLI, but declares a hook, monitor, language server, or settings, or has a skill, command, or other Markdown file whose frontmatter pre-approves tools (`allowed-tools` with any value other than an empty one or one that names only `AskUserQuestion`, `TodoWrite`, and `ToolSearch`). Otherwise it is `contained`.
349 
350 If the frontmatter of a skill, command, or other Markdown file that could change the value could not be read, or was past a size limit, the version is `null` or `privileged` (or `remote`, if it declares an MCP server or a CLI), not `contained`. The value is normally worked out when a version is stored, under the rules of that time, so an older version can be `null`, or `contained` where the same files stored today would be `privileged` or `null`.
351 
348352 - `"contained"`
349353 
350354 - `"privileged"`
from line 678
674678 
675679 - `manifest_version: string or null`
676680 
677 The version string the served version's manifest declares.
681 The served version's manifest `version`, normalized for display, or `null` (the Plugin Version's `manifest_version` says how and when).
678682 
679683 - `marketplace_id: string`
680684 
from line 730
726730 
727731 - `reach: "contained" or "privileged" or "remote" or null`
728732 
729 How far the served version reaches: `remote` when it declares an MCP server or a CLI, `privileged` when it declares a hook, monitor, language server or settings but nothing remote, `contained` otherwise; null when not classifiable.
733 How far the served version reaches, or `null` if it is not classified.
730734 
735 `remote` means it declares an MCP server or a CLI. `privileged` means it declares no MCP server or CLI, but declares a hook, monitor, language server, or settings, or has a skill, command, or other Markdown file whose frontmatter pre-approves tools (`allowed-tools` with any value other than an empty one or one that names only `AskUserQuestion`, `TodoWrite`, and `ToolSearch`). Otherwise it is `contained`.
736 
737 If the frontmatter of a skill, command, or other Markdown file that could change the value could not be read, or was past a size limit, the version is `null` or `privileged` (or `remote`, if it declares an MCP server or a CLI), not `contained`. The value is normally worked out when a version is stored, under the rules of that time, so an older version can be `null`, or `contained` where the same files stored today would be `privileged` or `null`.
738 
731739 - `"contained"`
732740 
733741 - `"privileged"`
from line 1083
10751083 
10761084 - `manifest_version: string or null`
10771085 
1078 The version string the served version's manifest declares.
1086 The served version's manifest `version`, normalized for display, or `null` (the Plugin Version's `manifest_version` says how and when).
10791087 
10801088 - `marketplace_id: string`
10811089 
from line 1135
11271135 
11281136 - `reach: "contained" or "privileged" or "remote" or null`
11291137 
1130 How far the served version reaches: `remote` when it declares an MCP server or a CLI, `privileged` when it declares a hook, monitor, language server or settings but nothing remote, `contained` otherwise; null when not classifiable.
1138 How far the served version reaches, or `null` if it is not classified.
11311139 
1140 `remote` means it declares an MCP server or a CLI. `privileged` means it declares no MCP server or CLI, but declares a hook, monitor, language server, or settings, or has a skill, command, or other Markdown file whose frontmatter pre-approves tools (`allowed-tools` with any value other than an empty one or one that names only `AskUserQuestion`, `TodoWrite`, and `ToolSearch`). Otherwise it is `contained`.
1141 
1142 If the frontmatter of a skill, command, or other Markdown file that could change the value could not be read, or was past a size limit, the version is `null` or `privileged` (or `remote`, if it declares an MCP server or a CLI), not `contained`. The value is normally worked out when a version is stored, under the rules of that time, so an older version can be `null`, or `contained` where the same files stored today would be `privileged` or `null`.
1143 
11321144 - `"contained"`
11331145 
11341146 - `"privileged"`
from line 1526
15141526 
15151527 - `manifest_version: string or null`
15161528 
1517 The version string the served version's manifest declares.
1529 The served version's manifest `version`, normalized for display, or `null` (the Plugin Version's `manifest_version` says how and when).
15181530 
15191531 - `marketplace_id: string`
15201532 
from line 1578
15661578 
15671579 - `reach: "contained" or "privileged" or "remote" or null`
15681580 
1569 How far the served version reaches: `remote` when it declares an MCP server or a CLI, `privileged` when it declares a hook, monitor, language server or settings but nothing remote, `contained` otherwise; null when not classifiable.
1581 How far the served version reaches, or `null` if it is not classified.
15701582 
1583 `remote` means it declares an MCP server or a CLI. `privileged` means it declares no MCP server or CLI, but declares a hook, monitor, language server, or settings, or has a skill, command, or other Markdown file whose frontmatter pre-approves tools (`allowed-tools` with any value other than an empty one or one that names only `AskUserQuestion`, `TodoWrite`, and `ToolSearch`). Otherwise it is `contained`.
1584 
1585 If the frontmatter of a skill, command, or other Markdown file that could change the value could not be read, or was past a size limit, the version is `null` or `privileged` (or `remote`, if it declares an MCP server or a CLI), not `contained`. The value is normally worked out when a version is stored, under the rules of that time, so an older version can be `null`, or `contained` where the same files stored today would be `privileged` or `null`.
1586 
15711587 - `"contained"`
15721588 
15731589 - `"privileged"`
from line 1974
19581974 
19591975 - `manifest_version: string or null`
19601976 
1961 The version string the served version's manifest declares.
1977 The served version's manifest `version`, normalized for display, or `null` (the Plugin Version's `manifest_version` says how and when).
19621978 
19631979 - `marketplace_id: string`
19641980 
from line 2026
20102026 
20112027 - `reach: "contained" or "privileged" or "remote" or null`
20122028 
2013 How far the served version reaches: `remote` when it declares an MCP server or a CLI, `privileged` when it declares a hook, monitor, language server or settings but nothing remote, `contained` otherwise; null when not classifiable.
2029 How far the served version reaches, or `null` if it is not classified.
20142030 
2031 `remote` means it declares an MCP server or a CLI. `privileged` means it declares no MCP server or CLI, but declares a hook, monitor, language server, or settings, or has a skill, command, or other Markdown file whose frontmatter pre-approves tools (`allowed-tools` with any value other than an empty one or one that names only `AskUserQuestion`, `TodoWrite`, and `ToolSearch`). Otherwise it is `contained`.
2032 
2033 If the frontmatter of a skill, command, or other Markdown file that could change the value could not be read, or was past a size limit, the version is `null` or `privileged` (or `remote`, if it declares an MCP server or a CLI), not `contained`. The value is normally worked out when a version is stored, under the rules of that time, so an older version can be `null`, or `contained` where the same files stored today would be `privileged` or `null`.
2034 
20152035 - `"contained"`
20162036 
20172037 - `"privileged"`
from line 2483
24632483 
24642484 - `manifest_version: string or null`
24652485 
2466 The version string the manifest declares; null when it declares none.
2486 The manifest's `version`, normalized for display: one leading `v` or `V` is dropped, and the result is returned only if it is 1 to 64 characters, starts with a digit, and uses only ASCII letters, digits, `.`, `+`, and `-`; otherwise `null`. For example, `"v1.4.0"` is returned as `"1.4.0"`, and `"latest"` as `null`. For a synchronized plugin, the `version` of its `marketplace.json` entry can take the place of the manifest's `version`. It is also `null` for a version stored before claude.ai began recording this field (August 2026).
24672487 
24682488 - `plugin_id: string`
24692489 
from line 2491
24712491 
24722492 - `reach: "contained" or "privileged" or "remote" or null`
24732493 
2474 How far the version reaches: `remote`, `privileged` or `contained`, as on the Plugin; null when not classifiable.
2494 How far the version reaches: `remote`, `privileged`, `contained`, or `null`, as defined on the Plugin's `reach`.
24752495 
24762496 - `"contained"`
24772497 
from line 2816
27962816 
27972817 - `manifest_version: string or null`
27982818 
2799 The version string the manifest declares; null when it declares none.
2819 The manifest's `version`, normalized for display: one leading `v` or `V` is dropped, and the result is returned only if it is 1 to 64 characters, starts with a digit, and uses only ASCII letters, digits, `.`, `+`, and `-`; otherwise `null`. For example, `"v1.4.0"` is returned as `"1.4.0"`, and `"latest"` as `null`. For a synchronized plugin, the `version` of its `marketplace.json` entry can take the place of the manifest's `version`. It is also `null` for a version stored before claude.ai began recording this field (August 2026).
28002820 
28012821 - `plugin_id: string`
28022822 
from line 2824
28042824 
28052825 - `reach: "contained" or "privileged" or "remote" or null`
28062826 
2807 How far the version reaches: `remote`, `privileged` or `contained`, as on the Plugin; null when not classifiable.
2827 How far the version reaches: `remote`, `privileged`, `contained`, or `null`, as defined on the Plugin's `reach`.
28082828 
28092829 - `"contained"`
28102830 
from line 3143
31233143 
31243144 - `manifest_version: string or null`
31253145 
3126 The version string the manifest declares; null when it declares none.
3146 The manifest's `version`, normalized for display: one leading `v` or `V` is dropped, and the result is returned only if it is 1 to 64 characters, starts with a digit, and uses only ASCII letters, digits, `.`, `+`, and `-`; otherwise `null`. For example, `"v1.4.0"` is returned as `"1.4.0"`, and `"latest"` as `null`. For a synchronized plugin, the `version` of its `marketplace.json` entry can take the place of the manifest's `version`. It is also `null` for a version stored before claude.ai began recording this field (August 2026).
31273147 
31283148 - `plugin_id: string`
31293149 
from line 3151
31313151 
31323152 - `reach: "contained" or "privileged" or "remote" or null`
31333153 
3134 How far the version reaches: `remote`, `privileged` or `contained`, as on the Plugin; null when not classifiable.
3154 How far the version reaches: `remote`, `privileged`, `contained`, or `null`, as defined on the Plugin's `reach`.
31353155 
31363156 - `"contained"`
31373157 

api/beta/organization/plugins/create Changed · +6 / -2 lines

from line 289
289289 
290290 - `manifest_version: string or null`
291291 
292 The version string the served version's manifest declares.
292 The served version's manifest `version`, normalized for display, or `null` (the Plugin Version's `manifest_version` says how and when).
293293 
294294 - `marketplace_id: string`
295295 
from line 341
341341 
342342 - `reach: "contained" or "privileged" or "remote" or null`
343343 
344 How far the served version reaches: `remote` when it declares an MCP server or a CLI, `privileged` when it declares a hook, monitor, language server or settings but nothing remote, `contained` otherwise; null when not classifiable.
344 How far the served version reaches, or `null` if it is not classified.
345 
346 `remote` means it declares an MCP server or a CLI. `privileged` means it declares no MCP server or CLI, but declares a hook, monitor, language server, or settings, or has a skill, command, or other Markdown file whose frontmatter pre-approves tools (`allowed-tools` with any value other than an empty one or one that names only `AskUserQuestion`, `TodoWrite`, and `ToolSearch`). Otherwise it is `contained`.
347 
348 If the frontmatter of a skill, command, or other Markdown file that could change the value could not be read, or was past a size limit, the version is `null` or `privileged` (or `remote`, if it declares an MCP server or a CLI), not `contained`. The value is normally worked out when a version is stored, under the rules of that time, so an older version can be `null`, or `contained` where the same files stored today would be `privileged` or `null`.
345349 
346350 - `"contained"`
347351 

api/beta/organization/plugins/list Changed · +6 / -2 lines

from line 313
313313 
314314 - `manifest_version: string or null`
315315 
316 The version string the served version's manifest declares.
316 The served version's manifest `version`, normalized for display, or `null` (the Plugin Version's `manifest_version` says how and when).
317317 
318318 - `marketplace_id: string`
319319 
from line 365
365365 
366366 - `reach: "contained" or "privileged" or "remote" or null`
367367 
368 How far the served version reaches: `remote` when it declares an MCP server or a CLI, `privileged` when it declares a hook, monitor, language server or settings but nothing remote, `contained` otherwise; null when not classifiable.
368 How far the served version reaches, or `null` if it is not classified.
369 
370 `remote` means it declares an MCP server or a CLI. `privileged` means it declares no MCP server or CLI, but declares a hook, monitor, language server, or settings, or has a skill, command, or other Markdown file whose frontmatter pre-approves tools (`allowed-tools` with any value other than an empty one or one that names only `AskUserQuestion`, `TodoWrite`, and `ToolSearch`). Otherwise it is `contained`.
371 
372 If the frontmatter of a skill, command, or other Markdown file that could change the value could not be read, or was past a size limit, the version is `null` or `privileged` (or `remote`, if it declares an MCP server or a CLI), not `contained`. The value is normally worked out when a version is stored, under the rules of that time, so an older version can be `null`, or `contained` where the same files stored today would be `privileged` or `null`.
369373 
370374 - `"contained"`
371375 

api/beta/organization/plugins/retrieve Changed · +6 / -2 lines

from line 259
259259 
260260 - `manifest_version: string or null`
261261 
262 The version string the served version's manifest declares.
262 The served version's manifest `version`, normalized for display, or `null` (the Plugin Version's `manifest_version` says how and when).
263263 
264264 - `marketplace_id: string`
265265 
from line 311
311311 
312312 - `reach: "contained" or "privileged" or "remote" or null`
313313 
314 How far the served version reaches: `remote` when it declares an MCP server or a CLI, `privileged` when it declares a hook, monitor, language server or settings but nothing remote, `contained` otherwise; null when not classifiable.
314 How far the served version reaches, or `null` if it is not classified.
315 
316 `remote` means it declares an MCP server or a CLI. `privileged` means it declares no MCP server or CLI, but declares a hook, monitor, language server, or settings, or has a skill, command, or other Markdown file whose frontmatter pre-approves tools (`allowed-tools` with any value other than an empty one or one that names only `AskUserQuestion`, `TodoWrite`, and `ToolSearch`). Otherwise it is `contained`.
317 
318 If the frontmatter of a skill, command, or other Markdown file that could change the value could not be read, or was past a size limit, the version is `null` or `privileged` (or `remote`, if it declares an MCP server or a CLI), not `contained`. The value is normally worked out when a version is stored, under the rules of that time, so an older version can be `null`, or `contained` where the same files stored today would be `privileged` or `null`.
315319 
316320 - `"contained"`
317321 

api/beta/organization/plugins/update Changed · +6 / -2 lines

from line 279
279279 
280280 - `manifest_version: string or null`
281281 
282 The version string the served version's manifest declares.
282 The served version's manifest `version`, normalized for display, or `null` (the Plugin Version's `manifest_version` says how and when).
283283 
284284 - `marketplace_id: string`
285285 
from line 331
331331 
332332 - `reach: "contained" or "privileged" or "remote" or null`
333333 
334 How far the served version reaches: `remote` when it declares an MCP server or a CLI, `privileged` when it declares a hook, monitor, language server or settings but nothing remote, `contained` otherwise; null when not classifiable.
334 How far the served version reaches, or `null` if it is not classified.
335 
336 `remote` means it declares an MCP server or a CLI. `privileged` means it declares no MCP server or CLI, but declares a hook, monitor, language server, or settings, or has a skill, command, or other Markdown file whose frontmatter pre-approves tools (`allowed-tools` with any value other than an empty one or one that names only `AskUserQuestion`, `TodoWrite`, and `ToolSearch`). Otherwise it is `contained`.
337 
338 If the frontmatter of a skill, command, or other Markdown file that could change the value could not be read, or was past a size limit, the version is `null` or `privileged` (or `remote`, if it declares an MCP server or a CLI), not `contained`. The value is normally worked out when a version is stored, under the rules of that time, so an older version can be `null`, or `contained` where the same files stored today would be `privileged` or `null`.
335339 
336340 - `"contained"`
337341 

api/beta/organization/plugins/versions Changed · +8 / -8 lines

from line 282
282282 
283283 - `manifest_version: string or null`
284284 
285 The version string the manifest declares; null when it declares none.
285 The manifest's `version`, normalized for display: one leading `v` or `V` is dropped, and the result is returned only if it is 1 to 64 characters, starts with a digit, and uses only ASCII letters, digits, `.`, `+`, and `-`; otherwise `null`. For example, `"v1.4.0"` is returned as `"1.4.0"`, and `"latest"` as `null`. For a synchronized plugin, the `version` of its `marketplace.json` entry can take the place of the manifest's `version`. It is also `null` for a version stored before claude.ai began recording this field (August 2026).
286286 
287287 - `plugin_id: string`
288288 
from line 290
290290 
291291 - `reach: "contained" or "privileged" or "remote" or null`
292292 
293 How far the version reaches: `remote`, `privileged` or `contained`, as on the Plugin; null when not classifiable.
293 How far the version reaches: `remote`, `privileged`, `contained`, or `null`, as defined on the Plugin's `reach`.
294294 
295295 - `"contained"`
296296 
from line 615
615615 
616616 - `manifest_version: string or null`
617617 
618 The version string the manifest declares; null when it declares none.
618 The manifest's `version`, normalized for display: one leading `v` or `V` is dropped, and the result is returned only if it is 1 to 64 characters, starts with a digit, and uses only ASCII letters, digits, `.`, `+`, and `-`; otherwise `null`. For example, `"v1.4.0"` is returned as `"1.4.0"`, and `"latest"` as `null`. For a synchronized plugin, the `version` of its `marketplace.json` entry can take the place of the manifest's `version`. It is also `null` for a version stored before claude.ai began recording this field (August 2026).
619619 
620620 - `plugin_id: string`
621621 
from line 623
623623 
624624 - `reach: "contained" or "privileged" or "remote" or null`
625625 
626 How far the version reaches: `remote`, `privileged` or `contained`, as on the Plugin; null when not classifiable.
626 How far the version reaches: `remote`, `privileged`, `contained`, or `null`, as defined on the Plugin's `reach`.
627627 
628628 - `"contained"`
629629 
from line 942
942942 
943943 - `manifest_version: string or null`
944944 
945 The version string the manifest declares; null when it declares none.
945 The manifest's `version`, normalized for display: one leading `v` or `V` is dropped, and the result is returned only if it is 1 to 64 characters, starts with a digit, and uses only ASCII letters, digits, `.`, `+`, and `-`; otherwise `null`. For example, `"v1.4.0"` is returned as `"1.4.0"`, and `"latest"` as `null`. For a synchronized plugin, the `version` of its `marketplace.json` entry can take the place of the manifest's `version`. It is also `null` for a version stored before claude.ai began recording this field (August 2026).
946946 
947947 - `plugin_id: string`
948948 
from line 950
950950 
951951 - `reach: "contained" or "privileged" or "remote" or null`
952952 
953 How far the version reaches: `remote`, `privileged` or `contained`, as on the Plugin; null when not classifiable.
953 How far the version reaches: `remote`, `privileged`, `contained`, or `null`, as defined on the Plugin's `reach`.
954954 
955955 - `"contained"`
956956 
from line 1287
12871287 
12881288 - `manifest_version: string or null`
12891289 
1290 The version string the manifest declares; null when it declares none.
1290 The manifest's `version`, normalized for display: one leading `v` or `V` is dropped, and the result is returned only if it is 1 to 64 characters, starts with a digit, and uses only ASCII letters, digits, `.`, `+`, and `-`; otherwise `null`. For example, `"v1.4.0"` is returned as `"1.4.0"`, and `"latest"` as `null`. For a synchronized plugin, the `version` of its `marketplace.json` entry can take the place of the manifest's `version`. It is also `null` for a version stored before claude.ai began recording this field (August 2026).
12911291 
12921292 - `plugin_id: string`
12931293 
from line 1295
12951295 
12961296 - `reach: "contained" or "privileged" or "remote" or null`
12971297 
1298 How far the version reaches: `remote`, `privileged` or `contained`, as on the Plugin; null when not classifiable.
1298 How far the version reaches: `remote`, `privileged`, `contained`, or `null`, as defined on the Plugin's `reach`.
12991299 
13001300 - `"contained"`
13011301 

api/beta/vaults Changed · +105 / -81 lines

## Create a Vault ## Retrieve a Vault ## Update a Vault ## Delete a Vault ## Archive a Vault ### Create a Credential ### Retrieve a Credential ### Update a Credential ### Delete a Credential ### Archive a Credential ### Validate an MCP OAuth Credential ## Create Vault ## Get Vault ## Update Vault ## Delete Vault ## Archive Vault ### Create Credential ### Get Credential ### Update Credential ### Delete Credential ### Archive Credential ### Validate Credential

from line 5
55 
66# Vaults
77 
8## Create Vault
8## Create a Vault
99 
1010**POST** `/v1/vaults`
1111 
12Create Vault
12Create a Vault
1313 
1414### Headers
1515 
from line 155
155155 
156156 - `id: string`
157157 
158 Unique identifier for the vault.
158 The unique ID of the vault (`vlt_...`).
159159 
160160 - `archived_at: string or null`
161161 
from line 225
225225 
226226- `include_archived: optional boolean`
227227 
228 Whether to include archived vaults in the results.
228 Whether to include archived vaults in the results. Defaults to `false`.
229229 
230230- `limit: optional number`
231231 
from line 235
235235 
236236- `page: optional string`
237237 
238 Opaque pagination token from a previous `list_vaults` response.
238 The `next_page` value from a previous [List Vaults](https://platform.claude.com/docs/en/api/beta/vaults/list?sdk_languages=http) response, to get the next page. Leave it out to get the first page.
239239 
240240### Headers
241241 
from line 363
363363 
364364- `data: optional array of BetaManagedAgentsVault`
365365 
366 List of vaults.
366 The vaults on this page, newest first.
367367 
368368 - `type: "vault"`
369369 
370370 - `id: string`
371371 
372 Unique identifier for the vault.
372 The unique ID of the vault (`vlt_...`).
373373 
374374 - `archived_at: string or null`
375375 
from line 431
431431}
432432```
433433 
434## Get Vault
434## Retrieve a Vault
435435 
436436**GET** `/v1/vaults/{vault_id}`
437437 
438Get Vault
438Retrieve a Vault
439439 
440440### Path parameters
441441 
from line 575
575575 
576576 - `id: string`
577577 
578 Unique identifier for the vault.
578 The unique ID of the vault (`vlt_...`).
579579 
580580 - `archived_at: string or null`
581581 
from line 628
628628}
629629```
630630 
631## Update Vault
631## Update a Vault
632632 
633633**POST** `/v1/vaults/{vault_id}`
634634 
635Update Vault
635Update a Vault
636636 
637637### Path parameters
638638 
from line 784
784784 
785785 - `id: string`
786786 
787 Unique identifier for the vault.
787 The unique ID of the vault (`vlt_...`).
788788 
789789 - `archived_at: string or null`
790790 
from line 844
844844}
845845```
846846 
847## Delete Vault
847## Delete a Vault
848848 
849849**DELETE** `/v1/vaults/{vault_id}`
850850 
851Delete Vault
851Delete a Vault
852852 
853853### Path parameters
854854 
from line 988
988988 
989989 - `id: string`
990990 
991 Unique identifier of the deleted vault.
991 The unique ID of the deleted vault (`vlt_...`).
992992 
993993### Example
994994 
from line 1009
10091009}
10101010```
10111011 
1012## Archive Vault
1012## Archive a Vault
10131013 
10141014**POST** `/v1/vaults/{vault_id}/archive`
10151015 
1016Archive Vault
1016Archive a Vault
10171017 
10181018### Path parameters
10191019 
from line 1153
11531153 
11541154 - `id: string`
11551155 
1156 Unique identifier for the vault.
1156 The unique ID of the vault (`vlt_...`).
11571157 
11581158 - `archived_at: string or null`
11591159 
from line 1219
12191219 
12201220 - `id: string`
12211221 
1222 Unique identifier of the deleted vault.
1222 The unique ID of the deleted vault (`vlt_...`).
12231223 
12241224### Beta Managed Agents Vault
12251225 
from line 1231
12311231 
12321232 - `id: string`
12331233 
1234 Unique identifier for the vault.
1234 The unique ID of the vault (`vlt_...`).
12351235 
12361236 - `archived_at: string or null`
12371237 
from line 1261
12611261 
12621262## Vaults › Credentials
12631263 
1264### Create Credential
1264### Create a Credential
12651265 
12661266**POST** `/v1/vaults/{vault_id}/credentials`
12671267 
1268Create Credential
1268Create a Credential
12691269 
12701270#### Path parameters
12711271 
from line 1409
14091409 
14101410 - `access_token: string`
14111411 
1412 OAuth access token.
1412 The OAuth access token to send to the MCP server.
14131413 
14141414 minLength: 1, maxLength: 8192
14151415 
from line 1421
14211421 
14221422 - `expires_at: optional string or null`
14231423 
1424 A timestamp in RFC 3339 format
1424 When `access_token` expires, in RFC 3339.
14251425 
1426 Must be in the future.
1427 
14261428 format: date-time
14271429 
14281430 - `refresh: optional BetaManagedAgentsMCPOAuthRefreshParams or null`
from line 1433
14311433 
14321434 - `client_id: string`
14331435 
1434 OAuth client ID.
1436 The OAuth client ID to use when refreshing the access token. It can't be changed after the credential is created.
14351437 
14361438 minLength: 1, maxLength: 1024
14371439 
14381440 - `refresh_token: string`
14391441 
1440 OAuth refresh token.
1442 The OAuth refresh token that the API uses to get a new access token when the current one expires.
14411443 
14421444 minLength: 1, maxLength: 8192
14431445 
from line 1465
14631465 
14641466 - `client_secret: string`
14651467 
1466 OAuth client secret.
1468 The OAuth client secret, sent to `token_endpoint` with HTTP Basic authentication.
14671469 
14681470 minLength: 1, maxLength: 512
14691471 
from line 1477
14751477 
14761478 - `client_secret: string`
14771479 
1478 OAuth client secret.
1480 The OAuth client secret, sent to `token_endpoint` in the POST body.
14791481 
14801482 minLength: 1, maxLength: 512
14811483 
from line 1501
14991501 
15001502 - `token: string`
15011503 
1502 Static bearer token value.
1504 The static bearer token to send to the MCP server, such as an API key or personal access token.
15031505 
15041506 minLength: 1, maxLength: 8192
15051507 
from line 1535
15331535 
15341536 - `allowed_hosts: array of string`
15351537 
1536 Hostnames on which the secret will be substituted. Each entry is a bare hostname (`api.example.com`), an IPv4 address (`192.0.2.1`), or a `*.`-prefixed wildcard (`*.example.com`). URLs, ports, paths, and IPv6 addresses are not accepted. At most 16 entries.
1538 The destination hosts of the outbound requests that the credential's secret is substituted into.
15371539 
1540 Each entry is a bare hostname (`api.example.com`), an IPv4 address (`192.0.2.1`), or a `*.` wildcard (`*.example.com`). URLs, ports, paths, and IPv6 addresses aren't accepted. The list can have up to 16 entries.
1541 
15381542 - `secret_name: string`
15391543 
15401544 Name of the environment variable. Immutable after create.
from line 1547
15431547 
15441548 - `secret_value: string`
15451549 
1546 Secret value. Write-only; never returned in responses.
1550 The secret to substitute into the agent's outbound requests. It's write-only and never returned in responses.
15471551 
15481552 minLength: 1, maxLength: 4096
15491553 
from line 1583
15791583 
15801584 - `id: string`
15811585 
1582 Unique identifier for the credential.
1586 The unique ID of the credential (`vcrd_...`).
15831587 
15841588 - `archived_at: string or null`
15851589 
from line 1607
16031607 
16041608 - `expires_at: optional string or null`
16051609 
1606 A timestamp in RFC 3339 format
1610 When the credential's access token expires, in RFC 3339. Absent if the expiry isn't known.
16071611 
16081612 format: date-time
16091613 
from line 1617
16131617 
16141618 - `client_id: string`
16151619 
1616 OAuth client ID.
1620 The OAuth client ID used when refreshing the access token.
16171621 
16181622 - `token_endpoint: string`
16191623 
from line 1697
16931697 
16941698 - `allowed_hosts: array of string`
16951699 
1696 Hostnames on which the secret will be substituted. An entry matches the request host exactly; a `*.`-prefixed entry matches any subdomain of the named domain but not the domain itself.
1700 The destination hosts of the outbound requests that the credential's secret is substituted into.
16971701 
1702 An entry matches the request host exactly. An entry such as `*.example.com` matches any subdomain of `example.com` but not `example.com` itself.
1703 
16981704 - `secret_name: string`
16991705 
17001706 Name of the environment variable.
from line 1787
17811787 
17821788- `include_archived: optional boolean`
17831789 
1784 Whether to include archived credentials in the results.
1790 Whether to include archived credentials in the results. Defaults to `false`.
17851791 
17861792- `limit: optional number`
17871793 
from line 1797
17911797 
17921798- `page: optional string`
17931799 
1794 Opaque pagination token from a previous `list_credentials` response.
1800 The `next_page` value from a previous [List Credentials](https://platform.claude.com/docs/en/api/beta/vaults/credentials/list?sdk_languages=http) response, to get the next page. Leave it out to get the first page.
17951801 
17961802#### Headers
17971803 
from line 1925
19191925 
19201926- `data: optional array of BetaManagedAgentsCredential`
19211927 
1922 List of credentials.
1928 The credentials on this page, newest first.
19231929 
19241930 - `type: "vault_credential"`
19251931 
19261932 - `id: string`
19271933 
1928 Unique identifier for the credential.
1934 The unique ID of the credential (`vcrd_...`).
19291935 
19301936 - `archived_at: string or null`
19311937 
from line 1955
19491955 
19501956 - `expires_at: optional string or null`
19511957 
1952 A timestamp in RFC 3339 format
1958 When the credential's access token expires, in RFC 3339. Absent if the expiry isn't known.
19531959 
19541960 format: date-time
19551961 
from line 1965
19591965 
19601966 - `client_id: string`
19611967 
1962 OAuth client ID.
1968 The OAuth client ID used when refreshing the access token.
19631969 
19641970 - `token_endpoint: string`
19651971 
from line 2045
20392045 
20402046 - `allowed_hosts: array of string`
20412047 
2042 Hostnames on which the secret will be substituted. An entry matches the request host exactly; a `*.`-prefixed entry matches any subdomain of the named domain but not the domain itself.
2048 The destination hosts of the outbound requests that the credential's secret is substituted into.
20432049 
2050 An entry matches the request host exactly. An entry such as `*.example.com` matches any subdomain of `example.com` but not `example.com` itself.
2051 
20442052 - `secret_name: string`
20452053 
20462054 Name of the environment variable.
from line 2116
21082116}
21092117```
21102118 
2111### Get Credential
2119### Retrieve a Credential
21122120 
21132121**GET** `/v1/vaults/{vault_id}/credentials/{credential_id}`
21142122 
2115Get Credential
2123Retrieve a Credential
21162124 
21172125#### Path parameters
21182126 
from line 2264
22562264 
22572265 - `id: string`
22582266 
2259 Unique identifier for the credential.
2267 The unique ID of the credential (`vcrd_...`).
22602268 
22612269 - `archived_at: string or null`
22622270 
from line 2288
22802288 
22812289 - `expires_at: optional string or null`
22822290 
2283 A timestamp in RFC 3339 format
2291 When the credential's access token expires, in RFC 3339. Absent if the expiry isn't known.
22842292 
22852293 format: date-time
22862294 
from line 2298
22902298 
22912299 - `client_id: string`
22922300 
2293 OAuth client ID.
2301 The OAuth client ID used when refreshing the access token.
22942302 
22952303 - `token_endpoint: string`
22962304 
from line 2378
23702378 
23712379 - `allowed_hosts: array of string`
23722380 
2373 Hostnames on which the secret will be substituted. An entry matches the request host exactly; a `*.`-prefixed entry matches any subdomain of the named domain but not the domain itself.
2381 The destination hosts of the outbound requests that the credential's secret is substituted into.
23742382 
2383 An entry matches the request host exactly. An entry such as `*.example.com` matches any subdomain of `example.com` but not `example.com` itself.
2384 
23752385 - `secret_name: string`
23762386 
23772387 Name of the environment variable.
from line 2440
24302440}
24312441```
24322442 
2433### Update Credential
2443### Update a Credential
24342444 
24352445**POST** `/v1/vaults/{vault_id}/credentials/{credential_id}`
24362446 
2437Update Credential
2447Update a Credential
24382448 
24392449#### Path parameters
24402450 
from line 2582
25722582 
25732583- `auth: optional BetaManagedAgentsMCPOAuthUpdateParams or BetaManagedAgentsStaticBearerUpdateParams or BetaManagedAgentsEnvironmentVariableUpdateParams`
25742584 
2575 Updated authentication configuration. The `type` is immutable; the variant sent must match the stored credential's type.
2585 New authentication settings for the credential. The `type` must match the credential's current type, which can't be changed.
25762586 
25772587 - `BetaManagedAgentsMCPOAuthUpdateParams object`
25782588 
from line 2592
25822592 
25832593 - `access_token: optional string or null`
25842594 
2585 Updated OAuth access token.
2595 The new OAuth access token to replace the stored one.
25862596 
25872597 minLength: 1, maxLength: 8192
25882598 
25892599 - `expires_at: optional string or null`
25902600 
2591 A timestamp in RFC 3339 format
2601 When the credential's access token expires, in RFC 3339. Leave it out to keep the stored expiry.
25922602 
2603 If you send a new `access_token`, send its `expires_at` too, or the new token keeps the old expiry.
2604 
2605 Must be in the future.
2606 
25932607 format: date-time
25942608 
25952609 - `refresh: optional BetaManagedAgentsMCPOAuthRefreshUpdateParams or null`
from line 2612
25982612 
25992613 - `refresh_token: optional string or null`
26002614 
2601 Updated OAuth refresh token.
2615 The new OAuth refresh token to replace the stored one.
26022616 
26032617 minLength: 1, maxLength: 8192
26042618 
26052619 - `scope: optional string or null`
26062620 
2607 Updated OAuth scope for the refresh request.
2621 The new OAuth scope for refresh requests. Send an empty string to clear the stored scope.
26082622 
26092623 maxLength: 8192
26102624 
from line 2632
26182632 
26192633 - `client_secret: optional string or null`
26202634 
2621 Updated OAuth client secret.
2635 A new OAuth client secret to replace the stored one.
26222636 
2637 The credential must already use `client_secret_basic` or `client_secret_post`. It keeps its current `token_endpoint_auth` type, even if the `type` sent with this secret is the other one.
2638 
26232639 minLength: 1, maxLength: 512
26242640 
26252641 - `BetaManagedAgentsTokenEndpointAuthPostUpdateParam object`
from line 2646
26302646 
26312647 - `client_secret: optional string or null`
26322648 
2633 Updated OAuth client secret.
2649 A new OAuth client secret to replace the stored one.
26342650 
2651 The credential must already use `client_secret_basic` or `client_secret_post`. It keeps its current `token_endpoint_auth` type, even if the `type` sent with this secret is the other one.
2652 
26352653 minLength: 1, maxLength: 512
26362654 
26372655 - `BetaManagedAgentsStaticBearerUpdateParams object`
from line 2660
26422660 
26432661 - `token: optional string or null`
26442662 
2645 Updated static bearer token value.
2663 The new static bearer token to replace the stored one.
26462664 
26472665 minLength: 1, maxLength: 8192
26482666 
from line 2684
26662684 
26672685 - `networking: optional BetaManagedAgentsCredentialNetworkingParams or null`
26682686 
2669 Updated networking scope. Full replacement.
2687 The new networking scope, which replaces the stored one as a whole.
26702688 
26712689 - `BetaManagedAgentsUnrestrictedCredentialNetworkingParams object`
26722690 
from line 2700
26822700 
26832701 - `allowed_hosts: array of string`
26842702 
2685 Hostnames on which the secret will be substituted. Each entry is a bare hostname (`api.example.com`), an IPv4 address (`192.0.2.1`), or a `*.`-prefixed wildcard (`*.example.com`). URLs, ports, paths, and IPv6 addresses are not accepted. At most 16 entries.
2703 The destination hosts of the outbound requests that the credential's secret is substituted into.
26862704 
2705 Each entry is a bare hostname (`api.example.com`), an IPv4 address (`192.0.2.1`), or a `*.` wildcard (`*.example.com`). URLs, ports, paths, and IPv6 addresses aren't accepted. The list can have up to 16 entries.
2706 
26872707 - `secret_value: optional string or null`
26882708 
2689 Updated secret value.
2709 The new secret value to replace the stored one.
26902710 
26912711 minLength: 1, maxLength: 4096
26922712 
from line 2730
27102730 
27112731 - `id: string`
27122732 
2713 Unique identifier for the credential.
2733 The unique ID of the credential (`vcrd_...`).
27142734 
27152735 - `archived_at: string or null`
27162736 
from line 2754
27342754 
27352755 - `expires_at: optional string or null`
27362756 
2737 A timestamp in RFC 3339 format
2757 When the credential's access token expires, in RFC 3339. Absent if the expiry isn't known.
27382758 
27392759 format: date-time
27402760 
from line 2764
27442764 
27452765 - `client_id: string`
27462766 
2747 OAuth client ID.
2767 The OAuth client ID used when refreshing the access token.
27482768 
27492769 - `token_endpoint: string`
27502770 
from line 2844
28242844 
28252845 - `allowed_hosts: array of string`
28262846 
2827 Hostnames on which the secret will be substituted. An entry matches the request host exactly; a `*.`-prefixed entry matches any subdomain of the named domain but not the domain itself.
2847 The destination hosts of the outbound requests that the credential's secret is substituted into.
28282848 
2849 An entry matches the request host exactly. An entry such as `*.example.com` matches any subdomain of `example.com` but not `example.com` itself.
2850 
28292851 - `secret_name: string`
28302852 
28312853 Name of the environment variable.
from line 2913
28912913}
28922914```
28932915 
2894### Delete Credential
2916### Delete a Credential
28952917 
28962918**DELETE** `/v1/vaults/{vault_id}/credentials/{credential_id}`
28972919 
2898Delete Credential
2920Delete a Credential
28992921 
29002922#### Path parameters
29012923 
from line 3061
30393061 
30403062 - `id: string`
30413063 
3042 Unique identifier of the deleted credential.
3064 The unique ID of the deleted credential (`vcrd_...`).
30433065 
30443066#### Example
30453067 
from line 3082
30603082}
30613083```
30623084 
3063### Archive Credential
3085### Archive a Credential
30643086 
30653087**POST** `/v1/vaults/{vault_id}/credentials/{credential_id}/archive`
30663088 
3067Archive Credential
3089Archive a Credential
30683090 
30693091#### Path parameters
30703092 
from line 3230
32083230 
32093231 - `id: string`
32103232 
3211 Unique identifier for the credential.
3233 The unique ID of the credential (`vcrd_...`).
32123234 
32133235 - `archived_at: string or null`
32143236 
from line 3254
32323254 
32333255 - `expires_at: optional string or null`
32343256 
3235 A timestamp in RFC 3339 format
3257 When the credential's access token expires, in RFC 3339. Absent if the expiry isn't known.
32363258 
32373259 format: date-time
32383260 
from line 3264
32423264 
32433265 - `client_id: string`
32443266 
3245 OAuth client ID.
3267 The OAuth client ID used when refreshing the access token.
32463268 
32473269 - `token_endpoint: string`
32483270 
from line 3344
33223344 
33233345 - `allowed_hosts: array of string`
33243346 
3325 Hostnames on which the secret will be substituted. An entry matches the request host exactly; a `*.`-prefixed entry matches any subdomain of the named domain but not the domain itself.
3347 The destination hosts of the outbound requests that the credential's secret is substituted into.
33263348 
3349 An entry matches the request host exactly. An entry such as `*.example.com` matches any subdomain of `example.com` but not `example.com` itself.
3350 
33273351 - `secret_name: string`
33283352 
33293353 Name of the environment variable.
from line 3407
33833407}
33843408```
33853409 
3386### Validate Credential
3410### Validate an MCP OAuth Credential
33873411 
33883412**POST** `/v1/vaults/{vault_id}/credentials/{credential_id}/mcp_oauth_validate`
33893413 
3390Validate Credential
3414Validate an MCP OAuth Credential
33913415 
33923416#### Path parameters
33933417 
from line 3563
35393563 
35403564 - `mcp_probe: BetaManagedAgentsMCPProbe or null`
35413565 
3542 Details of the failing MCP probe step. Null when the probe succeeded.
3566 Details of the MCP probe step that failed, or `null` if the probe succeeded or there was no access token to test.
35433567 
35443568 - `http_response: BetaManagedAgentsRefreshHTTPResponse or null`
35453569 
3546 The captured HTTP error response. Null when no HTTP response was received (timeout, DNS, TLS).
3570 The HTTP error response from the MCP server, or `null` if the MCP server didn't return one for the failing step, for example after a timeout or a DNS or TLS failure.
35473571 
35483572 - `body: string`
35493573 
from line 3629
36053629 
36063630 - `"invalid"`
36073631 
3608 The probe reached the MCP server and was rejected, and a refresh (if attempted) did not recover it.
3632 The probe reached the MCP server and the server rejected the credential, or no access token is stored. A refresh, if one was tried, didn't recover it. Usually the end user needs to authorize again.
36093633 
36103634 - `"unknown"`
36113635 
3612 The probe could not determine validity — for example, a transport error or a successful refresh that was not re-probed.
3636 The probe couldn't tell whether the credential works, for example because of a network error or because a refresh succeeded but the new access token wasn't tested. Validate the credential again to find out.
36133637 
36143638 - `validated_at: string`
36153639 

api/beta/vaults/archive Changed · +4 / -4 lines

# Archive a Vault # Archive Vault

from line 1
11---
2title: Archive Vault
2title: Archive a Vault
33url: https://platform.claude.com/docs/en/api/beta/vaults/archive
44---
55 
6# Archive Vault
6# Archive a Vault
77 
88**POST** `/v1/vaults/{vault_id}/archive`
99 
10Archive Vault
10Archive a Vault
1111 
1212## Path parameters
1313 
from line 147
147147 
148148 - `id: string`
149149 
150 Unique identifier for the vault.
150 The unique ID of the vault (`vlt_...`).
151151 
152152 - `archived_at: string or null`
153153 

api/beta/vaults/create Changed · +4 / -4 lines

# Create a Vault # Create Vault

from line 1
11---
2title: Create Vault
2title: Create a Vault
33url: https://platform.claude.com/docs/en/api/beta/vaults/create
44---
55 
6# Create Vault
6# Create a Vault
77 
88**POST** `/v1/vaults`
99 
10Create Vault
10Create a Vault
1111 
1212## Headers
1313 
from line 153
153153 
154154 - `id: string`
155155 
156 Unique identifier for the vault.
156 The unique ID of the vault (`vlt_...`).
157157 
158158 - `archived_at: string or null`
159159 

api/beta/vaults/credentials Changed · +171 / -111 lines

## Create a Credential ## Retrieve a Credential ## Update a Credential ## Delete a Credential ## Archive a Credential ## Validate an MCP OAuth Credential ## Create Credential ## Get Credential ## Update Credential ## Delete Credential ## Archive Credential ## Validate Credential

from line 5
55 
66# Credentials
77 
8## Create Credential
8## Create a Credential
99 
1010**POST** `/v1/vaults/{vault_id}/credentials`
1111 
12Create Credential
12Create a Credential
1313 
1414### Path parameters
1515 
from line 153
153153 
154154 - `access_token: string`
155155 
156 OAuth access token.
156 The OAuth access token to send to the MCP server.
157157 
158158 minLength: 1, maxLength: 8192
159159 
from line 165
165165 
166166 - `expires_at: optional string or null`
167167 
168 A timestamp in RFC 3339 format
168 When `access_token` expires, in RFC 3339.
169169 
170 Must be in the future.
171 
170172 format: date-time
171173 
172174 - `refresh: optional BetaManagedAgentsMCPOAuthRefreshParams or null`
from line 177
175177 
176178 - `client_id: string`
177179 
178 OAuth client ID.
180 The OAuth client ID to use when refreshing the access token. It can't be changed after the credential is created.
179181 
180182 minLength: 1, maxLength: 1024
181183 
182184 - `refresh_token: string`
183185 
184 OAuth refresh token.
186 The OAuth refresh token that the API uses to get a new access token when the current one expires.
185187 
186188 minLength: 1, maxLength: 8192
187189 
from line 209
207209 
208210 - `client_secret: string`
209211 
210 OAuth client secret.
212 The OAuth client secret, sent to `token_endpoint` with HTTP Basic authentication.
211213 
212214 minLength: 1, maxLength: 512
213215 
from line 221
219221 
220222 - `client_secret: string`
221223 
222 OAuth client secret.
224 The OAuth client secret, sent to `token_endpoint` in the POST body.
223225 
224226 minLength: 1, maxLength: 512
225227 
from line 245
243245 
244246 - `token: string`
245247 
246 Static bearer token value.
248 The static bearer token to send to the MCP server, such as an API key or personal access token.
247249 
248250 minLength: 1, maxLength: 8192
249251 
from line 279
277279 
278280 - `allowed_hosts: array of string`
279281 
280 Hostnames on which the secret will be substituted. Each entry is a bare hostname (`api.example.com`), an IPv4 address (`192.0.2.1`), or a `*.`-prefixed wildcard (`*.example.com`). URLs, ports, paths, and IPv6 addresses are not accepted. At most 16 entries.
282 The destination hosts of the outbound requests that the credential's secret is substituted into.
281283 
284 Each entry is a bare hostname (`api.example.com`), an IPv4 address (`192.0.2.1`), or a `*.` wildcard (`*.example.com`). URLs, ports, paths, and IPv6 addresses aren't accepted. The list can have up to 16 entries.
285 
282286 - `secret_name: string`
283287 
284288 Name of the environment variable. Immutable after create.
from line 291
287291 
288292 - `secret_value: string`
289293 
290 Secret value. Write-only; never returned in responses.
294 The secret to substitute into the agent's outbound requests. It's write-only and never returned in responses.
291295 
292296 minLength: 1, maxLength: 4096
293297 
from line 327
323327 
324328 - `id: string`
325329 
326 Unique identifier for the credential.
330 The unique ID of the credential (`vcrd_...`).
327331 
328332 - `archived_at: string or null`
329333 
from line 351
347351 
348352 - `expires_at: optional string or null`
349353 
350 A timestamp in RFC 3339 format
354 When the credential's access token expires, in RFC 3339. Absent if the expiry isn't known.
351355 
352356 format: date-time
353357 
from line 361
357361 
358362 - `client_id: string`
359363 
360 OAuth client ID.
364 The OAuth client ID used when refreshing the access token.
361365 
362366 - `token_endpoint: string`
363367 
from line 441
437441 
438442 - `allowed_hosts: array of string`
439443 
440 Hostnames on which the secret will be substituted. An entry matches the request host exactly; a `*.`-prefixed entry matches any subdomain of the named domain but not the domain itself.
444 The destination hosts of the outbound requests that the credential's secret is substituted into.
441445 
446 An entry matches the request host exactly. An entry such as `*.example.com` matches any subdomain of `example.com` but not `example.com` itself.
447 
442448 - `secret_name: string`
443449 
444450 Name of the environment variable.
from line 531
525531 
526532- `include_archived: optional boolean`
527533 
528 Whether to include archived credentials in the results.
534 Whether to include archived credentials in the results. Defaults to `false`.
529535 
530536- `limit: optional number`
531537 
from line 541
535541 
536542- `page: optional string`
537543 
538 Opaque pagination token from a previous `list_credentials` response.
544 The `next_page` value from a previous [List Credentials](https://platform.claude.com/docs/en/api/beta/vaults/credentials/list?sdk_languages=http) response, to get the next page. Leave it out to get the first page.
539545 
540546### Headers
541547 
from line 669
663669 
664670- `data: optional array of BetaManagedAgentsCredential`
665671 
666 List of credentials.
672 The credentials on this page, newest first.
667673 
668674 - `type: "vault_credential"`
669675 
670676 - `id: string`
671677 
672 Unique identifier for the credential.
678 The unique ID of the credential (`vcrd_...`).
673679 
674680 - `archived_at: string or null`
675681 
from line 699
693699 
694700 - `expires_at: optional string or null`
695701 
696 A timestamp in RFC 3339 format
702 When the credential's access token expires, in RFC 3339. Absent if the expiry isn't known.
697703 
698704 format: date-time
699705 
from line 709
703709 
704710 - `client_id: string`
705711 
706 OAuth client ID.
712 The OAuth client ID used when refreshing the access token.
707713 
708714 - `token_endpoint: string`
709715 
from line 789
783789 
784790 - `allowed_hosts: array of string`
785791 
786 Hostnames on which the secret will be substituted. An entry matches the request host exactly; a `*.`-prefixed entry matches any subdomain of the named domain but not the domain itself.
792 The destination hosts of the outbound requests that the credential's secret is substituted into.
787793 
794 An entry matches the request host exactly. An entry such as `*.example.com` matches any subdomain of `example.com` but not `example.com` itself.
795 
788796 - `secret_name: string`
789797 
790798 Name of the environment variable.
from line 860
852860}
853861```
854862 
855## Get Credential
863## Retrieve a Credential
856864 
857865**GET** `/v1/vaults/{vault_id}/credentials/{credential_id}`
858866 
859Get Credential
867Retrieve a Credential
860868 
861869### Path parameters
862870 
from line 1008
10001008 
10011009 - `id: string`
10021010 
1003 Unique identifier for the credential.
1011 The unique ID of the credential (`vcrd_...`).
10041012 
10051013 - `archived_at: string or null`
10061014 
from line 1032
10241032 
10251033 - `expires_at: optional string or null`
10261034 
1027 A timestamp in RFC 3339 format
1035 When the credential's access token expires, in RFC 3339. Absent if the expiry isn't known.
10281036 
10291037 format: date-time
10301038 
from line 1042
10341042 
10351043 - `client_id: string`
10361044 
1037 OAuth client ID.
1045 The OAuth client ID used when refreshing the access token.
10381046 
10391047 - `token_endpoint: string`
10401048 
from line 1122
11141122 
11151123 - `allowed_hosts: array of string`
11161124 
1117 Hostnames on which the secret will be substituted. An entry matches the request host exactly; a `*.`-prefixed entry matches any subdomain of the named domain but not the domain itself.
1125 The destination hosts of the outbound requests that the credential's secret is substituted into.
11181126 
1127 An entry matches the request host exactly. An entry such as `*.example.com` matches any subdomain of `example.com` but not `example.com` itself.
1128 
11191129 - `secret_name: string`
11201130 
11211131 Name of the environment variable.
from line 1184
11741184}
11751185```
11761186 
1177## Update Credential
1187## Update a Credential
11781188 
11791189**POST** `/v1/vaults/{vault_id}/credentials/{credential_id}`
11801190 
1181Update Credential
1191Update a Credential
11821192 
11831193### Path parameters
11841194 
from line 1326
13161326 
13171327- `auth: optional BetaManagedAgentsMCPOAuthUpdateParams or BetaManagedAgentsStaticBearerUpdateParams or BetaManagedAgentsEnvironmentVariableUpdateParams`
13181328 
1319 Updated authentication configuration. The `type` is immutable; the variant sent must match the stored credential's type.
1329 New authentication settings for the credential. The `type` must match the credential's current type, which can't be changed.
13201330 
13211331 - `BetaManagedAgentsMCPOAuthUpdateParams object`
13221332 
from line 1336
13261336 
13271337 - `access_token: optional string or null`
13281338 
1329 Updated OAuth access token.
1339 The new OAuth access token to replace the stored one.
13301340 
13311341 minLength: 1, maxLength: 8192
13321342 
13331343 - `expires_at: optional string or null`
13341344 
1335 A timestamp in RFC 3339 format
1345 When the credential's access token expires, in RFC 3339. Leave it out to keep the stored expiry.
13361346 
1347 If you send a new `access_token`, send its `expires_at` too, or the new token keeps the old expiry.
1348 
1349 Must be in the future.
1350 
13371351 format: date-time
13381352 
13391353 - `refresh: optional BetaManagedAgentsMCPOAuthRefreshUpdateParams or null`
from line 1356
13421356 
13431357 - `refresh_token: optional string or null`
13441358 
1345 Updated OAuth refresh token.
1359 The new OAuth refresh token to replace the stored one.
13461360 
13471361 minLength: 1, maxLength: 8192
13481362 
13491363 - `scope: optional string or null`
13501364 
1351 Updated OAuth scope for the refresh request.
1365 The new OAuth scope for refresh requests. Send an empty string to clear the stored scope.
13521366 
13531367 maxLength: 8192
13541368 
from line 1376
13621376 
13631377 - `client_secret: optional string or null`
13641378 
1365 Updated OAuth client secret.
1379 A new OAuth client secret to replace the stored one.
13661380 
1381 The credential must already use `client_secret_basic` or `client_secret_post`. It keeps its current `token_endpoint_auth` type, even if the `type` sent with this secret is the other one.
1382 
13671383 minLength: 1, maxLength: 512
13681384 
13691385 - `BetaManagedAgentsTokenEndpointAuthPostUpdateParam object`
from line 1390
13741390 
13751391 - `client_secret: optional string or null`
13761392 
1377 Updated OAuth client secret.
1393 A new OAuth client secret to replace the stored one.
13781394 
1395 The credential must already use `client_secret_basic` or `client_secret_post`. It keeps its current `token_endpoint_auth` type, even if the `type` sent with this secret is the other one.
1396 
13791397 minLength: 1, maxLength: 512
13801398 
13811399 - `BetaManagedAgentsStaticBearerUpdateParams object`
from line 1404
13861404 
13871405 - `token: optional string or null`
13881406 
1389 Updated static bearer token value.
1407 The new static bearer token to replace the stored one.
13901408 
13911409 minLength: 1, maxLength: 8192
13921410 
from line 1428
14101428 
14111429 - `networking: optional BetaManagedAgentsCredentialNetworkingParams or null`
14121430 
1413 Updated networking scope. Full replacement.
1431 The new networking scope, which replaces the stored one as a whole.
14141432 
14151433 - `BetaManagedAgentsUnrestrictedCredentialNetworkingParams object`
14161434 
from line 1444
14261444 
14271445 - `allowed_hosts: array of string`
14281446 
1429 Hostnames on which the secret will be substituted. Each entry is a bare hostname (`api.example.com`), an IPv4 address (`192.0.2.1`), or a `*.`-prefixed wildcard (`*.example.com`). URLs, ports, paths, and IPv6 addresses are not accepted. At most 16 entries.
1447 The destination hosts of the outbound requests that the credential's secret is substituted into.
14301448 
1449 Each entry is a bare hostname (`api.example.com`), an IPv4 address (`192.0.2.1`), or a `*.` wildcard (`*.example.com`). URLs, ports, paths, and IPv6 addresses aren't accepted. The list can have up to 16 entries.
1450 
14311451 - `secret_value: optional string or null`
14321452 
1433 Updated secret value.
1453 The new secret value to replace the stored one.
14341454 
14351455 minLength: 1, maxLength: 4096
14361456 
from line 1474
14541474 
14551475 - `id: string`
14561476 
1457 Unique identifier for the credential.
1477 The unique ID of the credential (`vcrd_...`).
14581478 
14591479 - `archived_at: string or null`
14601480 
from line 1498
14781498 
14791499 - `expires_at: optional string or null`
14801500 
1481 A timestamp in RFC 3339 format
1501 When the credential's access token expires, in RFC 3339. Absent if the expiry isn't known.
14821502 
14831503 format: date-time
14841504 
from line 1508
14881508 
14891509 - `client_id: string`
14901510 
1491 OAuth client ID.
1511 The OAuth client ID used when refreshing the access token.
14921512 
14931513 - `token_endpoint: string`
14941514 
from line 1588
15681588 
15691589 - `allowed_hosts: array of string`
15701590 
1571 Hostnames on which the secret will be substituted. An entry matches the request host exactly; a `*.`-prefixed entry matches any subdomain of the named domain but not the domain itself.
1591 The destination hosts of the outbound requests that the credential's secret is substituted into.
15721592 
1593 An entry matches the request host exactly. An entry such as `*.example.com` matches any subdomain of `example.com` but not `example.com` itself.
1594 
15731595 - `secret_name: string`
15741596 
15751597 Name of the environment variable.
from line 1657
16351657}
16361658```
16371659 
1638## Delete Credential
1660## Delete a Credential
16391661 
16401662**DELETE** `/v1/vaults/{vault_id}/credentials/{credential_id}`
16411663 
1642Delete Credential
1664Delete a Credential
16431665 
16441666### Path parameters
16451667 
from line 1805
17831805 
17841806 - `id: string`
17851807 
1786 Unique identifier of the deleted credential.
1808 The unique ID of the deleted credential (`vcrd_...`).
17871809 
17881810### Example
17891811 
from line 1826
18041826}
18051827```
18061828 
1807## Archive Credential
1829## Archive a Credential
18081830 
18091831**POST** `/v1/vaults/{vault_id}/credentials/{credential_id}/archive`
18101832 
1811Archive Credential
1833Archive a Credential
18121834 
18131835### Path parameters
18141836 
from line 1974
19521974 
19531975 - `id: string`
19541976 
1955 Unique identifier for the credential.
1977 The unique ID of the credential (`vcrd_...`).
19561978 
19571979 - `archived_at: string or null`
19581980 
from line 1998
19761998 
19771999 - `expires_at: optional string or null`
19782000 
1979 A timestamp in RFC 3339 format
2001 When the credential's access token expires, in RFC 3339. Absent if the expiry isn't known.
19802002 
19812003 format: date-time
19822004 
from line 2008
19862008 
19872009 - `client_id: string`
19882010 
1989 OAuth client ID.
2011 The OAuth client ID used when refreshing the access token.
19902012 
19912013 - `token_endpoint: string`
19922014 
from line 2088
20662088 
20672089 - `allowed_hosts: array of string`
20682090 
2069 Hostnames on which the secret will be substituted. An entry matches the request host exactly; a `*.`-prefixed entry matches any subdomain of the named domain but not the domain itself.
2091 The destination hosts of the outbound requests that the credential's secret is substituted into.
20702092 
2093 An entry matches the request host exactly. An entry such as `*.example.com` matches any subdomain of `example.com` but not `example.com` itself.
2094 
20712095 - `secret_name: string`
20722096 
20732097 Name of the environment variable.
from line 2151
21272151}
21282152```
21292153 
2130## Validate Credential
2154## Validate an MCP OAuth Credential
21312155 
21322156**POST** `/v1/vaults/{vault_id}/credentials/{credential_id}/mcp_oauth_validate`
21332157 
2134Validate Credential
2158Validate an MCP OAuth Credential
21352159 
21362160### Path parameters
21372161 
from line 2307
22832307 
22842308 - `mcp_probe: BetaManagedAgentsMCPProbe or null`
22852309 
2286 Details of the failing MCP probe step. Null when the probe succeeded.
2310 Details of the MCP probe step that failed, or `null` if the probe succeeded or there was no access token to test.
22872311 
22882312 - `http_response: BetaManagedAgentsRefreshHTTPResponse or null`
22892313 
2290 The captured HTTP error response. Null when no HTTP response was received (timeout, DNS, TLS).
2314 The HTTP error response from the MCP server, or `null` if the MCP server didn't return one for the failing step, for example after a timeout or a DNS or TLS failure.
22912315 
22922316 - `body: string`
22932317 
from line 2373
23492373 
23502374 - `"invalid"`
23512375 
2352 The probe reached the MCP server and was rejected, and a refresh (if attempted) did not recover it.
2376 The probe reached the MCP server and the server rejected the credential, or no access token is stored. A refresh, if one was tried, didn't recover it. Usually the end user needs to authorize again.
23532377 
23542378 - `"unknown"`
23552379 
2356 The probe could not determine validity — for example, a transport error or a successful refresh that was not re-probed.
2380 The probe couldn't tell whether the credential works, for example because of a network error or because a refresh succeeded but the new access token wasn't tested. Validate the credential again to find out.
23572381 
23582382 - `validated_at: string`
23592383 
from line 2442
24182442 
24192443 - `id: string`
24202444 
2421 Unique identifier for the credential.
2445 The unique ID of the credential (`vcrd_...`).
24222446 
24232447 - `archived_at: string or null`
24242448 
from line 2466
24422466 
24432467 - `expires_at: optional string or null`
24442468 
2445 A timestamp in RFC 3339 format
2469 When the credential's access token expires, in RFC 3339. Absent if the expiry isn't known.
24462470 
24472471 format: date-time
24482472 
from line 2476
24522476 
24532477 - `client_id: string`
24542478 
2455 OAuth client ID.
2479 The OAuth client ID used when refreshing the access token.
24562480 
24572481 - `token_endpoint: string`
24582482 
from line 2556
25322556 
25332557 - `allowed_hosts: array of string`
25342558 
2535 Hostnames on which the secret will be substituted. An entry matches the request host exactly; a `*.`-prefixed entry matches any subdomain of the named domain but not the domain itself.
2559 The destination hosts of the outbound requests that the credential's secret is substituted into.
25362560 
2561 An entry matches the request host exactly. An entry such as `*.example.com` matches any subdomain of `example.com` but not `example.com` itself.
2562 
25372563 - `secret_name: string`
25382564 
25392565 Name of the environment variable.
from line 2606
25802606 
25812607 - `allowed_hosts: array of string`
25822608 
2583 Hostnames on which the secret will be substituted. Each entry is a bare hostname (`api.example.com`), an IPv4 address (`192.0.2.1`), or a `*.`-prefixed wildcard (`*.example.com`). URLs, ports, paths, and IPv6 addresses are not accepted. At most 16 entries.
2609 The destination hosts of the outbound requests that the credential's secret is substituted into.
25842610 
2611 Each entry is a bare hostname (`api.example.com`), an IPv4 address (`192.0.2.1`), or a `*.` wildcard (`*.example.com`). URLs, ports, paths, and IPv6 addresses aren't accepted. The list can have up to 16 entries.
2612 
25852613### Beta Managed Agents Credential Validation
25862614 
25872615- `BetaManagedAgentsCredentialValidation object`
from line 2628
26002628 
26012629 - `mcp_probe: BetaManagedAgentsMCPProbe or null`
26022630 
2603 Details of the failing MCP probe step. Null when the probe succeeded.
2631 Details of the MCP probe step that failed, or `null` if the probe succeeded or there was no access token to test.
26042632 
26052633 - `http_response: BetaManagedAgentsRefreshHTTPResponse or null`
26062634 
2607 The captured HTTP error response. Null when no HTTP response was received (timeout, DNS, TLS).
2635 The HTTP error response from the MCP server, or `null` if the MCP server didn't return one for the failing step, for example after a timeout or a DNS or TLS failure.
26082636 
26092637 - `body: string`
26102638 
from line 2694
26662694 
26672695 - `"invalid"`
26682696 
2669 The probe reached the MCP server and was rejected, and a refresh (if attempted) did not recover it.
2697 The probe reached the MCP server and the server rejected the credential, or no access token is stored. A refresh, if one was tried, didn't recover it. Usually the end user needs to authorize again.
26702698 
26712699 - `"unknown"`
26722700 
2673 The probe could not determine validity — for example, a transport error or a successful refresh that was not re-probed.
2701 The probe couldn't tell whether the credential works, for example because of a network error or because a refresh succeeded but the new access token wasn't tested. Validate the credential again to find out.
26742702 
26752703 - `validated_at: string`
26762704 
from line 2722
26942722 
26952723 - `"invalid"`
26962724 
2697 The probe reached the MCP server and was rejected, and a refresh (if attempted) did not recover it.
2725 The probe reached the MCP server and the server rejected the credential, or no access token is stored. A refresh, if one was tried, didn't recover it. Usually the end user needs to authorize again.
26982726 
26992727 - `"unknown"`
27002728 
2701 The probe could not determine validity — for example, a transport error or a successful refresh that was not re-probed.
2729 The probe couldn't tell whether the credential works, for example because of a network error or because a refresh succeeded but the new access token wasn't tested. Validate the credential again to find out.
27022730 
27032731### Beta Managed Agents Deleted Credential
27042732 
from line 2738
27102738 
27112739 - `id: string`
27122740 
2713 Unique identifier of the deleted credential.
2741 The unique ID of the deleted credential (`vcrd_...`).
27142742 
27152743### Beta Managed Agents Environment Variable Auth Response
27162744 
from line 2778
27502778 
27512779 - `allowed_hosts: array of string`
27522780 
2753 Hostnames on which the secret will be substituted. An entry matches the request host exactly; a `*.`-prefixed entry matches any subdomain of the named domain but not the domain itself.
2781 The destination hosts of the outbound requests that the credential's secret is substituted into.
27542782 
2783 An entry matches the request host exactly. An entry such as `*.example.com` matches any subdomain of `example.com` but not `example.com` itself.
2784 
27552785 - `secret_name: string`
27562786 
27572787 Name of the environment variable.
from line 2812
27822812 
27832813 - `allowed_hosts: array of string`
27842814 
2785 Hostnames on which the secret will be substituted. Each entry is a bare hostname (`api.example.com`), an IPv4 address (`192.0.2.1`), or a `*.`-prefixed wildcard (`*.example.com`). URLs, ports, paths, and IPv6 addresses are not accepted. At most 16 entries.
2815 The destination hosts of the outbound requests that the credential's secret is substituted into.
27862816 
2817 Each entry is a bare hostname (`api.example.com`), an IPv4 address (`192.0.2.1`), or a `*.` wildcard (`*.example.com`). URLs, ports, paths, and IPv6 addresses aren't accepted. The list can have up to 16 entries.
2818 
27872819 - `secret_name: string`
27882820 
27892821 Name of the environment variable. Immutable after create.
from line 2824
27922824 
27932825 - `secret_value: string`
27942826 
2795 Secret value. Write-only; never returned in responses.
2827 The secret to substitute into the agent's outbound requests. It's write-only and never returned in responses.
27962828 
27972829 minLength: 1, maxLength: 4096
27982830 
from line 2862
28302862 
28312863 - `networking: optional BetaManagedAgentsCredentialNetworkingParams or null`
28322864 
2833 Updated networking scope. Full replacement.
2865 The new networking scope, which replaces the stored one as a whole.
28342866 
28352867 - `BetaManagedAgentsUnrestrictedCredentialNetworkingParams object`
28362868 
from line 2878
28462878 
28472879 - `allowed_hosts: array of string`
28482880 
2849 Hostnames on which the secret will be substituted. Each entry is a bare hostname (`api.example.com`), an IPv4 address (`192.0.2.1`), or a `*.`-prefixed wildcard (`*.example.com`). URLs, ports, paths, and IPv6 addresses are not accepted. At most 16 entries.
2881 The destination hosts of the outbound requests that the credential's secret is substituted into.
28502882 
2883 Each entry is a bare hostname (`api.example.com`), an IPv4 address (`192.0.2.1`), or a `*.` wildcard (`*.example.com`). URLs, ports, paths, and IPv6 addresses aren't accepted. The list can have up to 16 entries.
2884 
28512885 - `secret_value: optional string or null`
28522886 
2853 Updated secret value.
2887 The new secret value to replace the stored one.
28542888 
28552889 minLength: 1, maxLength: 4096
28562890 
from line 2920
28862920 
28872921- `BetaManagedAgentsInjectionLocationUpdateParams object`
28882922 
2889 Updated injection location.
2923 Changes which parts of an outbound request the secret is substituted into. A location you leave out keeps its current setting.
28902924 
2925 After the change, at least one location must be enabled.
2926 
2927 See [Authenticate with vaults](https://platform.claude.com/docs/en/managed-agents/vaults?sdk_languages=http#add-a-credential) to learn more about injection locations.
2928 
28912929 - `body: optional boolean`
28922930 
28932931 Substitute when the placeholder appears in the request body.
from line 2944
29062944 
29072945 - `allowed_hosts: array of string`
29082946 
2909 Hostnames on which the secret will be substituted. Each entry is a bare hostname (`api.example.com`), an IPv4 address (`192.0.2.1`), or a `*.`-prefixed wildcard (`*.example.com`). URLs, ports, paths, and IPv6 addresses are not accepted. At most 16 entries.
2947 The destination hosts of the outbound requests that the credential's secret is substituted into.
29102948 
2949 Each entry is a bare hostname (`api.example.com`), an IPv4 address (`192.0.2.1`), or a `*.` wildcard (`*.example.com`). URLs, ports, paths, and IPv6 addresses aren't accepted. The list can have up to 16 entries.
2950 
29112951### Beta Managed Agents Limited Credential Networking Response
29122952 
29132953- `BetaManagedAgentsLimitedCredentialNetworkingResponse object`
from line 2958
29182958 
29192959 - `allowed_hosts: array of string`
29202960 
2921 Hostnames on which the secret will be substituted. An entry matches the request host exactly; a `*.`-prefixed entry matches any subdomain of the named domain but not the domain itself.
2961 The destination hosts of the outbound requests that the credential's secret is substituted into.
29222962 
2963 An entry matches the request host exactly. An entry such as `*.example.com` matches any subdomain of `example.com` but not `example.com` itself.
2964 
29232965### Beta Managed Agents MCP OAuth Auth Response
29242966 
29252967- `BetaManagedAgentsMCPOAuthAuthResponse object`
from line 2976
29342976 
29352977 - `expires_at: optional string or null`
29362978 
2937 A timestamp in RFC 3339 format
2979 When the credential's access token expires, in RFC 3339. Absent if the expiry isn't known.
29382980 
29392981 format: date-time
29402982 
from line 2986
29442986 
29452987 - `client_id: string`
29462988 
2947 OAuth client ID.
2989 The OAuth client ID used when refreshing the access token.
29482990 
29492991 - `token_endpoint: string`
29502992 
from line 3030
29883030 
29893031 - `access_token: string`
29903032 
2991 OAuth access token.
3033 The OAuth access token to send to the MCP server.
29923034 
29933035 minLength: 1, maxLength: 8192
29943036 
from line 3042
30003042 
30013043 - `expires_at: optional string or null`
30023044 
3003 A timestamp in RFC 3339 format
3045 When `access_token` expires, in RFC 3339.
30043046 
3047 Must be in the future.
3048 
30053049 format: date-time
30063050 
30073051 - `refresh: optional BetaManagedAgentsMCPOAuthRefreshParams or null`
from line 3054
30103054 
30113055 - `client_id: string`
30123056 
3013 OAuth client ID.
3057 The OAuth client ID to use when refreshing the access token. It can't be changed after the credential is created.
30143058 
30153059 minLength: 1, maxLength: 1024
30163060 
30173061 - `refresh_token: string`
30183062 
3019 OAuth refresh token.
3063 The OAuth refresh token that the API uses to get a new access token when the current one expires.
30203064 
30213065 minLength: 1, maxLength: 8192
30223066 
from line 3086
30423086 
30433087 - `client_secret: string`
30443088 
3045 OAuth client secret.
3089 The OAuth client secret, sent to `token_endpoint` with HTTP Basic authentication.
30463090 
30473091 minLength: 1, maxLength: 512
30483092 
from line 3098
30543098 
30553099 - `client_secret: string`
30563100 
3057 OAuth client secret.
3101 The OAuth client secret, sent to `token_endpoint` in the POST body.
30583102 
30593103 minLength: 1, maxLength: 512
30603104 
from line 3122
30783122 
30793123 - `client_id: string`
30803124 
3081 OAuth client ID.
3125 The OAuth client ID to use when refreshing the access token. It can't be changed after the credential is created.
30823126 
30833127 minLength: 1, maxLength: 1024
30843128 
30853129 - `refresh_token: string`
30863130 
3087 OAuth refresh token.
3131 The OAuth refresh token that the API uses to get a new access token when the current one expires.
30883132 
30893133 minLength: 1, maxLength: 8192
30903134 
from line 3154
31103154 
31113155 - `client_secret: string`
31123156 
3113 OAuth client secret.
3157 The OAuth client secret, sent to `token_endpoint` with HTTP Basic authentication.
31143158 
31153159 minLength: 1, maxLength: 512
31163160 
from line 3166
31223166 
31233167 - `client_secret: string`
31243168 
3125 OAuth client secret.
3169 The OAuth client secret, sent to `token_endpoint` in the POST body.
31263170 
31273171 minLength: 1, maxLength: 512
31283172 
from line 3190
31463190 
31473191 - `client_id: string`
31483192 
3149 OAuth client ID.
3193 The OAuth client ID used when refreshing the access token.
31503194 
31513195 - `token_endpoint: string`
31523196 
from line 3232
31883232 
31893233 - `refresh_token: optional string or null`
31903234 
3191 Updated OAuth refresh token.
3235 The new OAuth refresh token to replace the stored one.
31923236 
31933237 minLength: 1, maxLength: 8192
31943238 
31953239 - `scope: optional string or null`
31963240 
3197 Updated OAuth scope for the refresh request.
3241 The new OAuth scope for refresh requests. Send an empty string to clear the stored scope.
31983242 
31993243 maxLength: 8192
32003244 
from line 3252
32083252 
32093253 - `client_secret: optional string or null`
32103254 
3211 Updated OAuth client secret.
3255 A new OAuth client secret to replace the stored one.
32123256 
3257 The credential must already use `client_secret_basic` or `client_secret_post`. It keeps its current `token_endpoint_auth` type, even if the `type` sent with this secret is the other one.
3258 
32133259 minLength: 1, maxLength: 512
32143260 
32153261 - `BetaManagedAgentsTokenEndpointAuthPostUpdateParam object`
from line 3266
32203266 
32213267 - `client_secret: optional string or null`
32223268 
3223 Updated OAuth client secret.
3269 A new OAuth client secret to replace the stored one.
32243270 
3271 The credential must already use `client_secret_basic` or `client_secret_post`. It keeps its current `token_endpoint_auth` type, even if the `type` sent with this secret is the other one.
3272 
32253273 minLength: 1, maxLength: 512
32263274 
32273275### Beta Managed Agents MCP OAuth Update Params
from line 3282
32343282 
32353283 - `access_token: optional string or null`
32363284 
3237 Updated OAuth access token.
3285 The new OAuth access token to replace the stored one.
32383286 
32393287 minLength: 1, maxLength: 8192
32403288 
32413289 - `expires_at: optional string or null`
32423290 
3243 A timestamp in RFC 3339 format
3291 When the credential's access token expires, in RFC 3339. Leave it out to keep the stored expiry.
32443292 
3293 If you send a new `access_token`, send its `expires_at` too, or the new token keeps the old expiry.
3294 
3295 Must be in the future.
3296 
32453297 format: date-time
32463298 
32473299 - `refresh: optional BetaManagedAgentsMCPOAuthRefreshUpdateParams or null`
from line 3302
32503302 
32513303 - `refresh_token: optional string or null`
32523304 
3253 Updated OAuth refresh token.
3305 The new OAuth refresh token to replace the stored one.
32543306 
32553307 minLength: 1, maxLength: 8192
32563308 
32573309 - `scope: optional string or null`
32583310 
3259 Updated OAuth scope for the refresh request.
3311 The new OAuth scope for refresh requests. Send an empty string to clear the stored scope.
32603312 
32613313 maxLength: 8192
32623314 
from line 3322
32703322 
32713323 - `client_secret: optional string or null`
32723324 
3273 Updated OAuth client secret.
3325 A new OAuth client secret to replace the stored one.
32743326 
3327 The credential must already use `client_secret_basic` or `client_secret_post`. It keeps its current `token_endpoint_auth` type, even if the `type` sent with this secret is the other one.
3328 
32753329 minLength: 1, maxLength: 512
32763330 
32773331 - `BetaManagedAgentsTokenEndpointAuthPostUpdateParam object`
from line 3336
32823336 
32833337 - `client_secret: optional string or null`
32843338 
3285 Updated OAuth client secret.
3339 A new OAuth client secret to replace the stored one.
32863340 
3341 The credential must already use `client_secret_basic` or `client_secret_post`. It keeps its current `token_endpoint_auth` type, even if the `type` sent with this secret is the other one.
3342 
32873343 minLength: 1, maxLength: 512
32883344 
32893345### Beta Managed Agents MCP Probe
from line 3350
32943350 
32953351 - `http_response: BetaManagedAgentsRefreshHTTPResponse or null`
32963352 
3297 The captured HTTP error response. Null when no HTTP response was received (timeout, DNS, TLS).
3353 The HTTP error response from the MCP server, or `null` if the MCP server didn't return one for the failing step, for example after a timeout or a DNS or TLS failure.
32983354 
32993355 - `body: string`
33003356 
from line 3468
34123468 
34133469 - `token: string`
34143470 
3415 Static bearer token value.
3471 The static bearer token to send to the MCP server, such as an API key or personal access token.
34163472 
34173473 minLength: 1, maxLength: 8192
34183474 
from line 3488
34323488 
34333489 - `token: optional string or null`
34343490 
3435 Updated static bearer token value.
3491 The new static bearer token to replace the stored one.
34363492 
34373493 minLength: 1, maxLength: 8192
34383494 
from line 3502
34463502 
34473503 - `client_secret: string`
34483504 
3449 OAuth client secret.
3505 The OAuth client secret, sent to `token_endpoint` with HTTP Basic authentication.
34503506 
34513507 minLength: 1, maxLength: 512
34523508 
from line 3524
34683524 
34693525 - `client_secret: optional string or null`
34703526 
3471 Updated OAuth client secret.
3527 A new OAuth client secret to replace the stored one.
34723528 
3529 The credential must already use `client_secret_basic` or `client_secret_post`. It keeps its current `token_endpoint_auth` type, even if the `type` sent with this secret is the other one.
3530 
34733531 minLength: 1, maxLength: 512
34743532 
34753533### Beta Managed Agents Token Endpoint Auth None Param
from line 3556
34983556 
34993557 - `client_secret: string`
35003558 
3501 OAuth client secret.
3559 The OAuth client secret, sent to `token_endpoint` in the POST body.
35023560 
35033561 minLength: 1, maxLength: 512
35043562 
from line 3578
35203578 
35213579 - `client_secret: optional string or null`
35223580 
3523 Updated OAuth client secret.
3581 A new OAuth client secret to replace the stored one.
3582 
3583 The credential must already use `client_secret_basic` or `client_secret_post`. It keeps its current `token_endpoint_auth` type, even if the `type` sent with this secret is the other one.
35243584 
35253585 minLength: 1, maxLength: 512
35263586 
Feedback