Developer decision intelligence — causal memory across AI sessions. MCP server that ingests session content into a knowledge graph, retrieves relevant past decisions, surfaces counterfactual warnings, and provides knowledge graph health metrics.
Engram has well-structured tool definitions with complete schemas and descriptions for all 4 tools. Naming follows verb_noun convention (engram_capture, engram_context, engram_warn, engram_stats). Descriptions are substantive (100-200 chars), explaining WHAT, WHEN, and WHY. All parameters have types and descriptions. However, output schemas are not documented, LLMs cannot predict response structure. Error handling is minimal (no recovery guidance, no categorization). No tool annotations (readOnlyHint/destructiveHint). engram_capture lacks explicit confirmation for irreversible write operations. Parameter constraints could be tighter (e.g., 'domain' should be an enum, not free-form string).
Capture this conversation or a summary of work done into Engram's knowledge graph. Call this at the END of a session to save decisions and rejected alternatives. Engram extracts atomic decisions and their counterfactuals automatically — just pass the conversation or a summary of what was decided and why.
Retrieve relevant past decisions and counterfactual warnings before starting work on a new problem. Call this at the START of a session when you know what domain you're working in. Returns a ready-to-use context briefing based on your decision history.
Show the current state of your Engram knowledge graph — how many decisions, counterfactuals, and sessions are stored, and the average epistemic weight of your decision history.
Surface counterfactual warnings for a specific option you're considering. Use this when you're about to choose something and want to know if you've rejected it before and why. Returns past rejection reasons across all your projects.
Output schemas not documented. LLMs cannot predict response structure (fields, types, nesting). engram_capture returns {error, is_high_signal, saved_decisions, saved_counterfactuals, domain_primary, critique_score, session_summary}; engram_context and engram_warn responses are opaque.
No tool annotations. engram_capture is destructive (WRITE risk) but lacks destructiveHint. engram_context, engram_warn, engram_stats are read-only but lack readOnlyHint. Agents cannot distinguish safe from risky tools without annotations.
engram_capture (WRITE operation) lacks confirmation/dry-run pattern. Agents can irreversibly ingest incorrect session summaries without review. No recovery guidance if capture fails.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 66 | 2026-07-28+ | v2 |
'domain' parameter in engram_context accepts free-form string but description lists valid values (database, architecture, api_design, etc.). Should be an enum constraint, not prose. LLMs will hallucinate invalid domains.
Error handling minimal. engram_capture returns {error: string} but no guidance on retry, user action, or root cause. No error categorization (retryable vs fatal). Agents cannot self-correct.