Engram-inspired memory MCP server with a hook-injected hot cache and semantic recall
The server provides 12 tools with generally adequate naming (verb-first pattern observed: remember, recall, promote_to_hot, demote_from_hot, etc.) and descriptions present for all tools. However, there are critical gaps: (1) Most tools lack documented output schemas, the rubric requires 'Document the output schema' as a critical check, and these are entirely missing from the provided source. (2) Parameter descriptions are minimal or absent for many tools. For example, 'remember' has good parameter docs, but 'db_maintenance' has empty input schema with no description of what constitutes 'auto_demote is enabled', is this a config flag? (3) Error handling guidance is absent, no recovery instructions, retryability classification, or actionable error messages evident. (4) The 'consolidate_memories' and 'update_memory' tools accept memory_ids/memory_id but there is no indication how agents discover which memory_ids to target, supporting discovery tools (list_memories, recall) helps, but chaining context is not explicit in responses. (5) Tools like 'recall' and 'list_memories' accept limit parameters but no pagination guidance (offset, cursor) is documented as returning a total_count or next_cursor, baseline requires pagination to return a total or cursor for list operations. Overall, the server is functional and internally coherent, but falls short of production-grade agent tool standards on output documentation, error guidance, and compositional clarity.
Consolidate semantically similar memories into a single memory.
Run database maintenance (vacuum, analyze, auto-demote stale). Compacts the database to reclaim unused space, updates query planner statistics, and demotes stale hot memories (if auto_demote is enabled).
Delete a memory from storage.
Manually demote a memory from the hot cache.
Get current hot cache statistics and contents.
Get server statistics including memory counts and cache performance.
List all memories with optional filtering and pagination.
Mark a memory as used/helpful for retrieval tracking.
Output schemas are not documented. The rubric requires 'Document the output schema. LLMs need to know what fields to expect.' Tools like get_hot_cache_status, get_stats, db_maintenance have empty input schemas and no documented output structure, leaving agents guessing what fields to extract from responses.
Pagination not fully specified. 'list_memories' accepts limit and offset but description does not state whether a total_count or next_cursor is returned. Rubric baseline requires 'Tools returning lists should accept page/offset and limit parameters and return a total count or next_cursor.'
Error handling and recovery guidance absent. No tool descriptions mention what happens on failure, whether operations are retryable, or how to recover from missing memory_ids or invalid types. Rubric requires 'Error responses must tell the LLM what to do next' and 'Categorize errors as retryable, user-fixable, or fatal.'
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 47 | <=2025-11-25 | v2 |
Manually promote a memory to the hot cache.
Retrieve semantically similar memories based on a query.
Store a memory with semantic embedding and optional metadata.
Update content and metadata of an existing memory.
Confirmation/dry-run pattern missing for irreversible operations. 'delete_memory' is marked IRREVERSIBLE but has no dry-run or confirmation step. Rubric requires 'Irreversible operations should support a dry-run or confirmation step. Agents make mistakes, a confirm_before_execute pattern prevents catastrophic errors.'
Parameter descriptions incomplete or missing for some tools. 'db_maintenance' has empty input schema; 'get_hot_cache_status' and 'get_stats' lack input parameters documented. Rubric requires 'Every parameter needs a description explaining what it controls.'
Tool chaining clarity weak. When 'update_memory' or 'consolidate_memories' require memory_ids, no guidance is given on how agents discover them. While 'list_memories' and 'recall' enable discovery, the responses should explicitly include memory_id in every result so chaining is obvious. Rubric requires 'Ensure tool A's output contains the IDs and references tool B needs.'