MCP server for Pith - AI-Native Task Management. Provides tools for managing projects, tasks, comments, and agent work sessions.
Server has 11 tools with consistent naming (verb_noun pattern) and descriptions present for all. Input schemas are visible and typed with Zod. However, descriptions are generic (avg ~80 chars, below 194-char baseline), parameter descriptions lack detail on constraints and formats, output schemas are undocumented, and error handling is minimal. No tool annotations (readOnlyHint/destructiveHint). Composition is reasonable but lacks idempotency guarantees and confirmation patterns for destructive ops.
Add a comment to a task (supports Markdown)
Batch-create multiple sub-tasks under a parent task
Create a new task with title, description, priority, labels, assignee, parent_task_id
Get all tasks assigned to the current agent/user
Get project details including settings and status flow
Get full task details including comments, sub-tasks, and activity history
Output schemas undocumented. Tools return JSON text but LLMs cannot infer response structure (fields, types, pagination). Downstream tool chaining requires guesswork.
Descriptions lack actionable detail. Generic 'Get X' or 'List X' (avg 55-65 chars) do not explain WHEN to use each tool, what fields are returned, or dependencies. Baseline is 194 chars.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot distinguish safe reads from destructive writes (create_task, update_task, add_comment, create_subtasks, start_session) without explicit hints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
List all projects the authenticated user has access to
Query tasks with filters: status, priority, assignee, label, free-text search
Full-text search across task titles, descriptions, and comments
Begin an agent work session
Update any task field: status, priority, assignee, description, labels, due_date
Error handling is minimal. errorResult() returns raw error message as JSON text. No recovery guidance, no categorization (retryable vs fatal), no invalid-value hints for LLM self-correction.
Destructive operations (create_task, update_task, add_comment, create_subtasks, start_session) lack confirmation or dry-run patterns. Agents can make irreversible mistakes without safeguards.