ツール
エージェントが利用できるツールを設定します。
Claude Managed Agentsは、Claudeがセッション内で自律的に使用できる一連の組み込みツールを提供します。エージェント設定でツールを指定することで、どのツールを利用可能にするかを制御できます。
Claude Managed Agentsは、カスタムのユーザー定義ツールもサポートしています。アプリケーションがこれらのツールを別途実行し、結果をClaudeに返すと、Claudeはその結果を使用してタスクを続行します。MCPサーバーからエージェントにツールを提供するには、代わりにMCPコネクターを使用してください。
利用可能なツール
エージェントツールセットには以下のツールが含まれています。エージェント設定にツールセットを含めると、すべてがデフォルトで有効になります。configs配列の各エントリは、Name列の値を使用したnameによって識別され、同じ値を持つオプションのtypeフィールドを受け付けます。web_searchおよびweb_fetchエントリは追加の設定を受け付けます。Web検索とWebフェッチのドメインを制限するを参照してください。
| ツール | Name | 説明 |
|---|---|---|
| Bash | bash | シェルセッションでbashコマンドを実行する |
| Read | read | サンドボックスファイルシステムからファイルを読み取る |
| Write | write | サンドボックスファイルシステムにファイルを書き込む |
| Edit | edit | ファイル内で文字列置換を実行する |
| Glob | glob | globパターンを使用した高速なファイルパターンマッチング |
| Grep | grep | 正規表現パターンを使用したテキスト検索 |
| Web fetch | web_fetch | URLからコンテンツを取得する |
| Web search | web_search | Webで情報を検索する |
ツールの出力が100,000文字(約25,000トークン)を超えると、自動的にサンドボックス内のファイルに書き込まれます。モデルはファイルパスを含む切り詰められたプレビューを受け取り、そこから完全な内容を読み取ることができます。
ツールセットの設定
エージェントを作成する際に、agent_toolset_20260401で完全なツールセットを有効にします。configs配列を使用して、特定のツールを無効にしたり、その設定を上書きしたりできます。各configエントリには、ツールの呼び出しを自動承認するか確認を必要とするかを制御するpermission_policyを設定することもできます。利用可能なポリシータイプについては、権限ポリシーを参照してください。
web_searchおよびweb_fetchのconfigエントリは、ドメインフィルターやその他のWeb設定も受け付けます。Web検索とWebフェッチのドメインを制限するを参照してください。
ant beta:agents create <<'YAML'
name: Coding Assistant
model: claude-opus-5
tools:
- type: agent_toolset_20260401
configs:
- name: web_fetch
enabled: false
YAML特定のツールを無効にする
ツールを無効にするには、エージェントのtools配列内のツールセットオブジェクトにある、そのツールのconfigエントリでenabled: falseを設定します。
{
"type": "agent_toolset_20260401",
"configs": [
{ "name": "web_fetch", "enabled": false },
{ "name": "web_search", "enabled": false }
]
}特定のツールのみを有効にする
default_configオブジェクトはセット内のすべてのツールのベースラインを設定し、ツールごとのconfigsエントリがそれを上書きします。すべてをオフにした状態から始めて必要なものだけを有効にするには、default_config.enabledをfalseに設定します。
{
"type": "agent_toolset_20260401",
"default_config": { "enabled": false },
"configs": [
{ "name": "bash", "enabled": true },
{ "name": "read", "enabled": true },
{ "name": "write", "enabled": true }
]
}Web検索とWebフェッチのドメインを制限する
エージェントのWebツールがアクセスできるサイトを制御するには、ツールセットのconfigs配列のweb_searchおよびweb_fetchエントリにallowed_domains(ツールはこれらのホストにのみアクセスできる)またはblocked_domains(ツールはこれらのホストに決してアクセスできない)を設定します。各ツールは独自のリストを持つため、web_searchとweb_fetchで異なる制限を設けることができます。リストに記載されたドメインは、そのホストとそのすべてのサブドメインを対象とします。実行時に、リストで許可されていないURLに対するweb_fetch呼び出しは、エージェントにエラー結果を返します(agent.tool_resultイベントでis_error: trueとなり、コンテンツにはエラーコードurl_not_allowedが記載されます)。また、web_searchはリストで許可されていない結果を除外します。
以下のツールセットは、web_searchを2つのサイトに制限してその結果をローカライズし、web_fetchについては1つのホストをブロックしつつ、取得したコンテンツがコンテキストに入る量に上限を設けています。
{
"type": "agent_toolset_20260401",
"configs": [
{
"type": "web_search",
"name": "web_search",
"allowed_domains": ["docs.example.com", "arxiv.org"],
"user_location": {
"type": "approximate",
"country": "US",
"timezone": "America/Los_Angeles"
}
},
{
"type": "web_fetch",
"name": "web_fetch",
"blocked_domains": ["ads.example.com"],
"max_content_tokens": 50000
}
]
}以下のリクエストは、このツールセットを持つエージェントを作成し、レスポンスからconfigs配列を出力します。
ant beta:agents create --transform tools.0.configs <<'YAML'
name: Research Agent
model: claude-opus-5
tools:
- type: agent_toolset_20260401
configs:
- type: web_search
name: web_search
allowed_domains: [docs.example.com, arxiv.org]
user_location:
type: approximate
country: US
timezone: America/Los_Angeles
- type: web_fetch
name: web_fetch
blocked_domains: [ads.example.com]
max_content_tokens: 50000
YAMLClaude Consoleでは、エージェントフォームのBuilt-in toolsカードのweb_searchおよびweb_fetch行から許可ドメインまたはブロックドメインを設定します。max_content_tokensとuser_locationは、エージェント設定のRawビューで設定します。
enabledとpermission_policyに加えて、Webツールのエントリは以下の設定を受け付けます。
| 設定 | 適用対象 | 説明 |
|---|---|---|
allowed_domains | web_search, web_fetch | ツールがアクセスできる唯一のホスト。同じエントリでblocked_domainsと組み合わせることはできません。 |
blocked_domains | web_search, web_fetch | ツールがアクセスできないホスト。 |
max_content_tokens | web_fetch | コンテキストに含まれる取得ページコンテンツの量に上限を設けます。正の整数である必要があります。コンテンツ制限を参照してください。 |
user_location | web_search | 検索結果をローカライズします。Messages APIのuser_locationパラメータと同じフィールドを持つオブジェクトです。 |
ドメインリストのルール
- エントリには
allowed_domainsまたはblocked_domainsのいずれか一方を設定し、両方は設定しないでください。両方を設定したエントリは拒否されます。 - 各リストには1〜64個のドメインを含め、各ドメインは1〜255文字です。空のリストは拒否されます。制限を適用しない場合は、フィールドを省略するか
nullを送信してください。 - 各ドメインは、登録可能なドメイン名またはそのサブドメインであり、プレーンなホスト名として記述します。ASCII文字、数字、ハイフン、アンダースコア、ドットのみを使用し、スキーム、ポート、認証情報、ワイルドカード、空白を含めず、ハイフンで始まるまたは終わるラベルを含めず、このリストの後半で説明するオプションの
web_searchパスサフィックス以外のパスを含めません。https://example.com、example.com:443、*.example.comではなく、example.comを使用してください。ホスト名は大文字小文字を区別せずに比較され、末尾の単一の/は無視されます。 - リストに記載されたドメインは、そのホストとそのサブドメインに一致します。
example.comはdocs.example.comを対象としますが、docs.example.comはexample.comやapi.example.comを対象としません。先頭のwww.は他のサブドメインと同様のサブドメインであるため、www.example.comはexample.comを対象としません。両方を対象とするには、ベアドメインを記載してください。 - IPアドレスは、IPv4、IPv6、角括弧付き、
127.1のような数値省略形など、いかなる形式でも受け付けられません。代わりにサイトのドメイン名を記載してください。 com、co.uk、gov.ukのようなベアのトップレベルドメインやレジストリサフィックスは拒否され、intranetのような単一ラベルの名前も同様に拒否されます。example.co.ukのような完全なドメインを記載してください。localhost、および.localhost、.local、.internal、.localdomain、.invalidで終わるホストは拒否されます。- 国際化ドメイン名には
xn--(Punycode)形式を使用してください。非ASCII文字を含むドメインは拒否されます。 web_fetchのドメインにはパスを含めることができません。example.com/*ではなくexample.comを使用してください。web_searchのドメインにはexample.com/blogのようなパスサフィックスを付けることができますが、そのパスにはスペース、?、#、または$ , | ^ !のいずれの文字も含めることができません。検索プロバイダーはパスサフィックスを厳密なホストルールではなくURLパターンとして照合するため、web_searchでもプレーンなホスト名を推奨します。- リスト内の重複ドメインは拒否されます。
www.example.comとexample.comは異なるドメインとして扱われます。それぞれが何を対象とするかについては、前述の一致ルールを参照してください。
設定が検証されるタイミング
形式および制限の違反は、エージェントを作成またはエージェントを更新する際、およびtoolsを指定するセッションを作成または更新する際に、400 invalid_request_errorで拒否されます。たとえば、両方のリストを設定したエントリに対するメッセージにはOnly one of allowed_domains or blocked_domains may be set.が含まれ、空のリストに対するメッセージにはallowed_domains: Empty list of domains is ambiguous. Provide at least one domain or null.が含まれます。形式ルールに違反するドメインに対するメッセージには、そのリストとゼロベースの位置が示されます。たとえばallowed_domains.0: IP addresses are not supported; provide a plain hostname like "example.com"のようになります。
同じリクエストは、検索およびフェッチプロバイダーに依存する3つの設定も拒否します。Anthropicのクローラーがアクセスを許可されていないallowed_domains内のドメイン、検索プロバイダーがサポートしていないuser_location.country(メッセージはuser_location.country: not a country the search provider supportsで終わります)、および有効なIANA名ではないuser_location.timezoneです。セッションは、ツールを最初に初期化する際に設定を再度チェックします。以前に受け付けられた設定がその時点で有効でなくなっている場合、セッションはsession.errorイベントを発行し、再試行せずにidleに戻ります。セッションのツールを更新して設定を修正し、新しいセッションが修正済みの設定で開始されるようにエージェントも更新してから、新しいuser.messageを送信して続行してください。
マルチエージェントセッション、アウトカム、およびセッション途中の更新
マルチエージェントセッションでは、スレッドに適用されるすべてのドメインリストが同時に適用されます。コーディネーターのロスターに含まれるエージェントは、自身のallowed_domainsとblocked_domains、それを呼び出したエージェントのリスト、およびコーディネーターの現在のリストによって拘束されます。
- 許可リストはすべてのリストが共通して対象とするドメインに結合され、ブロックリストは加算されるため、ロスターエージェントはツールがアクセスできる範囲を狭めることはできますが、広げることは決してできません。たとえば、
blocked_domainsを設定したロスターエージェントはコーディネーターのallowed_domainsを維持しつつその中でそれらのホストをブロックし、独自のallowed_domainsを設定したロスターエージェントは、自身のリストとコーディネーターのリストの両方が対象とするホストにのみアクセスできます。 - 結合された許可リストに共通のドメインがない場合、ツールはそのエージェントで引き続き利用可能ですが、すべての呼び出しは許可されたドメインがないことを示す
url_not_allowedエラーで失敗し、ツールの説明でもモデルにその旨が伝えられます。これを避けるには、各ロスターエージェントの許可リストをコーディネーターの許可リストの範囲内に収めてください。 max_content_tokensとuser_locationは結合されません。スレッドは、自身のツール設定に値が設定されていればそれを使用し、なければそれを呼び出したエージェントの値を、それもなければコーディネーターの現在の設定の値を使用します。{"type": "self"}ロスターエントリは独自のWeb設定を持たず、コーディネーターの現在の設定に従います。- アウトカム駆動セッションのグレーダーは、これらの設定にかかわらず、
web_searchとweb_fetchなしで実行されます。 - アイドル状態のセッションのリストは、そのツールを更新することで変更できます。新しいリストはセッションの残りの部分に適用されます。マルチエージェントセッションでは、すべてのスレッドが次のターンからそれらを適用しますが、ロスターエージェント自身のリストは、セッション作成時にそのエージェント定義で設定されたままになります。
Messages APIツールとの違い
これらの設定は、Messages APIサーバーツールのドメインフィルタリングと同じallowed_domainsおよびblocked_domainsの語彙を使用しますが、Managed Agentsでは以下の違いがあります。
- 各リストは64ドメインが上限です。
web_fetchに記載するドメインにはパスを含めることができません。- ドメインはASCIIである必要があります。国際化ドメイン名には
xn--(Punycode)形式を使用してください。Messages APIはUnicodeエントリを受け付けますが、推奨はしていません。 max_uses、citations、cache_controlはツールセットでは利用できません。
カスタムツール
組み込みツールに加えて、カスタムツールを定義できます。カスタムツールは、Messages APIのユーザー定義クライアントツールに相当します。
各カスタムツールは契約を定義します。どのような操作が利用可能で何を返すかをあなたが指定し、Claudeがいつどのようにそれらを呼び出すかを判断します。モデル自身が何かを実行することは決してありません。モデルは構造化されたリクエストを発行し、あなたのコードが操作を実行し、結果が会話に戻されます。セッション中にカスタムツール呼び出しを受け取り結果を返す方法については、セッションイベントストリームを参照してください。
セッションがセルフホストサンドボックスで実行される場合、環境ワーカーは、ネットワーク内のMCPサーバーをラップするツールを含め、サンドボックスからカスタムツールを提供できます。
ant beta:agents create < agent.yamlname: Weather Agent
model: claude-opus-5
tools:
- type: agent_toolset_20260401
- type: custom
name: get_weather
description: Get current weather for a location
input_schema:
type: object
properties:
location:
type: string
description: City name
required:
- locationエージェントにカスタムツールを定義すると、エージェントはセッション中にそれらを呼び出します。
カスタムツール定義のベストプラクティス
- 極めて詳細な説明を提供してください。 これはツールのパフォーマンスにおいて群を抜いて最も重要な要素です。説明では、ツールが何をするのか、いつ使用すべきか(そしていつ使用すべきでないか)を説明する必要があります。各パラメータの意味と、それがツールの動作にどう影響するかを説明してください。重要な注意点や制限事項があれば明記してください。ツールについてClaudeに与えられるコンテキストが多いほど、Claudeはいつどのようにツールを使用すべきかをより適切に判断できます。各ツールの説明は3〜4文を目安とし、ツールが複雑な場合はさらに多くしてください。
- 関連する操作をより少ないツールに統合してください。 すべてのアクション(
create_pr、review_pr、merge_pr)ごとに個別のツールを作成するのではなく、actionパラメータを持つ単一のツールにまとめてください。より少なく、より高機能なツールにすることで、選択の曖昧さが減り、Claudeがツール群を扱いやすくなります。 - ツール名に意味のある名前空間を使用してください。 ツールが複数のサービスやリソースにまたがる場合は、名前の先頭にリソースを付けてください(たとえば
db_queryやstorage_read)。これにより、ライブラリが拡大してもツールの選択が明確になります。 - シグナルの高い情報のみを返すようにツールのレスポンスを設計してください。 不透明な内部参照ではなく、意味のある安定した識別子(たとえばスラッグやUUID)を返し、Claudeが次のステップを判断するために必要なフィールドのみを含めてください。肥大化したレスポンスはコンテキストを浪費し、Claudeが重要な情報を抽出しにくくなります。
次のステップ
MCPサーバーをエージェントに接続して、外部ツールやデータソースにアクセスできるようにします。
エージェントツールとMCPツールがいつ実行されるかを制御します。
イベントの送信、レスポンスのストリーミング、実行中のセッションの中断やリダイレクトを行います。
Was this page helpful?