Persistent memory system with semantic search, accessible via MCP and REST API
Kopeng has 19 tools with consistent naming (verb_noun pattern: store_memory, search_memories, get_memory, etc.) and all have descriptions. However, descriptions are brief (avg ~40 chars, well below the 194-char baseline for A+ tools) and lack context on WHEN to use each tool or dependencies between them. Input schemas are present and typed, but parameter descriptions are minimal (avg ~30 chars vs 72-char baseline). No output schemas documented. Error handling is absent from tool definitions. Tools like trigger_discovery and trigger_dream lack clarity on side effects and prerequisites. The semantic memory system is well-structured but under-documented for LLM reasoning.
Archive a memory (soft delete)
Evaluate retrieval quality for a query
Retrieve an artifact from object storage (Phase 4: MinIO)
Retrieve context data from cache (Phase 3: Redis)
Get the diff/changes for a pending dream
Retrieve a specific memory by ID
Get the operator configuration
List memories with optional filtering
Descriptions are too brief (avg 30-40 chars vs 194-char baseline). LLMs cannot determine WHEN to use each tool or how it differs from similar tools (e.g., trigger_discovery vs trigger_dream). Descriptions lack prerequisites, side effects, and return value hints.
Parameter descriptions are minimal (avg 30 chars vs 72-char baseline). 'scope' appears in 8 tools but is never explained (optional? required? what values?). 'limit' and 'offset' lack range constraints. LLMs cannot infer valid inputs.
No output schemas documented. Tools return data but LLMs cannot plan downstream calls or extract fields. E.g., search_memories returns what fields? Does it include memory_id for get_memory chaining? Does it include scope for filtering?
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 44 | <=2025-11-25 | v2 |
List pending memory consolidation dreams awaiting review
Approve or reject a pending dream consolidation
Search memories using semantic similarity
Set context data in cache (Phase 3: Redis)
Update the operator configuration
Store an artifact in object storage (Phase 4: MinIO)
Store a memory with semantic embedding
Traverse memory graph relationships (Phase 2: Neo4j)
Trigger auto-discovery process
Trigger memory consolidation dream pass
Update an existing memory
Trigger tools (trigger_discovery, trigger_dream) lack clarity on side effects, prerequisites, and expected outcomes. Are they async? Do they return a job ID? Can they fail? LLMs cannot reason about when to call them or how to handle results.
No error handling guidance in tool definitions. If search_memories returns no results, should the LLM retry? Call trigger_discovery? Adjust the query? No recovery paths documented.