# Anthropic tool-use ecosystem — index **Status:** DOCUMENTED + LIVE_VERIFIED (82 live probe calls on 2026-09-18 — 45 × 200, 37 deliberate 400 validation probes — plus the two shared loops and the cheap pytest run; total ≈ $0.15; see `reports/live-requests.jsonl`, notes `tools:*`, raw sanitized responses in `tmp-live/tools/`). **Sources:** [Tool use overview](https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview) · [Tool reference](https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-reference) · [Server tools](https://platform.claude.com/docs/en/agents-and-tools/tool-use/server-tools) · [Messages API reference](https://platform.claude.com/docs/en/api/messages/create) · [Beta Messages reference](https://platform.claude.com/docs/en/api/beta/messages/create) · [API release notes](https://platform.claude.com/docs/en/release-notes/api) · SDK type lists `sources/anthropic/openapi/{python,node}-sdk-api.md`. **Last verified:** 2026-09-18. Machine-readable twins: `generated/fragments/tools/anthropic-tools.json`, `generated/fragments/parameters/anthropic-tools.json`, `generated/fragments/objects/anthropic-tool-blocks.json`, `generated/fragments/compatibility/anthropic-tool-model-matrix.json`. ## Taxonomy | Category | Who executes | Request shape | Response blocks | Pages | |---|---|---|---|---| | **Client (user-defined)** | your code | `{name, description, input_schema, strict?, input_examples?, eager_input_streaming?, …}` (`type` omitted or `"custom"`) | `tool_use` → you send `tool_result` | [custom-tools-and-tool-choice](custom-tools-and-tool-choice.md), [tool-use-loop](tool-use-loop.md), [fine-grained-tool-streaming](fine-grained-tool-streaming.md) | | **Anthropic-schema client tools** | your code (schema trained-in) | `{type: bash_20250124, name: bash}`, `text_editor_20250728` / `str_replace_based_edit_tool`, `memory_20250818` / `memory`, beta `computer_20251124` / `computer_20250124` / `computer` | `tool_use` (input `{command…}` / `{action…}`) → `tool_result` | [bash](bash.md), [text-editor](text-editor.md), [memory](memory.md), [computer-use](computer-use.md) | | **Client toolsets** (GA 2026-08-19) | your code | one entry, **no name**: `{type: computer_toolset_20260801}` / `{type: browser_toolset_20260801}` (+ `configs`) | `tool_use` with `name=`, `toolset_name: computer|browser`; results must echo `toolset_name` | [computer-use](computer-use.md), [browser-use](browser-use.md) | | **Server tools** | Anthropic | `web_search_2025…/2026…`, `web_fetch_…`, `code_execution_…`, `tool_search_tool_regex|bm25_20251119`, beta `advisor_20260301` | `server_tool_use` (id `srvtoolu_…`) + `_tool_result`; `stop_reason: pause_turn` possible | [web-search](web-search.md), [web-fetch](web-fetch.md), [code-execution](code-execution.md), [tool-search](tool-search.md), [advisor](advisor.md) | | **Programmatic** | Anthropic sandbox calls *your* tool | any tool with `allowed_callers: ["code_execution_20260120"]` + `code_execution_20260120+` | `server_tool_use{name: code_execution}` → `tool_use` with `caller: {type: code_execution_20260120, tool_id}` → `code_execution_tool_result` | [programmatic-tool-calling](programmatic-tool-calling.md) | | **MCP** (beta) | Anthropic ↔ remote MCP server | request `mcp_servers[]` + `tools[]: {type: mcp_toolset, mcp_server_name}` | `mcp_tool_use` (id `mcptoolu_…`) + `mcp_tool_result` | [mcp-connector](mcp-connector.md) | Every `tool_use` block returned live carried `caller: {"type": "direct"}` (haiku 4.5, sonnet 4.6, sonnet 5) — the docs present `caller` only on the programmatic-tool-calling page. ## Exact `type` strings (docs ∩ SDK ∩ live) Live probe `k_types_*` (an unknown type on each of the 11 live models) returned the **same** GA-schema tag list for every model: `bash_20250124, browser_toolset_20260801, code_execution_20250522, code_execution_20250825, code_execution_20260120, code_execution_20260521, computer_toolset_20260801, custom, memory_20250818, text_editor_20250124, text_editor_20250429, text_editor_20250728, tool_search_tool_bm25, tool_search_tool_bm25_20251119, tool_search_tool_regex, tool_search_tool_regex_20251119, web_fetch_20250910, web_fetch_20260209, web_fetch_20260309, web_fetch_20260318, web_search_20250305, web_search_20260209, web_search_20260318`. Beta-only tags (accepted only with their header): `computer_20251124`, `computer_20250124`, `advisor_20260301`, `mcp_toolset`. Per-model gating is a second step (`'' does not support tool types: …` with a "Did you mean" list). SDK-only names (no live/doc use for current models): `BetaToolComputerUse20241022`, `BetaToolBash20241022`, `BetaToolTextEditor20241022`. ## Tool × model matrix (docs; ✔︎L = live verified 2026-09-18, ✘L = live 400) | Tool `type` | Haiku 4.5 | Sonnet 4.5 | Sonnet 4.6 | Sonnet 5 | Opus 4.5 | Opus 4.6 | Opus 4.7 | Opus 4.8 | Opus 5 | Fable 5 / 5.1 | Mythos 5 / 5.1 | |---|---|---|---|---|---|---|---|---|---|---|---| | custom, `bash_20250124`, `text_editor_20250728`, `memory_20250818` | ✔︎L | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ (5.1: `tool_choice` any/tool → 400) | ✔︎ | | `text_editor_20250429` / `_20250124` | ✘L | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | | `web_search_20250305`, `web_fetch_20250910` | ✔︎L | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | | `web_search_20260209/_20260318`, `web_fetch_20260209/_0309/_0318` | ✔︎L only with `allowed_callers:["direct"]` | direct only (web fetch dyn. filtering list) | ✔︎ | ✔︎ | direct only for web fetch | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | | `code_execution_20250825/_20260120/_20260521` | ✔︎L (no PTC/REPL) | ✔︎ | ✔︎L | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | | programmatic tool calling | ✘L | ✔︎ | ✔︎L | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | | `tool_search_tool_regex/bm25_20251119` | ✔︎L | ✔︎ | ✔︎ | (not in table — assumed) | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | | `computer_toolset_20260801`, `browser_toolset_20260801` | ✘L | ✘ | ✘ | ✔︎L | ✘ | ✘ | ✘ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | | `computer_20251124` (beta) | ✘L | ✘ | ✔︎L | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | | `computer_20250124` (beta) | ✔︎L | ✔︎ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | | `advisor_20260301` as executor (beta) | ✔︎L | ✘ | ✔︎ | ✔︎ | ✘ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | | `mcp_toolset` (beta) | ✔︎L | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | Mythos models are documented but absent from our `/v1/models` list (ACCOUNT_RESTRICTED). Full per-cell records: `generated/fragments/compatibility/anthropic-tool-model-matrix.json` (360 rows). ## Tool × beta header | Feature | Header today | History | |---|---|---| | Custom tools, bash, text editor, memory, web search, web fetch, code execution, tool search, PTC, fine-grained streaming, toolsets | **none** | tool use GA 2024-05-30 · `computer-use-2024-10-22` (bash/editor 20241022) · memory & tool-search/PTC/code-exec/web-fetch/`input_examples` headers dropped 2026-02-17 · `fine-grained-tool-streaming-2025-05-14` dropped 2026-02-05 (still accepted, live b3) · legacy `code-execution-2025-05-22` / `code-execution-2025-08-25` remain valid opt-ins | | `computer_20251124` | `computer-use-2025-11-24` | live 400 without it | | `computer_20250124` | `computer-use-2025-01-24` | since 2025-02-24 | | `advisor_20260301` | `advisor-tool-2026-03-01` | beta since 2026-04-09; live 400 without | | `mcp_servers` + `mcp_toolset` | `mcp-client-2025-11-20` | `mcp-client-2025-04-04` deprecated but still works live (k13b); the 400 for a missing header advertises `mcp-client-2026-09-15`, which is itself rejected as an unknown beta value (k13) — LIVE_DISCOVERED inconsistency | ## Version history (release notes + tool pages) | Date | Event | |---|---| | 2024-05-30 | Tool use GA (no header) | | 2024-10-03 | `tool_choice.disable_parallel_tool_use` | | 2024-10-22 | `computer_20241022`, `bash_20241022`, `text_editor_20241022` (beta `computer-use-2024-10-22`, Sonnet 3.5) | | 2025-02-24 | `computer_20250124` (+ hold_key, left_mouse_down/up, scroll, triple_click, wait), `bash_20250124`, `text_editor_20250124` (no header); token-efficient tool use | | 2025-02-27 | `tool_choice: none`; `tools` no longer required when replaying tool blocks | | 2025-04-29 | `text_editor_20250429` (Claude 4, drops undo_edit, name `str_replace_based_edit_tool`) | | 2025-05-07 | `web_search_20250305` | | 2025-05-22 | `code_execution_20250522` (Python only), MCP connector beta (`mcp-client-2025-04-04`), Files API | | 2025-06-11 | fine-grained tool streaming beta | | 2025-07-28 | `text_editor_20250728` (+ `max_characters`) | | 2025-09-02 | `code_execution_20250825` (bash + file ops) | | 2025-09-10 | `web_fetch_20250910` beta | | 2025-09-29 | `memory_20250818` beta | | 2025-11-20 | `mcp-client-2025-11-20` (`mcp_toolset`) | | 2025-11-24 | tool search (`tool_search_tool_regex/bm25_20251119`) + programmatic tool calling beta; `computer_20251124` (beta `computer-use-2025-11-24`) | | 2026-02-05 | fine-grained streaming no header (`eager_input_streaming`) | | 2026-02-17 | web search / PTC / code exec / web fetch / tool search / memory / input_examples GA; `web_search_20260209`, `web_fetch_20260209` (dynamic filtering); code execution free with web tools | | 2026-03 | `web_fetch_20260309` (`use_cache`) | | 2026-04-09 | `advisor_20260301` beta | | 2026-06-11 | `code_execution_20260521`, `web_search_20260318`, `web_fetch_20260318` (`response_inclusion`) | | 2026-06-18 | SDKs ship `code_execution_20260120` | | 2026-08-19 | `computer_toolset_20260801` GA, `browser_toolset_20260801` launched | | 2026-09-01 | Fable 5.1 / Mythos 5.1: `tool_choice` any/tool → 400 | ## Pricing summary Tokens (definitions + tool_use + tool_result + per-model tool-use system prompt: Haiku 4.5 / Sonnet 4.5 / Opus 4.5 = 496 (auto/none) or 588 (any/tool); Sonnet 4.6 / Opus 4.6 = 497/589; Opus 4.7 = 675/804; Opus 4.8 = 290/410; Opus 5 = 286/406; Sonnet 5 = 354/474). Live `count_tokens` on haiku 4.5: 11 → 581 tokens with one small tool; `tool_choice: any` +92; bash 751; text editor 1252; memory 1576; `computer_20250124` 1826. Web search **$10 / 1,000 searches**; web fetch free; code execution 1,550 free container-hours per org per month then $0.05/h (free with `web_*_20260209+`); advisor sub-inference at the advisor model's rate; MCP tokens only.