omnifocus_write
Create, update, complete, or delete OmniFocus tasks and projects with a single call. Supports batch operations, folder nesting, and tag management.
Instructions
Create, update, complete, or delete OmniFocus tasks and projects.
OPERATIONS:
create: New task/project with data
create_folder: New folder (name required, optional parentFolder for nesting)
update: Modify existing (provide id + changes; "data" accepted as an alias for "changes"; target defaults to "task" if omitted)
complete: Mark done (provide id; target defaults to "task" if omitted)
delete: Remove permanently (provide id, or its alias target_id)
batch: Multiple operations in one call
bulk_delete: Delete multiple items by IDs
tag_manage: Manage tag hierarchy (create, rename, delete, merge, nest, unnest, reparent)
FOLDER CREATION:
operation: "create_folder"
data.name: Folder name (required)
data.parentFolder: Parent folder name, path ("Parent : Child"), or ID (optional, omit for top-level)
Supports nested path lookup with " : " syntax (parent must already exist)
BATCH OPERATIONS:
operations: Array of create, update, complete, and delete operations
Execution order: creates first, then updates, completes, deletes last
Put tempId and parentTempId inside data (not at operation level)
Updates/completes can reference tempIds from creates in the same batch
createSequentially: true (respects dependencies)
returnMapping: true (returns tempId → realId map)
stopOnError: true (halt on first failure)
Example with subtasks: { "mutation": { "operation": "batch", "operations": [ { "operation": "create", "target": "task", "data": { "name": "Parent", "tempId": "p1", "project": "My Project" } }, { "operation": "create", "target": "task", "data": { "name": "Subtask", "tempId": "s1", "parentTempId": "p1" } } ] } }
REPETITION RULES (in data.repetitionRule):
frequency: "daily"|"weekly"|"monthly"|"yearly" (required)
interval: number (default 1)
method: "fixed"|"due-after-completion"|"defer-after-completion" (default "fixed")
daysOfWeek: [{ day: "SU"|"MO"|"TU"|"WE"|"TH"|"FR"|"SA", position?: number }] (for weekly)
daysOfMonth: [1-31] (for monthly, -1 = last day)
REVIEW INTERVAL (project-only, in data.reviewInterval or changes.reviewInterval):
Number of days: 7 (weekly), 14 (biweekly), 30 (monthly)
Object form: { steps: 1, unit: "weeks" } or { steps: 2, unit: "months" }
Valid units: "days", "weeks", "months", "years" (singular also accepted)
Both forms are accepted; object form matches OmniFocus read output
TAG OPERATIONS:
tags: [...] - Replace all tags
addTags: [...] - Add to existing
removeTags: [...] - Remove from existing
Nested tags use " : " path syntax: "Parent : Child : Leaf" (creates hierarchy, assigns leaf)
TAG MANAGEMENT (tag_manage operation):
create: Create new tag (tagName required). Supports " : " path syntax for nested hierarchies.
rename: Rename tag (tagName + newName required)
delete: Delete tag (tagName required)
merge: Merge source into target (tagName + targetTag required)
nest: Move tag under parent (tagName + parentTag required)
unnest: Move tag to root level (tagName required)
reparent: Move tag to different parent (tagName + parentTag required)
DATE FORMATS:
Date only: "YYYY-MM-DD" (defaults: due=5pm, defer=8am, planned=8am)
Date+time: "YYYY-MM-DD HH:mm" (local time)
Clear date: null or clearDueDate/clearDeferDate/clearPlannedDate: true
MOVE TO INBOX: Set project: null
SAFETY:
Delete is permanent - confirm with user first
Batch supports up to 100 operations
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| mutation | Yes |