Local semantic search for markdown notes — MCP server
Four tools with clear verb-noun naming (index, search, remove, status). All have descriptions and input schemas with typed parameters. However, descriptions are terse (avg 95 chars, below 194-char baseline), lack WHEN-to-use guidance, and omit error recovery hints. Output schemas are partially documented in descriptions but not formally specified. The 'search' tool has the strongest description; 'index' and 'remove' lack guidance on side effects and error cases. No tool annotations (readOnlyHint, destructiveHint) despite clear risk profiles.
Index a knowledge base article. Replaces any existing article with the same key.
Remove an article from the knowledge base by key.
Semantic search across the knowledge base. Returns up to `limit` articles ranked by similarity, each with key, content, similarity (0-1, higher is better), and source file path. Low-relevance results are automatically filtered out.
Show the current state of the knowledge base: number of indexed articles and watched vaults.
Destructive tool 'remove' lacks error recovery guidance. Description does not explain what happens if key not found, whether removal is idempotent, or how to verify success.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk profiles: 'index' is WRITE, 'remove' is DESTRUCTIVE, 'search' and 'status' are READ_ONLY. Agents cannot infer safety without annotations.
Output schemas not formally documented. 'search' returns list[dict] with fields {key, content, similarity, source, vault} but this structure is only described in prose, not in a schema definition. LLMs cannot reliably parse unstructured descriptions.
'index' description does not state that it replaces existing articles or explain idempotency. Agents need to know whether repeated calls with same key are safe.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | <=2025-11-25 | v2 |
Parameter descriptions are minimal. 'limit' in search has a description, but 'key' and 'content' in index lack detail on format, length, or constraints. No guidance on what constitutes a valid key.