Lore is a Rust-based semantic search MCP server with 5 tools, all directly registered in src/server.rs with explicit schemas and descriptions. Naming follows verb_noun conventions (lore_search, lore_list, lore_status, lore_write_pattern, lore_read_pattern), which is good. Descriptions are present for all tools (ranging 50-150 chars, within the 10-1024 baseline). However, several critical gaps emerge: (1) Parameter descriptions are minimal or absent, e.g., lore_search's 'top_k' lacks a description of its default value or valid range; lore_write_pattern's 'file_path' and 'content' params have thin descriptions with no constraints on path structure or file format. (2) Output schemas are NOT documented, the code shows input schemas but does not describe what these tools return, forcing LLMs to infer structure. (3) Error handling is implicit, no guidance on recovery, retryability, or actionable error messages in responses. (4) No tool annotations (readOnlyHint, destructiveHint) despite clear risk profiles (lore_write_pattern is WRITE; others are READ_ONLY). (5) lore_list returns no pagination parameters, risking context exhaustion on large knowledge bases. The server is functional for basic use but lacks the polish expected in production tools.
List all patterns in the knowledge base
Read a markdown pattern file from the knowledge base
Search the knowledge base for patterns matching a query
Check health of all components and database statistics
Write a markdown pattern file to the knowledge base
Output schemas completely undocumented for all tools. LLMs cannot determine what fields to expect or how to chain results into subsequent tool calls.
Parameter descriptions are minimal or absent for constrained inputs. 'top_k' lacks a default value, range, or explanation; 'file_path' lacks format constraints or validation rules; 'content' lacks frontmatter or markdown requirements.
No tool annotations despite clear risk profiles. lore_write_pattern is marked WRITE but lacks destructiveHint; others are READ_ONLY but lack readOnlyHint. Agents cannot infer cost or safety of execution.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | 2026-07-28+ | v2 |
No pagination or limit parameters on lore_list. If the knowledge base contains thousands of patterns, returning all at once will exhaust context and degrade LLM reasoning.
Error handling is implicit. No guidance on what errors can occur, how to recover, or whether operations are retryable. lore_write_pattern could fail on invalid path or permission denial, but the response doesn't guide recovery.
Insufficient disambiguation between lore_search and lore_list. Descriptions don't explain when to use search (semantic matching) vs list (all patterns). LLMs may choose incorrectly.