MCP server for Engram — self-hostable AI memory layer. Search, add, update, and capture memories from any MCP client.
Engram MCP server has 7 well-named tools with consistent verb_noun patterns (search_memories, add_memory, etc.). All tools have descriptions (avg ~60 chars, baseline 194 chars) and input schemas with typed parameters. However, descriptions are terse and lack context for LLM selection. Parameter descriptions are minimal (e.g., 'Search query string' vs 'Natural language query for semantic memory search'). Output schemas are not documented in the source, only inferred from handler implementations. Error handling is present but generic. No tool annotations (readOnlyHint, destructiveHint) despite clear risk classifications. Missing dependency hints and recovery guidance.
Add a new memory to the system
Capture a conversation exchange as a memory
Delete a memory by ID
Get memory retrieval event logs
List memories with pagination
Search memories using semantic similarity and optional filtering
Update an existing memory
Descriptions are terse (avg ~60 chars vs baseline 194 chars). Missing WHEN to use, prerequisites, and state-modification warnings. E.g., 'Add a new memory to the system' lacks context for LLM selection vs capture_conversation.
Output schemas not documented in source code. Handlers return JSON but structure is inferred from test scripts (verify_mcp_tools.mjs), not declared in tool definitions. LLMs cannot plan downstream calls without knowing response fields.
No tool annotations despite clear risk classifications. delete_memory is DESTRUCTIVE but lacks destructiveHint. search_memories is READ_ONLY but lacks readOnlyHint. Agents cannot distinguish safe from dangerous operations.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Parameter descriptions lack format/constraint guidance. 'threshold' (default 0.5) has no range specified. 'limit' parameters lack min/max bounds. LLMs may pass invalid values (negative limits, thresholds >1).
delete_memory lacks confirmation/dry-run pattern. Irreversible operations should support confirmation before execution to prevent accidental data loss by agents.