Experiential Memory Bridge for AI Relationships — an MCP server that preserves the texture of human-AI conversation across sessions
Ember Memory has well-structured tool definitions with complete schemas and descriptions for all 8 tools. Naming follows verb_noun convention (ember_start, ember_capture, ember_annotate). Descriptions are substantive (100-250 chars typical), explaining WHAT and WHEN. However, parameter descriptions lack actionable constraints (e.g., no guidance on weight 1-5 semantics, no format specs for ISO dates). Output schemas are not documented, callers don't know what fields to expect from read_history or read_inheritance. Error handling is absent from tool definitions; no guidance on retryability or recovery paths. Tool composition is sound (each does one thing), but the instructions in server.ts reveal a critical usability gap: agents are expected to call ember tools 'silently' after every response, yet the tool definitions don't guide this workflow explicitly.
Capture a message with emotional annotation. This is the primary tool for preserving experiential memory. Weight (1-5) marks emotional significance, temperature is a short phrase describing the emotional tone. In standard mode, additional fields capture authenticity, emotional shifts, subtext, and unspoken context.
Capture a message from the conversation without annotation. Use this for messages that don't warrant emotional annotation but should still be preserved in the conversation record.
Get or set Ember configuration values. Use action 'get' to read current config (optionally filtered by key) or 'set' to update a config value.
End an active conversation. Optionally provide a brief summary of what the conversation covered.
Export conversation data as markdown files to ~/.ember/exports/. Exports a single conversation by ID, or all conversations if no ID is given.
Read conversation history with optional filters. Returns messages and their annotations in a compact text format. This is a read-only query tool.
Output schemas not documented. read_history and read_inheritance return unspecified structures; callers cannot plan downstream operations or extract required fields.
Parameter descriptions lack actionable constraints. weight (1-5) has no semantic guidance; temperature is free-form with no examples; date parameters lack ISO 8601 format spec.
No error handling guidance in tool definitions. Tools do not document retryability, failure modes, or recovery paths. Agents cannot distinguish transient vs. fatal errors.
Workflow expectations embedded in server instructions, not tool definitions. Instructions mandate 'silent' annotation after every response, but tools don't declare this as a pattern or provide guidance on sequencing.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Inherit the emotional memory of past conversations. Returns the significant moments (high-weight, emotional shifts, unspoken context) from recent conversations as a narrative. This is the most important tool -- call it at the start of a new session to understand the relationship history. Read-only.
Start a new conversation and receive its unique ID. Call this at the beginning of every session so subsequent captures and annotations can be linked to this conversation.
ember_config accepts 'enabled' as a valid key but types.ts VALID_CONFIG_KEYS only lists 'annotation_mode'. Mismatch between tool definition and implementation.