Two-stage retrieval + gating long-term memory engine for coding agents. Provides episodic memory with hybrid recall (vector + BM25), cross-encoder reranking, Ebbinghaus decay, and multi-agent session awareness via HTTP API and MCP interface.
Server exposes 7 tools with complete input schemas and descriptions. Naming follows verb_noun convention (recall, remember, register_session, heartbeat, finish_session, active_sessions, recent). Descriptions are substantive (100-250 chars), explaining WHAT and WHEN. However, output schemas are undocumented, tools return formatted strings rather than structured objects, forcing LLMs to parse unstructured text. Error handling is minimal (only _server_down fallback). No tool annotations (readOnlyHint/destructiveHint). Session management tools (register_session, heartbeat, finish_session) lack idempotency guarantees and confirmation patterns for state mutations.
See what OTHER agents are currently working on (multi-agent awareness). Returns active sessions that sent a heartbeat recently. Use this to discover siblings' in-progress work and avoid duplicating effort.
Mark this session finished, optionally stashing a result summary. Call when the task is done so siblings know the agent is no longer active.
Refresh this session's liveness and optionally report progress. Sessions that go silent longer than the timeout are treated as stale. Call periodically during long tasks.
Recall memories related to a query. Call this at the start of a session or whenever context from past work would help. Returns up to top_k memories ranked by relevance, with their topic, summary, and a relevance score.
Return the latest k memories by time (newest first), regardless of query relevance. Useful for a quick 'what was stored recently' glance.
Announce that THIS agent session is active and what it's working on, so sibling agents can see it (multi-agent collaboration). Call once near the start of a session. Re-registering with a new task updates it.
Output schemas undocumented. Tools return formatted strings (e.g., _format_recall returns numbered text) rather than structured JSON objects. LLMs must parse unstructured text, increasing errors and token waste.
No tool annotations. Tools lack readOnlyHint (recall, active_sessions, recent are read-only) and destructiveHint (remember, register_session, heartbeat, finish_session mutate state). Agents cannot infer safety/idempotency.
Session mutation tools lack idempotency guarantees and confirmation patterns. register_session, heartbeat, finish_session modify shared state; no dry-run or confirmation step prevents accidental overwrites in multi-agent scenarios.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Store a new episodic memory. Call this when a turn produces something worth remembering later (a decision, a fix, a fact learned). Near-duplicate summaries auto-merge into the existing memory instead of creating clutter.
Minimal error handling. Only _server_down() fallback; no recovery guidance for network failures, invalid queries, or state conflicts. Errors do not classify as retryable/user-fixable/fatal.
Parameter descriptions lack format/constraint details. 'query' in recall has no length guidance; 'topic' in remember has no max length; 'session_id' has no format spec. LLMs may pass invalid values.