このページでは、サーバー実行ツールの共有メカニクスについて説明します:server_tool_useブロック、pause_turn継続、ZDRの考慮事項、およびドメインフィルタリングです。個別のツールについては、ツールリファレンスを参照してください。
server_tool_useブロックは、サーバー実行ツールが実行されるとClaudeの応答に表示されます。そのidフィールドはsrvtoolu_プレフィックスを使用して、クライアントツール呼び出しと区別します:
{
"type": "server_tool_use",
"id": "srvtoolu_01A2B3C4D5E6F7G8H9",
"name": "web_search",
"input": { "query": "latest quantum computing breakthroughs" }
}APIはツールを内部で実行します。呼び出しとその結果は応答に表示されますが、実行を処理する必要はありません。クライアントtool_useブロックとは異なり、tool_resultで応答する必要はありません。結果ブロックは同じアシスタントターン内のserver_tool_useブロックの直後に表示されます。
ウェブ検索などのサーバーツールを使用する場合、APIはpause_turn停止理由を返す可能性があり、これはAPIが長時間実行されるターンを一時停止したことを示します。
pause_turn停止理由を処理する方法は次のとおりです:
# Initial request with web search
response = client.messages.create(
model="claude-opus-4-7",
max_tokens=1024,
messages=[
{
"role": "user",
"content": "Search for comprehensive information about quantum computing breakthroughs in 2025",
}
],
tools=[{"type": "web_search_20250305", "name": "web_search", "max_uses": 10}],
)
# Check if the response has pause_turn stop reason
if response.stop_reason == "pause_turn":
# Continue the conversation with the paused content
messages = [
{
"role": "user",
"content": "Search for comprehensive information about quantum computing breakthroughs in 2025",
},
{"role": "assistant", "content": response.content},
]
# Send the continuation request
continuation = client.messages.create(
model="claude-opus-4-7",
max_tokens=1024,
messages=messages,
tools=[{"type": "web_search_20250305", "name": "web_search", "max_uses": 10}],
)
print(continuation)
else:
print(response)pause_turnを処理する場合:
ウェブ検索の基本バージョン(web_search_20250305)とウェブフェッチ(web_fetch_20250910)は、Zero Data Retention(ZDR)の対象です。
動的フィルタリング付きの_20260209バージョンは、動的フィルタリングが内部でコード実行に依存しているため、デフォルトではZDR対象ではありません。
_20260209サーバーツールをZDRで使用するには、ツールで"allowed_callers": ["direct"]を設定して動的フィルタリングを無効にします:
{
"type": "web_search_20260209",
"name": "web_search",
"allowed_callers": ["direct"]
}これにより、ツールは直接呼び出しのみに制限され、内部コード実行ステップをバイパスします。
ウェブフェッチツール自体はZDR対象ですが、Claudeがサイトからコンテンツをフェッチする場合、ウェブサイトパブリッシャーはURLに渡されたパラメータを保持する可能性があります。
ウェブにアクセスするサーバーツールは、allowed_domainsおよびblocked_domainsパラメータを受け入れて、Claudeが到達できるドメインを制御します。
ドメインフィルタを使用する場合:
https://example.comの代わりにexample.comを使用)example.comはdocs.example.comをカバー)docs.example.comはexample.comまたはapi.example.comからではなく、そのサブドメインからのみ結果を返す)example.com/blogはexample.com/blog/post-1にマッチ)allowed_domainsまたはblocked_domainsのいずれかを使用できますが、同じリクエストで両方を使用することはできませんワイルドカードサポート:
*)のみが許可され、ドメイン部分の後(パス内)に表示される必要がありますexample.com/*、example.com/*/articles*.example.com、ex*.com、example.com/*/news/*無効なドメイン形式はinvalid_tool_inputツールエラーを返します。
リクエストレベルのドメイン制限は、Consoleで設定された組織レベルのドメイン制限と互換性がある必要があります。リクエストレベルのドメインは、組織レベルのリストを上書きまたは拡張するのではなく、ドメインをさらに制限することのみができます。リクエストに組織設定と競合するドメインが含まれている場合、APIは検証エラーを返します。
ドメイン名のUnicode文字は、異なるスクリプトの視覚的に類似した文字がドメインフィルタをバイパスできるホモグラフ攻撃を通じて、セキュリティの脆弱性を作成する可能性があることに注意してください。たとえば、аmazon.com(キリル文字の「а」を使用)はamazon.comと同じに見えるかもしれませんが、異なるドメインを表します。
ドメイン許可/ブロックリストを設定する場合:
ウェブ検索とウェブフェッチの_20260209バージョンは、検索結果に対して動的フィルタを適用するために内部でコード実行を使用します。
スタンドアロンcode_executionツールを_20260209バージョンのウェブツールと一緒に含めると、2つの実行環境が作成され、モデルを混乱させる可能性があります。一方を使用するか、両方を同じバージョンにピンしてください。
サーバーツールイベントは通常のSSEフローの一部としてストリーミングされます。server_tool_useブロックとその結果は、テキストとクライアントツール呼び出しと同じ方法でcontent_block_startおよびcontent_block_deltaイベントとして到着します。
完全なイベントリファレンスについては、ストリーミングを参照してください。個別のツールページは、異なる場合はツール固有のイベント名を文書化します。
すべてのサーバーツールはバッチ処理をサポートしています。バッチ処理を参照してください。
ウェブを検索して結果を引用します。
特定のURLからコンテンツを取得します。
サンドボックスコンテナでPythonを実行します。
オンデマンドでツールを検出してロードします。
Was this page helpful?