Was this page helpful?
ツール検索ツールにより、Claudeはオンデマンドでツールを動的に検索・ロードすることで、数百から数千のツールを扱えるようになります。すべてのツール定義をコンテキストウィンドウに事前にロードする代わりに、Claudeはツールカタログ(ツール名、説明、引数名、引数の説明を含む)を検索し、必要なツールのみをロードします。
このアプローチは、ツールライブラリが拡張するにつれて急速に複合する2つの問題を解決します:
ツール検索が解決するスケーリングの課題の背景については、Advanced tool useを参照してください。ツール検索のオンデマンドロードは、Effective context engineeringで説明されているより広範なジャストインタイム検索の原則のインスタンスでもあります。
これはサーバーサイドツールとして提供されていますが、独自のクライアントサイドツール検索機能を実装することもできます。詳細についてはカスタムツール検索の実装を参照してください。
この機能に関するフィードバックはフィードバックフォームからお寄せください。
This feature qualifies for Zero Data Retention (ZDR) with limited technical retention. See the Data retention section for details on what is retained and why.
Amazon Bedrockでは、サーバーサイドのツール検索はinvoke API経由でのみ利用可能で、converse APIでは利用できません。
独自の検索実装からtool_referenceブロックを返すことで、クライアントサイドのツール検索を実装することもできます。
ツール検索には2つのバリアントがあります:
tool_search_tool_regex_20251119):Claudeがツールを検索するためのregexパターンを構築しますtool_search_tool_bm25_20251119):Claudeが自然言語クエリを使用してツールを検索しますツール検索ツールを有効にすると:
tool_search_tool_regex_20251119またはtool_search_tool_bm25_20251119)を含めますdefer_loading: trueを付けてすべてのツール定義を提供しますtool_referenceブロックを返しますこれにより、高いツール選択精度を維持しながらコンテキストウィンドウを効率的に保ちます。
遅延ツールを使用した簡単な例を示します:
ツール検索ツールには2つのバリアントがあります:
{
"type": "tool_search_tool_regex_20251119",
"name": "tool_search_tool_regex"
}{
"type": "tool_search_tool_bm25_20251119",
"name": "tool_search_tool_bm25"
}Regexバリアントのクエリ形式:自然言語ではなくPython regex
tool_search_tool_regex_20251119を使用する場合、Claudeは自然言語クエリではなく、Pythonのre.search()構文を使用してregexパターンを構築します。一般的なパターン:
"weather" - "weather"を含むツール名/説明にマッチ"get_.*_data" - get_user_data、get_weather_dataなどのツールにマッチ"database.*query|query.*database" - 柔軟性のためのORパターン"(?i)slack" - 大文字小文字を区別しない検索最大クエリ長:200文字
BM25バリアントのクエリ形式:自然言語
tool_search_tool_bm25_20251119を使用する場合、Claudeは自然言語クエリを使用してツールを検索します。
defer_loading: trueを追加してオンデマンドロード用にツールをマークします:
{
"name": "get_weather",
"description": "Get current weather for a location",
"input_schema": {
"type": "object",
"properties": {
"location": { "type": "string" },
"unit": { "type": "string", "enum": ["celsius", "fahrenheit"] }
},
"required": ["location"]
},
"defer_loading": true
}重要なポイント:
defer_loadingのないツールはすぐにコンテキストにロードされますdefer_loading: trueのツールは、Claudeが検索で発見した場合にのみロードされますdefer_loading: trueを設定しないでください両方のツール検索バリアント(regexとbm25)は、ツール名、説明、引数名、引数の説明を検索します。
遅延の内部動作: 遅延ツールはシステムプロンプトプレフィックスに含まれません。モデルがツール検索を通じて遅延ツールを発見すると、ツール定義は会話内にインラインでtool_referenceブロックとして追加されます。プレフィックスは変更されないため、プロンプトキャッシングが保持されます。strictモードの文法は完全なツールセットから構築されるため、defer_loadingとstrictモードは文法の再コンパイルなしに組み合わせることができます。
Claudeがツール検索ツールを使用すると、レスポンスには新しいブロックタイプが含まれます:
{
"role": "assistant",
"content": [
{
"type": "text",
"text": "I'll search for tools to help with the weather information."
},
{
"type": "server_tool_use",
"id": "srvtoolu_01ABC123",
"name": "tool_search_tool_regex",
"input": {
"query": "weather"
}
},
{
"type": "tool_search_tool_result",
"tool_use_id": "srvtoolu_01ABC123",
"content": {
"type": "tool_search_tool_search_result",
"tool_references": [{ "type": "tool_reference", "tool_name": "get_weather" }]
}
},
{
"type": "text",
"text": "I found a weather tool. Let me get the weather for San Francisco."
},
{
"type": "tool_use",
"id": "toolu_01XYZ789",
"name": "get_weather",
"input": { "location": "San Francisco", "unit": "fahrenheit" }
}
],
"stop_reason": "tool_use"
}server_tool_use: Claudeがツール検索ツールを呼び出していることを示しますtool_search_tool_result: ネストされたtool_search_tool_search_resultオブジェクトを含む検索結果を含みますtool_references: 発見されたツールを指すtool_referenceオブジェクトの配列tool_use: Claudeが発見されたツールを呼び出していますtool_referenceブロックは、Claudeに表示される前に自動的に完全なツール定義に展開されます。この展開を自分で処理する必要はありません。toolsパラメータにすべての一致するツール定義を提供している限り、APIで自動的に行われます。
defer_loadingを使用したmcp_toolsetの設定については、MCPコネクターを参照してください。
カスタムツールからtool_referenceブロックを返すことで、独自のツール検索ロジック(例:埋め込みやセマンティック検索を使用)を実装できます。Claudeがカスタム検索ツールを呼び出すと、コンテンツ配列にtool_referenceブロックを含む標準のtool_resultを返します:
{
"type": "tool_result",
"tool_use_id": "toolu_your_tool_id",
"content": [{ "type": "tool_reference", "tool_name": "discovered_tool_name" }]
}参照されるすべてのツールは、defer_loading: trueを付けてトップレベルのtoolsパラメータに対応するツール定義が必要です。このアプローチにより、ツール検索システムとの互換性を維持しながら、より高度な検索アルゴリズムを使用できます。
レスポンス形式セクションに示されているtool_search_tool_result形式は、Anthropicの組み込みツール検索が内部で使用するサーバーサイド形式です。カスタムクライアントサイドの実装では、上記のようにtool_referenceコンテンツブロックを含む標準のtool_result形式を常に使用してください。
埋め込みを使用した完全な例については、埋め込みを使用したツール検索クックブックを参照してください。
ツール検索ツールはツール使用例と互換性がありません。 ツール使用の例を提供する必要がある場合は、ツール検索なしの標準ツール呼び出しを使用してください。
これらのエラーはリクエストの処理を妨げます:
すべてのツールが遅延設定:
{
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "All tools have defer_loading set. At least one tool must be non-deferred."
}
}ツール定義の欠落:
{
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "Tool reference 'unknown_tool' has no corresponding tool definition"
}
}ツール実行中のエラーは、本文にエラー情報を含む200レスポンスを返します:
{
"type": "tool_result",
"tool_use_id": "srvtoolu_01ABC123",
"content": {
"type": "tool_search_tool_result_error",
"error_code": "invalid_pattern"
}
}エラーコード:
too_many_requests:ツール検索操作のレート制限を超過invalid_pattern:不正なregexパターンpattern_too_long:パターンが200文字の制限を超過unavailable:ツール検索サービスが一時的に利用不可defer_loadingがプロンプトキャッシングを保持する方法については、プロンプトキャッシングを使用したツール使用を参照してください。
システムは会話履歴全体にわたってtool_referenceブロックを自動的に展開するため、Claudeは再検索することなく後続のターンで発見されたツールを再利用できます。
ストリーミングを有効にすると、ストリームの一部としてツール検索イベントを受信します:
event: content_block_start
data: {"type": "content_block_start", "index": 1, "content_block": {"type": "server_tool_use", "id": "srvtoolu_xyz789", "name": "tool_search_tool_regex"}}
// 検索クエリがストリーミング
event: content_block_delta
data: {"type": "content_block_delta", "index": 1, "delta": {"type": "input_json_delta", "partial_json": "{\"query\":\"weather\"}"}}
// 検索実行中に一時停止
// 検索結果がストリーミング
event: content_block_start
data: {"type": "content_block_start", "index": 2, "content_block": {"type": "tool_search_tool_result", "tool_use_id": "srvtoolu_xyz789", "content": {"type": "tool_search_tool_search_result", "tool_references": [{"type": "tool_reference", "tool_name": "get_weather"}]}}}
// Claudeが発見されたツールで続行Messages Batches APIにツール検索ツールを含めることができます。Messages Batches APIを通じたツール検索操作は、通常のMessages APIリクエストと同じ価格で提供されます。
サーバーサイドのツール検索(tool_searchツール)は、即時のAPIレスポンスを超えてツールカタログデータ(ツール名、説明、引数メタデータ)をインデックス化して保存します。このカタログデータはAnthropicの標準保持ポリシーに従って保持されます。標準のMessages APIを使用するカスタムクライアントサイドのツール検索実装は、完全にZDR対応です。
すべての機能にわたるZDR適格性については、APIとデータ保持を参照してください。
適切なユースケース:
従来のツール呼び出しの方が適している場合:
github_、slack_)ことで、検索クエリが自然に適切なツールグループを見つけられるようにするツール検索ツールの使用量はレスポンスの使用量オブジェクトで追跡されます:
{
"usage": {
"input_tokens": 1024,
"output_tokens": 256,
"server_tool_use": {
"tool_search_requests": 2
}
}
}curl https://api.anthropic.com/v1/messages \
--header "x-api-key: $ANTHROPIC_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "content-type: application/json" \
--data '{
"model": "claude-opus-4-6",
"max_tokens": 2048,
"messages": [
{
"role": "user",
"content": "What is the weather in San Francisco?"
}
],
"tools": [
{
"type": "tool_search_tool_regex_20251119",
"name": "tool_search_tool_regex"
},
{
"name": "get_weather",
"description": "Get the weather at a specific location",
"input_schema": {
"type": "object",
"properties": {
"location": {"type": "string"},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"]
}
},
"required": ["location"]
},
"defer_loading": true
},
{
"name": "search_files",
"description": "Search through files in the workspace",
"input_schema": {
"type": "object",
"properties": {
"query": {"type": "string"},
"file_types": {
"type": "array",
"items": {"type": "string"}
}
},
"required": ["query"]
},
"defer_loading": true
}
]
}'ツールを定義するためのステップバイステップガイド。