Six tools with reasonable naming (verb_noun pattern) and documented descriptions (100-200 chars), but critical gaps in schema completeness and parameter documentation. Input schemas are present but lack full type definitions for all parameters. Parameter descriptions exist but are minimal (10-30 chars). No output schemas documented. Error handling is absent, tools do not guide recovery or categorize failures. Composition is sound (each tool has one responsibility), but missing idempotency guarantees and confirmation patterns for destructive operations (memory_forget, memory_consolidate).
Consolidate and optimize memory records in a given scope
Delete or retire a memory record from the governed memory service
Read a governed memory record by subject key or by path alias such as memory/<topic>/<field>.md inside the workspace sandbox.
Generate a profile summary of memory records for a given scope and namespace
Store a memory record in the governed memory service
Search governed memory-service records through the active OpenClaw memory slot. Returns OpenClaw-compatible snippets with path, score, and line metadata.
No output schemas documented. LLMs cannot predict response structure, forcing them to parse unstructured output and plan downstream calls blindly.
Destructive operations (memory_forget, memory_consolidate) lack confirmation/dry-run patterns. No guidance on recovery if agent makes a mistake.
Parameter descriptions are minimal (10-30 chars). E.g., 'Memory scope' does not explain when to use 'user' vs 'session' vs 'repository'. LLMs cannot disambiguate.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2025-06-18+ | v2 |
No error handling guidance. Tools do not return actionable error messages (e.g., 'Memory not found. Try memory_search() first.'). Agents cannot recover from failures.
memory_search and memory_get accept both 'limit' and 'maxResults' parameters, ambiguous which takes precedence. Violates single-responsibility naming.