R.5

Toolsets

The 27 toolset types of docker-agent 1.149.0, each with the tools it exposes, its options, and what it needs outside the agent file.

docker-agent toolsets printed 27 types on 2026-10-08 (our source record), and the type enum of the schema holds the same 27 names. The Tools column comes from the docs page of each type under tools/, and not documented marks a type with no page. Options are the keys of R.4 that the type reads, with the defaults the docs state. Needs says what the toolset reaches beyond the agent file: nothing, the host shell, the network, a credential, a binary, or Docker. The shared keys instruction, tools, readonly, model, defer, and toon apply to every type and are not repeated.

The 27 types

TypeToolsOptionsNeeds
a2aone tool per remote agent, named by name or from the agent cardurl (required), name, headers, allow_private_ipsthe network and the remote A2A server. A token in headers when the server was started with --auth-token
apione tool per api_config, named by api_config.nameapi_config with name, endpoint, method (GET or POST in the docs, five verbs in the schema), instruction, args, required, headers, output_schema. timeout (30), allow_private_ipsthe network. Tokens in headers through ${env.VAR}
background_agentsrun_background_agent, list_background_agents, view_background_agent, stop_background_agentnoneagents listed under sub_agents
background_jobsrun_background_job, list_background_jobs, view_background_job, stop_background_job, wait_background_job (timeout default 60)env, recall (false)the host shell
environmentnot documented. The probe summary says it reports the OS and the resolved shell, read-only, with no argumentsnone documentednothing
fetchfetch with urls, format (text, markdown, html), timeout (1 to 300)timeout (30), allowed_domains, blocked_domains, allow_private_ips (false), headers, escape_html (false)the network. GET only. Non-public addresses are refused by default
filenot documented. The probe summary says it reads, writes, and edits individual filespost_edit, allow_list, deny_list, which the schema names for filesystem and filenothing
filesystemread_file, read_multiple_files, write_file, edit_file, list_directory, directory_tree, create_directory, remove_directory, search_files_contentignore_vcs (true), post_edit (path, cmd), allow_list, deny_listnothing
gitgit_status, git_log (limit default 20, path), git_branches, git_show (ref), git_blame (path required, rev)nonenothing. It uses go-git and needs no git binary
lsplsp_workspace, lsp_hover, lsp_definition, lsp_references, lsp_document_symbols, lsp_workspace_symbols, lsp_diagnostics, lsp_code_actions, lsp_rename, lsp_format, lsp_call_hierarchy, lsp_type_hierarchy, lsp_implementations, lsp_signature_help, lsp_inlay_hintscommand (required), args, env, file_types, working_dir, version, lifecyclea language server binary, installed from the aqua registry when absent
mcpthe tools the server lists, filtered by toolsref (docker:<name> or an mcps name), or command, args, env, version, working_dir, or remote with url, transport_type (streamable or sse), headers, oauth. config, lifecycle, allow_private_ipsref: docker: needs the MCP Gateway and Docker. command needs the binary. remote needs the network and an OAuth login when the server asks for one
mcp_catalogsearch_remote_mcp_servers, enable_remote_mcp_server, list_remote_mcp_servers, disable_remote_mcp_server, reset_remote_mcp_server_authallowed_servers, blocked_serversthe network. OAuth for servers that require it. No gateway, because the catalog subset is streamable HTTP only
memoryadd_memory, get_memories, delete_memory, search_memories, update_memorypath (~/.cagent/memory/<config-name>/memory.db)a SQLite file on disk
model_pickerchange_model (model required), revert_modelmodels (required)credentials for the listed models
open_urlone tool, open_url by defaulturl (required), namea browser on the host, through open, xdg-open, or rundll32
openapione tool per operation of the documenturl (required), headers, timeout (30), max_output_bytes (30000), allow_private_ipsthe network, for the document and every call
planwrite_plan, read_plan, list_plans, delete_plan, update_plan_from_file, export_plan_to_file, set_plan_status, get_plan_statusnonethe store under ~/.cagent/plans/, shared by every agent with the type
ragone search tool named in rag_config.toolrag_config with docs, strategies (chunked-embeddings, semantic-embeddings, bm25), results, respect_vcs (true), indexing_timeoutan embedding model, so a provider credential or Docker Model Runner, and a SQLite database per strategy
schedulercreate_schedule (prompt, when required, name), list_schedules, cancel_schedule (id required)nonea running session that supports recall. Schedules are not persisted
scriptone tool per entry under shell, named by the keyshell.<name>.cmd, description, args, required, env, working_dirthe host shell
session_contextlist_sessions, read_sessionnonethe session database
shellshell with cmd (required), cwd (.), timeout (30)env, sudo_askpass (false), safer (deprecated and ignored)the host shell. Every command is classified safe, destructive, or unknown before approval
taskscreate_task, get_task, update_task, delete_task, list_tasks, next_task, add_dependency, remove_dependencypath (tasks.json)a JSON file on disk
thinkone reasoning tool. The page names no toolshared in the schemanothing. No side effects
todocreate_todo, create_todos, update_todos, list_todosshared (false)nothing
user_promptuser_prompt with message (required), title, schemanonean elicitation handler, which the TUI and CLI provide and some MCP clients do not
webhooksend_webhook with messagewebhook_config with url (required), provider (generic by default, or slack, discord, ifttt, telegram, mattermost, rocketchat, googlechat, teams), headers, chat_idthe network. The URL is itself the credential on Slack and Mattermost

Names that are not types

Two tools arrive without a toolsets entry. sub_agents injects transfer_task, and handoffs injects the tool of the same name (conflict C56). The docs built-in table lists both as types, and the schema enum and the probe exclude both.

NameToolInjected byNeeds
transfer_tasktransfer_task with agent, task, expected_output (all required), always auto-approvedsub_agents on the callerthe named sub-agent
the tool of handoffsone tool with agent (required) that moves the conversation to a local agent and opens no network connectionhandoffs on the callerthe named agent in the same file
session_planwrite_session_plan, read_session_plan, exit_plan_modethe docs list it as a built-in type. The v1.149.0 enum and the probe do not name it, so the pinned binary does not accept it as a typea per-session file under ~/.cagent/session_plans/

The docs name session_plan as a type, and the schema names 27 types without it. The schema ranks above the docs in this manual, so the manual treats session_plan as not available at the pin.

Docker Sandboxes (sbx) and Docker Agent (docker-agent) sbx 0.47.0, docker-agent 1.149.0 · bf4169c · 2026-10-07 · Edition 2026.10