Tools define what an Agent can do. By configuring the
When executing tasks, an Agent decides which capabilities it can invoke based on the
Notes:
Tool configuration uses a single object, with specific tools toggled via the
Set when creating an Agent:
Create a new version of an Agent via PUT to update the tool configuration:
Example output:
Q: What happens if I do not configure tools? A: The Agent will have no tools available and can only engage in plain-text conversation. To give the Agent tool capabilities, at minimum pass
tools field when creating or updating an Agent, you can precisely control the boundaries of the Agent's capabilities.
The Role of Tools
When executing tasks, an Agent decides which capabilities it can invoke based on the tools configuration. All tools are configured through a single object { "type": "agent_toolset_20260401", "enabled_tools": [...] }, enabling the atomic tools listed in the enabled_tools array as needed.
When enabled_tools is a non-empty allowlist, tools outside the list are completely invisible at the model layer and no invocation attempts will occur. When enabled_tools is omitted or is an empty array, all built-in tools are exposed to the model. When the entire tools field is omitted or written as [], the model layer receives no tool schema at all (see the FAQ below for details).
Available Tools
| Tool Name (value in enabled_tools array) | Purpose | Typical Scenarios |
|---|---|---|
Bash | Shell command execution | Install dependencies, run scripts, curl API calls |
Read | File read | View mounted files, code reading |
Write | File write (create/overwrite) | Generate reports, produce artifacts |
Edit | Partial file edit | Modify configuration, modify code |
Glob | Wildcard file listing | Find code files |
Grep | File content search | Locate strings |
WebFetch | HTTP GET for a single page | Fetch documents/pages |
WebSearch | Online search | Retrieve information |
DeliverArtifacts | System-reserved tool, part of the "all enabled" set (when enabled_tools is omitted or empty) | Not recommended to explicitly declare in enabled_tools |
- Tool names are capitalized (
Bash, notbash); the event stream also uses the capitalized form - Omitting
enabled_toolsor setting it to an empty array[]is equivalent to enabling all built-in tools (includingDeliverArtifactsin the table above); if you want the Agent to have no tools at all, omit the entiretoolsfield or set it to[] - Each tool name in
enabled_toolsis validated—entering an unknown name (such as"Foo") will return a 400 error:"unknown tool name 'Foo'" - The old per-tool object schema (such as
{"type": "bash_20250124"}) is no longer supported
Current Format: Single Object
Tool configuration uses a single object, with specific tools toggled via the enabled_tools array:
Tool Configuration Examples
Minimal Configuration (Command Line Only)
Full Development Environment
Create a New Version (PUT Full Replacement)
Create a new version of an Agent via PUT to update the tool configuration:
PUT is a full replacement (not a patch); fields not included will be cleared. You must include the
version field for optimistic concurrency control:- Included version equals the current version → 200, version + 1
- Included version is outdated → 409
{ error: { type: "conflict_error", message: "Version conflict. Expected version N, got M." }}
curl to View the Current Tool Configuration
FAQ
Q: What happens if I do not configure tools? A: The Agent will have no tools available and can only engage in plain-text conversation. To give the Agent tool capabilities, at minimum pass [{"type":"agent_toolset_20260401"}] (equivalent to enabling all built-in tools).
Q: Can tool configuration be overridden at the Session level? A: Not currently supported. Tool configuration is bound to the Agent; all Sessions of the same Agent share the same toolset.
Q: Does the order of the tools array matter? A: No. The Agent autonomously decides which tool to invoke based on the task context.
Q: Will the version suffix change over time? A: Yes. When the API releases a new version of tools, a new date suffix will be provided. We recommend watching the Changelog to select the latest version.