Skip to content

Tools Reference

BMO exposes dozens of built-in tools to the agent. Use options.disabled_tools to hide built-ins globally, [agents.<id>.tools] to shape one agent’s tool set, and [permissions].allowed_tools only to skip permission prompts for named tools.

Use this page to answer two questions: which capability exists, and which boundary controls it. If a tool is missing in the TUI, check session mode, tool-gates, disabled tools, and permissions before assuming the implementation is absent.

Implementation drift check: when adding a tool, register it in internal/agent/tool_descriptors.go and add or extend a row in this reference (or open a follow-up to generate the table from the registry). Quick audit: rg 'Name: [a-z0-9_]+ToolName' internal/agent/tool_descriptors.go vs the tables below.

  • Command palette: press ctrl+p (or type /) and switch to the Tools tab to see the current tool set (after mode/tool-gate).
  • Chat: run /tools to browse the tool list, /capabilities for a compact summary, or /agent_kinds for the configured kind registry (see Agent kinds).

internal/agent/tool_descriptors.go is the canonical source for tool taxonomy. Tools tagged workflow are non-primitive; everything else defaults to primitive. Legacy multiplex tools that used the convenience tag are removed from the registry (use split primitives — see tools-workflows.md. Related composition primitives such as spawn_agent stay primitives. For when to use workflow-tagged tools vs composing primitives, see tools-workflows.md.

Tool gates and session modes are part of the tool contract. If a needed tool is blocked, treat that as a real boundary: switch to the smallest suitable mode and retry the blocked action rather than routing around the boundary with a broader tool.

sequenceDiagram autonumber participant Operator participant Palette as Command palette participant TUI as BMO TUI participant Registry as Tool registry participant Gates as Mode and policy gates participant Agent as Current agent Operator->>Palette: ctrl+p or / Palette->>TUI: request Tools tab TUI->>Registry: read registered tools and descriptors Registry-->>TUI: names, descriptions, tags, input hints TUI->>Gates: apply session mode, disabled_tools, permissions Gates-->>TUI: effective tool set and blocked reasons TUI-->>Palette: searchable tools list Operator->>Palette: filter or select tool Palette->>Agent: insert tool-aware prompt or action Agent->>Gates: propose tool call Gates-->>Agent: allow, ask approval, or refuse
stateDiagram-v2 [*] --> Proposed: agent proposes tool call Proposed --> ModeGate: session mode allows tool? ModeGate --> Blocked: not in current mode ModeGate --> DisabledGate: allowed by mode DisabledGate --> Blocked: hidden by disabled_tools DisabledGate --> PermissionGate: available PermissionGate --> Waiting: needs operator approval PermissionGate --> Executing: pre-approved Waiting --> Executing: approved Waiting --> Refused: denied Executing --> Result: tool returns output Result --> [*] Blocked --> [*] Refused --> [*]

When a sidebar item has an active diagnostic intent, BMO routes clicks to the contextually appropriate dialog instead of the default action.

Sidebar ItemActive IntentDialog Opened
Provider healthProvider error/cooldownProvider diagnostics
Protocols / MCPAuth requiredMCP connection dialog
Context lineagePruning/shedding activeContext lineage inspector
Run statusRun failedRun result review

Visual hint: items with an active intent show ! prefix in their description.

ToolDescription
viewRead a file’s contents, optionally with a line range
globFind files matching a glob pattern
grepSearch file contents with regex (ripgrep-backed)
lsList directory contents
fetchRead a local file path or URL
downloadDownload a remote URL to a local file
ToolDescription
writeWrite or overwrite a file
editApply a targeted string replacement in a file
multieditApply multiple edits to one file sequentially
apply_patchApply a unified diff patch to the working tree
delete_fileDelete a file in the workspace (path must be within workspace; user approval required)
ToolDescription
list_file_historyList file versions stored for a session (optionally filter by path)
get_file_versionGet content and metadata for a file version by ID or by session+path (latest)
delete_file_versionDelete a single file version from the session’s file history by ID (from list_file_history)

Safety note: checkpoint undo operations can run git reset --hard against the repository. Inspect the target checkpoint and preserve any work you want to keep before confirming an undo.

The agent registry exposes the checkpoint_* verbs below for the session checkpoint store. Older internal helper implementations still exist in test coverage, but integrations should use the registered checkpoint_* surface.

ToolDescription
checkpoint_createCreate a named session checkpoint for the current or specified session
checkpoint_listList saved session checkpoints for the current or specified session
checkpoint_getFetch one saved session checkpoint by ID
checkpoint_updateRename an existing session checkpoint
checkpoint_restoreRestore a session to a saved checkpoint
checkpoint_deleteDelete a saved session checkpoint
checkpoint_undoUndo the last auto-checkpoint git commit(s) with git reset --hard HEAD~N; defaults to 1 step and requires confirm: true
ToolDescription
cancel_runCancel the current session run or a specific session’s run
list_agent_runsList persisted agent runs from the durable run ledger. Optional session_id filters a single row’s session_id; optional family_session_id returns parent and child run rows in one list (session_id or parent_session_id match — same idea as /debugger and GET /v1/agent-runs?family_session_id=…). If both are set, family_session_id wins for the session filter. MCP: bmo_list_agent_runs (opt-in via exposed_tools) returns the same JSON as GET /v1/agent-runs (full run records).
get_session_phasesRead the latest persisted per-turn phase timeline for a session (same source as TUI gloss). This is not a live process list; for in-flight coordination signals see the TUI Activity row when enabled. Integrators: /gloss is a view over this ledger—prefer get_session_phases, get_agent_run, and get_agent_run_events for automation rather than parsing gloss output.
get_agent_run_eventsList ordered events for one persisted agent run (includes bash runtime seam kinds sandbox_exec_started, local_shell_started, background_job_started when recorded, alongside phases, tools, etc.)
get_agent_runGet one persisted agent run plus derived artifacts
update_agent_runUpdate a persisted agent run by run_id; currently supports action: "cancel" for active runs
fork_agent_runFork a run at a checkpoint-backed step into a new branch session
delete_agent_runDelete a persisted agent run and its events from the ledger

Ledger bootstrap: Durable run rows need a data directory with bmo.db and a configured run store (normal bmo / bmo serve app with SQLite). The OpenAI-compat ledger path additionally requires [options.openai_compat]. When the store is not configured, list/get return errors consistent with the topic. See Durable run ledger.

ToolDescription
bashRun a shell command and return output
ToolDescription
job_outputRead output from a running background bash job
job_killTerminate a background bash job
job_listList active and recent background bash jobs
ToolDescription
run_testsRun Go tests via go test -json and return structured pass/fail/skip results, elapsed time, failure text, and command metadata

Status/inspection tools are available so agents can understand host runtime state. Mutating process-lifecycle tools are high-risk and default off: set BMO_ENABLE_PROCESS_LIFECYCLE_TOOLS in the BMO process environment to register them.

ToolAvailabilityDescription
daemon_statusDefaultInspect daemon runtime status
autopilot_statusDefaultInspect autopilot runtime status: posture, pillars, PID files, manifest, and recent autopilot.fired events
daemon_restartBMO_ENABLE_PROCESS_LIFECYCLE_TOOLSRestart the managed daemon process
autopilot_upBMO_ENABLE_PROCESS_LIFECYCLE_TOOLSStart the long-lived autopilot/server process
autopilot_downBMO_ENABLE_PROCESS_LIFECYCLE_TOOLSStop the long-lived autopilot/server process
ToolDescription
configRead or write curated BMO config keys and refresh provider metadata (multiplexed: one tool, seven actions). Use action check, list, get, set, unset (or delete), reload, or update_providers. Covers the writable Settings dialog/runtime knobs plus curated model selectors; update_providers folds in bmo update-providers; writes go to the user config file and reload live config when runtime reload is available.
get_configSanitized raw config inventory; use get_config_status for layered-config posture and bmo config explain for field provenance
config_checkCheck whether a curated config key is set
config_listList all curated config keys with current values
config_getRead one curated config value
config_setSet a curated config value
config_unsetUnset a curated config key (restore default)
config_reloadReload config from disk
config_update_providersRefresh provider metadata
config_statusCompatibility text-line summary for existing agents; prefer get_config_status for structured layered-config status
get_config_statusStructured layered-config status shared with bmo config show-config-status, /config-status, GET /v1/config-status, and MCP
get_provider_auth_wizardProvider OAuth bootstrap status and bmo auth <platform> commands (TUI: Manage Providers)
ToolDescription
get_dirsReturn the current working directory, data directory, and loaded config path/dir
list_projectsList tracked BMO projects from the shared global projects registry (same data as bmo projects --json)
logs_reportReturn structured log entries from the current project’s bmo.log file
stats_reportReturn the same usage and audit stats JSON as bmo stats --json
capabilitiesReturn BMO’s short in-chat capability summary
list_agent_kindsList configured agent kinds from effective merged config (prompt id, mesh capability tags, explicit allowlist counts)—registry scope, not the same as capabilities
list_tool_capabilitiesList the currently allowed tools for the active agent (name + description)
list_modelsList configured models and availability from the current config
runtime_featuresList runtime feature flags and availability details from the current instance
session_observabilityRead the session-summary member of the run-observability family for one session family: bounded recent run usage, token/cost totals, performance, interruptibility, and adaptive decision trace parity (same JSON as GET /v1/sessions/{id}/observability when bmo serve / bmo up has wired the HTTP server; optional recent_runs_limit matches the HTTP query param)
run_cue_ledgerRead the cue-oriented member of the run-observability family for one session family: active actors, cue state, expected next action, expected evidence, and recovery controls (same JSON family as GET /v1/sessions/{id}/run-cue-ledger)
inspect_run_traceRead the trace-lens member of the run-observability family for one run in the current session family: ordered tool-call-only events, outcome, and duration metadata (same JSON as GET /v1/agent-runs/{run_id}/trace when the caller supplies or inherits session scope; use get_agent_run_events for the broader event stream)
session_diagnoseContext-budget and resume-health breakdown for one session (same JSON as bmo session diagnose --format=json; MCP parity: bmo_session_diagnose when listed in options.mcp_server.exposed_tools)
workspace_snapshotReturn the current workspace environment snapshot, including observer slices, optional heat-map hints, and optional environment_fields (v2: linear TTL–decayed marker intensity, optional half-life via bmo_field_half_life_seconds on leave_marker payloads, optional global session/path depositions, optional bmo_field_weight_permille) when [options.workspace_environment_fields] is enabled
workspace_claimAcquire, release, list, or negotiate path-scoped shared-workspace claims. Soft claims are advisory; hard claims block overlapping mutation tools from other sessions until release, yield, expiry, or negotiation.
leave_markerCreate, list, or delete workspace stigmergy markers used for handoffs and warnings
fleet_regulation_statusReturn bounded fleet-regulation aggregates and the current recommendation/proposal state
quality_gates_postureRead metadata-only Quality Gates posture: armed surfaces, actions, judge model status, fail-open/fail-block policy, and recent decision counts
get_adaptive_orchestrationRead adaptive orchestration parity JSON for the session (same payload as MCP bmo_get_adaptive_orchestration; requires options.adaptive_orchestration.enabled)
get_compaction_reactionsRead bounded compaction reaction gate telemetry for the session plus streaming semantic quality-gate metadata when the session compactor has observed it (same source as the TUI /compaction-reactions inspector)
describe_contextRead a panoramic context snapshot for the session: token budget, effective pruning flags, memory configuration, compaction-reaction summary, shared session compaction posture, and codebase_context counts/status (same source as the TUI /context hub). Optional refresh_codebase_context: true runs an auxiliary snapshot walk subject to options.codebase_context.min_refresh_interval_seconds
eval_shadow_summaryReturn the bounded eval-shadow posture summary across recent runs, scorecards, latest timestamps, and proposal state so prompt and orchestration changes are measurable without enumerating raw artifacts

Requires options.operating_packs = true in config and a session pack controller. Parity for the read-only JSON snapshot is documented in Operating mode parity.

ToolDescription
session_set_packActivate an operating pack for the current session (preset id from options.operating_mode_presets or pack name/path). HTTP parity: POST /v1/session-operating-mode (Bearer auth; same fields as tool JSON).
session_clear_packClear the active operating pack for the session. HTTP parity: DELETE /v1/session-operating-mode?session_id=….
session_list_packsList discoverable operating packs for the workspace
session_get_active_packReturn details for the session’s active pack, if any
get_operating_modeReturn redacted posture JSON: session_id, enabled, state, active_operating_pack, operating_mode_preset_id, optional pack_manifest_path, diagnostics, and active-pack counts (same object as GET /v1/session-operating-mode and MCP bmo_get_operating_mode)
ToolDescription
init_projectRun the project initialization flow that discovers context, loads instructions, and marks the project initialized
set_plan_artifactStore or update the staged-workflow plan artifact (markdown); advance to execute with /approve in the TUI or approve_plan
get_workflow_phaseRead the current staged-workflow phase and approval-pending state
get_staged_workflow_statusView the bounded staged-workflow session posture
approve_planApprove the staged plan and move the session to execute phase (same as TUI /approve)
return_to_planMove a staged workflow back to the planning phase
get_planRead the currently stored plan artifact
clear_planRemove the stored plan artifact
todosCreate or replace the full session-local structured task list; not for Markdown checkboxes or workstream findings
list_todosRead the current session-local structured task list without modifying it
add_todoAppend one session-local structured task item; not for Markdown checkboxes or workstream findings
update_todoUpdate one session-local structured task item by 0-based index from list_todos
delete_todoRemove one session-local structured task item by 0-based index from list_todos
run_recipeExecute one recipe YAML as a workflow run
recipe_listList available recipes
recipe_validateValidate a recipe without running it
schedule_createCreate a scheduled recipe job
schedule_listList all scheduled recipe jobs
schedule_run_nowRun a scheduled job immediately
schedule_pausePause a scheduled job
schedule_unpauseUnpause a scheduled job
schedule_deleteDelete a scheduled job
schedule_updateUpdate an existing scheduled job
schedule_inspectInspect a single scheduled job (details and running state)
schedule_runsList run history for a scheduled job
schedule_run_contentGet output/content of a run by run ID
get_scheduler_statusView scheduler posture
get_provider_statusView provider-management posture
contract_rerunRe-run change-contract validations for the current work
contract_list_obligationsList outstanding change-contract obligations
contract_waive_obligationWaive one change-contract obligation by ID
analyze_ripple_impactBest-effort follow-up edits in other files after a change (ripple/LSP-backed); registered tool name (implementation file suggest_next_edits.go)
summarize_sessionSummarize session history into a compact artifact
spawn_worktree_overrideRead or change the session-level next-spawn worktree and auto-remove override
ToolDescription
staged_listList staged file changes awaiting acceptance
staged_acceptAccept one staged change
staged_rejectReject one staged change
staged_accept_allAccept all staged changes in the current batch
ToolDescription
pty_spawnSpawn a full pseudo-terminal process (interactive shells, REPLs, etc.)
pty_readRead output from a running PTY session
pty_writeSend input to a PTY session
pty_killTerminate a PTY session
pty_listList all active PTY sessions
pty_cleanupClean up finished or stale PTY sessions
ToolDescription
web_fetchFetch a URL and return the page content as markdown or HTML
web_searchSearch the web and return results
agentic_fetchMulti-step fetch chain for complex web research
sourcegraphSearch public repositories with Sourcegraph’s code search API
ToolDescription
semantic_searchSearch the codebase semantically using natural language queries instead of literal text patterns
find_similar_codeFind code chunks that are semantically similar to code at a specific file and line, enabling clone detection and refactoring discovery
ToolDescription
memory_storeSave a fact, decision, or convention to persistent memory
memory_searchSearch stored memories; semantic when vector indexing is enabled, keyword-based otherwise
memory_listList recent memories in a scope (project, user, or local)
memory_getGet a single memory by ID and scope (same as GET /v1/memory/{id})
memory_updateUpdate a memory’s content by ID and scope
memory_forgetDelete a memory by scope and ID
memory_projection_listList memory projections
memory_projection_createCreate a memory projection
get_memory_projectionRead one projection’s status and metadata
memory_projection_set_read / memory_projection_set_write / memory_projection_rebuild / memory_projection_retry / memory_projection_retire / memory_projection_delete / memory_projection_rollback_readProjection lifecycle primitives (when memory projections enabled)
ToolDescription
list_mcp_promptsList available prompts from a connected MCP server (read-only; server-owned)
get_mcp_promptRender an MCP prompt with arguments and return the prompt text (read-only; server-owned)
list_mcp_resourcesList available resources from connected MCP servers (read-only; server-owned)
read_mcp_resourceRead a specific resource from an MCP server (read-only; server-owned)
mcp_list_rootsList current MCP root overrides per server (same as GET /v1/mcp/roots)
get_mcp_rootGet the active roots for one MCP server
mcp_create_rootAdd one filesystem root to an MCP server without replacing the rest
mcp_update_rootReplace one existing MCP root with a new filesystem path
mcp_delete_rootRemove one filesystem root from an MCP server without clearing the whole override
mcp_update_rootsSet filesystem roots for an MCP server (same as PUT /v1/mcp/roots/{serverName})
mcp_clear_rootsClear a persisted MCP root override for one server
mcp_resolve_elicitationAnswer an MCP server’s pending elicitation request
ToolDescription
mcp_register_serverRegister or replace a session-scoped runtime MCP server entry (not persisted; may require user approval)
mcp_update_serverUpdate fields on a session-scoped runtime MCP server entry (not persisted)
mcp_unregister_serverRemove a session-scoped runtime MCP server entry (not persisted)
mcp_get_serverRead one server block (redacted where appropriate)
list_mcp_serversList configured MCP servers and connection metadata
ToolDescription
agentRun a child task agent with its default tool set
custom_agent_listList custom agents from disk
get_custom_agentLoad one custom agent by name (metadata and instructions)
create_custom_agentCreate a new custom agent definition on disk (mutates config data; may require approval)
update_custom_agentUpdate an existing custom agent definition
delete_custom_agentDelete a custom agent definition file
custom_agent_runQueue a custom agent into the current session by name
spawn_agentSpawn a child agent with a prompt and scoped tool set
wait_agentBlock until a child agent completes; stream or collect output
send_inputInject a follow-up message into a running child agent
get_agent_outputRead partial or final output without blocking
close_agentTerminate a child agent and release its resources
list_agentsList all active child agents with their status (includes spawned_by + explain when available)
spawn_agents_on_csvFan out agents over CSV rows; each row becomes an isolated job
report_agent_job_resultReport one worker result back to a CSV fan-out batch
create_teamProvision a named team of persistent, goal-oriented sub-agents
mesh_resolveResolve agents by capability; returns node_id and name for use with create_team (requires mesh)
decompose_taskBreak a goal into subtasks before or during team creation
team_task_createAdd a task to an existing team
team_task_listList tasks for a team
team_task_getGet one task from a team
team_task_updateClaim, run, complete, or fail a team task
team_task_deleteDelete one task from a team
team_message_sendSend a direct message to a teammate
team_message_listRead queued team messages
team_message_getRead one team message
team_eventsStream or list team lifecycle events
team_broadcastSend the same message to all teammates
team_shutdownShut down a running team and collect task status
list_teamsList known teams
get_teamGet one team and its metadata
delete_teamDelete a persisted team
team_cleanupRemove stale team state and cached resources
team_updateUpdate editable team metadata
team_package_pullPull one OCI team package into the cache (same as CLI bmo team package pull).
team_package_listList cached team packages (same as CLI bmo team package list).
team_package_removeRemove one cached team package (same as CLI bmo team package remove).
team_package_updateRefresh a cached team package (same as CLI bmo team package update).

In the TUI, ctrl+enter or /enqueue queues user text for the turn after the current run completes. The queue_enqueue tool uses the same coordinator queue (not the same contract as send_message, which injects into the transcript with permission flow). Technical detail: prompt-queue-parity.md.

ToolDescription
create_sessionCreate a new session
switch_sessionSwitch the active session
list_sessionsList known sessions
get_sessionRead one session’s metadata
update_sessionUpdate editable session metadata
delete_sessionDelete a session
send_messageInject a user message into the current or a specified session. Content is persisted as given; for maintained review prompts, use view on the workspace-root prompt corpus (../docs/prompts/<file>.md from agent-cli/bmo/, applied from agent-cli root).
get_messageGet one message by ID
list_messagesList messages in the current session
session_searchSearch prior session transcripts or list recent sessions
update_messageUpdate editable message fields
delete_messageDelete a message
get_prompt_queue_statusInspect the current queued-prompt state
queue_enqueueEnqueue a prompt to run after the current turn completes (TUI ctrl+enter / /enqueue parity)
clear_prompt_queueClear queued prompts waiting to run
describe_hooksDescribe currently configured session hooks
ToolDescription
operations_create_deployCreate a deploy operation
operations_create_promoteCreate a promote operation
operations_create_rollbackCreate a rollback operation
operations_create_infra_claimCreate an infra-claim operation
operations_approveApprove a pending operation
operations_denyDeny a pending operation
operations_expireExpire a pending operation
operations_completeMark an operation as completed
operations_failMark an operation as failed
operations_deleteDelete an operation

Requires options.edit_capsules = true and a wired edit-capsule service. HTTP list/create/update/delete for capsules is documented under Edit capsules (HTTP) (Bearer auth; POST starts a capsule only and does not mirror the full create_edit_capsule tool flow).

ToolDescription
delete_edit_capsuleDelete an edit capsule by ID
ToolDescription
list_skillsList available Agent Skills from configured skill paths
read_skillRead one skill document by name
get_recipeRead one recipe by name
list_worktreesList managed git worktrees
worktree_getGet one worktree and its metadata
worktree_createCreate a managed git worktree
worktree_updateUpdate editable worktree metadata
worktree_removeRemove one managed git worktree
worktree_prunePrune stale managed worktrees

Unified pending prompts (tool permissions, MCP elicitations, agent clarifications). Same model as the TUI /questions command; see Operator questions.

ToolDescription
list_pending_questionsList pending questions (optional session / scope filters)
get_questionFetch one question by id
resolve_questionResolve a question (grant/deny/answer depending on source)
ask_questionCreate an agent clarification prompt (when enabled)
ToolDescription
list_pending_permissionsList permission requests awaiting a user decision
permission_grantApprove a pending permission request
permission_denyDeny a pending permission request
checkpoint_createCreate a session checkpoint
checkpoint_listList available checkpoints
checkpoint_getRead one checkpoint
checkpoint_updateUpdate editable checkpoint metadata
checkpoint_restoreRestore a checkpoint-backed branch or session state
checkpoint_deleteDelete a checkpoint
ToolDescription
session_modeRead or mutate the shared session-mode status family: current mode, reachable modes, deferred mode-change posture, and the latest bounded autoselect/manual-override fact for the session
set_session_modelSwitch the current session to a configured model
set_reasoning_effortUpdate the current model’s reasoning-effort setting when supported

Workflow-tagged tools (internal/agent/tool_descriptors.go)

Section titled “Workflow-tagged tools (internal/agent/tool_descriptors.go)”

These tools are tagged workflow in the registry (multi-step or bundled behavior). Everything else defaults to primitive. Multiplex tools such as contract_obligations, fleet_policy, legacy workflow_checkpoint, daemon_control, autopilot_control, and memory_projection_update are not registered; use the split primitives listed in the split-primitives section.

ToolDescription
agentRun a child task agent with its default tool set.
spawn_agents_on_csvFan out agents over CSV rows; each row becomes an isolated job.
agentic_fetchMulti-step fetch chain for complex web research.
create_teamOne-call mesh team formation: team record, spawned teammates, optional preloaded subtasks (primitive alternative: mesh_resolve + decompose_task + team_create + spawn_agent + team_task_create).
arena_workflow_list / arena_workflow_start / arena_workflow_status / arena_workflow_update / arena_workflow_accept / arena_workflow_deleteArena workflow tool family (multi-step arena run lifecycle).
workflow_define / workflow_start / workflow_checkpointUnified v2 workflow tool family for defining, starting, and checkpointing multi-step workflows.
execute_dagExecute a validated A2A DAG with checkpoint support.
orchestrate_workflowExecute a DAG of A2A invocations with checkpoint support.
deploy_agentBuild, push, and deploy an agent image (multi-step deploy workflow).
deploy_fleetDeploy multiple agents from a fleet specification (multi-step fleet deploy workflow).

Staged workflow uses set_plan_artifact, get_workflow_phase, get_plan, clear_plan, return_to_plan, and approve_plan (all primitive in the registry). There is no submit_plan tool; approve with /approve or approve_plan.

Bundled pipelines (primitive taxonomy, multi-step runtime): run_recipe and summarize_session are primitive in registry taxonomy but internally run multi-step pipelines (RegistryRuntimeShapeBundledPipeline). They are not tagged workflow.

Common primitives near workflows: init_project, decompose_task, contract_rerun, contract_list_obligations, contract_waive_obligation, get_config, get_config_status, mcp_reconcile_tools, analyze_ripple_impact, spawn_agent, mesh_resolve, workflow_checkpoint_*, fleet_policy_*, memory_projection_*, get_memory_projection, daemon_status, autopilot_status.

Workflow-tools inspect family: Use bmo config show-workflow-tools for the config-only grouped view, /workflow-tools for the live TUI report, get_workflow_tools_status for the agent-native JSON surface, GET /v1/workflow-tools for HTTP, and bmo_get_workflow_tools_status for MCP. The shared snapshot keeps workflow-tagged tools, bundled-pipeline primitives, and staged-workflow controls separate with bounded availability reasons.

Primitive-tools inspect family: Use bmo config show-primitive-tools for the config-only grouped view, /primitive-tools for the TUI grouped report, get_primitive_tools_status for the agent-native JSON surface, GET /v1/primitive-tools for HTTP, and bmo_get_primitive_tools_status for MCP. The shared snapshot keeps direct single-action primitives, bundled-pipeline primitives, and gated/runtime-sensitive primitives separate, and includes bounded recent primitive-family activity from the shared execution boundary.

See tools-workflows.md for rationale and plan-phase details.

ToolDescription
deploy_agentBuild, push, and deploy an agent image (workflow)
deploy_fleetDeploy multiple agents from a fleet specification (workflow)
create_fleetDeclare one or more remote agents in the fleet registry without deploying them
list_deployed_agentsList all deployed agents and their status
deployed_agent_inspectInspect one deployed agent by name or ID
deployed_agent_connectConnect to a deployed agent’s runtime
deployed_agent_stopStop a running deployed agent
deployed_agent_removeRemove a deployed agent from the registry
deployed_agent_deleteDelete a deployed agent and its resources
ToolDescription
plugin_listList installed plugins from the shared plugin directory
plugin_installInstall a plugin from a git repository or local git checkout (approval required)
plugin_updatePull the latest version of an installed plugin (approval required)
plugin_removeRemove an installed plugin from the shared plugin directory (approval required)
ToolDescription
invoke_a2aDelegate to a remote A2A agent: agent_card_url, deployed agent_name, or capability (mesh resolve + invoke; multi-candidate transport fallback). Continues via task_id / context_id. See A2A.
delete_a2a_taskDelete an A2A task by ID
execute_dagExecute a validated A2A DAG with checkpoint support
orchestrate_workflowExecute a DAG of A2A agent invocations with dependency tracking, parallel fanout, and template interpolation
save_workflow_templateSave a named DAG workflow template for later reuse
list_workflow_templatesList saved DAG workflow templates
get_workflow_templateLoad one saved workflow template by name
ToolDescription
lsp_diagnosticsGet live diagnostics (errors, warnings) from attached language servers
lsp_symbols_overviewGet a semantic outline of the symbols in a file, including exact selectors for follow-on edits
lsp_find_symbolFind symbols semantically across the workspace and return exact selectors for follow-on edits
lsp_referencesFind all references to a symbol
lsp_rename_symbolRename a symbol semantically and apply declaration and reference edits through BMO’s normal write pipeline
lsp_replace_symbol_bodyReplace the full definition range of a symbol using its exact semantic selector
lsp_insert_before_symbolInsert content immediately before a symbol definition boundary
lsp_insert_after_symbolInsert content immediately after a symbol definition boundary
lsp_ripple_impactGet ranked list of files referencing changed symbols
lsp_restartRestart a language server

Use the semantic symbol tools when you want symbol-aware navigation or edits instead of grep-first text matching.

  1. Run lsp_symbols_overview when you know the file and need its structure, or lsp_find_symbol when you know the symbol name but not the file.
  2. Copy the exact selector from the result.
  3. Run lsp_rename_symbol, lsp_replace_symbol_body, lsp_insert_before_symbol, or lsp_insert_after_symbol.
  4. If staging is enabled and the edit touches multiple files, review the staged batch before accepting it.
  • name_path is the human-readable semantic path for a symbol within a file, such as Coordinator.Run. It is the default selector to copy out of discovery results.
  • symbol_key is the more precise selector when the runtime surfaces it. It is intended for duplicate, overloaded, or otherwise ambiguous symbol paths.
  • Prefer exact semantic selectors over reconstructing symbol names from raw source text.

Semantic renames can touch more than one file because the language server may return declaration and reference edits together. BMO routes those edits through the same permission, staging, history, and reflection pipeline as other write tools. When staging is enabled, review the staged batch first and then accept or reject it like any other grouped edit.

  1. Discover the declaration:
{"tool":"lsp_find_symbol","query":"Run","path":"internal/agent"}
  1. Rename using the exact selector returned by discovery:
{
"tool": "lsp_rename_symbol",
"file_path": "internal/agent/coordinator.go",
"name_path": "Coordinator.Run",
"new_name": "Execute"
}
  1. If BMO stages a multi-file rename, review the staged batch and accept it once the declaration and references look correct.
  • There is no dedicated file_picker or open_editor tool. File attachment and file-editing parity is achieved through send_message, view, edit, write, and apply_patch, which operate directly on workspace paths.
  • Plugin management has agent parity through plugin_list, plugin_install, plugin_update, and plugin_remove. The mutating plugin tools still require approval because they change the shared plugin directory.
  • bmo auth <platform> is intentionally human-only bootstrap. It requires browser or device-code handoff, so agents should surface the need to re-authenticate rather than trying to complete the login flow themselves.
  • Process-lifecycle mutation is gated rather than broadly available. Agents may inspect process-backed state (daemon_status, autopilot_status, schedule_inspect) by default. Starting/stopping/restarting long-lived processes requires operator opt-in with BMO_ENABLE_PROCESS_LIFECYCLE_TOOLS before daemon_restart, autopilot_up, or autopilot_down are registered.
  • LSP tools appear when BMO can attach a language server for the current workspace.
  • Staging tools appear when staged file review is enabled for the current run.
  • sourcegraph is only useful when Sourcegraph access is configured.
  • semantic_search and find_similar_code require the embedding service to be enabled in config.
  • MCP resource tools depend on connected MCP servers.
  • Scheduling and memory tools depend on the relevant runtime features being enabled in config.
  • decompose_task is only available when orchestrator mode is enabled.
[options]
disabled_tools = ["web_search", "sourcegraph"]
[agents.coder.tools]
allowed = ["view", "grep", "glob", "bash"]

Only the listed tools are offered to that agent. To skip approval prompts without hiding tools, use [permissions].allowed_tools.

Tool taxonomy and gates
Available registryBuilt-in tools, MCP tools, workflow tools, and configured agent tools.
Mode and agent policySession mode, agent kind, disabled tools, and tool categories narrow the set.
Permission boundaryAllowed tools skip prompts; risky actions still require approval unless explicitly configured.
Runnable actionThe agent receives only the effective tool surface for the current run.
If a tool is absent, debug the funnel from registry to permissions before assuming the feature is missing.