---
title: Outils
url: https://platform.claude.com/docs/fr/managed-agents/tools
description: Configurez les outils disponibles pour votre agent.
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 fournit un ensemble d'outils intégrés que Claude peut utiliser de manière autonome au sein d'une [session](https://platform.claude.com/docs/fr/managed-agents/sessions). Vous contrôlez quels outils sont disponibles en les spécifiant dans la configuration de l'agent.

Claude Managed Agents prend également en charge des outils personnalisés, définis par l'utilisateur. Votre application exécute ces outils séparément et renvoie les résultats à Claude, qui les utilise pour poursuivre la tâche. Pour donner à l'agent des outils provenant d'un serveur MCP, utilisez plutôt le [connecteur MCP](https://platform.claude.com/docs/fr/managed-agents/mcp-connector).

## Outils disponibles

L'ensemble d'outils de l'agent comprend les outils suivants. Tous sont activés par défaut lorsque vous incluez l'ensemble d'outils dans la configuration de l'agent.

| Outil            | Nom          | Description                                                         |
| ---------------- | ------------ | ------------------------------------------------------------------- |
| Bash             | `bash`       | Exécuter des commandes bash dans une session shell                  |
| Read             | `read`       | Lire un fichier depuis le système de fichiers du sandbox            |
| Write            | `write`      | Écrire un fichier dans le système de fichiers du sandbox            |
| Edit             | `edit`       | Effectuer un remplacement de chaîne dans un fichier                 |
| Glob             | `glob`       | Correspondance rapide de motifs de fichiers à l'aide de motifs glob |
| Grep             | `grep`       | Recherche de texte à l'aide de motifs regex                         |
| Récupération web | `web_fetch`  | Récupérer le contenu d'une URL                                      |
| Recherche web    | `web_search` | Rechercher des informations sur le web                              |

Lorsque la sortie d'un outil dépasse 100 000 caractères (environ 25 000 tokens), elle est automatiquement écrite dans un fichier du [sandbox](https://platform.claude.com/docs/fr/managed-agents/environments). Le modèle reçoit un aperçu tronqué avec le chemin du fichier et peut lire le contenu complet à partir de là.

## Configuration de l'ensemble d'outils

Activez l'ensemble d'outils complet avec `agent_toolset_20260401` lors de la création d'un agent. Utilisez le tableau `configs` (csharp, go: `Configs`) pour désactiver des outils spécifiques ou remplacer leurs paramètres. Chaque entrée est identifiée par son `name` (csharp, go: `Name`), qui prend une valeur de la colonne Nom dans [Outils disponibles](https://platform.claude.com/docs/fr/managed-agents/tools#available-tools). Une entrée accepte également un champ facultatif `type` (csharp, go: `Type`) avec la même valeur.

Chaque entrée de configuration peut également définir une `permission_policy` (java, php: `permissionPolicy`; csharp, go: `PermissionPolicy`). La politique détermine si les appels de l'outil s'exécutent sans confirmation, nécessitent une confirmation ou sont évalués individuellement par le serveur. Consultez [Politiques d'autorisation](https://platform.claude.com/docs/fr/managed-agents/permission-policies) pour connaître les types de politiques disponibles.

L'exemple suivant active l'ensemble d'outils et désactive `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>

### Désactivation d'outils spécifiques

Pour désactiver un outil, définissez `enabled: false` dans son entrée `configs` :

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

### Activation d'outils spécifiques uniquement

L'objet `default_config` définit la base de référence pour chaque outil de l'ensemble, et les entrées `configs` par outil la remplacent. Pour commencer avec tout désactivé et n'activer que ce dont vous avez besoin, définissez `default_config.enabled` sur `false` :

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

### Restreindre la recherche web et la récupération web

Les entrées `web_search` et `web_fetch` acceptent également des listes de domaines, une limite sur le contenu récupéré et une localisation de recherche. Consultez [Restreindre les domaines de recherche web et de récupération web](https://platform.claude.com/docs/fr/managed-agents/tools-web-restrictions).

### Types d'entrées de configuration dans les SDK

Les SDK Python, TypeScript, Go, Java, C#, Ruby et PHP typent chaque entrée `configs` (csharp, go: `Configs`) par outil. Le type est une union comportant un membre par outil intégré, discriminée par `type` (csharp, go: `Type`).

En Go, Java, C# et PHP, vous construisez les entrées à partir de valeurs typées plutôt que de simples dictionnaires ou hashes. Dans ces SDK, le type d'élément de `configs` (csharp, go: `Configs`) est l'union elle-même ; construisez donc chaque entrée à partir de son type de membre propre à l'outil.

Vous pouvez omettre `type` (csharp, go: `Type`) lorsque vous construisez une entrée, car le serveur le déduit de `name` (csharp, go: `Name`). Les réponses l'incluent toujours. Ce typage ne modifie pas le JSON vers lequel une entrée est sérialisée. Une requête dont les entrées ne définissent que `name`, `enabled` et `permission_policy` est valide avec ou sans `type`.

## Outils personnalisés

Les outils personnalisés sont analogues aux [outils client définis par l'utilisateur](https://platform.claude.com/docs/fr/agents-and-tools/tool-use/how-tool-use-works#user-defined-tools-client-executed) dans l'API Messages. Vous spécifiez quelles opérations sont disponibles et ce qu'elles renvoient, et Claude détermine quand et comment les appeler.

Claude n'exécute pas lui-même un outil personnalisé. Il émet une requête structurée, votre code exécute l'opération, et vous renvoyez le résultat à la session.

L'exemple suivant crée un agent avec l'ensemble d'outils intégré et un outil personnalisé, `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>

Le nom d'un outil personnalisé ne peut pas commencer par `mcp__` ou `ant__`, ni correspondre au nom d'un outil d'agent intégré. Une requête qui enfreint cette règle renvoie une erreur 400. Un agent qui possède déjà un outil personnalisé dont le nom commence par `ant__` n'accepte une mise à jour que si celle-ci envoie `tools` (csharp, go: `Tools`) sans ce nom ; renommez ou supprimez donc l'outil lors de votre prochaine mise à jour. Une nouvelle session est refusée avec une erreur 400 si un tel outil se trouve sur son agent (après d'éventuels [remplacements](https://platform.claude.com/docs/fr/managed-agents/sessions#override-agent-configuration-for-a-session)), sur un agent de la liste `predefined_agents` (java, php: `predefinedAgents`; csharp, go: `PredefinedAgents`) de `subagents` (csharp, go: `Subagents`), ou sur un agent de la liste `predefined_agents` (java, php: `predefinedAgents`; csharp, go: `PredefinedAgents`) de `workflows` (csharp, go: `Workflows`). Les sessions déjà existantes ne sont pas affectées.

L'agent appelle ses outils personnalisés au cours d'une session. Pour recevoir les appels et renvoyer les résultats, consultez [Flux d'événements de session](https://platform.claude.com/docs/fr/managed-agents/events-and-streaming#handling-custom-tool-calls).

Pour les sessions qui s'exécutent dans un sandbox auto-hébergé, le worker d'environnement peut [servir des outils personnalisés depuis le sandbox](https://platform.claude.com/docs/fr/managed-agents/self-hosted-sandboxes-custom-tools). Ceux-ci peuvent inclure des outils qui encapsulent un serveur MCP au sein de votre réseau.

### Bonnes pratiques pour les définitions d'outils personnalisés

* **Fournissez des descriptions extrêmement détaillées.** C'est de loin le facteur le plus important pour les performances des outils. Plus vous donnez de contexte à Claude sur vos outils, mieux il parvient à déterminer quand et comment les utiliser. Visez trois à quatre phrases pour chaque description d'outil, davantage si l'outil est complexe. Vos descriptions doivent couvrir :

  * Ce que fait l'outil
  * Quand l'utiliser, et quand ne pas l'utiliser
  * Ce que signifie chaque paramètre et comment il affecte le comportement de l'outil
  * Toute mise en garde ou limitation importante

* **Regroupez les opérations connexes dans un nombre réduit d'outils.** Regroupez des actions telles que `create_pr`, `review_pr` et `merge_pr` dans un seul outil doté d'un paramètre `action`. Des outils moins nombreux mais plus performants réduisent l'ambiguïté de sélection et rendent votre surface d'outils plus facile à parcourir pour Claude.

* **Utilisez des espaces de noms significatifs dans les noms d'outils.** Lorsque vos outils couvrent plusieurs services ou ressources, préfixez les noms avec la ressource (par exemple, `db_query` ou `storage_read`). Cela rend la sélection d'outils sans ambiguïté à mesure que votre bibliothèque s'agrandit.

* **Concevez les réponses des outils pour ne renvoyer que des informations à fort signal.** Renvoyez des identifiants sémantiques et stables (par exemple, des slugs ou des UUID) plutôt que des références internes opaques. N'incluez que les champs dont Claude a besoin pour déterminer sa prochaine étape. Des réponses surchargées gaspillent du contexte et compliquent l'extraction de ce qui compte pour Claude.

## Prochaines étapes

<CardGroup cols={2}>
  <Card title="Restreindre les domaines de recherche web et de récupération web" icon="shield" href="https://platform.claude.com/docs/fr/managed-agents/tools-web-restrictions">
    Contrôlez les sites que les outils web peuvent atteindre, limitez le contenu récupéré et localisez les résultats de recherche.
  </Card>

  <Card title="Connecteur MCP" icon="link" href="https://platform.claude.com/docs/fr/managed-agents/mcp-connector">
    Connectez des serveurs MCP à vos agents pour accéder à des outils et sources de données externes.
  </Card>

  <Card title="Politiques d'autorisation" icon="lock" href="https://platform.claude.com/docs/fr/managed-agents/permission-policies">
    Contrôlez quand les outils d'agent et MCP s'exécutent.
  </Card>

  <Card title="Flux d'événements de session" icon="lightning" href="https://platform.claude.com/docs/fr/managed-agents/events-and-streaming">
    Envoyez des événements, diffusez les réponses en streaming, et interrompez ou redirigez votre session en cours d'exécution.
  </Card>
</CardGroup>
