---
name: search-tools
description: Search Tool Hierarchy
---
# Search Tool Hierarchy
When searching code, use this decision tree:
## Decision Tree
```
Need CONCEPTUAL/SEMANTIC search?
(how does X work, find patterns, understand architecture)
→ Use LEANN (/leann-search) - embedding-based semantic search
→ PreToolUse hook auto-redirects semantic Grep queries
Need to understand code STRUCTURE?
(find function calls, class usages, refactor patterns)
→ Use AST-grep (/ast-grep-find)
Need to find TEXT in code?
→ Use Morph (/morph-search) - 20x faster
→ If no Morph API key: fall back to Grep tool
Simple one-off search?
→ Use built-in Grep tool directly
```
## Tool Comparison
| Tool | Best For | Requires |
|------|----------|----------|
| **LEANN** | Semantic search: "how does caching work", "error handling patterns", conceptual queries | Index built |
| **AST-grep** | Structural patterns: "find all calls to `foo()`", refactoring, find usages by type | MCP server |
| **Morph** | Fast text search: "find files mentioning error", grep across codebase | API key |
| **Grep** | Literal patterns, class/function names, regex | Nothing (built-in) |
## Examples
**LEANN** (semantic/conceptual):
- "how does authentication work"
- "find error handling patterns"
- "where is rate limiting implemented"
**AST-grep** (structural):
- "Find all functions that return a Promise"
- "Find all React components using useState"
- "Refactor all imports of X to Y"
**Morph** (text search):
- "Find all files mentioning 'authentication'"
- "Search for TODO comments"
**Grep** (literal):
- `class ProviderAdapter`
- `def __init__`
- Regex patterns
## LEANN Commands
```bash
# Search with semantic query
leann search opc-dev "how does blackboard communication work" --top-k 5
# List available indexes
leann list
# Rebuild index (when code changes)
leann build opc-dev --docs dir1 dir2 --no-recompute --no-compact --force
```