reference

Tools

Every tool on the agent's belt: what it does, which surface it needs, which mode belts carry it, and how to switch one off.

Copy & share

Loading sections…

Connect MCP or install the Empryo skill

Section exports contain only that heading’s content. Markdown and text links fetch the selected content directly, without the rest of the page.

<!-- GENERATED by scripts/build-tools-doc.ts — edit packages/tools/src/constants.ts, then run bun run docs:tools. -->

The belt is bigger than what ships in a single request. Core tools are resident on every call; the rest load on demand through request_tools, so an unused tool costs nothing per turn (~300 tokens of schema each when resident).

See compound tools for why single-call tools beat step-by-step instructions, and Permissions & reach for turning one off.

The catalog

This is what /tools lists — 45 tools, each disable-able unless marked always on.

ToolWhat it doesNotes
request_toolsLet the agent list/load/unload tools on demand (saves ~300 tokens/tool/call)
skillsLet the agent search, install, and load skills from skills.sh
readRead file contents with optional line range or symbol targetalways on
edit_fileEdit, create, or write files with line-anchored matchingalways on
multi_editApply multiple edits to one or more files atomicallyalways on
undo_editUndo recent edits to a file
grepThe Genome's repo-wide search (symbol context, count mode, dep search)always on
findThe Genome's file/symbol finder: fuzzy ranked, globs, concept overviewalways on
shellExecute shell commands (background:true for servers/watchers/long builds)always on
shell_jobsBackground shell jobs: list, status, log tail/poll, wait, stop
advisorSecond opinion over this conversation from a tool-less model
linkLive link to other agents: list, send, ask (blocking), reply, broadcast, inbox, history
orchestrateMulti-agent graphs with loops: validate, save, run, watch, resume, stop
routineScheduled routines (cron): list, add, remove, enable, run now
projectAuto-detected lint, format, test, build, typecheck across 23 ecosystemsalways on
exploreDelegate a read-only question to a solo explore agent (fg or background)
dispatchSpawn parallel subagents for multi-file tasks
background_dispatchSpawn a detached agent that runs while you keep working
background_statusCheck background agents (non-blocking)
background_stopAbort a running background agent
background_awaitBlock until background agents finish and collect results
agent_sendSend a follow-up instruction to a running subagent (dispatch id or bg-N)
agent_createCreate or update a custom agent definition, dispatchable immediately
planCreate an implementation plan for large changes (7+ files)
update_plan_stepUpdate a plan step's status during execution
ask_userAsk the user a question and wait for their response
navigateLSP symbol lookup: definitions, references, callers, type hierarchiesalways on
genome_queryChain search → filter → deps → outline → read in one Genome callalways on
genome_analyzeCodebase analysis: file profiles, dead code, packages, symbol queriesalways on
genome_impactDependency graph: dependents, dependencies, cochanges, blast radiusalways on
genome_visionDisplay images and videos inline in chat (PNG, JPG, GIF, video files/URLs)TUI only
analyzeLSP diagnostics, type info, outline, code actions on a filealways on
web_searchSearch the web for documentation, APIs, error messages
find_modelFuzzy-search the model catalog: providers, models, key state
find_agentFuzzy-search custom agent definitions: name, purpose, mode, model
fetch_pageFetch readable pages or make structured HTTP probes
gitGit operations: status, diff, log, commit, push, pull, stash, branch
list_dirList directory contents (supports multiple paths + recursive depth in one call)
refactorCode transforms: extract, format, organize imports, rename/move symbols and files
memoryRead/write persistent memories across sessionsalways on
editorOpen file in embedded Neovim editorTUI only, needs the neovim addon
task_listCreate and track tasks for the current session
settingsRead/change Empryo's own settings — the running surface applies and repaints
ast_editSurgical AST editing for TS/JS — prefer over edit_file/multi_editalways on
structural_editPolyglot AST find/rewrite via ast-grep — non-TS/JS (Go, Rust, Python, …)

Host and protocol tools

Injected by the surface or the mode rather than the catalog, so they do not appear in /tools.

ToolWhat it does
final_responseMarks where the final answer starts, so it streams instead of hiding in the tool rail
respond_to_steeringReply to one steering message in place, beside the message it answers
explore_scriptRun one read-only script against the workspace API and return only its summary
code_scriptOne script that gathers, edits by symbol span in any language, verifies and reports
councilConvene 2–4 seats with their own briefs to debate one topic in a shared room
cellsRead, write and drive Cells — the agent's half of Cells & Morphs
browserDrive the embedded Chromium: snapshot, click, type, screenshot, inspect, audit
rename_tabRename this tab when the work changes fundamentally
modelLook up and switch the model a lane runs on
sparkDelegate a read-only slice to a Spark agent
agentDelegate work to a custom agent definition
reviewerJudge the current state of the repo and return PASS, FAIL or PARTIAL

Mode belts

A mode is a belt, not a personality. This is which tools each one carries.

BeltWhyTools
CoreResident on every call — schemas ship with every request.read, edit_file, multi_edit, grep, find, shell, project, memory
Always availableProtocol markers. Present in every mode, never disable-able.final_response, respond_to_steering, web_search, fetch_page, link, advisor, find_model, rename_tab
Undisable-able/tools hides these and hosts drop them from any incoming disable list.read, edit_file, multi_edit, grep, find, shell, project, memory, genome_query, genome_analyze, genome_impact, navigate, analyze, ast_edit, final_response, respond_to_steering
Restricted modesarchitect, socratic, challenge — read and analyse, no edit/shell/git.read, grep, find, genome_analyze, genome_impact, list_dir, web_search, explore, explore_script, editor, navigate, analyze, memory, skills, fetch_page, ask_user, plan, update_plan_step
Plan executionThe belt a plan runs with.read, edit_file, code_script, undo_edit, multi_edit, task_list, list_dir, shell, shell_jobs, project, grep, find, navigate, analyze, git, editor, refactor, update_plan_step, memory, skills, genome_analyze, genome_impact
Morph modeThe Cellwright belt — see Cells & Morphs.read, grep, find, list_dir, explore_script, navigate, genome_query, genome_analyze, genome_impact, analyze, edit_file, multi_edit, undo_edit, web_search, fetch_page, git, ask_user, task_list, memory, model, spark, agent, reviewer, find_model, find_agent, cells, rename_tab
Duck modeRepo-blind: the web and the agent link only.web_search, fetch_page, link, advisor, find_model, rename_tab
Orchestrate modeThe graph engineer — designs and drives runs, never edits directly.read, grep, find, list_dir, explore_script, navigate, genome_query, genome_analyze, genome_impact, web_search, fetch_page, ask_user, task_list, memory, find_agent, find_model, orchestrate, routine, background_status, background_stop, background_await, agent_send, shell_jobs, link, council, rename_tab

Switching tools off

{ "disabledTools": ["shell", "git"] }

/tools on the TUI and My tools → Permissions & reach on the desktop write the same key. Tools marked *always on* are stripped from any disable list, including a hand-edited config: disabling read or grep does not make an agent safer, it makes it fail three turns later in ways that look like a model problem.

Next

Documentation