A multi-tool MCP server providing conscious memory management and knowledge graph operations for LLM interactions
This server exhibits significant gaps in tool definition quality. While all 11 tools have names and schemas, the quality is inconsistent. Most tools have reasonable descriptions (50-150 chars), but critical issues emerge: (1) parameters lack sufficient constraints and validation guidance, many use generic types like 'string' and 'number' without regex patterns, enums, or explicit ranges; (2) output schemas are entirely undocumented, no tool declares what fields it returns, forcing LLMs to guess; (3) error handling is absent, no tool describes recovery paths or error categorization; (4) composition issues, the memory tools (save_memory, search_memories, update_memory, delete_memory, get_memory_tags, get_related_memories) form a tightly coupled subsystem with no inter-tool error guidance, and the knowledge graph tools (query_knowledge_graph, get_related_entities, find_entities_by_property, get_entity_details, find_purposeful_connections) lack idempotence guarantees or pagination controls despite potentially returning large result sets. The parameter descriptions, while present, are often minimal (10-30 chars) and fail to explain constraints, e.g., 'sessionId' is described as 'Session ID to associate with this memory' but does not clarify format, required vs optional, or what happens on mismatch. No tool declares mutually exclusive parameters, though several (like query_knowledge_graph with its optional params) likely have dependencies. Security: no tool explicitly gates destructive operations (delete_memory) or gates knowledge graph write operations (if any exist). Naming is verb-forward and mostly clear, but some tools are overly generic (e.g., 'query_knowledge_graph' could be more specific like 'execute_cypher_query').
Delete a memory record by ID
Search for entities in the knowledge graph by matching a property value with optional substring matching for strings
Find meaningful connections between entities based on relationship type with optional filtering by entity types and names
Retrieve complete details and properties of a specific entity from the knowledge graph by ID
Retrieve all available tags from conscious memory storage
Find entities connected to a specific entity in the knowledge graph with configurable relationship type, direction, and depth
Output schemas entirely missing for all 11 tools. No tool documents what fields/structure is returned.
Error handling completely absent. No tool describes recovery paths, error categorization (retryable vs user-fixable vs fatal), or actionable error messages.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 56 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 28 | - | v1 |
Find memories related to a specific memory ID
Execute Cypher queries against the knowledge graph database to retrieve and analyze connected data
Save information to conscious memory storage with tags and importance level
Search through conscious memories with query, tag filters, and importance range
Update an existing memory record with new content, tags, importance, or context
Parameter constraints and validation guidance insufficient. Parameters like 'sessionId', 'relationshipType', 'sourceType', 'targetType' are free-form strings without enums, formats, or length limits. LLMs cannot self-validate input.
Destructive operation (delete_memory) lacks confirmation pattern, audit guidance, or clear explanation of irreversibility. Description is only 34 chars and does not warn of side effects.
Knowledge graph query tool (query_knowledge_graph) accepts arbitrary Cypher with 'additionalProperties: true' parameter object. No mention of injection defense, timeout, result size limits, or error handling for malformed queries.
No pagination guidance for tools returning potential large result sets. search_memories includes limit param, but query_knowledge_graph and get_related_entities lack cursor/offset for scrolling. Large unbounded responses risk context window exhaustion.
Parameter descriptions are sometimes minimal (10-30 chars). E.g., 'sessionId' described as 'Session ID to associate with this memory' lacks format, optionality, and behavior on mismatch.
No idempotence declarations. Tools like save_memory, update_memory, and delete_memory do not clarify whether repeated calls with identical inputs produce identical results or risk duplicate side effects (e.g., duplicate memory entries).
Tool composition gaps. Memory tools and knowledge graph tools are separate subsystems with no clear integration guidance. How should an agent combine memory search + knowledge graph query? Missing tool chains.