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, UseWorkspaceAll profiles
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
TaskListCompact active-task digest
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
UseWorkspaceSwitch active workspace
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