Production-grade local hierarchical memory platform for AI agents with Obsidian sync, hybrid RRF search, and Ebbinghaus temporal decay. Exposes memory tools over standard MCP JSON-RPC protocol via stdio.
Gomaa presents a well-structured memory system with 8 tools, all with explicit schemas and clear descriptions. Tool naming follows verb_noun conventions (memory_remember, memory_recall, etc.). All tools have non-empty descriptions (134 - 365 chars) that explain purpose and use case. Input schemas are complete with type definitions and parameter descriptions. However, several parameter descriptions lack depth regarding constraints, formats, and error recovery guidance. Output schemas are not documented in the visible code. Error handling patterns are not evident in the tool definitions themselves. The server demonstrates good foundational quality but lacks the polish and comprehensive guidance expected for A-grade production tools.
Retrieve and pack memory into a token-budgeted prompt block for use in agent reasoning.
Apply link reconciliation and temporal decay (Ebbinghaus curve) to the memory store.
Ingest a full conversation transcript verbatim into memory, split along conversational turn boundaries.
Publish a sanitized, curated finding or policy to the cross-agent shared fleet memory.
Search memory by semantic meaning, keywords, or graph. Retrieves from both private and shared stores.
Store a private memory note in the vault with semantic embedding, tags, and hierarchical wing/room scope.
Get memory store statistics (note count, embeddings, layer distribution).
Output schemas not documented. Tool definitions specify input schemas but do not document what fields agents should expect in responses. This forces LLMs to guess at response structure for downstream planning.
Parameter constraints under-specified. The 'salience' parameter in memory_remember accepts 0.0 - 1.0 but the description does not document the range or default behavior at boundaries. The 'decay_rate' in memory_consolidate defaults to 0.95 with no guidance on valid range (0 - 1?). The 'top_k' parameter lacks a reasonable upper bound.
Error handling not documented. No tool description explains what errors can occur (e.g., semantic embedding failures, database unavailability) or how agents should recover. No error classification (retryable, user-fixable, fatal) is evident.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | <=2025-11-25 | v2 |
View recent memory activity events (store operations, decay cycles).
Scope parameter relationships undocumented. The 'scope' parameter in memory_recall and memory_assemble_context is optional with nested wing/room properties, but descriptions do not clarify: (1) can wing be set without room? (2) what happens if both are omitted? (3) what is the precedence?
Idempotency not declared. The memory_remember tool accepts 'title' as a unique identifier but does not state whether calling it twice with the same title creates duplicates, overwrites, or fails. Critical for agent retry safety.
memory_stats returns no parameters but schema shows empty properties object. Clarify in description what fields the stats object contains (note_count, embedding_count, layer_distribution, etc.) and whether pagination is needed for large stores.