A semantic memory server for Claude with vector embeddings, decay-based ranking, and pinned memories. Supports local file-backed storage or Redis backend, with pluggable embedding providers (local llama.cpp, Ollama, or OpenAI).
Five tools with complete JSON schemas and clear descriptions. Naming follows verb_noun pattern (mem_store, mem_search, mem_get, mem_delete, mem_list). Descriptions are well-written (80-180 chars) and explain WHAT, WHEN, and WHY. All parameters have types and descriptions. Output schemas are documented in code. However, no tool annotations (readOnlyHint/destructiveHint) are present, and error handling lacks recovery guidance. Parameter descriptions could be more prescriptive about constraints (e.g., key format, top_k bounds). Missing examples of error responses.
Delete a memory by exact key.
Get a specific memory by exact key.
List stored memories, optionally filtered by category.
Semantic search for memories with recency weighting. Recent and pinned memories rank higher. Optionally filter by category for hybrid retrieval.
Store a memory with semantic key. Keys should be descriptive sentences like 'hms-cpap deploy process and steps' so semantic search works well. Use pinned=true for critical facts that should never decay.
No tool annotations (readOnlyHint/destructiveHint/idempotentHint) declared. mem_delete and mem_store should be marked destructive/write to guide agent planning.
Error responses in code return raw JSON with 'error' field but lack recovery guidance. E.g., 'Embedding failed: ...' does not tell the agent what to do next (retry? check config? call different tool?).
Parameter 'key' in mem_store lacks format constraints. Description says 'sentence-like' but does not specify length limits, character restrictions, or examples of valid keys.
mem_search 'top_k' parameter has default=5 but no min/max bounds documented. Unbounded integers risk LLM passing absurd values (e.g., top_k=999999).
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 69 | 2026-07-28+ | v2 |
mem_list 'limit' parameter defaults to 20 but lacks explicit max bound. Description does not state pagination strategy or whether results are sorted.