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.
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.