Persistent memory architecture for Claude — MCP server + hooks + rules + prompts. Part of the SAE4U OSS family.
Server has 7 well-named tools with clear descriptions (avg 180 chars, within baseline 194). All tools have input schemas with type definitions and parameter descriptions. However, output schemas are undocumented, responses are free-text strings rather than structured objects. Error handling is minimal (no recovery guidance, no categorization). Missing tool annotations (readOnlyHint, destructiveHint). Parameter constraints could be more explicit (e.g., category as enum, days as range). No pagination support for list_memories despite potentially large result sets.
Delete a memory by its id. Use this when a stored fact turns out to be wrong or outdated.
Return the current persona + user context. This gives the AI its identity and what it knows about the user. Call this at session start to load full context.
Write an end-of-session journal entry. Use this at the end of a significant conversation to record what happened, decisions made, and what to remember for next time. Journals are stored in ~/.sae4u-memory/journals/YYYY-MM-DD.md for human reading.
List stored memories, optionally filtered by category.
Search persistent memory for relevant facts. Scans TWO corpora by default and merges results: 1. SQLite memories (written via `remember` tool) 2. Markdown memory files — Claude Code auto-memory + sae4u-memory home (configurable via SAE4U_MARKDOWN_ROOTS env, colon-separated paths) Use this at the start of any substantive conversation to pull in prior context, feedback rules, project state, and recent session observations.
Output schemas undocumented. All tools return free-text strings instead of structured objects. LLMs cannot reliably extract fields for downstream tool chaining (e.g., memory_id from remember response).
Missing tool annotations. forget (destructive), remember (write), journal (write) lack destructiveHint/readOnlyHint. Agents cannot distinguish safe from risky operations without reading descriptions.
Parameter constraints not formalized. 'category' should be an enum (user|feedback|project|reference|general). 'sources' in recall is enum-like but not declared. 'days' in recent_journals lacks min/max bounds.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
Retrieve recent journal entries.
Save a fact, observation, or piece of context to persistent memory. Use this when you learn something important about the user, their projects, their preferences, or anything else worth recalling in future sessions.
No pagination support. list_memories accepts limit but no offset/cursor. recall returns up to 'limit' results per source but no total count or next_cursor. Large memory stores will be truncated silently.
Error handling lacks recovery guidance. forget returns 'No memory found with id X' but does not suggest how to find the correct ID. recall returns 'No memories found' without suggesting search alternatives.