Things MCP Server demonstrates solid tool definition quality with comprehensive parameter schemas and well-written descriptions. All 6 tools have clear action-verb names (add_, update_, export_, things_summary) and detailed parameter documentation. However, there are gaps in error handling guidance, missing tool annotations, and no documented output schemas. The server follows good naming conventions and provides extensive parameter descriptions with format guidance, but lacks recovery paths and LLM-actionable error messages. Most tools score well on naming and description but lose points on output schema documentation and error handling.
Create a new project in Things.app. Add notes, tags, assign to areas, and pre-populate with initial to-dos.
Create a new to-do item in Things.app. Add notes, tags, checklist items, and assign to projects or areas.
Export complete Things database as structured JSON for debugging, backup, or data processing.
Get a structured summary of Things.app data including open tasks, projects, areas, and tags. Supports filtering by area, tag, and project name.
Update an existing project in Things.app. Modify title, notes, scheduling, tags, area assignment, and completion status.
Update an existing to-do item in Things.app. Modify title, notes, scheduling, tags, checklist items, project/area assignment, and completion status.
Output schemas not documented. Tool descriptions do not specify what fields are returned or the structure of responses. LLMs cannot plan downstream tool chains or extract data without knowing response structure.
Error handling lacks recovery guidance. No tool description tells the LLM what to do when an operation fails (e.g., if project not found, suggest a list_projects call first; if auth token missing, guide the user to set THINGS_AUTH_TOKEN).
No tool annotations present. Tools that modify state (add_todo, add_project, update_todo, update_project) lack destructiveHint/idempotentHint annotations. Agents cannot determine retry safety.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 60 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 11 | - | v1 |
Destructive operations (update_todo with completed=true, update_project with canceled=true) do not mention confirmation or dry-run support. Agents may inadvertently complete or cancel user tasks.
Parameter 'when' accepts free-form strings (e.g., 'today', 'tomorrow', 'evening', 'anytime', 'someday', ISO dates). No enum constraint provided, inviting hallucinated values like 'next Monday' or 'end of month'.
Pagination not documented. things_summary and export_json return potentially large result sets with no documented pagination, page size limits, or next_cursor mechanism. Large exports could exhaust context windows.