Solid foundation with complete schemas and descriptions for all 11 tools. Tool names follow verb_noun convention (task_create, task_update, project_list). All parameters have type definitions and descriptions. However, descriptions are verbose and sometimes generic; parameter descriptions lack actionable constraints (e.g., no enum validation for status values despite VALID_TASK_STATUSES existing); output schemas are not documented; error handling is minimal. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk classifications. Composition is good, tools chain well (task_create → task_update → task_get) and batch variants exist (task_create_bulk). Security: no secrets exposed as parameters.
Archive a project and optionally its tasks
Create a new project
List all projects with optional filtering and pagination
Create a new task for tracking work
Create multiple tasks at once
Delete a task by ID (removes the folder)
Get full details of a task by ID
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk classifications. task_delete, task_update, task_create are marked DESTRUCTIVE/WRITE but lack machine-readable hints for agent safety.
Output schemas not documented. Tools return JSON but LLMs cannot infer field names, types, or structure. E.g., task_create returns a task object but schema is not declared, LLM must guess whether it includes 'id', 'created_at', 'blockedBy', etc.
Parameter descriptions lack actionable constraints. 'status' enum is defined in code (VALID_TASK_STATUSES) but not exposed in schema descriptions. LLMs cannot see valid values without reading implementation. Descriptions should state: 'One of: pending, planning, in_progress, reviewing, blocked, completed, archived, deleted'.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
List all tasks (summary view: id, subject, status, owner, blockedBy)
Move a task to a different project (or to global tasks)
Get task tree with all descendants (formatted or raw)
Update an existing task's status, dependencies, or details
Error handling is minimal. Tools return isError: true with generic messages ('Task not found') but do not guide recovery. E.g., task_get should suggest 'Try task_list() to find valid task IDs' or 'Did you mean task ID 42?'.
Descriptions are verbose and generic. descriptionStructure template (Context, Task details, Location, Architecture, Dependencies, Examples, Reasoning, Barriers, Implementation steps, Testing plan, Deployment plan, Sources) is 400+ chars and repeated in multiple tool descriptions. Baseline for A+ tools is 50 - 200 chars. Trim to: 'Create a task with structured planning details (context, implementation steps, testing plan, sources).'