tools.md

Daemon Tools

Tools are the daemon's hands — they let it interact with the world.

Available Tools

ToolDescriptionStatus
computer-useControl mouse, keyboard, take screenshotsPlanned
shellExecute shell commandsPlanned
browserAutomate web browsersPlanned
fileRead/write filesPlanned
codeCode operations (parse, transform, execute)Planned
memoryPersistent storage and contextPlanned
agent_listList file-backed agent package metadata without exposing package pathsImplemented
agent_readRead one user-owned agent package and return editable locationsImplemented
agent_createCreate an editable user agent package with optional sub-skills and state filesImplemented
agent_update_manifestUpdate a user-owned agent.json manifest with secret rejectionImplemented
agent_validateValidate entry skills, sub-skill references, and hardcoded path mistakesImplemented
agent_deploy_channelDeploy a production agent package to a channel route after preflight checksImplemented
channel_connection_listList channel connections using safe redacted metadataImplemented
channel_route_listList channel routes and agent bindingsImplemented
channel_route_preflightCheck for missing connections, disabled connections, broad scopes, and route conflictsImplemented

For the channel agent workflow, see Channel Agent Builder System.

Tool Interface

All tools implement a common interface:

typescript
interface Tool { name: string; description: string; inputSchema: JSONSchema; execute(input: unknown): Promise<ToolResult>; isAvailable(): Promise<boolean>; } interface ToolResult { status: "success" | "error" | "needs_input"; output: unknown; error?: string; artifacts?: Artifact[]; }

Adding New Tools

Tools are modular and can be added without modifying the core daemon:

  1. Create tool class implementing Tool interface
  2. Register tool in tool registry
  3. Tool becomes available to agent loop

See individual tool docs for implementation details.