A local-first personal memory server that any MCP client plugs into, so your context follows you across apps instead of living inside one vendor.
Engram demonstrates solid tool design with clear naming (verb_noun pattern), comprehensive parameter descriptions, and well-structured schemas using Zod. All 7 tools have descriptions (avg ~150 chars) and typed parameters with constraints. However, output schemas are not formally documented, responses are text-only without structured field definitions. Error handling is minimal (no recovery guidance or categorization). The semantic memory domain is well-served, but the tool set lacks composition patterns (e.g., batch operations) and some parameter relationships are underdocumented.
Find existing memories semantically similar to some text. Use before saving to avoid duplicates/contradictions, or to surface what's already known about a topic.
Permanently delete a memory by id.
Bulk-import memories from another source (e.g. an exported list). Identical content is merged, not duplicated.
Browse stored memories, most recently updated first.
Search the user's personal memory for entries relevant to a query. Call this whenever earlier context about the user would help.
Store a durable fact about the user (a preference, an ongoing project, a reference, etc.). Propose this to the user and save once confirmed. Identical content is deduped automatically. If the result flags related existing memories, decide whether this updates/contradicts one and reconcile with update_memory or forget rather than leaving duplicates.
Output schemas not formally documented. All tools return text-only responses without structured field definitions. LLMs cannot parse memory IDs, similarity scores, or related metadata from unstructured text reliably.
Error handling lacks recovery guidance. Tools return bare error messages (e.g., 'No memory #123') without suggesting next steps or categorizing errors as retryable vs. fatal.
Destructive operations (forget, update_memory) lack confirmation or dry-run support. Agents can permanently delete memories without explicit user approval.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
Edit an existing memory by id.
Parameter relationships underdocumented. save_memory's 'type' enum and tags array interact with deduplication logic, but this dependency is not stated in parameter descriptions.
No batch operation support. Agents calling import_memories for bulk operations is good, but recall/find_related lack pagination (limit is capped but no cursor/offset for large result sets).