> ## Documentation Index
> Fetch the complete documentation index at: https://soulforge.proxysoul.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Compound tools

> One call does the complete job — rename, move, refactor, test, commit.

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 23 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](/recipes/rename-refactor) and [test & commit recipe](/recipes/test-and-commit) 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.
