## Performance: Lazy tool imports
All 45 tool module imports in `server.py` are now deferred to the first `call_tool()` dispatch for each tool. Previously, importing `server.py` loaded every tool module (and their transitive deps: tree-sitter, httpx, pathspec, subprocess wrapper
## Changes
**assessment field on get_hotspots entries**
Each hotspot entry now includes an assessment field: 'low' | 'medium' | 'high'
based on hotspot_score thresholds (low <= 3, medium <= 10, high > 10).
Allows an LLM to relay findings without interpreting the raw score.
Compl
## What's new
### Session LRU result cache
get_blast_radius and find_references (single-identifier mode) now cache their results for the duration of the MCP session. Repeated calls with the same arguments return instantly from the in-process cache instead of re-running expensiv
## What's new
Four new tools completing the Code Metrics & Health milestone, plus a bug fix that makes complexity data actually work:
### New Tools
**get_symbol_complexity(repo, symbol_id)**
Returns cyclomatic complexity, max nesting depth, parameter count, line count, and ass
## What's new
### INDEX_VERSION 6 → 7
Complexity metrics are now stored per symbol at index time. **Re-index to populate** — existing indexes load fine (complexity = 0).
Three new Symbol fields (functions and methods only):
- `cyclomatic` — McCabe complexity (branch count + 1)