Server has 6 tools with basic descriptions and some parameter schemas, but significant gaps in definition quality. All tools are READ_ONLY and return unstructured text (markdown strings) rather than structured JSON. Parameter descriptions exist but are minimal (10-50 chars). No output schemas documented. No error handling guidance. Tool names follow verb_noun convention (get_*, list_*, query, add_*) which is good, but descriptions lack actionable context for LLM selection. The query tool accepts optional 'sources' array but filtering logic is not visible in implementation. Overall pattern adherence is weak, most tools would score 35-50 individually.
Get instructions for adding a new source
Get core identity info: background, skills, current focus, interests
Get projects. Status: 'active', 'recent', or 'all'
Get recent reading list items
List configured sources and their last sync time
Natural language query across all indexed content
All tools return unstructured markdown strings instead of structured JSON objects. LLMs cannot reliably extract fields for downstream tool calls or data extraction. Violates response-shaper pattern.
No output schemas documented. LLMs cannot plan downstream operations or extract required fields (e.g., project IDs, source names). Violates tool pattern requirement for documented return types.
query tool accepts 'sources' filter parameter but implementation does not use it (embeddings.search() called without sources argument). Parameter is non-functional.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | 2026-07-28+ | v2 |
Tool descriptions lack context for LLM selection. 'Get projects' does not explain when to use it vs query. 'Get reading' does not explain RSS filtering. Descriptions average 40-55 chars; baseline is 194 chars.
No error handling or recovery guidance. Tools return plain strings on failure ('No identity configured', 'No projects indexed yet'). LLMs cannot distinguish success from failure or know what to do next.