Claude APIAnthropic の機能

FEATURE

Mid-conversation tool changes

Mid-conversation tool changes は、会話のターン間でモデルに提示するツールを変更する Claude API の機能で、mid-conversation system messages のツール版にあたります。

プレビュー・先行提供公式発表と照合済み
初出2026年7月24日
ページ更新
提供状態プレビュー・先行提供
公式の記載で確認できた環境API
提供を確認できたプラン公式に記載なし
目次 CONTENTS
  1. できること
  2. 機能解説
  3. 使い方
  4. 利用シーン
  5. ChatGPT・OpenAI の対応する機能
  6. これまでの変更
  7. 関連する機能
  8. 出典
CAN DO

できること

POINT 01

ターン間でツールを出し入れ

tools に全ツールを宣言しておき、tool_addition と tool_removal ブロックで、会話の特定の位置以降に提示するツールを追加・取り下げできます。プロンプトキャッシュは保たれます。

POINT 02

メッセージ内でツールを定義

tool_addition ブロックにツールの完全な定義を含めると、会話開始時点で未知のツールの追加や、スキーマの変更、サーバーツールの新バージョンへの移行ができます。tools を編集する必要はありません。

POINT 03

途中で MCP サーバーを追加

MCP コネクタのベータヘッダーを併用すると、tool_addition の定義に mcp_toolset を指定し、tools を編集せずに MCP サーバーのツールを使えるようにできます。

GUIDE

機能解説

概要

会話全体でツール一覧を固定せず、tools に宣言したツールを tool_addition / tool_removal ブロックで会話の特定の位置から提示したり取り下げたりします。tools 配列自体は変わらないため、キャッシュされたプロンプトのプレフィックスはそのまま保たれます。

この機能では、ツール一覧を会話全体で固定する代わりに、ターン間でモデルに提示するツールを変更します。

  • tool_addition と tool_removal は、role: "system" メッセージの content 配列に入れるコンテンツブロックです。
  • tools に宣言したツールは、defer_loading: true を付けない限り会話の最初から提示されます。
  • tool_addition は、以前の tool_removal で取り下げたツールを再び提示する用途にも使えます。
  • MCP コネクタのツールは、mcp_tool_reference(server_name と name)で個別に、または mcp_toolset_reference(server_name)でツールセット全体として参照できます。
  • tools 配列自体は変わらないため、キャッシュされたプレフィックスは保たれます。

メッセージ内でのツール定義

inline-tools-2026-09-15 ベータヘッダーを使うと、tool_addition ブロックでツールを参照ではなく値として、完全な定義ごと指定できます。定義は tool_definition 型の tool オブジェクトで包み、definition には通常の tools の項目(カスタムツール、または Anthropic 定義のクライアントツール・サーバーツール)を、cache_control や defer_loading を含む通常の設定のまま指定します。

  • 定義した位置以降、モデルは tools に宣言したツールと同じようにそのツールを呼び出せます。
  • 同一の定義を再送しても何も変わらないため、リトライ時などに安全に再送できます。
  • 同じ名前で異なる定義を送ると、その位置以降は新しい定義が以前の定義を置き換えます。スキーマの変更やサーバーツールの新バージョンへの移行に使います。
  • tool_removal は引き続き参照で指定します。削除したツールは、後で再定義・再提示できます。

会話途中での MCP サーバーの追加

会話の途中で MCP コネクタのサーバーを追加するには、inline-tools-2026-09-15 に加えて mcp-client-2026-09-15 ベータヘッダーを送ります。

  • サーバーの接続情報は通常どおり mcp_servers に記載し、サーバーを使えるようにしたい位置に mcp_toolset を定義とする tool_addition を追加します。
  • tool_addition ブロックにはサーバーの URL やトークンを含めません。これらは mcp_servers に置いたままにします。
  • API がサーバーのツール一覧を取得したレスポンスは、取得したサーバーごとに 1 つの mcp_tool_listing ブロックで始まります。
  • assistant メッセージを mcp_tool_listing ブロックを含めて変更せずに送り返し、そのブロックを含むすべてのリクエストで mcp-client-2026-09-15 を送り続けます。送り返した一覧は固定され、以降のリクエストはサーバーに再度問い合わせず、記録された一覧を使います。

