tools — the tool surface available to agents

SYNOPSIS

read_file(path, [offset], [limit])             Read VFS file content
write_file(path, content)                      Create or overwrite a file
edit_file(path, old_string, new_string)        Surgical edit to an existing file
bash(command)                                  Run shell commands in sandboxed WASM shell
javascript(code)                               Execute JS with VFS and shell access
send_message(text)                             Inter-agent messaging (cone + scoops)
list_scoops()                                  List active scoops (cone only)
scoop_scoop(name, [model], [prompt])           Create a scoop (cone only)
feed_scoop(scoop_name, prompt)                 Send work to a scoop (cone only)
drop_scoop(scoop_name)                         Remove a scoop (cone only)
update_global_memory(content)                  Update shared CLAUDE.md (cone only)

PHILOSOPHY

Virtual CLIs over dedicated tools. New capabilities should be shell commands, not dedicated tools. MCP burns context tokens; CLI tools compose naturally. Prefer bash over adding a bespoke tool whenever possible.

The active tool surface is intentionally small: five base tools plus scoop-management. Everything else — browser automation, code search, file discovery, data processing — goes through bash and the 78+ commands available in the WASM shell.

BASE TOOLS

Available to all agents (cone and scoops alike).

NANOCLAW TOOLS

Scoop management and inter-agent communication.

BROWSER AUTOMATION

There is no dedicated browser tool. Browser automation goes through bash using shell commands: playwright-cli, playwright, or puppeteer. This is intentional — composing through the shell avoids MCP token overhead and lets you chain browser actions with other CLI tools naturally.

# Take a screenshot
bash("playwright-cli screenshot https://example.com /workspace/shot.png")

# Navigate and extract text
bash("playwright-cli evaluate 'document.title' --url https://example.com")

Use shell commands through bash for all code and file search:

# Recursive code search with ripgrep
bash("rg 'createBashTool' /workspace/src --type ts")

# Find files by pattern
bash("find /workspace -name '*.ts' -type f")

# Search with context
bash("grep -rn 'TODO' /workspace/src")

TOOL UI

Tools can inject interactive UI elements into the chat mid-execution using the sprinkle-based tool UI system. This renders blocking inline cards — the tool pauses execution until the user interacts. Used for approval dialogs, file pickers, OAuth flows, and any tool needing user input during execution.

SEE ALSO

man bash, man scoop, man jsh, man sprinkle, man skill