Things 3 MCP provides 20 well-structured tools with consistent naming (verb_noun pattern: get_*, create_*, update_*) and complete JSON schemas. All tools have descriptions and input parameters are typed. However, descriptions are minimal (10-50 chars for most read tools), lacking context on WHEN to use each tool or dependencies between them. Write tools (update_todo, create_todo) have better descriptions but lack error guidance. No output schemas documented. Tool annotations present (readOnlyHint, destructiveHint, idempotentHint) but underutilized, only 3 tools annotated. Missing pagination for list tools (get_projects, get_areas, get_tags return unbounded lists). No error handling guidance or recovery paths documented.
Create a project. Args: title: The title of the project. area: The title of an area to add the project to. notes: The notes of the project. when: When should the project be completed. Can be a date following the format YYYY-MM-DD or a string like "tomorrow", "in 3 days", etc. deadline: The deadline of the project. Can be a date following the format YYYY-MM-DD or a string like "tomorrow", "in 3 days", etc.
Create a todo. Args: title: The title of the todo. list: The title of a project or area to add to. notes: The notes of the todo. when: When should the todo be completed. Can be a date following the format YYYY-MM-DD or a string like "tomorrow", "in 3 days", etc. deadline: The deadline of the todo. Can be a date following the format YYYY-MM-DD or a string like "tomorrow", "in 3 days", etc.
Get anytime todos and projects.
Get all todos for an area.
Get all areas.
Get completed todos and projects. Args: last: Limit returned tasks to tasks created within the last X days, weeks, or years. For example: '3d', '5w', or '1y'.
Minimal descriptions on 12 read-only tools (get_today, get_inbox, get_trash, get_logbook, get_deadlines, get_anytime, get_someday, get_upcoming, get_projects, get_areas, get_tags, get_task). Descriptions are 10-50 chars, lacking context on WHEN to use each tool or how they differ. LLMs cannot distinguish between similar tools (e.g., get_anytime vs get_someday vs get_upcoming).
No output schemas documented. Tools return list[Any] with no indication of field structure, required fields, or chaining IDs. LLMs cannot plan downstream calls or extract relevant data from responses.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | <=2025-11-25 | v2 |
Get deadlines.
Get inbox contents.
Get logbook contents.
Get all todos for a project.
Get all projects.
Get someday todos and projects.
Get all tags.
Get a task by ID.
Get today's todos and projects.
Get trash contents.
Get upcoming todos and projects.
Search for todos, projects, areas, and tags. Args: query: Only pass the necessary keywords as if you were doing a Google search. If you didn't get a result, try a different query.
Update a project. Args: id: The ID of the project to update. title: The new title of the project. completed: Whether the project is completed. notes: The new notes of the project. when: When should the project be completed. Can be a date following the format YYYY-MM-DD or a string like "tomorrow", "in 3 days", etc. deadline: The deadline of the project. Can be a date following the format YYYY-MM-DD or a string like "tomorrow", "in 3 days", etc.
Update a todo. Args: id: The ID of the todo to update. title: The new title of the todo. completed: Whether the todo is completed. notes: The new notes of the todo. when: When should the todo be completed. Can be a date following the format YYYY-MM-DD or a string like "tomorrow", "in 3 days", etc. deadline: The deadline of the todo. Can be a date following the format YYYY-MM-DD or a string like "tomorrow", "in 3 days", etc.
No pagination support on list tools (get_projects, get_areas, get_tags, get_completed). Tools return unbounded lists that could exhaust context windows. Missing limit, offset, and total_count parameters.
Tool annotations underutilized. Only 3 write tools (update_todo, update_project, create_todo, create_project) have destructiveHint/idempotentHint annotations. All 12 read tools should have readOnlyHint=true explicitly set for clarity.
No error handling or recovery guidance. Write tools (update_todo, update_project, create_todo, create_project) return None with no indication of success/failure. Missing error messages for invalid IDs, malformed dates, or Things 3 API failures.