Local-first context toolkit for AI coding agents. Exposes contextd workspace resolution, knowledge discovery, task context building, and workspace bundling over MCP.
Five tools with complete JSON schemas and basic descriptions, but significant gaps in parameter documentation and output schema clarity. Tool names follow verb_noun convention (resolve, find, context, contract_path, bundle) but descriptions are terse (10-50 chars, well below the 194-char baseline). No parameter descriptions visible in schemas, critical omission per pattern:tool-description. Output schemas not documented. Error handling exists but lacks recovery guidance. All tools are read-only, reducing risk but also limiting composition patterns.
Bundle workspace knowledge
Build the canonical contextd_task_context.v1 JSON artifact.
Resolve a contract id through contract-index.json and filename fallback.
Advisory fuzzy discovery across the active workspace and packs.
Resolve canonical contextd config, workspace, knowledge_root, and active packs.
Parameter descriptions missing entirely. Schemas define 'cwd', 'workspace', 'limit', 'query', 'task', 'materialize', 'contract_id' but provide no descriptions explaining what each controls or how to use it. LLMs cannot infer parameter semantics from names alone.
Tool descriptions are extremely terse (10 - 50 characters vs. 194-char baseline). 'Resolve canonical contextd config...' and 'Advisory fuzzy discovery...' lack context for when/why to call each tool. Descriptions should explain WHAT, WHEN, and WHAT IT RETURNS.
Output schemas not documented. Code shows _tool_content() returns 'content', 'structuredContent', 'isError' but no schema defines what fields appear in structuredContent for each tool. LLMs cannot plan downstream calls without knowing return structure.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 44 | 2025-06-18+ | v2 |
Error messages lack recovery guidance. ToolExecutionError exceptions are caught and returned as MCP errors, but error responses do not suggest next steps (e.g., 'Try search_users() first' or 'Available workspaces: ...'). Agents receive no actionable path forward.
Parameter 'limit' in contextd.find has min/max constraints (1 - 50) in schema but no description explaining what it limits (results? pages?) or why the bounds exist. Constraints alone are insufficient; descriptions must explain intent.