MCP server for MyPersona emotional memory agent. Exposes 12 tools over stdio for Claude Code integration. Tracks emotional states across dual engines: Engine 1 (Persona/Should-Self) monitors authority, compliance, and espoused beliefs; Engine 2 (Reward/Want-Self) tracks what actually energizes users. Analyzes the gap between these engines to predict behavior.
Server has 12 tools with mixed quality. Naming is good (verb-noun convention: detect_mood, get_emotional_timeline, query_beliefs, etc.). However, descriptions vary widely in length and actionability. Most tool descriptions are present but lack standard definition of WHEN to use the tool and what it returns structurally. Parameters have type hints in schema but descriptions are sometimes generic. Critical issue: No input/output schemas are visible in the provided code, only parameter names and type hints in function signatures. The FastMCP decorator abstracts schema generation, but without seeing the actual JSON Schema definitions, schema quality cannot be fully verified. Error handling is minimal, no evidence of recovery guidance, error categorization, or actionable error messages. Security considerations exist (dotenv usage, stderr logging) but no explicit permission gates or audit patterns visible. Tools are well-composed (each does one thing) but lack cross-tool chaining guidance.
Register a new authority source (e.g., a person, policy, document).
Analyze emotional signals in a user message. Returns valence (-1 to +1), arousal (-1 to +1), quadrant (excited/calm/stressed/low/neutral), and confidence. Also runs belief extraction, authority detection, compliance analysis, approach/avoidance tracking, and dual-engine gap analysis. Call this on every user message to keep the emotional state current.
Export a complete emotional profile: beliefs, authority graph, timeline, gaps, and governance audit trail.
Get the user's mood history for a topic over time. Shows emotional trajectory and trends. Useful for spotting shifts in how they feel about recurring subjects.
Get the current divergence between Persona (Should-Self) and Reward (Want-Self) engines.
Get a narrative introspection of the user's emotional state, blind spots, and system confidence.
Input/output schemas not visible in provided code. FastMCP abstracts schema generation via decorators, but without explicit JSON Schema definitions, schema completeness cannot be verified. Parameters lack minima/maxima constraints (e.g., days_back unbounded, limit unbounded, strength 0-1 not documented).
No error handling or recovery guidance visible. Tools return JSON strings but no documentation of error cases, recovery steps, or actionable error messages. Example: what if belief_id does not exist in update_belief? What if trust_zone is invalid?
Tool descriptions lack WHEN-to-use guidance. Example: detect_mood says 'Call this on every user message' but query_beliefs, search_memories, and query_authority lack guidance on when they are the right choice vs alternatives. No disambiguation for overlapping tools.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 59 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Get the current authority graph: sources, trust tiers, and influence.
Query the user's current beliefs with Bayesian confidence levels. Includes epistemic vs aleatoric uncertainty decomposition.
Explicitly record a high-value emotional memory.
Clear all in-memory state and optionally persist to disk.
Search emotional memories by semantic similarity. Returns memories with their mood state at time of encoding, trust zone, and encoding weight.
Update a belief's strength. Confirm reinforces it, reject weakens it, weaken reduces confidence without full rejection.
Destructive/irreversible operations lack confirmation pattern. reset_session and record_memory modify state but have no dry-run, confirmation, or undo capability. reset_session with persist=true is particularly dangerous.
Parameter descriptions use example values ('verified/provisional/flashbulb/unverified' in trust_zone; 'confirm, reject, weaken' in action). LLMs may reuse these literally instead of treating them as enums. Should be formal enum constraints in schema, not prose.
No tool chaining guidance. Output schemas are not documented, so LLMs cannot see which fields from detect_mood feed into query_beliefs or update_belief. Missing response field names like topic, topic_id, belief_id standardization.