Cognitive engram memory engine with semantic search, knowledge graphs, clustering, and lifecycle management
McpEngramMemory has 17 tools with moderate-to-good naming and descriptions, but inconsistent schema documentation and missing critical parameter details. Tool names follow verb_noun conventions well ('remember', 'recall', 'collapse_cluster'). Descriptions are detailed (100-400 chars typical), exceeding baselines. However, 3 tools lack visible input schemas in provided source ('recall', 'engram_status', 'search_memory' inferred but not shown), and several parameters lack critical type/format details. Output schemas are not documented. Error handling guidance is minimal. The server demonstrates solid patterns (accretion, lifecycle, knowledge graph) but falls short of production polish in parameter validation and error recovery.
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.
recall tool lacks visible input schema in provided source code. Only description given, no parameters shown.
No output schemas documented for any tool. LLMs cannot infer what fields will be returned, breaking downstream tool chaining.
Parameter 'summaryVector' in collapse_cluster lacks type details in description (marked as 'array' but no mention of float, dimension, constraints).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 69 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
List dense clusters awaiting LLM summarization. Check this to find clusters ready for collapse_cluster.
List all clusters in a namespace with summary status.
Intelligently search memory with automatic query expansion, spreading activation, and fallback routing — the default way to retrieve information.
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.
Save many memories at once in a single write operation — use this when storing 5 or more entries to avoid repeated round-trips. Don't use it for one or two entries; use `remember` for those to get per-entry duplicate blocking and auto-linking.
Store an LLM-generated summary as a searchable entry tied to a cluster. Enables summaryFirst search mode for the cluster.
Save a memory when you need to supply a pre-computed embedding vector or control lifecycle state exactly. Don't use this by default; use `remember` instead — it auto-embeds, blocks duplicates, and links related entries without extra steps.
Add or remove cluster members and update label. Centroid recomputes automatically.
Benchmark tools (run_benchmark, run_agent_outcome_benchmark) expose multiple boolean flags with vague defaults. 'persistArtifact' defaults to true, writing files as a side effect without explicit user intent violates 'defaults must not cause unintended side effects' guideline.
Error handling is minimal. Descriptions say 'not found' but do not guide LLM recovery, no suggestions to call search tools, no categorization of retryable vs fatal errors.
Tool 'recall' description mentions 'automatic query expansion, spreading activation, fallback routing' but no parameters are visible in source. Cannot assess parameter completeness or whether it accepts query, filters, limits, or other standard search parameters.
Parameter 'datasetId' in benchmark tools accepts enum-like values (e.g. 'default-v1', 'paraphrase-v1') but enum constraint not visible in schema, relies on description text only.
Parameters 'checkDuplicates' in store_batch and 'contextualPrefix' in benchmarks are booleans with defaults but no guidance on what 'true' vs 'false' actually does for agent behavior. Descriptions must be explicit: 'When true: X, when false: Y.'