create_task
Add tasks to OmniFocus projects, create subtasks, or send items to your inbox with due dates, notes, flags, and tags.
Instructions
Create a new task in OmniFocus (NEW API - consolidates add_task and create_inbox_task).
This is the redesigned create function that unifies task creation across all contexts:
If project_id is provided: Create task in that project
If parent_task_id is provided: Create task as subtask under that parent
If neither provided (or project_id=None): Create task in inbox
Args: task_name: The name/title of the task (required) project_id: Optional project ID. If None, creates in inbox (unless parent_task_id is set). Mutually exclusive with parent_task_id — a subtask inherits its parent's project. parent_task_id: Optional parent task ID to create as subtask. Mutually exclusive with project_id — a subtask inherits its parent's project. note: Optional note/description for the task (plain text only) due_date: Due date in ISO 8601 format (e.g., '2025-10-15' or '2025-10-15T17:00:00') defer_date: Defer date in ISO 8601 format (when task becomes available — hidden until then) flagged: Flag marks a task as a priority — typically 'I want to work on this today.' Flagged tasks can be queried with get_tasks(flagged_only=True). (default: False) tags: Optional JSON array string of tag names (e.g., '["Computer", "Work"]'). Tags must already exist. Note: this takes a JSON string; update_task takes a native list instead. estimated_minutes: Estimated time in minutes to complete the task
Returns: Success message with task ID and location (project/inbox/parent)
Raises: ValueError: If both project_id and parent_task_id are specified
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| task_name | Yes | ||
| project_id | No | ||
| parent_task_id | No | ||
| note | No | ||
| due_date | No | ||
| defer_date | No | ||
| flagged | No | ||
| tags | No | ||
| estimated_minutes | No |