Local-first code indexer and search. Zero-dependency CLI, TUI, and MCP server.
locidx provides 4 tools with complete input schemas and descriptions. Naming follows verb_noun convention (search, index, stats, roots). Descriptions are adequate (50-150 chars) but lack actionable context for LLM selection. Parameter descriptions are present but minimal. Output schemas are not documented, LLMs cannot predict response structure. Error handling is generic (tool failed: %s). No tool annotations (readOnlyHint/destructiveHint). The 'roots' tool exposes a deprecated MCP pattern. Overall: functional but below production baseline for agent-friendly tooling.
Index a directory so it can be searched later. Incremental: only changed files are re-read.
List every indexed root in the global database.
Search previously indexed files for a literal substring. Returns matching lines with file path and line number.
Per-language file and line statistics for an indexed tree (or all trees).
Output schemas not documented. LLMs cannot predict response structure (e.g., what fields are in 'results', what 'stats' contains). Forces trial-and-error parsing.
Descriptions lack actionable context. 'Search previously indexed files' does not explain when to call search vs. roots, or what prerequisites exist (must index first). LLMs cannot distinguish from similar tools.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot determine which tools are safe to retry or have side effects. 'index' modifies state but is unmarked.
'roots' tool exposes deprecated MCP Roots pattern (removed in 2026-07-28 spec). Should pass indexed directories via tool parameters or configuration instead.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Error handling is generic ('tool failed: %s'). Does not guide LLM on recovery (e.g., 'Index not found. Call index() first.' or 'Invalid query syntax. Use literal strings only.').