The best $0 research agent that runs on a laptop — local-first, CoVe-verified, with CLI / TUI / Web GUI + MCP server + Claude plugin.
Three tools with basic schemas and descriptions, but significant gaps in parameter documentation and output schema clarity. The 'research' tool has a reasonable description (67 chars) and three parameters with types and descriptions, meeting minimum standards. However, 'reset_memory' and 'memory_count' lack meaningful descriptions (under 20 chars threshold for 'reset_memory'). No output schemas are documented for any tool, LLMs cannot plan downstream calls or extract structured data. Parameter descriptions are minimal (e.g., 'off | session | persistent' for 'memory' lacks explanation of what each mode does). No error handling guidance, no recovery paths, and no indication of which operations are idempotent or safe to retry. Tool composition is reasonable (three separate concerns), but descriptions do not explain WHEN to use each tool or what the agent should expect back.
Return the count of trajectories in the persistent memory store.
Run a full research query through the local engine.
Wipe the persistent memory store. Returns the count of trajectories wiped.
No output schemas documented for any tool. LLMs cannot infer return structure, field names, or types. Breaks tool chaining and forces agents to guess at response format.
'reset_memory' description is 47 chars but lacks actionable detail. Does not explain what 'trajectories' are, what gets wiped, or consequences. Violates pattern:tool-description (10 - 1024 chars, but must be substantive).
'memory' parameter description ('off | session | persistent') lists values but does not explain what each mode does or when to use each. LLMs cannot reason about the choice without additional context.
No error handling guidance. Tools do not indicate what errors are retryable, what user input is needed, or how to recover from failures. Agents will stall on errors.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2026-07-28+ | v2 |
'domain' parameter lists presets but does not explain what each domain filters or when to use each. 'general / medical / papers / financial / stock_trading / personal_docs' is a bare enum without semantic guidance.