update_task
Modify existing tasks in OmniFocus by updating details like completion status, due dates, tags, or moving between projects.
Instructions
Update an existing task in OmniFocus (NEW API - Redesign).
This comprehensive update function consolidates multiple specialized functions:
complete_task() -> update_task(task_id, completed=True)
drop_task() -> update_task(task_id, status="dropped")
move_task() -> update_task(task_id, project_id=X)
set_parent_task() -> update_task(task_id, parent_task_id=X)
set_estimated_minutes() -> update_task(task_id, estimated_minutes=X)
add_tag_to_task() -> update_task(task_id, add_tags=[...])
Args: task_id: The ID of the task to update task_name: New task name (optional) project_id: Move task to this project (optional). Mutually exclusive with parent_task_id — a subtask inherits its parent's project. parent_task_id: Make task a subtask of this parent (optional). Mutually exclusive with project_id — a subtask inherits its parent's project. note: New note content (optional). WARNING: Removes rich text formatting due_date: New due date in ISO 8601 format, or empty string to clear. Omitting means no change. (optional) defer_date: New defer date in ISO 8601 format (when task becomes available), or empty string to clear. Omitting means no change. (optional) flagged: Flag marks a task as a priority — typically 'I want to work on this today.' Pass True to flag, False to unflag. (optional) tags: Full replacement — set exact tag list as a native list (optional, conflicts with add_tags/remove_tags). Note: unlike create_task, this takes a list not a JSON string. add_tags: Add these tags incrementally (optional, conflicts with tags) remove_tags: Remove these tags (optional, conflicts with tags) estimated_minutes: Estimated time in minutes (optional) completed: Mark task complete/incomplete (optional) status: Task status - "active" or "dropped" (optional) name: DEPRECATED - Use task_name instead (optional, for backward compatibility)
Returns: Success message with updated fields, or error message
Examples: update_task("task-123", completed=True) # Mark complete update_task("task-123", status="dropped") # Drop task update_task("task-123", project_id="proj-456") # Move to project update_task("task-123", add_tags=["urgent"]) # Add tag update_task("task-123", task_name="New Name", flagged=True, due_date="2025-12-31")
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | ||
| task_name | No | ||
| project_id | No | ||
| parent_task_id | No | ||
| note | No | ||
| due_date | No | ||
| defer_date | No | ||
| flagged | No | ||
| tags | No | ||
| add_tags | No | ||
| remove_tags | No | ||
| estimated_minutes | No | ||
| completed | No | ||
| status | No | ||
| name | No |