An MCP server that provides read-only access to a hierarchical memory system for AI agent conversations, enabling intelligent compression and retrieval of conversation history across multiple compression levels (FULL, SUMMARY, META, ARCHIVE).
The server provides 13 tools with basic descriptions and input schemas, but suffers from significant quality gaps. Tool names follow verb_noun convention (set_, expand_, find_, get_, show_, search_) which is good. However, descriptions are inconsistent in depth and quality. Most critically, output schemas are completely undocumented, the tools describe what they do but never explain what fields they return, making it impossible for LLMs to plan downstream tool calls. Error handling is not visible in the provided code. Parameter descriptions exist but lack constraint details (ranges, enums, formats). The server exhibits the hallmarks of an early-stage project (alpha v0.1.0) with reasonable structure but immature tool design. Specific issues: (1) Tool descriptions vary widely in quality from 50 chars to 300+ chars with no consistency; (2) No output schema documentation visible for any tool; (3) Parameter descriptions are minimal (1-2 sentences) with no constraint guidance; (4) No evidence of error handling or recovery guidance; (5) Duplicate tool definitions (expand_node appears twice with slightly different descriptions); (6) Slack-specific tools (get_slack_channel_history, get_slack_thread_replies, search_slack_messages) lack prerequisite documentation about required Slack setup/tokens.
Retrieve full content of a conversation node by its ID. Use this tool to see the complete original content of a compressed or summarized message from the conversation history.
Retrieve full content of a conversation node by composite ID. This tool allows expanding compressed/summarized nodes to see their full original content, including all details that may have been compressed away in the hierarchical memory system.
Full text search for exact matches or regex matches.
Get overview statistics of the current conversation memory state. This tool provides a high-level view of the conversation's hierarchical memory state, including compression statistics and node counts at different levels.
Get statistics about the conversation memory. Use this tool to understand how much conversation history is stored and how it's organized across compression levels.
Get the most recent conversation messages.
Output schemas completely undocumented. No tool explains what fields it returns, forcing LLMs to guess downstream data structure. Critical for tool chaining and result interpretation.
Duplicate tool definitions: expand_node is registered twice (lines in memory_server.py and implied duplicate) with slightly different descriptions. This causes LLM confusion about which variant to call.
Parameter constraints missing. 'limit' parameters (find, search_memory, get_slack_channel_history, etc.) lack min/max bounds. LLMs may pass absurd values (limit=999999) causing timeouts or API failures.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 68 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 41 | - | v1 |
Fetch recent messages from the Slack channel. Use this tool to get context about recent channel activity that happened before the current conversation.
Fetch replies in a Slack thread. Use this tool to get the full context of a threaded conversation.
Get the current system prompt / scratchpad for this conversation. Use this tool to read your persistent notes and behavioral preferences that you've saved for this conversation session.
Search conversation history for specific content. Use this tool to find past messages or topics discussed earlier in the conversation.
Search for messages in Slack. Use this tool to find specific messages or topics discussed in Slack. Note: Requires the search:read scope on the bot token.
Set the conversation ID that will be used by other tools. This tool must be called first to establish the conversation context before using other tools like expand_node etc.
Show summaries of nodes within a specified range. This tool provides a hierarchical view of compressed nodes in a range, showing how the conversation has been compressed at different levels (SUMMARY, META, ARCHIVE) within the specified node range.
Slack-specific tools lack prerequisite documentation. No mention of required Slack token, scopes (search:read for search_slack_messages), or channel setup. Agents will fail without clear guidance.
No error handling documentation. Tools do not explain what happens on failures (e.g., 'conversation_id not found', 'Slack token expired'). LLMs receive no recovery guidance.
Parameter descriptions too terse. 'regex' parameter in find() is a boolean with no explanation of what regex pattern syntax is supported (PCRE? Python re?). 'mode' in search_memory lacks enum definition.
Inconsistent description quality. Descriptions range from 'Full text search for exact matches or regex matches.' (55 chars) to multi-sentence explanations. No consistency in tone, depth, or structure.