project_update_describe
Preview project update effects without mutation. Inspect planned fields and confirm changes before applying the actual update.
Instructions
Preview what project_update would do without making any changes. Do NOT use to actually update a project — use project_update instead. Returns { description, plannedChanges } showing the fields that would be patched. No side effects: read-only by contract — never mutates OmniFocus. Example: dry-run companion — pass the same args you would to the write tool, inspect plannedChanges, then call the write tool once approved.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Persistent project ID. Get from project_list or project_get. | |
| name | No | New project name. Must be non-empty if supplied. | |
| note | No | Plain-text note. Pass null to clear. | |
| status | No | Project status. Use project_complete or project_drop to close a project. Accepts: 'paused' → on-hold. | |
| tagIds | No | Full-replacement tag list. Replaces all existing tags. | |
| dry_run | No | When true, validates input and returns a preview envelope with meta.dryRun = true; no adapter call is made and no mutation occurs. | |
| dueDate | No | ISO-8601 due date with UTC offset. Pass null to clear. | |
| flagged | No | Flag or unflag the project. | |
| noteHtml | No | HTML note. Pass null to clear. Prefer note for plain-text edits. | |
| deferDate | No | ISO-8601 defer date with UTC offset. Pass null to clear. | |
| dueDateFloating | No | When true, the due time is floating (follows the user across time zones). | |
| idempotency_key | No | Idempotency key for retry-safe updates. Identical subsequent calls within the TTL window replay the original envelope with meta.idempotentReplay = true instead of re-applying the patch. | |
| estimatedMinutes | No | Estimated total duration in minutes. Pass null to clear. | |
| deferDateFloating | No | When true, the defer time is floating (follows the user across time zones). | |
| expectedModifiedAt | No | Optimistic-concurrency guard: ISO-8601 timestamp from a recent project_get. If the project's current modifiedAt differs, the call fails with OF_CONFLICT and no update is performed. Omit to skip the check. | |
| reviewIntervalDays | No | Review interval in days. Pass null to clear. | |
| completionCriterion | No | How the project's tasks are completed. Accepts: 'in-order' → sequential, 'in order' → sequential, 'any-order' → parallel, 'any order' → parallel. |