mcp-memory demonstrates foundational tool definition structure but suffers from significant gaps in parameter descriptions, output schema documentation, and error handling guidance. All 12 tools are explicitly registered with names, input schemas via Zod, and basic descriptions. However, parameter-level documentation is largely absent (no descriptions for individual fields like 'id', 'title', 'content', 'query', etc.), and output schemas are not documented for any tool, agents cannot plan downstream calls or understand what fields to expect. The codebase shows attempt at validation (Zod schemas) and basic error handling (null checks, try-catch), but error responses lack actionable recovery guidance. Naming is mostly correct (verb_noun convention: create_memory, search_memories, delete_memory), but some tools expose implementation details (rebuild_index, build_memory_store) rather than user-intent language. Most critically, the returned content is hardcoded text responses ('Memory created with ID: ...') rather than structured objects, violating the pattern:response-shaper baseline that 100% of A+ tools document return types.
Add tags to a memory
Build a new memory store in the specified directory
Create a new memory
Delete a memory
Get a memory by ID and type
List memories with optional filtering by type and tags
Rebuild the search index
Create relationships between memories
NO PARAMETER DESCRIPTIONS: Across all 12 tools, individual input parameters lack descriptions. Examples: 'id' (what type of ID?), 'query' (search title, content, or both?), 'importance' (what does 0-1 scale mean?), 'related' (related memories as IDs or names?), 'sourceId'/'targetId' (what's the relationship semantics?). Pattern:tool-description requires every parameter have a non-empty description so LLMs can infer parameter meaning from names alone.
NO OUTPUT SCHEMAS DOCUMENTED: All 12 tools return hardcoded text responses only ('Memory created with ID: ...', 'Memory store successfully built in...', etc.). No structured output schema is documented. Agents cannot plan downstream calls or extract metadata (returned IDs, counts, nested structures). Pattern:response-shaper and rubric baseline 'Document the output schema' requires all tools declare return types with typed fields.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 54 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 41 | - | v1 |
Remove tags from a memory
Search memories by query, type, and tags
Remove relationships between memories
Update an existing memory
INSUFFICIENT ERROR GUIDANCE: Tools return generic error objects (is_error: true) with minimal context. No actionable recovery hints. Example: delete_memory fails if ID not found, error response should suggest 'Memory not found. Try search_memories() to find the correct ID.' Pattern:recovery-guide requires error responses tell the LLM what to do next.
IMPLEMENTATION DETAIL EXPOSED: Tool name 'rebuild_index' exposes Lunr search library internals. Should be 'reindex_memories' or 'optimize_search' to match user intent (pattern:tool). Also lacks description of when to call it, side effects (blocking?), or duration.
RELATIONSHIP SEMANTICS UNDOCUMENTED: relate_memories and unrelate_memories do not document whether relationships are directional, weighted, or typed. Is 'relate Alice to Bob' the same as 'relate Bob to Alice'? Parameter descriptions completely absent.
UPDATE VS CREATE SEMANTICS UNCLEAR: update_memory does not document whether all fields are updated if provided, only non-null fields merged, or full replacement. Parameter descriptions missing. No guidance on when to use create_memory vs update_memory.
NO DESTRUCTIVE OPERATION CONFIRMATION: delete_memory is irreversible (pattern:confirmation-request) but tool description does not warn of this or suggest confirmation flow. No mention of dry-run capability.
PAGINATION SUPPORT UNKNOWN: list_memories and search_memories accept a 'limit' parameter but do not document whether results are paginated, if there is a cursor, or whether a count is returned. Pattern:paginated-result requires tools returning lists document page/offset/cursor and total count.