A minimal task management system for LLMs exposed as an MCP server, API and CLI
TinyTask MCP server demonstrates good definition quality with 31 well-named tools following verb_noun conventions. All tools have explicit descriptions (10-150 chars, within baseline). Input schemas are complete with type definitions and parameter descriptions. However, output schemas are not documented in the visible code, and several tools lack actionable error guidance. Tool names are clear and consistent, parameter constraints are well-defined (enums for status, optional flags for auto_promote), and descriptions explain WHAT tools do and WHEN to use them. The server shows evidence of thoughtful parameter design with created_by/updated_by tracking and relationship fields (parent_task_id, blocked_by_task_id). Missing output schema documentation and minimal error recovery guidance prevent a higher score.
Add a comment to a task
Add a link or reference to a task
Add a task to a queue
Archive a task (soft delete)
Clear all tasks from a queue
Create a subtask under a parent task
Create a new task
Delete a comment
Output schemas not documented in source code. Tool handlers return JSON-stringified responses with minimal schema documentation. LLMs cannot determine downstream field names or types for response chaining.
Destructive operations (delete_task, delete_comment, delete_link, clear_queue) lack confirmation or dry-run capability. An agent could permanently delete all tasks in a queue with a single call. No error guidance for recovering from accidental deletions.
Error responses use generic JSON error messages without recovery guidance. From sample handler code (comment-tools.ts), errors like 'Error adding comment: <message>' do not suggest next steps or retryability.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 69 | <=2025-11-25 | v2 |
| 2026-03-09 | D | 59 | - | v1 |
Delete a link
Delete a task permanently
Get a specific comment
Get tasks assigned to a specific agent
Get statistics for a queue
Get tasks in a specific queue with filtering options
Get all subtasks for a parent task
Get a task by ID with all associated data
Get the history of changes for a task
Get a task with its subtasks included
List all comments on a task
List all links on a task
List all available queues
List tasks with filtering options
Move a comment to a different task
Move a subtask to a different parent or make it top-level
Transfer a task from one agent to another
Move a task from one queue to another
Remove a task from its queue
Sign up an agent for the next available task in the queue
Update an existing comment
Update a link
Update an existing task
Tool descriptions for destructive operations (delete_task, delete_comment, clear_queue) are too brief (60 chars) and do not emphasize irreversibility or invite confirmation. Baseline is 194 chars; these are < 100.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) visible in source. These annotations help LLMs reason about tool safety and sequencing. Current spec (2026-07-28) encourages their use.
Parameter descriptions do not document constraints for numeric types. E.g., priority, limit, offset lack min/max bounds. LLMs may pass unbounded values causing API or database errors.