All Products
Search
Document Center

:Agent Tools

Last Updated:Jul 03, 2026

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

Bash

Shell command execution

Installing dependencies, running scripts, calling APIs with curl

Read

File reading

Viewing mounted files, code reading

Write

File writing (create/overwrite)

Generating reports, producing output

Edit

Partial file editing

Changing configuration, editing code

Glob

Glob pattern file listing

Finding code files

Grep

File content search

Locating strings

WebFetch

HTTP GET a single page

Fetching documentation/pages

WebSearch

Web search

Looking up information

DeliverArtifacts

System-reserved tool. Present in the "all on" set (when enabled_tools is omitted or empty).

Not recommended to declare explicitly in enabled_tools.

Notes:

  • Tool names are capitalized (Bash not bash); they also appear capitalized in event streams

  • Omitting enabled_tools or passing an empty array [] enables all built-in tools (including DeliverArtifacts listed above). If you want the Agent to have no tools at all, omit the whole tools field or set it to [].

  • Each tool name in enabled_tools is 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.