制約とエラー

  • tools に宣言されていない名前を参照すると 400 エラーになります。Claude API では error.details.error_code が tool_reference_unresolved になります。
  • 別の種類のツールの名前を再利用する定義は、error.details.error_code が tool_name_conflict の 400 エラーになります。
  • ベータ期間中は、computer use tool を含む一部のツール種別をメッセージ内で定義できず、400 エラーになります。これらは tools に宣言し、参照で追加します。
  • tools 配列に deferred でないツールが 1 つも無い場合、値で定義した最初のツールがレンダリングされるプロンプトの先頭を変えるため、そのリクエストで 1 回、キャッシュが完全にミスします。
  • 一時停止した(paused)assistant ターンの直後には、text ブロックは受け付けられますが、tool_addition と tool_removal ブロックは受け付けられません。先に一時停止したターンを再開し、次の system メッセージでツール変更を送ります。
  • ターン単位の system メッセージ(turn-scoped)に tool_addition / tool_removal を入れると 400 エラーになります。これらには clear_at を付けない別の role: "system" メッセージを使います。

提供状況の注意

この機能はベータとして提供されています。会話途中のツール変更は、Claude Fable 5、Claude Mythos 5、Claude Opus 4.8、Claude Opus 5 でベータ提供されました。メッセージ内でのツール定義は、inline-tools-2026-09-15 ベータヘッダーにより Claude API でベータ提供されています。対象プランについては、公式のリリースノートには記載がありません。

HOW TO USE

使い方

ここでは、あらかじめ宣言したツールを参照で追加・削除する流れを示します。

  1. リクエストに inline-tools-2026-09-15 ベータヘッダーを付けて送ります。
  2. 会話で使う可能性のあるツールをすべて、最初から tools に宣言します。defer_loading: true を付けたツールは、tool_addition ブロックで提示されるまでモデルに提示されません。
  3. role: "system" メッセージに tool_addition または tool_removal ブロックを入れ、各ブロックの tool フィールドを {"type": "tool_reference", "name": "..."} の形にして、tools に宣言したツール名を指定します。これらのブロックは同じメッセージ内で text ブロックと混在できます。
公式ヘルプを開く ↗
USE CASES

利用シーン

CASE 01

会話の進行段階に応じて、モデルに提示するツールを絞り込んだり入れ替えたりするエージェントの実装に向いています。

CASE 02

会話開始時点では存在が分からないツールや、途中でスキーマが変わるツールを扱う場面に使えます。

CASE 03

会話の途中でサーバーツールを新しいバージョンへ移行する場面に使えます。

CASE 04

会話の途中から MCP サーバーのツールを使えるようにしたい場面に使えます。

COMPARISON

ChatGPT・OpenAI の対応する機能

比較の単位となる業務: 会話途中でのツールの追加・削除・定義変更 (プロンプトキャッシュを維持)

OpenAI の Responses API には、キャッシュされたプロンプトのプレフィックスを保持したまま、会話の途中で推論努力レベルを変更する制御があります。Mid-conversation tool changes は、キャッシュされたプレフィックスを保ったまま、会話のターン間でモデルに提示するツールを追加・削除・再定義する機能です。どちらも会話の途中で設定を変えながらキャッシュを保つ仕組みですが、変更の対象は前者が推論努力レベル、後者がツールです。

TIMELINE

これまでの変更

  1. 会話途中の system メッセージ内でツールを定義する機能が、inline-tools-2026-09-15 ベータヘッダーにより Claude API でベータ提供されました。tool_addition ブロックにツールの完全な定義を含められ、同じヘッダーで参照によるツールの追加・削除も扱えます。MCP コネクタの mcp-client-2026-09-15 ベータヘッダーを併用すると、定義を MCP ツールセットにでき、mcp_tool_listing ブロックでツール一覧を固定できます。

  2. 会話途中のツール変更が Claude Fable 5、Claude Mythos 5、Claude Opus 4.8、Claude Opus 5 でベータ提供されました。プロンプトキャッシュを保ったまま会話のターン間でツールを追加・削除でき、当時はリクエストに mid-conversation-tool-changes-2026-07-01 ベータヘッダーを含めて使う形でした。

SOURCES

出典

出典 4 件を表示