Persistent memory for AI agents over MCP. One SQLite file you own, hybrid vector + full-text + keyword search, no LLM in the loop, and honest reporting when recall degrades.
CPersona defines 29 tools with consistent naming (verb_noun pattern: store, recall, delete, etc.) and complete input schemas. All tools have descriptions and parameters are typed. However, descriptions are terse (avg ~40 chars, well below the 194-char baseline), lack actionable context for LLM selection, and omit error recovery guidance. Output schemas are not documented. No tool annotations (readOnlyHint, destructiveHint) despite clear risk classifications. Parameter descriptions are minimal, many lack format/constraint details. Error handling is absent from tool definitions.
Archive an episode of memories for an agent
Calibrate the recall precision threshold
Check the health of the server and database
Check for available updates
Declare associative memory relationships
Perform a deep integrity check of the database
Delete all data for an agent
Descriptions are uniformly terse (avg ~35 chars vs 194-char baseline). Examples: 'Store a memory message for an agent' (35 chars), 'Recall memories for an agent based on a query' (45 chars). Descriptions lack WHEN to use, prerequisites, or LLM selection context.
No output schemas documented. Tools return data but LLMs cannot plan downstream calls without knowing response structure. E.g., recall returns memories but response fields are not specified.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk classifications in metadata (WRITE, DESTRUCTIVE, READ_ONLY). Per 2026-07-28 spec, annotations enable agents to reason about safety. delete_memory, delete_episode, delete_agent_data should be marked destructiveHint=true.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
Delete a specific episode
Delete a specific memory
Export memories for an agent
Get the contents of a memory or episode
Get the profile for an agent
Get the status of the task queue
Get the recall precision threshold for an agent
Get findings for a session
Import memories for an agent
List episodes for an agent
List memories for an agent
Lock a memory to prevent modifications
Merge memories from one agent to another
Migrate the channel axis in the database
Recall memories for an agent based on a query
Recall memories with contextual information
Reconstruct memories from raw data
Set the recall precision threshold for an agent
Store a memory message for an agent
Unlock a previously locked memory
Update a specific memory
Update the profile for an agent
Parameter descriptions lack format/constraint details. E.g., 'limit' (integer) has no min/max; 'format' in export_memories has no enum; 'threshold' in set_recall_precision has no range.
No error handling guidance in tool definitions. Destructive tools (delete_memory, delete_agent_data) lack confirmation/dry-run patterns.