Compound tools
One-call tools for rename, move, refactor, test, and commit. LSP-backed and verified: renaming a class across 8 files takes 3 steps instead of 19.
Copy & share
Loading sections…
Connect MCP or install the Empryo skillSection exports contain only that heading’s content. Markdown and text links fetch the selected content directly, without the rest of the page.
Compound tools do a full task in a single call. You don't have to explain every step to the agent, and the agent doesn't burn tokens guessing commands.
The tools
| Tool | One-liner |
|---|---|
rename_symbol | Rename a symbol across every file. LSP-backed, verified. |
move_symbol | Move a symbol to another file + update every import. |
rename_file | Rename or move a file + update every importer. |
refactor | Extract function/variable, organize imports, format. |
project | Auto-detected lint / typecheck / test / build across 21 ecosystems. |
navigate | Definitions, references, call hierarchy, type hierarchy. |
read | Full file, line ranges, or a single symbol by name. |
ast_edit | Surgical TypeScript/JavaScript edits - 65+ AST operations. |
See the rename & refactor recipe and test & commit recipe for copy-paste examples.
Why they exist
Without compound tools, the agent burns steps guessing:
Agent: I'll run the tests with `npm test`
Shell: npm ERR! missing script: test
Agent: Let me try `npx jest`...With project(action: "test"), one call detects your toolchain and runs the right command. Same idea for rename, move, refactor.
Benchmark
Renaming an exported class across 8 files:
| Manual approach | rename_symbol | |
|---|---|---|
| Agent steps | 19 | 3 |
| Token cost | $0.228 | $0.036 |
The tool finds the symbol itself, runs an LSP rename, verifies zero dangling references, and reports back. No exploration, no guesswork, no verification spiral.