Local semantic search — embedding-powered grep for files, zero external services.
embgrep has 4 tools with basic descriptions and visible input schemas. However, critical gaps limit production readiness: (1) descriptions are minimal (10-50 chars), well below the 50-200 char LLM-optimized baseline; (2) output schemas are undocumented, tools return JSON strings but the structure is not declared; (3) no error handling guidance, tools fail silently or return generic JSON; (4) parameters lack constraints (e.g., top_k unbounded, patterns free-form); (5) no idempotency or retry semantics documented. Tools are named clearly (verb_noun pattern) and schemas are present, preventing a lower score, but the implementation is minimal and would not pass production code review.
Index files in a directory for semantic search.
Get current index statistics.
Search indexed files using natural language.
Incremental update — re-index changed files only (hash comparison).
Output schemas undocumented. All tools return JSON strings but the structure (fields, types, nesting) is not declared. LLMs cannot plan downstream calls or extract data reliably.
Descriptions are too short (10-50 chars, well below 50-200 char baseline). 'Index files in a directory for semantic search' lacks context on when to use it vs update_index, what patterns mean, or what the output contains.
No parameter constraints. top_k is unbounded integer (could be 0, negative, or 1M+). patterns is free-form string with no validation. path_filter accepts SQL LIKE but no escaping guidance.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | 2026-07-28+ | v2 |
No error handling guidance. Tools return generic JSON or fail silently. No recovery hints (e.g., 'Directory not found, check path' or 'Index empty, call index_directory first').
Idempotency and retry semantics not documented. update_index and index_directory modify state but do not declare whether they are safe to retry or what happens on duplicate calls.