things_update_project
Modify an existing project in Things 3 by updating its title, schedule, structure, completion status, or other properties using JSON data.
Instructions
Update an existing project in Things using JSON API for full feature support
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| notes | No | ||
| when | No | Schedule the todo: today/tomorrow/evening (relative), anytime/someday (Things categories), YYYY-MM-DD (specific date), or YYYY-MM-DD@HH:MM (specific time) | |
| deadline | No | ||
| tags | No | ||
| area_id | No | ID of the area to place the project in | |
| area | No | Name of the area to place the project in | |
| items | No | Create a structured project with sections (headings) and todos in a flat array. Each item must have a 'type' field: 'heading' for section dividers, 'todo' for tasks. Items are siblings - todos after a heading are visually grouped under it. Example: [{type: 'heading', title: 'Day 1'}, {type: 'todo', title: 'Morning walk'}, {type: 'todo', title: 'Breakfast'}, {type: 'heading', title: 'Day 2'}, {type: 'todo', title: 'Museum visit'}]. Order matters - todos appear under the most recent heading. | |
| completed | No | ||
| canceled | No | ||
| id | Yes | Unique system-generated ID of the project to update (alphanumeric, 20-24 chars). NOT the project title! Use things_get_projects or things_search to find the correct ID first. Example: "xYz789aBc123dEf456gHi" | |
| operation | No |
Implementation Reference
- src/lib/json-builder.ts:53-63 (handler)The actual logic that executes the 'things_update_project' tool by constructing a JSON payload and calling the Things URL scheme.
async updateProject(params: UpdateProjectJSONParams): Promise<string> { const updateData = { type: 'project', operation: 'update', id: params.id, attributes: this.convertProjectParams(params) }; await executeThingsJSON([updateData]); return `✅ Project updated successfully: "${params.title || 'Updated project'}"`; } - src/tools/update-json.ts:20-23 (registration)The registration of the 'things_update_project' tool in the tool handler.
name: 'things_update_project', description: 'Update an existing project in Things using JSON API for full feature support', schema: UpdateProjectJSONSchema as any },