Web dashboard + MCP server for Haiplane agent development. Exposes hub tools for Cursor and remote agents.
Server has 5 tools with complete input schemas and descriptions. Naming follows verb_noun pattern (hub_create_task, hub_refine_task, hub_task_status, hub_readiness_tree). Descriptions are present but brief (10-50 chars), below the 50-200 char LLM-optimized baseline. Parameters have types and descriptions. No output schemas documented in visible code. Error handling via ToolError exists but recovery guidance not evident. Missing tool annotations (readOnlyHint/destructiveHint). Composition is reasonable: separate read vs write tools, but hub_refine_tasks bulk operation lacks per-item error reporting.
Create a new task in the hub
Get the readiness tree for a task showing dependencies and status
Refine an existing task with additional details
Refine multiple tasks in bulk
Get the current status of a task
Descriptions are too brief (10-50 chars vs 50-200 char baseline). LLMs cannot determine when to select tools or understand prerequisites. E.g., 'Create a new task in the hub' lacks context on required fields, return structure, or when to use vs hub_refine_task.
Output schemas not documented in visible code. LLMs cannot plan downstream calls or extract required fields (e.g., task_id from hub_create_task). Responses must include structured field definitions.
Tool annotations missing. hub_create_task, hub_refine_task, hub_refine_tasks are destructive (WRITE risk) but lack destructiveHint annotation. hub_task_status and hub_readiness_tree are read-only but lack readOnlyHint. Agents cannot distinguish safe from unsafe tools.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
hub_refine_tasks bulk operation lacks per-item error reporting. If 1 of 10 tasks fails, the entire call fails with no indication which task(s) succeeded. Agents cannot retry selectively or provide partial results to users.
Parameter descriptions are minimal. E.g., 'Task ID' and 'Project ID' lack context on format (integer range?), whether they are required, or how to obtain them. 'Refinement details' is vague, what structure? Plain text or JSON?