Cognitive engram memory engine with semantic search, knowledge graphs, clustering, and lifecycle management
Solid MCP server with strong naming conventions and comprehensive schemas across 15 tools. Most tools follow verb_noun patterns and include parameter descriptions. However, there are notable gaps in output schema documentation, some descriptions are overly detailed and token-heavy, and error handling guidance is minimal. Tool annotations (readOnlyHint/destructiveHint) are present in the metadata but not universally applied to all tools consistently. The server demonstrates good domain understanding (memory/graph/clustering abstractions) but could optimize descriptions for LLM prompt efficiency.
Check how many memories exist across lifecycle states (STM/LTM/archived), plus cluster and edge counts and the namespace list. The namespace list is capped — raise namespaceLimit or pass 0 for all. Don't use it to check background worker health; use `engram_status` for that.
Execute a pending collapse: store summary as a searchable entry, archive original members, register the cluster. Reversible via uncollapse_cluster.
Group entries into a semantic cluster with auto-computed centroid. Use for manual clustering when accretion scan isn't suitable.
Dismiss a pending collapse and exclude its members from future accretion scans.
Get cluster details: members, centroid, summary, and label.
Look up one memory's full metadata — lifecycle state, graph edges, cluster memberships, access count — without triggering an access-count increment. Don't use it to search by topic; use `recall` or `search_memory` for that.
Output schemas not documented. While input schemas are present with type definitions and descriptions, return value structures are not formally documented. This forces LLMs to infer output structure, increasing hallucination risk.
Benchmark tools (run_benchmark, run_agent_outcome_benchmark, run_live_agent_outcome_benchmark) have verbose parameter descriptions that exceed 300 chars. Descriptions like 'Dataset ID: ...' with long lists of options should be moved to enum constraints or separate documentation. This wastes tokens in each tool invocation.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
List dense clusters awaiting LLM summarization. Check this to find clusters ready for collapse_cluster.
List all clusters in a namespace with summary status.
Intelligent search across memories with auto-routing, fallback, and result summarization
Save a new memory with automatic duplicate detection and graph linking — the default way to store anything. Don't use `store_memory` directly unless you need to supply a raw embedding vector or skip duplicate checking.
Run a task-style benchmark across four memory conditions: no memory, transcript replay, vector memory, and full Engram memory. Scores task success, evidence coverage, conflict rate, and latency, and persists a JSON artifact by default.
Run an IR quality benchmark in an isolated namespace. Computes Recall@K, Precision@K, MRR, nDCG@K, and latency percentiles. Namespace is cleaned up after.
Run a real generation model across no-memory, transcript replay, vector memory, and full Engram conditions. Optionally includes T2 ablation conditions (no_graph, no_lifecycle, no_hybrid) for per-module attribution. Requires a live provider. The first supported provider is Ollama. Scores task success plus T2 intelligence metrics (ReasoningPathValidity, ContradictionHandling, NoiseResistance, StaleMemoryPenalty, DependencyCompletion, MinimalEvidence) from model-cited memory IDs and persists a JSON artifact by default.
Store an LLM-generated summary as a searchable entry tied to a cluster. Enables summaryFirst search mode for the cluster.
Add or remove cluster members and update label. Centroid recomputes automatically.
recall tool has incomplete schema documentation. Input shows only a 'query' parameter with minimal type info. No pagination support, no limit/offset parameters, and no documented output structure. A search/recall tool should support result limiting and pagination per pattern:paginated-result.
No explicit error handling guidance in tool descriptions. Tools like collapse_cluster and dismiss_collapse don't explain recovery scenarios (e.g., 'If collapse fails, check get_pending_collapses first'). Error responses likely return status/error JSON (seen in ToolError.cs) but descriptions don't guide LLM recovery actions.
Tool annotations (readOnlyHint/destructiveHint/idempotentHint) present in metadata but incomplete. 'recall' and 'get_memory' are marked READ_ONLY, destructive tools are identified, but not all tools have explicit annotation fields in schema. For consistency with pattern:tool-annotation, all tools should declare their modification semantics.
Parameter names sometimes lack type suffix. 'summaryvector' (array) and 'summarytext' (string) in collapse_cluster are clear, but in recall the 'query' parameter is ambiguous, should it accept free text, structured queries, or embedding vectors? Descriptions compensate but naming clarity would help.