---
title: ツール
url: https://platform.claude.com/docs/ja/managed-agents/tools
description: エージェントで利用可能なツールを設定します。
featureMetadata:
  topic:
    title: Managed Agents
    url: https://platform.claude.com/docs/en/managed-agents/overview
  status: beta
  betaHeader: managed-agents-2026-04-01
---

Claude Managed Agentsは、Claudeが[セッション](https://platform.claude.com/docs/ja/managed-agents/sessions)内で自律的に使用できる一連の組み込みツールを提供します。エージェント設定でツールを指定することで、どのツールを利用可能にするかを制御できます。

Claude Managed Agentsは、カスタムのユーザー定義ツールもサポートしています。アプリケーションがこれらのツールを別途実行し、結果をClaudeに返すと、Claudeはその結果を使用してタスクを続行します。MCPサーバーからエージェントにツールを提供するには、代わりに[MCPコネクター](https://platform.claude.com/docs/ja/managed-agents/mcp-connector)を使用してください。

## 利用可能なツール

エージェントツールセットには、以下のツールが含まれています。エージェント設定にツールセットを含めると、すべてのツールがデフォルトで有効になります。

| ツール        | 名前           | 説明                            |
| ---------- | ------------ | ----------------------------- |
| 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トークン）を超えると、自動的に[サンドボックス](https://platform.claude.com/docs/ja/managed-agents/environments)内のファイルに書き込まれます。モデルはファイルパスを含む切り詰められたプレビューを受け取り、そこから完全な内容を読み取ることができます。

## ツールセットの設定

エージェントを作成する際に、`agent_toolset_20260401`で完全なツールセットを有効にします。特定のツールを無効にしたり、その設定を上書きしたりするには、`configs` (csharp, go: `Configs`)配列を使用します。各エントリは`name` (csharp, go: `Name`)によって識別され、その値には[利用可能なツール](https://platform.claude.com/docs/ja/managed-agents/tools#available-tools)の「名前」列の値を指定します。エントリには、同じ値を持つオプションの`type` (csharp, go: `Type`)フィールドも指定できます。

各設定エントリでは、`permission_policy` (java, php: `permissionPolicy`; csharp, go: `PermissionPolicy`)も設定できます。このポリシーは、ツールの呼び出しを確認なしで実行するか、確認を必要とするか、またはサーバーによって個別に評価するかを制御します。利用可能なポリシーの種類については、[権限ポリシー](https://platform.claude.com/docs/ja/managed-agents/permission-policies)を参照してください。

次の例では、ツールセットを有効にし、`web_fetch`を無効にしています。

<CodeGroup defaultLanguage="CLI">
  ```bash cURL
  agent=$(curl -fsSL https://api.anthropic.com/v1/agents \
    -H "x-api-key: $ANTHROPIC_API_KEY" \
    -H "anthropic-version: 2023-06-01" \
    -H "anthropic-beta: managed-agents-2026-04-01" \
    -H "content-type: application/json" \
    -d '{
      "name": "Coding Assistant",
      "model": "claude-opus-5-5",
      "tools": [
        {
          "type": "agent_toolset_20260401",
          "configs": [
            {"name": "web_fetch", "enabled": false}
          ]
        }
      ]
    }'
  )
  ```

  <CodeGroupItem>
    ```bash CLI
    ant apply agent.md
    ```

    <File filename="agent.md">
      ```markdown
      ---
      name: Coding Assistant
      model: claude-opus-5-5
      tools:
        - type: agent_toolset_20260401
          configs:
            - name: web_fetch
              enabled: false
      ---
      ```
    </File>
  </CodeGroupItem>

  ```python Python
  agent = client.beta.agents.create(
      name="Coding Assistant",
      model="claude-opus-5-5",
      tools=[
          {
              "type": "agent_toolset_20260401",
              "configs": [
                  {"name": "web_fetch", "enabled": False},
              ],
          },
      ],
  )
  ```

  ```typescript TypeScript
  const agent = await client.beta.agents.create({
    name: "Coding Assistant",
    model: "claude-opus-5-5",
    tools: [
      {
        type: "agent_toolset_20260401",
        configs: [{ name: "web_fetch", enabled: false }]
      }
    ]
  });
  ```

  ```csharp C#
  using Anthropic.Models.Beta.Agents;

  var agent = await client.Beta.Agents.Create(new()
  {
      Name = "Coding Assistant",
      Model = BetaManagedAgentsModel.ClaudeOpus5_5,
      Tools =
      [
          new BetaManagedAgentsAgentToolset20260401Params
          {
              Type = "agent_toolset_20260401",
              Configs =
              [
                  new BetaManagedAgentsWebFetchToolConfigParams { Enabled = false },
              ],
          },
      ],
  });
  ```

  ```go Go
  agent, err := client.Beta.Agents.New(ctx, anthropic.BetaAgentNewParams{
  	Name: "Coding Assistant",
  	Model: anthropic.BetaManagedAgentsModelConfigParams{
  		ID: anthropic.BetaManagedAgentsModelClaudeOpus5_5,
  	},
  	Tools: []anthropic.BetaAgentNewParamsToolUnion{{
  		OfAgentToolset20260401: &anthropic.BetaManagedAgentsAgentToolset20260401Params{
  			Type: anthropic.BetaManagedAgentsAgentToolset20260401ParamsTypeAgentToolset20260401,
  			Configs: []anthropic.BetaManagedAgentsAgentToolConfigParamsUnion{{
  				OfWebFetch: &anthropic.BetaManagedAgentsWebFetchToolConfigParams{
  					Enabled: anthropic.Bool(false),
  				},
  			}},
  		},
  	}},
  })
  if err != nil {
  	panic(err)
  }
  _ = agent
  ```

  ```java Java
  import com.anthropic.models.beta.agents.*;

  var agent = client.beta().agents().create(AgentCreateParams.builder()
      .name("Coding Assistant")
      .model(BetaManagedAgentsModel.CLAUDE_OPUS_5_5)
      .addTool(BetaManagedAgentsAgentToolset20260401Params.builder()
          .type(BetaManagedAgentsAgentToolset20260401Params.Type.AGENT_TOOLSET_20260401)
          .addConfig(BetaManagedAgentsWebFetchToolConfigParams.builder()
              .enabled(false)
              .build())
          .build())
      .build());
  ```

  ```php PHP
  use Anthropic\Beta\Agents\BetaManagedAgentsAgentToolset20260401Params;
  use Anthropic\Beta\Agents\BetaManagedAgentsWebFetchToolConfigParams;

  $agent = $client->beta->agents->create(
      name: 'Coding Assistant',
      model: 'claude-opus-5-5',
      tools: [
          BetaManagedAgentsAgentToolset20260401Params::with(
              type: 'agent_toolset_20260401',
              configs: [
                  BetaManagedAgentsWebFetchToolConfigParams::with(enabled: false),
              ],
          ),
      ],
  );
  ```

  ```ruby Ruby
  agent = client.beta.agents.create(
    name: "Coding Assistant",
    model: "claude-opus-5-5",
    tools: [
      {
        type: :agent_toolset_20260401,
        configs: [
          {name: :web_fetch, enabled: false}
        ]
      }
    ]
  )
  ```
</CodeGroup>

### 特定のツールを無効にする

ツールを無効にするには、その`configs`エントリで`enabled: false`を設定します。

```json
{
  "type": "agent_toolset_20260401",
  "configs": [
    { "name": "web_fetch", "enabled": false },
    { "name": "web_search", "enabled": false }
  ]
}
```

### 特定のツールのみを有効にする

`default_config`オブジェクトはセット内のすべてのツールのベースラインを設定し、ツールごとの`configs`エントリがそれを上書きします。すべてをオフにした状態から始めて必要なものだけを有効にするには、`default_config.enabled`を`false`に設定します。

```json
{
  "type": "agent_toolset_20260401",
  "default_config": { "enabled": false },
  "configs": [
    { "name": "bash", "enabled": true },
    { "name": "read", "enabled": true },
    { "name": "write", "enabled": true }
  ]
}
```

### Web検索とWebフェッチの制限

`web_search`および`web_fetch`エントリでは、ドメインリスト、取得するコンテンツの上限、検索ロケーションも指定できます。[Web検索とWebフェッチのドメインを制限する](https://platform.claude.com/docs/ja/managed-agents/tools-web-restrictions)を参照してください。

### SDKにおける設定エントリの型

Python、TypeScript、Go、Java、C#、Ruby、およびPHPのSDKでは、各`configs` (csharp, go: `Configs`)エントリがツールごとに型付けされています。この型は組み込みツールごとに1つのメンバーを持つユニオン型で、`type` (csharp, go: `Type`)によって判別されます。

Go、Java、C#、およびPHPでは、プレーンな辞書やハッシュではなく、型付きの値からエントリを構築します。これらのSDKでは、`configs` (csharp, go: `Configs`)の要素型はユニオン型そのものであるため、各エントリはツールごとのメンバー型から構築してください。

サーバーが`name` (csharp, go: `Name`)から推論するため、エントリを構築する際に`type` (csharp, go: `Type`)は省略できます。レスポンスには常に含まれます。この型付けによって、エントリがシリアライズされるJSONが変わることはありません。エントリで`name`、`enabled`、`permission_policy`のみを設定したリクエストは、`type`の有無にかかわらず有効です。

## カスタムツール

カスタムツールは、Messages APIにおける[ユーザー定義のクライアントツール](https://platform.claude.com/docs/ja/agents-and-tools/tool-use/how-tool-use-works#user-defined-tools-client-executed)に相当します。利用可能な操作とその戻り値を指定すると、Claudeがいつどのようにそれらを呼び出すかを判断します。

Claudeはカスタムツールを自ら実行しません。Claudeは構造化されたリクエストを出力し、コードがその操作を実行して、結果をセッションに返します。

次の例では、組み込みツールセットと1つのカスタムツール`get_weather`を持つエージェントを作成しています。

<CodeGroup defaultLanguage="CLI">
  ```bash cURL
  agent=$(curl -fsSL https://api.anthropic.com/v1/agents \
    -H "x-api-key: $ANTHROPIC_API_KEY" \
    -H "anthropic-version: 2023-06-01" \
    -H "anthropic-beta: managed-agents-2026-04-01" \
    -H "content-type: application/json" \
    -d '{
      "name": "Weather Agent",
      "model": "claude-opus-5-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"]
          }
        }
      ]
    }'
  )
  ```

  <CodeGroupItem>
    ```bash CLI
    ant apply agent.md
    ```

    <File filename="agent.md">
      ```markdown
      ---
      name: Weather Agent
      model: claude-opus-5-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
      ---
      ```
    </File>
  </CodeGroupItem>

  ```python Python
  agent = client.beta.agents.create(
      name="Weather Agent",
      model="claude-opus-5-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"],
              },
          },
      ],
  )
  ```

  ```typescript TypeScript
  const agent = await client.beta.agents.create({
    name: "Weather Agent",
    model: "claude-opus-5-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"]
        }
      }
    ]
  });
  ```

  ```csharp C#
  using System.Text.Json;
  using Anthropic.Models.Beta.Agents;

  var agent = await client.Beta.Agents.Create(new()
  {
      Name = "Weather Agent",
      Model = BetaManagedAgentsModel.ClaudeOpus5_5,
      Tools =
      [
          new BetaManagedAgentsAgentToolset20260401Params
          {
              Type = "agent_toolset_20260401",
          },
          new BetaManagedAgentsCustomToolParams
          {
              Type = "custom",
              Name = "get_weather",
              Description = "Get current weather for a location",
              InputSchema = new()
              {
                  Properties = new Dictionary<string, JsonElement>
                  {
                      ["location"] = JsonSerializer.SerializeToElement(
                          new { type = "string", description = "City name" }
                      ),
                  },
                  Required = ["location"],
              },
          },
      ],
  });
  ```

  ```go Go
  agent, err := client.Beta.Agents.New(ctx, anthropic.BetaAgentNewParams{
  	Name: "Weather Agent",
  	Model: anthropic.BetaManagedAgentsModelConfigParams{
  		ID: anthropic.BetaManagedAgentsModelClaudeOpus5_5,
  	},
  	Tools: []anthropic.BetaAgentNewParamsToolUnion{{
  		OfAgentToolset20260401: &anthropic.BetaManagedAgentsAgentToolset20260401Params{
  			Type: anthropic.BetaManagedAgentsAgentToolset20260401ParamsTypeAgentToolset20260401,
  		},
  	}, {
  		OfCustom: &anthropic.BetaManagedAgentsCustomToolParams{
  			Type:        anthropic.BetaManagedAgentsCustomToolParamsTypeCustom,
  			Name:        "get_weather",
  			Description: "Get current weather for a location",
  			InputSchema: anthropic.BetaManagedAgentsCustomToolInputSchemaParam{
  				Properties: map[string]any{
  					"location": map[string]any{
  						"type":        "string",
  						"description": "City name",
  					},
  				},
  				Required: []string{"location"},
  			},
  		},
  	}},
  })
  if err != nil {
  	panic(err)
  }
  _ = agent
  ```

  ```java Java
  import com.anthropic.models.beta.agents.*;
  import java.util.Map;

  var agent = client.beta().agents().create(AgentCreateParams.builder()
      .name("Weather Agent")
      .model(BetaManagedAgentsModel.CLAUDE_OPUS_5_5)
      .addTool(BetaManagedAgentsAgentToolset20260401Params.builder()
          .type(BetaManagedAgentsAgentToolset20260401Params.Type.AGENT_TOOLSET_20260401)
          .build())
      .addTool(BetaManagedAgentsCustomToolParams.builder()
          .type(BetaManagedAgentsCustomToolParams.Type.CUSTOM)
          .name("get_weather")
          .description("Get current weather for a location")
          .inputSchema(BetaManagedAgentsCustomToolInputSchema.builder()
              .properties(BetaManagedAgentsCustomToolInputSchema.Properties.builder()
                  .putAdditionalProperty("location", JsonValue.from(Map.of(
                      "type", "string",
                      "description", "City name")))
                  .build())
              .addRequired("location")
              .build())
          .build())
      .build());
  ```

  ```php PHP
  use Anthropic\Beta\Agents\BetaManagedAgentsAgentToolset20260401Params;
  use Anthropic\Beta\Agents\BetaManagedAgentsCustomToolInputSchema;
  use Anthropic\Beta\Agents\BetaManagedAgentsCustomToolParams;

  $agent = $client->beta->agents->create(
      name: 'Weather Agent',
      model: 'claude-opus-5-5',
      tools: [
          BetaManagedAgentsAgentToolset20260401Params::with(
              type: 'agent_toolset_20260401',
          ),
          BetaManagedAgentsCustomToolParams::with(
              type: 'custom',
              name: 'get_weather',
              description: 'Get current weather for a location',
              inputSchema: BetaManagedAgentsCustomToolInputSchema::with(
                  properties: ['location' => ['type' => 'string', 'description' => 'City name']],
                  required: ['location'],
              ),
          ),
      ],
  );
  ```

  ```ruby Ruby
  agent = client.beta.agents.create(
    name: "Weather Agent",
    model: "claude-opus-5-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"]
        }
      }
    ]
  )
  ```
</CodeGroup>

カスタムツールの名前は、`mcp__`または`ant__`で始めることはできず、組み込みエージェントツールの名前と一致させることもできません。このルールに違反するリクエストは400エラーを返します。名前が`ant__`で始まるカスタムツールをすでに持つエージェントは、その名前を含まない`tools` (csharp, go: `Tools`)を送信する更新のみを受け付けるため、次回の更新でそのツールの名前を変更するか削除してください。そのようなツールが、（[オーバーライド](https://platform.claude.com/docs/ja/managed-agents/sessions#override-agent-configuration-for-a-session)適用後の）セッションのエージェント、`subagents` (csharp, go: `Subagents`)の`predefined_agents` (java, php: `predefinedAgents`; csharp, go: `PredefinedAgents`)リスト内のエージェント、または`workflows` (csharp, go: `Workflows`)の`predefined_agents` (java, php: `predefinedAgents`; csharp, go: `PredefinedAgents`)リスト内のエージェントに存在する場合、新しいセッションは400エラーで拒否されます。既存のセッションは影響を受けません。

エージェントはセッション中にカスタムツールを呼び出します。呼び出しを受け取って結果を返す方法については、[セッションイベントストリーム](https://platform.claude.com/docs/ja/managed-agents/events-and-streaming#handling-custom-tool-calls)を参照してください。

セルフホスト型サンドボックスで実行されるセッションでは、環境ワーカーが[サンドボックスからカスタムツールを提供](https://platform.claude.com/docs/ja/managed-agents/self-hosted-sandboxes-custom-tools)できます。これには、ネットワーク内のMCPサーバーをラップするツールを含めることができます。

### カスタムツール定義のベストプラクティス

* **非常に詳細な説明を提供してください。** これはツールのパフォーマンスにおいて圧倒的に重要な要素です。ツールについてClaudeに提供できるコンテキストが多いほど、Claudeはいつどのようにツールを使用すべきかをより適切に判断できます。各ツールの説明は3〜4文を目安とし、ツールが複雑な場合はそれ以上にしてください。説明には以下を含める必要があります。

  * ツールが何をするか
  * いつ使用すべきか、またいつ使用すべきでないか
  * 各パラメータの意味と、それがツールの動作にどう影響するか
  * 重要な注意事項や制限

* **関連する操作をより少ないツールに統合してください。** `create_pr`、`review_pr`、`merge_pr`などのアクションを、`action`パラメータを持つ単一のツールにまとめます。より少なく、より高機能なツールにすることで選択の曖昧さが減り、Claudeがツール群を扱いやすくなります。

* **ツール名に意味のある名前空間を使用してください。** ツールが複数のサービスやリソースにまたがる場合は、名前の先頭にリソースを付けてください（たとえば`db_query`や`storage_read`）。これにより、ライブラリが拡大してもツールの選択が明確になります。

* **ツールのレスポンスは有用性の高い情報のみを返すように設計してください。** 不透明な内部参照ではなく、意味のある安定した識別子（例：スラッグやUUID）を返します。Claudeが次のステップを判断するのに必要なフィールドのみを含めてください。肥大化したレスポンスはコンテキストを浪費し、Claudeが重要な情報を抽出しにくくなります。

## 次のステップ

<CardGroup cols={2}>
  <Card title="Web検索とWebフェッチのドメインを制限する" icon="shield" href="https://platform.claude.com/docs/ja/managed-agents/tools-web-restrictions">
    Webツールがアクセスできるサイトを制御し、取得するコンテンツに上限を設け、検索結果をローカライズします。
  </Card>

  <Card title="MCPコネクタ" icon="link" href="https://platform.claude.com/docs/ja/managed-agents/mcp-connector">
    MCPサーバーをエージェントに接続して、外部ツールやデータソースにアクセスします。
  </Card>

  <Card title="権限ポリシー" icon="lock" href="https://platform.claude.com/docs/ja/managed-agents/permission-policies">
    エージェントツールとMCPツールがいつ実行されるかを制御します。
  </Card>

  <Card title="セッションイベントストリーム" icon="lightning" href="https://platform.claude.com/docs/ja/managed-agents/events-and-streaming">
    イベントを送信し、レスポンスをストリーミングし、実行中のセッションを中断またはリダイレクトします。
  </Card>
</CardGroup>
