A DAG engine for multi-stage Claude agent workflows with memory system and web UI
Four tools with clear naming (memory_search, memory_add, memory_recall_stage, memory_stats) and good descriptions (avg 180 chars, well above 10-char minimum). All tools have Zod schemas with typed parameters and descriptions. However, output schemas are not formally documented, responses are inferred from code (TextContent blocks). memory_add has optional parameters with smart defaults (pipeline, stage auto-detected from env). No error handling guidance (e.g., what if search returns no results, or memory store is corrupted). No pagination despite memory_search and memory_recall_stage returning lists (capped at 10 results, but no limit param or next_cursor). Schemas are present and valid but output structure is implicit, not explicit.
Store a new learning for future agents. Use this when you discover something that would help future runs: architectural decisions, patterns, gotchas, errors and their fixes, or important project facts.
Recall what previous runs of a specific stage learned. Use this to see what happened in past runs of the same stage you're working in.
Search project memories for relevant knowledge. Use this BEFORE starting work to find what previous agents learned about similar tasks, patterns, gotchas, and architectural decisions.
Get overview of the project's memory bank — total memories, categories, pipelines.
Output schemas not formally documented. Responses are TextContent blocks inferred from code; LLMs cannot predict structure before calling. memory_search returns formatted text, not structured JSON with fields like 'memories: [{category, content, sourceStage, age}]'.
No pagination parameters or guidance. memory_search and memory_recall_stage hardcode limit=10 with no way for agents to request more results or iterate. Large memory banks will be truncated silently.
No error recovery guidance. When memory_search returns 'No relevant memories found', the agent has no hint about what to do next (try broader query? check memory_stats? proceed without context?). Error responses lack actionable next steps.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
memory_add relies on environment variables (PIPELINE_NAME, STAGE_NAME) for context. If not set, defaults to 'manual' and 'agent'. This is fragile, agents cannot override context, and missing env vars silently degrade data quality.
memory_stats output is unstructured text (lines joined with newlines). Should return JSON: {total, active, superseded, byCategory: {}, byPipeline: {}} so agents can reason about memory bank state programmatically.