Self-improving learning engine for Claude Code — persistent identity, cross-session memory, and evolving cognitive frameworks
This server presents a thematic, experience-driven design focused on identity and learning persistence. However, it falls short of production-grade tool quality on multiple critical dimensions. Tool descriptions are narrative and experiential but lack the precision and constraint documentation LLMs need. Input schemas are present but often under-specified: many parameters lack type constraints (enums, ranges), confidence values lack min/max bounds, and several tools accept free-form strings where enums would prevent hallucination. Error handling is minimal, no recovery guidance, retryable/fatal classifications, or actionable error messages. Output schemas are not documented; the agent must infer response structure. The 15-tool count is reasonable, but composition analysis reveals heavy interdependencies (soul_* tools read/write the same files) and unclear state management across reflection cycles. Parameter naming is generally acceptable (soul_context, memory_search, memory_save), but some are overly narrative ('soul_self_evaluate' instead of 'record_self_evaluation'). While tool names start with action verbs, descriptions prioritize narrative context over LLM-actionable instructions. The 'soul' prefix creates cohesion but not clarity about when each tool should be invoked relative to others. Critically, this is a STDIO-only server, which is a hard transport limitation (capped at 50 for protocolReadiness regardless of definition quality).
Search or browse the conversation journal. Use to answer 'what did I work on?' or find past conversations by topic.
List recently saved memories. Use for a quick overview of what's been recorded.
Save a fact, decision, preference, or lesson to long-term memory. Automatically generates an embedding for future semantic search.
Semantic search across all memories and journal entries. Returns results ranked by meaning-similarity. Falls back to keyword search if Ollama is not available.
Get memory system statistics: total memories, count by category, recent activity.
Retrieve a specific memory by ID or keyword. Use after a search returns relevant memories.
confidence parameter in soul_signal lacks min/max bounds or default; LLMs may pass values outside [0,1]
memory_search accepts topK without documented range; LLMs could request 0 or 10,000 items, risking OOM or empty results
Output schemas NOT documented for any tool; agents must infer response structure by trial and error
No error handling or recovery guidance documented; tools fail silently or return opaque errors
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
Select and load relevant frameworks for this conversation. Call after reading the user's first message to pick the most applicable frameworks.
Load your soul context — identity, frameworks, signals, lessons, and state. Call this at the start of every conversation. Default is 'full' (~4500 tokens). Use 'slim' for identity only.
Load a single framework with full details: description, evidence history, tier, and relationships.
Read a soul file. Available: SOUL.md, SHADOW.md, STATE.md, STORY.md, CORRECTIONS.md, FRAMEWORKS.md, BONDS.md, MORTAL.md, GROWTH.md, PRINCIPLES.md, EDGES.md
Trigger a reflection cycle. Quick: tests frameworks against recent signals. Deep: full analysis with framework discovery. Meta: audits framework coherence and redundancy.
Record a self-evaluation of a complex response. Be descriptive: 'Response used 450 words for a simple question' not 'bad response'.
Record observed signals from this interaction. Use when you notice patterns the automatic extractor might miss.
Get current system status — framework count, learning phase, signal count, last reflection time.
Write to a soul file. SOUL.md, SHADOW.md, STORY.md, CORRECTIONS.md, BONDS.md, MORTAL.md, GROWTH.md, PRINCIPLES.md, EDGES.md are writable. STATE.md and FRAMEWORKS.md are auto-managed.
days parameter in memory_journal and memory_recent lacks explicit min/max; no mention of edge cases (0, negative, >365)
soul_activate and soul_framework descriptions are narrative ('Call after reading...') rather than specification; unclear what the tool RETURNS
soul_signal accepts array of objects with type enum but no example valid values in description; confidence min/max and evidence length constraints undocumented
No pagination support for memory_search; could return unbounded result sets if Ollama is unavailable and keyword search returns 100+ matches
soul_write description states 'STATE.md and FRAMEWORKS.md are auto-managed' but does not explain what happens if an agent tries to write to them anyway (error? silent no-op?)
recall tool accepts EITHER id OR keyword but description does not mark them as mutually exclusive or state what happens if both are provided