Project and task management system with flexible filtering and multiple output formats, exposed as MCP tools via stdio transport
JAR has 17 well-named tools with complete input schemas and descriptions. Naming follows verb_noun convention (project_create, task_list, analytics_summary). All tools have descriptions (avg ~120 chars, within 10-1024 baseline). Input schemas are properly typed with enums for constrained fields (status, sort_direction). However, output schemas are NOT documented, responses are JSON-serialized via _ok() helper with no declared structure. Error handling is minimal; no recovery guidance or actionable error messages. No tool annotations (readOnlyHint, destructiveHint). Parameter descriptions are adequate but lack format constraints (e.g., ISO-8601 dates stated in text, not as format: 'date-time'). Composition is sound, tools are single-responsibility and chainable (e.g., project_list → project_get → project_tasks). Missing: output schema documentation, error classification, confirmation patterns for destructive ops.
Status reversals, abandonment, and recovery patterns.
Deadline clustering and context switching load.
Deadline push rate and miss rate by tag / project.
Deadline realism score (DRS) and procrastination patterns.
Health dashboard — key numbers from all metrics.
Time-to-done distribution and completion velocity per tag.
Create a new project. The description MUST contain an 'MVP:' section and an 'EVALUATION:' section when a description is provided.
Output schemas not documented. Tools return JSON via _ok() helper with no declared response structure. LLMs cannot plan downstream calls or extract fields reliably.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Destructive tools (project_delete, task_delete) lack explicit markers; LLMs cannot distinguish safe reads from irreversible writes.
No error handling or recovery guidance. Tools return raw JSON errors with no actionable next steps. LLMs cannot self-correct on invalid input or retryable failures.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Hard-delete a project and ALL of its tasks in a single transaction. This operation is irreversible.
Retrieve a single project by its integer ID. Returns null if not found.
List projects with optional filtering and sorting.
List all tasks belonging to a specific project.
Update one or more fields of an existing project. Omit a field to leave it unchanged; pass null to clear it.
Create a new task.
Permanently delete a task.
Retrieve a single task by its integer ID. Returns null if not found.
List tasks with optional filtering and sorting.
Update one or more fields of an existing task. Omit a field to leave it unchanged; pass null to clear it.
Destructive operations lack confirmation/dry-run pattern. project_delete and task_delete execute immediately with no undo or confirmation step, risking accidental data loss.
Date format constraints stated in text only ('ISO-8601 date, e.g. 2025-01-01'). JSON Schema format: 'date-time' not used. LLMs may pass invalid date strings.