A specialized Model Context Protocol server that provides TODO and memory management functionality.
Four tools with complete descriptions and basic schemas. Naming follows verb_noun convention (create_, search_, get_). Descriptions are substantive (150-250 chars), exceeding the 10-char minimum but below the 1024-char cap. All tools have input schemas with type declarations. However, output schemas are not formally documented, responses are inferred from code (text content + isError flag). Parameter descriptions are present but lack constraint details (ranges, enums, format specs). No error recovery guidance or actionable error messages. Missing tool annotations (readOnlyHint, destructiveHint). create_memory is a write operation but lacks confirmation or dry-run pattern.
Stores a new text entry in the memory system with the current timestamp. Memories serve as a persistent record of actions, thoughts, and events. This function allows creating standalone memories, while other todo operations automatically create associated memories. Each memory entry is assigned a unique ID for future reference.
Retrieves a specific memory by ID along with surrounding memories (before and after) to provide context. You can specify how many surrounding memories to include (default is 5). The result is formatted as Markdown with clear sections for previous memories, the current memory, and subsequent memories, making it easy to understand the sequence of events.
Generates statistics about memory creation activity over a specified time period (default is 30 days). Returns daily counts of memories created, allowing you to track usage patterns and activity levels over time. The statistics are returned as an array of date and count pairs, sorted chronologically from oldest to newest.
Searches through all stored memories for entries containing the specified text. The search is case-insensitive and matches partial text within the memory content. Results are returned in reverse chronological order (newest first) and include the full content and creation timestamp of each matching memory.
Output schemas not formally documented. Responses are inferred from code (text content + isError flag). LLMs cannot plan downstream tool calls or extract structured data without knowing the response shape.
Parameter descriptions lack constraint details. 'days' and 'range' accept numbers but no min/max bounds stated. 'content' and 'search_text' have no length limits or format specs. LLMs may pass absurd values (days=999999, content='').
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). create_memory is destructive (writes to DB) but not marked. search_memories, get_memory_context, get_memory_stats are read-only but not annotated. Agents cannot distinguish safe from unsafe operations.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
Error handling returns raw error messages without recovery guidance. 'An error occurred: <message>' tells the LLM nothing about whether to retry, ask the user, or give up. No error classification (retryable vs fatal).
create_memory lacks confirmation or dry-run pattern. Irreversible write operations should support a confirmation step to prevent accidental data creation by agents.