Graph-based persistent memory system for AI agents with SurrealDB backend, providing neural-inspired retrieval through activation patterns rather than traditional search
This STDIO-only MCP server exposes a memory management interface with 6 unique tools (with 6 duplicates in the tool list). Tool definitions are present but exhibit significant quality gaps: (1) schema completeness is uneven, some tools like smem_remember have well-defined input schemas with proper typing and descriptions, but others like smem_stats and smem_health have empty schemas ({}), creating ambiguity about what they accept; (2) tool descriptions are adequate but not optimized for LLM decision-making (range 50 - 130 chars vs production baseline of 194 chars median); (3) parameter descriptions exist for most tools but lack actionable guidance on constraints, formats, or when to use each tool vs similar ones; (4) error handling is not visible in the provided code, no evidence of recovery guidance, error classification, or actionable failure messages; (5) no output schemas are documented, forcing LLMs to guess what fields smem_recall, smem_stats, and smem_health return; (6) duplicate tool registrations (smem_remember, smem_recall, smem_context, smem_stats, smem_health each appear twice) suggest either configuration bugs or incomplete deduplication in the server. The server is functionally serviceable for memory recall/storage but falls short of production-grade quality standards.
Get a memory by ID (legacy alias for smem_recall). Prefer smem_recall for full Surreal-Memory features.
Search memories (legacy alias for smem_recall). Prefer smem_recall for full Surreal-Memory features.
Get recent context from Surreal-Memory.
Get recent context from Surreal-Memory.
Get brain health diagnostics including grade and recommendations.
Get brain health diagnostics including grade and recommendations.
Query memories from Surreal-Memory. Use this to recall past information, decisions, patterns, or context relevant to the current task.
Empty input schemas on smem_stats and smem_health ({}), preventing LLMs from understanding what parameters these tools accept.
No output schemas documented for any tool. Callers (and LLMs) cannot determine what fields smem_recall, smem_stats, or smem_health return. This forces LLMs to make guesses about downstream field extraction.
Duplicate tool registrations: smem_remember, smem_recall, smem_context, smem_stats, and smem_health each appear twice in the tool list. This suggests either a configuration error or incomplete deduplication logic.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | 2026-07-28+ | v2 |
Query memories from Surreal-Memory. Use this to recall past information, decisions, patterns, or context relevant to the current task.
Store a memory in Surreal-Memory. Use this to remember facts, decisions, insights, todos, errors, and other information that should persist across sessions.
Store a memory in Surreal-Memory. Use this to remember facts, decisions, insights, todos, errors, and other information that should persist across sessions.
Get brain statistics including memory counts and freshness.
Get brain statistics including memory counts and freshness.
Legacy aliases (memory_search, memory_get) with ambiguous descriptions ('legacy alias for smem_recall') create LLM confusion and redundancy. The description tells users to prefer smem_recall but does not explain when/why to use the alias variant.
Tool descriptions are shorter than production baseline (50 - 130 chars vs 194 median). Key context missing: 'smem_context' description is only ~50 chars ('Get recent context from Surreal-Memory.'), does not state when to call it, what it returns, or how it differs from smem_recall.
No error handling guidance visible. Tools have no documented recovery paths (e.g., 'If query returns no results, try a broader search term'). No indication of retryability, error classification, or actionable failure messages.
Parameter descriptions lack actionable constraints: 'depth' parameter in smem_recall described as '0=instant, 1=context, 2=habit, 3=deep' but no guidance on when to choose each level or what tradeoffs exist.