A Model Context Protocol server that implements a task management system with resources and tools for task listing, reading, and creation, plus RAG and memory management capabilities
Server has 5 tools with complete input schemas and basic descriptions, but significant quality gaps limit production readiness. Tool names lack clear action verbs (e.g., 'list_tools' is self-referential; 'memory_write' is vague about destination). Descriptions are minimal (10-50 chars) and lack context on WHEN to use each tool or WHAT happens. Parameters have type definitions but most lack descriptions explaining constraints, formats, or dependencies. No output schemas documented. Error handling is minimal, tools throw generic errors without recovery guidance. No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Composition issues: 'list_tools' duplicates ListToolsRequestSchema; 'memory_write' and 'upload_documents' lack clarity on side effects and prerequisites.
Create a new note
List available tools
Write memory chunks to Halcyon
Query the RAG system
Upload documents to the RAG system
Tool descriptions are too brief (10-50 chars) and lack context. 'Write memory chunks to Halcyon' does not explain WHEN to use this tool, what Halcyon is, or what happens to the data. LLMs cannot determine tool selection without richer descriptions (target 50-200 chars per pattern:tool-description).
Most parameters lack descriptions. 'embedding_model' in rag_query and upload_documents has no description explaining valid values, format, or default behavior. 'timeout' in rag_query lacks units and range. LLMs cannot infer constraints from names alone (pattern:tool-description).
No output schemas documented. Tools return text responses (e.g., 'Created note: {title}') but LLMs do not know what fields to expect or how to chain results to downstream tools. Responses should be structured JSON with typed fields (pattern:response-shaper).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 41 | 2026-07-28+ | v2 |
Tool 'list_tools' is self-referential and duplicates the MCP ListToolsRequestSchema capability. This tool should not exist, clients already have a standard way to discover tools. Removes clutter and reduces LLM confusion (pattern:tool).
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). 'create_note', 'memory_write', and 'upload_documents' are write operations but lack destructiveHint. LLMs cannot distinguish safe reads from risky writes without annotations (pattern:tool).