Agent Tools
Tools determine what an Agent can do. By configuring the tools field when creating or updating an Agent, you precisely control its capabilities.
What Tools Do
When executing a task, the Agent decides which capabilities it can call based on the tools configuration. All tools are configured through a single object { "type": "agent_toolset_20260401", "enabled_tools": [...] }, selectively enabling atomic tools in the enabled_tools array.
When enabled_tools is a non-empty allowlist, tools outside the list are not visible to the model and no invocation attempt is made. When enabled_tools is omitted or an empty array, all built-in tools are exposed to the model. When the tools field itself is omitted or set to [], the model receives no tool schema at all (see FAQ below).
Available Tools
|
Tool name (enabled_tools value) |
Purpose |
Typical use cases |
|
|
Shell command execution |
Installing dependencies, running scripts, calling APIs with curl |
|
|
File reading |
Viewing mounted files, code reading |
|
|
File writing (create/overwrite) |
Generating reports, producing output |
|
|
Partial file editing |
Changing configuration, editing code |
|
|
Glob pattern file listing |
Finding code files |
|
|
File content search |
Locating strings |
|
|
HTTP GET a single page |
Fetching documentation/pages |
|
|
Web search |
Looking up information |
|
|
System-reserved tool. Present in the "all on" set (when |
Not recommended to declare explicitly in |
Notes:
-
Tool names are capitalized (
Bashnotbash); they also appear capitalized in event streams -
Omitting
enabled_toolsor passing an empty array[]enables all built-in tools (includingDeliverArtifactslisted above). If you want the Agent to have no tools at all, omit the wholetoolsfield or set it to[]. -
Each tool name in
enabled_toolsis validated — writing an unknown name (e.g."Foo") returns 400:"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 is a single object that toggles specific tools via the enabled_tools array:
{
"tools": [
{
"type": "agent_toolset_20260401",
"enabled_tools": ["Bash", "Read", "Write", "Edit", "Glob", "Grep", "WebFetch", "WebSearch"]
}
]
}
Set when creating an Agent:
curl -X POST https://api.qoder.com.cn/api/v1/cloud/agents \
-H "Authorization: Bearer $QODER_PAT" \
-H "Content-Type: application/json" \
-d '{
"name": "dev-agent",
"model": "ultimate",
"instructions": "You are a development assistant",
"tools": [
{
"type": "agent_toolset_20260401",
"enabled_tools": ["Bash", "Read", "Write", "Edit", "Glob", "Grep", "WebFetch", "WebSearch"]
}
]
}'
Configuration Examples
Minimal (CLI only)
{
"tools": [
{
"type": "agent_toolset_20260401",
"enabled_tools": ["Bash"]
}
]
}
Full Development Stack
{
"tools": [
{
"type": "agent_toolset_20260401",
"enabled_tools": ["Bash", "Read", "Write", "Edit", "Glob", "Grep", "WebFetch", "WebSearch"]
}
]
}
Create a New Version (PUT Full Replacement)
Use PUT to create a new version of the Agent with updated tool configuration:
curl -X PUT https://api.qoder.com.cn/api/v1/cloud/agents/agent_abc123 \
-H "Authorization: Bearer $QODER_PAT" \
-H "Content-Type: application/json" \
-d '{
"version": 1,
"tools": [
{
"type": "agent_toolset_20260401",
"enabled_tools": ["Bash", "Read", "Write", "Edit"]
}
]
}'
PUT is a full replacement (not a patch) — fields not included will be cleared. You must include the version field for optimistic concurrency control: - If the supplied version matches the current version: 200, version increments by 1 - If the supplied version is stale: 409 { error: { type: "conflict_error", message: "Version conflict. Expected version N, got M." }} Existing Sessions are unaffected; new Sessions use the updated configuration.
Inspect Current Tool Configuration
curl https://api.qoder.com.cn/api/v1/cloud/agents/agent_abc123 \
-H "Authorization: Bearer $QODER_PAT" | jq '.tools'
Example output:
[
{
"type": "agent_toolset_20260401",
"enabled_tools": ["Bash", "Read", "Write", "Edit", "Glob", "Grep", "WebFetch", "WebSearch"]
}
]
FAQ
Q: What if I don't configure tools? A: The Agent has no tools available and can only have plain-text conversations. To give the Agent any tool capability, pass at least [{"type":"agent_toolset_20260401"}] (which enables all built-in tools).
Q: Can I override tools at the Session level? A: Not currently. Tool configuration is bound to the Agent, and all Sessions for that Agent share the same toolset.
Q: Does the order of tools matter? A: No. The Agent decides which tool to invoke based on the task context.
Q: Will the version suffix change over time? A: Yes. As new tool versions ship, new dated suffixes are introduced. Watch the changelog and adopt the latest suffix.