Tools

This page defines the current contract for Holon's model-facing tool surface: tool families, authority classification, schema/dispatch alignment, and result envelope conventions.

The machine-readable inventory for built-in model-facing tools is model-tool-schema-inventory.json; its versioning policy and refresh workflow are documented in the model tool schema inventory reference.

Last verified: 2026-05-27 against src/types.rs ToolCapabilityFamily, src/tool/tools/mod.rs builtin_tool_definitions(), src/tool/spec.rs, src/tool/dispatch.rs.

Source RFCs

Tool families (ToolCapabilityFamily)

Tools are grouped by capability family for authority gating:

FamilyToolsAuthority
CoreAgentWaitFor, AgentGet, Enqueue, WorkItem tools, MemorySearch, MemoryGetAll agent profiles
LocalEnvironmentExecCommand, ExecCommandBatch, ApplyPatch, GetWorkspaceState, SwitchWorkspace, CreateWorktreeAll profiles
AuthorityExpandingAttachWorkspace, DetachWorkspace, RemoveWorktreePublic named agents
WebWebFetch, WebSearchAll profiles
AgentCreationSpawnAgentAll profiles

Operator notification records, delivery callbacks, and UI rendering remain runtime-owned capabilities. They are not part of the model-facing tool inventory; NotifyOperator is intentionally absent from the built-in tool registry and machine-readable schema inventory.

Complete tool listing

WorkItem plane

ToolPurpose
CreateWorkItemCreate a new open WorkItem
UpdateWorkItemMutate objective, plan_status, todo_list
PickWorkItemSet current focus
GetWorkItemRead single WorkItem with plan preview
ListWorkItemsQuery with filters
CompleteWorkItemMark complete; promote same-round assistant text as the terminal completion report
WaitForRecord task, external, or operator waiting state and yield

Task control plane

ToolPurpose
ExecCommandStart a shell command
ExecCommandBatchRun bounded sequential command batch
ListTasksCompact active-task digest with bounded output
TaskStatusSingle-task lifecycle snapshot
TaskOutputBounded output preview with optional blocking
TaskInputSend input to interactive task
TaskStopStop a running task

Agent plane

ToolPurpose
AgentGetRead current agent-plane summary
WaitForSignal turn-end after recording explicit wait state
EnqueueSchedule self-follow-up message
SpawnAgentDelegate work to a child agent

Workspace plane

ToolPurpose
GetWorkspaceStateRead bindings, active projection, worktrees, and occupancy
AttachWorkspaceAttach a workspace binding without switching
DetachWorkspaceDetach a binding; active targets fall back to agent home
SwitchWorkspaceActivate an existing workspace or execution root
CreateWorktreeCreate or safely reuse a linked worktree
RemoveWorktreeSafely remove a registered clean worktree
ApplyPatchApply unified diff patch to files

Memory plane

ToolPurpose
MemorySearchSearch agent memory sources
MemoryGetFetch exact memory content by source_ref

Web plane

ToolPurpose
WebFetchFetch HTTP/HTTPS URL
WebSearchWeb search

Tool definition contract

Each tool is defined by a BuiltinToolDefinition:

BuiltinToolDefinition {
    family: ToolCapabilityFamily,
    spec: ToolSpec { name, description, parameters },
}

Key contract:

Input/result separation

Holon strictly separates tool startup input from result metadata:

Key contract:

Result envelope

Tool execution returns a ToolResult that may be serialized as JSON or rendered as a human-readable receipt:

ExecCommand results carry additional fields: disposition, initial_output_preview, task_handle (when promoted to command_task).

Known gaps