Persistent memory for Claude Code Channels via Telegram, powered by Supabase and MCP.
Server has 7 tools with complete Zod schemas and descriptions. Naming follows verb_noun convention (log_message, load_context, remember, forget, recall, start_session, end_session). Descriptions are present and contextual (avg ~100 chars), meeting the 10-1024 char baseline. However, several parameters lack descriptions (e.g., 'days' in load_context has description but 'limit' in recall is generic). Output schemas are not documented, LLMs cannot predict response structure. Error handling is minimal: tools return success messages but lack recovery guidance or error classification. No input validation visible (e.g., days parameter unbounded, could accept negative values). Session management tools (start_session, end_session) lack idempotency guarantees. Missing: pagination guidance for recall results, per-item success/failure for batch operations, and confirmation patterns for destructive operations (forget).
Save a session summary before ending. Call at the end of each conversation.
Deactivate a previously saved fact. Use when the user says 'forget about X'.
Load recent conversation summaries and saved facts. Call at session start for context.
Save a conversation message to persistent memory. Call this for each user/assistant exchange.
Search conversation history, summaries, and facts for a topic. Use when the user asks about past conversations.
Save an important fact to persistent memory. Use when the user says 'remember this'.
Output schemas not documented. LLMs cannot predict response structure (e.g., recall returns {messages, summaries, facts} but this is not declared in tool definition). Agents must infer structure from text responses.
Unbounded numeric parameters. 'days' in load_context and 'limit' in recall lack min/max constraints. LLMs could pass negative days or limit=999999, causing performance issues or unexpected behavior.
No error recovery guidance. Tools return success messages ('Message logged', 'No results found') but do not guide LLMs on failure modes. E.g., forget returns 'No active facts found', should suggest 'Try recall() to search for the fact first.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
Initialize a new memory session and load context. Call once at the start of each conversation.
Destructive operation (forget) lacks confirmation pattern. Deactivating facts is reversible but not undoable. No dry-run or confirmation step to prevent accidental data loss.
Session lifecycle tools (start_session, end_session) do not declare idempotency. Calling end_session twice with the same session_id may create duplicate summaries. No idempotent operation pattern applied.