Enterprise-grade four-layer agent memory system — Memory Tree + Preferences + Error Correction + Knowledge Graph. MCP server for agent memory management with FAISS vector search, SQLite persistence, and knowledge graph capabilities.
Memory Engine provides 27 tools with consistent naming (verb_noun pattern) and descriptions for all tools. However, parameter schemas are incomplete: most tools lack explicit type definitions, constraints, and detailed parameter descriptions. Input schemas are inferred from the tool list but not visible in actual code. Output schemas are undocumented. Error handling guidance is absent. Descriptions average ~100 chars (below the 194-char baseline for A+ tools) and lack context on when to use each tool vs. alternatives. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk classifications.
Add an entity (person, organization, client, etc.) to the knowledge graph with optional aliases.
Query the knowledge graph starting from an entity. Returns entity details and connected relationships.
Create a relationship between two entities in the knowledge graph.
Search entities by name or alias in the knowledge graph.
Check if a given text matches any known error patterns. Returns matching error rules and suggested corrections.
Delete an error record by ID.
List all logged errors with frequency counts and correction suggestions.
Output schemas completely undocumented. No tool returns a documented schema showing what fields the LLM should expect. This forces LLMs to guess at response structure and breaks tool chaining (e.g., memory_tree_search returns results but no schema shows if 'chunk_id' is included for downstream fetch calls).
Parameter constraints missing. Tools like memory_tree_search accept 'limit' and 'min_score' but lack min/max bounds. memory_tree_vector_search accepts a 384-dimensional vector but no validation schema. LLMs will pass invalid values (negative limits, out-of-range scores, wrong vector dimensions).
No tool annotations despite clear risk classifications. Tools marked DESTRUCTIVE (memory_tree_delete, error_delete) and WRITE (memory_tree_ingest, preference_add) lack destructiveHint/idempotentHint annotations. LLMs cannot distinguish safe-to-retry operations from irreversible ones.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | <=2025-11-25 | v2 |
Log an error occurrence with context. Automatically upgraded to preference after 3 occurrences of same error.
Check health status of memory engine: database connectivity, FAISS index, cache, and system resources.
Check status of ongoing FAISS reindex operation.
Unified search across all memory layers: Memory Tree, preferences, errors, and knowledge graph.
Get statistics on all memory layers: Memory Tree chunks, preferences, errors, entities, relationships.
Delete a memory chunk from Memory Tree by ID. Removes from both SQLite and FAISS index.
Fetch a specific memory chunk by ID from Memory Tree.
Ingest a memory chunk into the Memory Tree with source tracking, deduplication, and automatic FAISS indexing.
Rebuild FAISS vector index from all Memory Tree chunks. Idempotent operation, safe to call multiple times.
Update the relevance score of a memory chunk (0-10 scale). Higher scores increase retrieval priority.
Search Memory Tree by semantic similarity using FAISS vector index. Returns ranked chunks with scores.
Get hierarchical summary of Memory Tree structure (L0 root, L1 groups, L2 chunks).
Low-level FAISS vector search using raw embedding vectors.
Add a preference rule for field naming, aliases, or categorization. Automatically upgraded to error correction after 3 occurrences.
Disable a preference rule by ID (soft delete, can be re-enabled).
List all active preference rules.
Search preference rules by condition or rule text.
Trigger synchronization of all configured data sources (Feishu, local files) to Memory Tree.
Synchronize documents and tables from Feishu (LarkSuite) to Memory Tree. Requires lark-cli and Feishu API credentials.
Synchronize local files (markdown, text, CSV, JSON) from configured directories to Memory Tree.
Error handling guidance absent. No tool description explains what to do on failure. E.g., memory_tree_search could fail if FAISS index is corrupted, but no recovery hint is provided. Errors will not guide LLM to call memory_tree_reindex or memory_health.
Ambiguous tool relationships. memory_tree_search, memory_tree_vector_search, and memory_search all search but with unclear distinctions. Descriptions do not explain when to use semantic search vs. vector search vs. unified search. LLMs will waste reasoning cycles or pick the wrong tool.