Pi coding agent native codebase awareness toolkit — 7 structural analysis tools. Also supports MCP (Cursor, Claude Desktop, Windsurf, etc.)
pi-shazam provides 7 well-scoped analysis tools with clear semantic names (shazam_overview, shazam_lookup, shazam_impact, shazam_verify, shazam_changes, shazam_format, shazam_rename_symbol). All tools have descriptions ranging 62-137 chars, which meet baseline minimums but lack LLM-optimization depth. Input schemas are present and typed (all params have 'type' fields: string, number, boolean). However, parameter descriptions are minimal ('Optional: max output tokens to truncate result' appears verbatim across 5 tools), and output schemas are not documented in the source. Error handling via errorReporting=true is declared but recovery guidance is not visible in tool definitions. The tools follow a consistent verb_noun pattern and are read-only/write-safe with risk annotations. Tools compose well (each has one clear purpose), but descriptions lack the actionable context about dependencies, output shape, and when to choose one tool over a similar alternative (e.g., why shazam_lookup vs shazam_impact). No tool annotations (readOnlyHint/destructiveHint) are present in the visible schema.
Analyze the symbols and dependencies affected by git changes
Format and normalize code across the project using LSP servers or language-specific tools
Analyze the impact scope of changes to a symbol or file on the rest of the codebase
Look up symbol definitions, usage sites, and cross-references in the codebase
Provides a high-level overview of codebase structure, key symbols, and dependency graph
Safely rename a symbol across the entire codebase with impact analysis and safety verification
Run LSP diagnostics and verify code health, with optional diff against baseline
Parameter descriptions are generic boilerplate. 'Optional: max output tokens to truncate result' and 'Optional: return structured JSON output' appear identically across 5+ tools. LLMs cannot distinguish when to use each parameter variant or what the output differences are.
Output schemas are not documented in tool definitions. Tools return either text or JSON, but the structure of JSON responses is not specified. LLMs cannot plan downstream operations without knowing what fields to extract.
Tool descriptions lack context about dependencies and selection criteria. 'Analyze the impact scope of changes to a symbol' (shazam_impact) does not explain: when to call before/after shazam_lookup, what prerequisite info is needed, or whether it requires the symbol to exist in the codebase first.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
No tool annotations present (readOnlyHint, destructiveHint). While risk is declared in metadata (Risk: READ_ONLY, Risk: WRITE), the MCP schema does not include the currentspec tool annotations that allow MCP clients to display safety indicators.
Error handling guidance is not visible in tool definitions. errorReporting=true is declared, but tool descriptions do not explain what errors are recoverable or what the LLM should do on failure (e.g., 'Symbol not found, try shazam_overview() first to discover available symbols').