Six tools. One radical reduction.

Each tool replaces multiple native Claude calls with a single efficient one. Together, they cut 40–70% of your token spend.

37 supported languages

TypeScriptJavaScriptPythonRustGoJavaCC++C#RubyPHPSwiftKotlinScalaHaskellLuaRElixirErlangOCamlJuliaZigNimTOMLYAMLJSONHTMLCSSMarkdownBashFishDockerfileSQLGraphQLProtoTerraformHCL
🌳

AST Symbol Index

270× less tokens

270× fewer tokens. Every symbol, instantly.

The AST Symbol Index builds a local tree-sitter powered map of every symbol in your codebase. When Claude needs to find a function or type, instead of reading entire files (8,000+ tokens each), it queries the index and gets back exactly what it needs in ~30 tokens.

Tree-sitter parses your code at the AST level — not just text search. This means it understands scope, knows the difference between a definition and a usage, and handles complex syntax across all 37 supported languages. The index is rebuilt incrementally as files change.

MetricBeforeAfter
Symbol lookup cost8,200 tokens30 tokens
Calls to find definition3–5 calls1 call
Supports languages37 grammars
// Before: read entire file to find a type
Read("src/auth/types.ts")  // 8,200 tokens

// After: query the index directly
Sql({ op: "search", name: "AuthUser", type: "interface" })
// → returns: file:line, body, references. ~30 tokens
🔍

Smart Search

7 calls → 1

Ripgrep + AST in one round-trip. Delta mode for re-reads.

Smart Search merges ripgrep (fast regex over files), AST symbol lookup, and file reading into a single tool. You get matches, file content, and symbol maps in one call — what used to take 5–7 separate tool calls.

Delta mode is a game-changer for re-reads: when Claude reads the same file twice in a session, the second call returns only the lines that changed since last read (a unified diff). This cuts re-read costs by 80–95% on files that barely changed.

MetricBeforeAfter
Calls for "search + read"5–7 calls1 call
Re-read cost (unchanged file)8,200 tokens~80 tokens (delta)
Token reduction on re-reads80–95%
// Before: separate grep + read loop
grep("useAuth")           // call 1
Read("src/hooks.ts")       // call 2
Read("src/context.tsx")    // call 3

// After: one call with everything
Search({
  content_regex: "useAuth",
  output_mode: "file_paths_with_content",
  summary: true
})
✏️

Batch Edit

5 calls → 1

All your edits in one atomic roundtrip.

Batch Edit replaces the Read-Edit-Read-Edit loop with a single call that applies all changes atomically. Every write is backed up before modification. Multi-file refactors that used to cost 20+ round-trips now cost 1.

The pre-write backup system stores a snapshot of each file before modification. If something goes wrong mid-edit, you can restore from the snapshot. This makes batch edits as safe as they are fast.

MetricBeforeAfter
Calls for 5-file refactor15–20 calls1 call
Token overhead per edit+8,200 (re-read)0 (no re-read)
Rollback supportManualAutomatic snapshot
// Before: read every file before editing
Read("src/a.ts")   // 8,200 tokens
Edit("src/a.ts")
Read("src/b.ts")   // 6,100 tokens
Edit("src/b.ts")

// After: one atomic call
Edit({ edits: [
  { file: "src/a.ts", old_string: "...", new_string: "..." },
  { file: "src/b.ts", old_string: "...", new_string: "..." },
]})