update_project
Modify project details like title, notes, schedule, deadline, tags, or status in the Things app. Use the tool to update or mark projects as completed/canceled by specifying the project ID.
Instructions
Update an existing project in Things
Args: id: ID of the project to update title: New title notes: New notes when: New schedule deadline: New deadline tags: New tags completed: Mark as completed canceled: Mark as canceled
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| canceled | No | ||
| completed | No | ||
| deadline | No | ||
| id | Yes | ||
| notes | No | ||
| tags | No | ||
| title | No | ||
| when | No |
Implementation Reference
- things_server.py:383-417 (handler)MCP tool handler for 'update_project'. Decorated with @mcp.tool for registration. Defines input parameters (serving as schema) and executes the update by constructing and running a Things URL.@mcp.tool async def update_project( id: str, title: str = None, notes: str = None, when: str = None, deadline: str = None, tags: List[str] = None, completed: bool = None, canceled: bool = None ) -> str: """Update an existing project in Things Args: id: ID of the project to update title: New title notes: New notes when: New schedule deadline: New deadline tags: New tags completed: Mark as completed canceled: Mark as canceled """ url = url_scheme.update_project( id=id, title=title, notes=notes, when=when, deadline=deadline, tags=tags, completed=completed, canceled=canceled ) url_scheme.execute_url(url) return f"Updated project with ID: {id}"
- url_scheme.py:121-136 (helper)Supporting function that constructs the specific 'update-project' URL used by the handler.def update_project(id: str, title: Optional[str] = None, notes: Optional[str] = None, when: Optional[str] = None, deadline: Optional[str] = None, tags: Optional[list[str]] = None, completed: Optional[bool] = None, canceled: Optional[bool] = None) -> str: """Construct URL to update an existing project.""" params = { 'id': id, 'title': title, 'notes': notes, 'when': when, 'deadline': deadline, 'tags': tags, 'completed': completed, 'canceled': canceled } return construct_url('update-project', {k: v for k, v in params.items() if v is not None})