---
title: Инструменты
url: https://platform.claude.com/docs/ru/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/ru/managed-agents/sessions). Вы управляете тем, какие инструменты доступны, указывая их в конфигурации агента.

Claude Managed Agents также поддерживает «custom tools» (пользовательские инструменты), которые определяете вы сами. Ваше приложение выполняет эти инструменты отдельно и возвращает результаты Claude, который использует их для продолжения задачи. Чтобы предоставить агенту инструменты с сервера «Model Context Protocol», или MCP, используйте вместо этого [коннектор MCP](https://platform.claude.com/docs/ru/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` | Поиск информации в интернете                          |

Когда вывод инструмента превышает 100 000 символов (около 25 000 токенов), он автоматически записывается в файл в «sandbox» ([песочнице](https://platform.claude.com/docs/ru/managed-agents/environments)). Модель получает усечённый фрагмент с путём к файлу и может прочитать оттуда полное содержимое.

## Настройка набора инструментов

Включите полный набор инструментов с помощью `agent_toolset_20260401` при создании агента. Используйте массив `configs` (csharp, go: `Configs`), чтобы отключить определённые инструменты или переопределить их настройки. Каждая запись идентифицируется своим `name` (csharp, go: `Name`), который принимает значение из столбца «Имя» в разделе [Доступные инструменты](https://platform.claude.com/docs/ru/managed-agents/tools#available-tools). Запись также принимает необязательное поле `type` (csharp, go: `Type`) с тем же значением.

Каждая запись конфигурации также может задавать `permission_policy` (java, php: `permissionPolicy`; csharp, go: `PermissionPolicy`). Политика определяет, выполняются ли вызовы инструмента без подтверждения, требуют подтверждения или оцениваются сервером индивидуально. Доступные типы политик см. в разделе [Политики разрешений](https://platform.claude.com/docs/ru/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>

### Отключение отдельных инструментов

Чтобы отключить инструмент, установите `enabled: false` в его записи `configs`:

```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_search` и `web_fetch` также принимают списки доменов, ограничение на объём загружаемого содержимого и местоположение для поиска. См. [Ограничение доменов для веб-поиска и веб-загрузки](https://platform.claude.com/docs/ru/managed-agents/tools-web-restrictions).

### Типы записей конфигурации в SDK

В SDK для Python, TypeScript, Go, Java, C#, Ruby и PHP каждая запись `configs` (csharp, go: `Configs`) типизирована для конкретного инструмента. Тип представляет собой «union» (объединение) с одним членом для каждого встроенного инструмента, различаемое по `type` (csharp, go: `Type`).

В Go, Java, C# и PHP вы создаёте записи из типизированных значений, а не из простых словарей или хэшей. В этих SDK типом элемента `configs` (csharp, go: `Configs`) является само объединение, поэтому создавайте каждую запись из типа члена, соответствующего инструменту.

Вы можете опустить `type` (csharp, go: `Type`) при создании записи, поскольку сервер выводит его из `name` (csharp, go: `Name`). Ответы всегда включают его. Эта типизация не меняет JSON, в который сериализуется запись. Запрос, записи которого задают только `name`, `enabled` и `permission_policy`, действителен как с `type`, так и без него.

## Пользовательские инструменты

Пользовательские инструменты аналогичны [клиентским инструментам, определяемым пользователем](https://platform.claude.com/docs/ru/agents-and-tools/tool-use/how-tool-use-works#user-defined-tools-client-executed), в Messages API. Вы указываете, какие операции доступны и что они возвращают, а Claude определяет, когда и как их вызывать.

Claude не запускает пользовательский инструмент самостоятельно. Он формирует структурированный запрос, ваш код выполняет операцию, и вы возвращаете результат в сессию.

В следующем примере создаётся агент со встроенным набором инструментов и одним пользовательским инструментом `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`) без этого имени, поэтому переименуйте или удалите инструмент в следующем обновлении. Новая сессия отклоняется с ошибкой 400, если такой инструмент есть у её агента (после применения любых [переопределений](https://platform.claude.com/docs/ru/managed-agents/sessions#override-agent-configuration-for-a-session)), у агента в списке `predefined_agents` (java, php: `predefinedAgents`; csharp, go: `PredefinedAgents`) в `subagents` (csharp, go: `Subagents`) или у агента в списке `predefined_agents` (java, php: `predefinedAgents`; csharp, go: `PredefinedAgents`) в `workflows` (csharp, go: `Workflows`). Уже существующие сессии это не затрагивает.

Агент вызывает свои пользовательские инструменты во время сессии. О том, как получать вызовы и возвращать результаты, см. [Поток событий сессии](https://platform.claude.com/docs/ru/managed-agents/events-and-streaming#handling-custom-tool-calls).

Для сессий, выполняемых в самостоятельно размещаемой песочнице, воркер среды может [обслуживать пользовательские инструменты из песочницы](https://platform.claude.com/docs/ru/managed-agents/self-hosted-sandboxes-custom-tools). Это могут быть в том числе инструменты, которые оборачивают сервер MCP внутри вашей сети.

### Рекомендации по определению пользовательских инструментов

* **Предоставляйте чрезвычайно подробные описания.** Это, безусловно, самый важный фактор эффективности инструментов. Чем больше контекста о ваших инструментах вы можете дать Claude, тем лучше он определяет, когда и как их использовать. Стремитесь к трём-четырём предложениям в описании каждого инструмента, а если инструмент сложный — к большему. Ваши описания должны охватывать:

  * Что делает инструмент
  * Когда его следует использовать, а когда нет
  * Что означает каждый параметр и как он влияет на поведение инструмента
  * Любые важные оговорки или ограничения

* **Объединяйте связанные операции в меньшее число инструментов.** Группируйте действия, такие как `create_pr`, `review_pr` и `merge_pr`, в один инструмент с параметром `action`. Меньшее число более функциональных инструментов снижает неоднозначность выбора и упрощает Claude навигацию по вашему набору инструментов.

* **Используйте осмысленные пространства имён в названиях инструментов.** Когда ваши инструменты охватывают несколько сервисов или ресурсов, добавляйте к именам префикс ресурса (например, `db_query` или `storage_read`). Это делает выбор инструмента однозначным по мере роста вашей библиотеки.

* **Проектируйте ответы инструментов так, чтобы они возвращали только наиболее значимую информацию.** Возвращайте семантические, стабильные идентификаторы (например, slug или UUID), а не непрозрачные внутренние ссылки. Включайте только те поля, которые нужны Claude для определения следующего шага. Раздутые ответы расходуют контекст и затрудняют для Claude извлечение важного.

## Следующие шаги

<CardGroup cols={2}>
  <Card title="Ограничение доменов для веб-поиска и веб-загрузки" icon="shield" href="https://platform.claude.com/docs/ru/managed-agents/tools-web-restrictions">
    Управляйте тем, к каким сайтам могут обращаться веб-инструменты, ограничивайте объём загружаемого содержимого и локализуйте результаты поиска.
  </Card>

  <Card title="Коннектор MCP" icon="link" href="https://platform.claude.com/docs/ru/managed-agents/mcp-connector">
    Подключайте серверы MCP к своим агентам для доступа к внешним инструментам и источникам данных.
  </Card>

  <Card title="Политики разрешений" icon="lock" href="https://platform.claude.com/docs/ru/managed-agents/permission-policies">
    Управляйте тем, когда выполняются инструменты агента и MCP.
  </Card>

  <Card title="Поток событий сессии" icon="lightning" href="https://platform.claude.com/docs/ru/managed-agents/events-and-streaming">
    Отправляйте события, получайте ответы в режиме потоковой передачи, а также прерывайте или перенаправляйте сессию во время выполнения.
  </Card>
</CardGroup>
