Graph-based long-term memory for AI agents. Engrama stores entities, observations and relationships as a knowledge graph and lets agents traverse it to reconstruct context on demand. SQLite by default (zero external services); Neo4j optional for multi-process production.
Engrama demonstrates above-average definition quality with well-structured schemas, clear tool naming, and comprehensive parameter descriptions. All 14 tools have explicit registrations with proper annotations. Tool names follow verb-noun patterns (engrama_search, engrama_remember, engrama_relate). Descriptions are informative and action-oriented. However, several tools lack complete input schema visibility in the provided code (engrama_context, engrama_sync_note, engrama_sync_vault, engrama_ingest, engrama_reflect, engrama_surface_insights, engrama_approve_insight, engrama_write_insight_to_vault, engrama_reindex, engrama_gdpr_forget show no inputSchema in the excerpt), which prevents full schema validation. The visible schemas (engrama_status, engrama_search, engrama_remember, engrama_relate) are well-formed with proper type definitions and constraints. Parameter descriptions are detailed and actionable (e.g., engrama_remember explicitly documents required 'summary' and 'details' fields with examples). Tool annotations are present and correct (readOnlyHint, destructiveHint, idempotentHint, openWorldHint). Error handling guidance is embedded in descriptions (e.g., engrama_search instructs 'Use this at the START of every session to load context'). Composition is strong, tools are single-responsibility and chainable (remember → relate → search patterns).
Human approves or dismisses an Insight.
Retrieve a node and its neighbourhood up to N hops. Use this to build rich context before answering a question — e.g. fetch the user's Person node to see their pr
Permanently erase the caller's own memory (GDPR).
Read content + return extraction guidance for the agent.
Cross-entity pattern detection → Insight nodes.
Find and repair nodes missing their vector embedding.
Connect two nodes with a typed relationship. Always call this right after engrama_remember to wire the new node into the graph. Also use it to record newly discovered connections between existing nodes. Both endpoints must already exist (create them first with engrama_remember if needed).
10 of 14 tools lack visible input schemas in the provided code excerpt. engrama_context, engrama_sync_note, engrama_sync_vault, engrama_ingest, engrama_reflect, engrama_surface_insights, engrama_approve_insight, engrama_write_insight_to_vault, engrama_reindex, and engrama_gdpr_forget have descriptions and annotations but no inputSchema visible.
engrama_context description is truncated in the source ('Retrieve a node and its neighbourhood up to N hops. Use this to build rich context before answering a question, e.g. fetch the user's Person node to see their pr'). Complete descriptions are essential for LLM tool selection. The incomplete description leaves ambiguity about what 'neighbourhood' parameters (depth, filters) exist.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | 2026-07-28+ | v2 |
Store a piece of knowledge as a node in the memory graph.
Search the memory graph. Use this at the START of every session to load context relevant to the current topic, and whenever you need to check whether a node already exists before creating it.
Return a snapshot of the running Engrama MCP server's configuration.
Read pending Insights for agent presentation.
Sync a single Obsidian note to the graph.
Full vault scan, reconcile all notes.
Append approved Insight to Obsidian note.
Tools that sync with Obsidian (engrama_sync_note, engrama_sync_vault, engrama_write_insight_to_vault) lack documented parameters for path, vault location, or credentials. No visible error handling for missing VAULT_PATH configuration. LLMs cannot determine when these tools are available or what inputs they require.
engrama_gdpr_forget is destructive (GDPR data erasure) but lacks confirmation/dry-run mechanism documented in the schema. Per pattern:confirmation-request, irreversible operations should support confirmation steps to prevent catastrophic accidental deletions by agents.
engrama_remember's 'relations' parameter accepts additionalProperties but no constraint on relation type validity. While the description lists valid REL_TYPES (APPLIES, BELONGS_TO, etc.), there is no enum constraint or schema validation visible. LLMs may pass invalid relation types.
engrama_relate and engrama_remember both allow relation type specification, but from_label and to_label are free-form strings in the visible schema, not enums. The description lists 25 valid labels (CTF, Client, Concept, ..., Vulnerability), but no enum constraint prevents LLM hallucination of invalid labels like 'Data' or 'Process'.
No visible error handling guidance in tool descriptions. Descriptions do not indicate what happens if a node label is invalid, a relation type is unsupported, or a Neo4j backend is unavailable. Per pattern:recovery-guide, error responses should guide the LLM on next steps (retry, lookup, fallback).
Multi-tenant configuration (ENGRAMA_REQUIRE_IDENTITY) mentions X-Engrama-Org-Id and X-Engrama-User-Id headers for permission gating, but these are not exposed as tool parameters or documented in tool descriptions. LLMs cannot invoke multi-tenant isolation without explicit parameter support.