Manage OmniFocus
Use this skill to connect OpenClaw to OmniFocus and work with your tasks, projects, folders, tags, and perspectives in natural language.
Technical note:
- this skill uses the upstream OmniFocus MCP server behind the scenes, but the main goal is helping users review, organize, and update their OmniFocus system faster
Typical things this skill can help with:
- review what is due today or this week
- find flagged tasks, inbox items, or next actions
- create tasks and projects from notes, transcripts, or plans
- reorganize tags, folders, projects, and task metadata
- inspect available perspectives and read what they contain
Quick examples:
Use $omnifocus-mcp to show me tasks due today.
Use $omnifocus-mcp to list my flagged tasks for this week.
Use $omnifocus-mcp to show my Inbox items and suggest how to organize them.
Use $omnifocus-mcp to create a project called Product Launch with tasks for copy, design, and QA.
Use $omnifocus-mcp to show the next actions in my Work folder.
Attribution
This skill is an OpenClaw-focused wrapper around the upstream OmniFocus MCP server created by themotionmachine.
Upstream project:
OmniFocus-MCP
- GitHub:
https://github.com/themotionmachine/OmniFocus-MCP
- npm:
https://www.npmjs.com/package/omnifocus-mcp
This skill package does not reimplement the MCP server. It documents installation, registration, and OpenClaw-specific usage around the original package.
Refactor credit:
- original MCP server and tool implementation:
themotionmachine
- OpenClaw skill adaptation and packaging assistance:
OpenAI
- final packaged release, testing, and publishing: the skill publisher
This skill assumes:
- OpenClaw is being used on macOS.
- OmniFocus Pro for Mac is installed locally.
- OmniFocus 3 or later is the safest minimum assumption for this skill.
- The
omnifocus-mcp package is installed globally with npm install -g omnifocus-mcp.
- The OpenClaw MCP registry includes an
omnifocus server using the omnifocus-mcp executable.
Important compatibility note:
- OmniGroup documents AppleScript support as a Pro feature.
- The upstream MCP server depends on AppleScript.
- The upstream roadmap mentions future support for the
planned date added in OmniFocus 4.7, which implies OmniFocus 4.7 is not required for the current feature set.
If the package is missing, OpenClaw can install it from the skill metadata using the configured node manager.
Use {baseDir} when referencing bundled files.
Quick Start
If the MCP server is not configured yet, register it first:
{baseDir}/scripts/register_mcp.sh
To verify the local environment before using the skill:
{baseDir}/scripts/check_setup.sh
The intended OpenClaw MCP definition is:
{
"command": "omnifocus-mcp",
"args": []
}
If you want to inspect the registered server after setup:
openclaw mcp show omnifocus --json
Core Workflow
- Confirm the request is really about OmniFocus, not generic planning advice.
- Prefer targeted reads before broad dumps.
- Use the smallest tool that answers the question.
- Reflect back ambiguous destructive operations before applying them.
- After write operations, summarize what changed in plain language.
Tool Selection
Prefer these tools in this order:
query_omnifocus for targeted reads, counts, filtered searches, and lightweight summaries.
list_tags when you need to discover valid tags before suggesting or applying them.
list_perspectives and get_perspective_view for perspective-driven workflows.
dump_database only when the user explicitly needs a broad inventory, deep analysis across the whole database, or the targeted query surface cannot answer the request.
add_omnifocus_task, add_project, edit_item, remove_item for single-item mutations.
batch_add_items and batch_remove_items for transcript ingestion, bulk cleanup, or hierarchical task creation.
If the MCP tools are unavailable in the current session, check setup first instead of improvising a replacement workflow.
Query Strategy
Default to query_omnifocus.
Use it for:
- tasks due today, overdue, due this week, or deferred until a date
- next actions, available tasks, blocked tasks, or flagged work
- counts by project or folder
- tasks in a named project or inbox
- project or folder discovery without loading everything
When using query_omnifocus:
- request only the fields you need
- set
limit for potentially large result sets
- use
summary: true for counts or quick status checks
- sort by
dueDate or modificationDate when ordering matters
See {baseDir}/references/query_omnifocus.md for concrete filter guidance.
Mutation Rules
When creating or editing items:
- preserve the user's stated project, folder, tag, defer date, due date, and flag intent
- prefer exact IDs when available; otherwise fall back to names
- use ISO dates for
dueDate, deferDate, and plannedDate
- preserve notes instead of overwriting them casually unless the user asked for replacement
- use
batch_add_items when the request naturally contains multiple sibling tasks or parent/child structure
For destructive actions:
remove_item and batch_remove_items should be used only when the user clearly asked to delete or remove the items
- if the target is ambiguous by name, resolve the ambiguity before removing anything
Common Patterns
Daily review
- Fetch urgent work with
query_omnifocus on tasks
- filter for
status, flagged, dueWithin, or dueOn
- return a concise agenda, then offer follow-up edits only if requested
Inbox processing
- use
query_omnifocus with inbox-focused filters first
- group similar tasks
- if the user wants changes, apply them with
edit_item or batch_add_items
Project build-out from notes or transcripts
- extract deliverables and action items
- create a project with
add_project if needed
- create structured tasks with
batch_add_items
- use
tempId and parentTempId for hierarchy when subtasks are obvious
Tag cleanup
- call
list_tags first if tag names may be uncertain
- identify missing or inconsistent tags with
query_omnifocus
- propose the cleanup before mass edits
Perspective Workflows
Use:
list_perspectives to enumerate built-in and custom perspectives
get_perspective_view to inspect a named perspective
Important limitation:
- the server can read a named perspective view, but due to OmniJS limitations it cannot programmatically switch perspectives in the GUI
When To Use dump_database
Use dump_database only when one of these is true:
- the user asks for a full OmniFocus inventory
- the user wants cross-cutting analysis that is awkward with targeted queries
- you need a broad export-style snapshot
Avoid it for simple reads because it is slower and heavier than query_omnifocus.
Response Style
When reporting results:
- lead with the answer, not the raw tool call
- keep large task lists grouped and easy to scan
- mention important assumptions, especially around date interpretation
- for write operations, state exactly what was added, edited, or removed
References
- Query filter details:
{baseDir}/references/query_omnifocus.md
- OpenClaw MCP registration helper:
{baseDir}/scripts/register_mcp.sh
- Local setup check:
{baseDir}/scripts/check_setup.sh
1---2name: omnifocus-mcp3description: Review what is due, capture new tasks, build projects from notes, and organize OmniFocus from natural language in OpenClaw on macOS. Use this when the user wants to read or update OmniFocus tasks, projects, folders, tags, or perspectives; the upstream OmniFocus-MCP project by themotionmachine provides the connection layer.4---5
6# Manage OmniFocus
7
8Use this skill to connect OpenClaw to OmniFocus and work with your tasks, projects, folders, tags, and perspectives in natural language.
9
10Technical note:
11- this skill uses the upstream OmniFocus MCP server behind the scenes, but the main goal is helping users review, organize, and update their OmniFocus system faster
12
13Typical things this skill can help with:
14- review what is due today or this week
15- find flagged tasks, inbox items, or next actions
16- create tasks and projects from notes, transcripts, or plans
17- reorganize tags, folders, projects, and task metadata
18- inspect available perspectives and read what they contain
19
20Quick examples:
21- `Use $omnifocus-mcp to show me tasks due today.`
22- `Use $omnifocus-mcp to list my flagged tasks for this week.`
23- `Use $omnifocus-mcp to show my Inbox items and suggest how to organize them.`
24- `Use $omnifocus-mcp to create a project called Product Launch with tasks for copy, design, and QA.`
25- `Use $omnifocus-mcp to show the next actions in my Work folder.`
26
27## Attribution
28
29This skill is an OpenClaw-focused wrapper around the upstream OmniFocus MCP server created by [themotionmachine](https://github.com/themotionmachine).
30
31Upstream project:
32- `OmniFocus-MCP`
33- GitHub: `https://github.com/themotionmachine/OmniFocus-MCP`
34- npm: `https://www.npmjs.com/package/omnifocus-mcp`
35
36This skill package does not reimplement the MCP server. It documents installation, registration, and OpenClaw-specific usage around the original package.
37
38Refactor credit:
39- original MCP server and tool implementation: `themotionmachine`
40- OpenClaw skill adaptation and packaging assistance: `OpenAI`
41- final packaged release, testing, and publishing: the skill publisher
42
43This skill assumes:
44- OpenClaw is being used on macOS.
45- OmniFocus Pro for Mac is installed locally.
46- OmniFocus 3 or later is the safest minimum assumption for this skill.
47- The `omnifocus-mcp` package is installed globally with `npm install -g omnifocus-mcp`.
48- The OpenClaw MCP registry includes an `omnifocus` server using the `omnifocus-mcp` executable.
49
50Important compatibility note:
51- OmniGroup documents AppleScript support as a Pro feature.
52- The upstream MCP server depends on AppleScript.
53- The upstream roadmap mentions future support for the `planned` date added in OmniFocus 4.7, which implies OmniFocus 4.7 is not required for the current feature set.
54
55If the package is missing, OpenClaw can install it from the skill metadata using the configured node manager.
56
57Use `{baseDir}` when referencing bundled files.
58
59## Quick Start
60
61If the MCP server is not configured yet, register it first:
62
63```bash
64{baseDir}/scripts/register_mcp.sh
65```
66
67To verify the local environment before using the skill:
68
69```bash
70{baseDir}/scripts/check_setup.sh
71```
72
73The intended OpenClaw MCP definition is:
74
75```json
76{
77 "command": "omnifocus-mcp",
78 "args": []
79}
80```
81
82If you want to inspect the registered server after setup:
83
84```bash
85openclaw mcp show omnifocus --json
86```
87
88## Core Workflow
89
901. Confirm the request is really about OmniFocus, not generic planning advice.
912. Prefer targeted reads before broad dumps.
923. Use the smallest tool that answers the question.
934. Reflect back ambiguous destructive operations before applying them.
945. After write operations, summarize what changed in plain language.
95
96## Tool Selection
97
98Prefer these tools in this order:
99
100- `query_omnifocus` for targeted reads, counts, filtered searches, and lightweight summaries.
101- `list_tags` when you need to discover valid tags before suggesting or applying them.
102- `list_perspectives` and `get_perspective_view` for perspective-driven workflows.
103- `dump_database` only when the user explicitly needs a broad inventory, deep analysis across the whole database, or the targeted query surface cannot answer the request.
104- `add_omnifocus_task`, `add_project`, `edit_item`, `remove_item` for single-item mutations.
105- `batch_add_items` and `batch_remove_items` for transcript ingestion, bulk cleanup, or hierarchical task creation.
106
107If the MCP tools are unavailable in the current session, check setup first instead of improvising a replacement workflow.
108
109## Query Strategy
110
111Default to `query_omnifocus`.
112
113Use it for:
114- tasks due today, overdue, due this week, or deferred until a date
115- next actions, available tasks, blocked tasks, or flagged work
116- counts by project or folder
117- tasks in a named project or inbox
118- project or folder discovery without loading everything
119
120When using `query_omnifocus`:
121- request only the fields you need
122- set `limit` for potentially large result sets
123- use `summary: true` for counts or quick status checks
124- sort by `dueDate` or `modificationDate` when ordering matters
125
126See `{baseDir}/references/query_omnifocus.md` for concrete filter guidance.
127
128## Mutation Rules
129
130When creating or editing items:
131- preserve the user's stated project, folder, tag, defer date, due date, and flag intent
132- prefer exact IDs when available; otherwise fall back to names
133- use ISO dates for `dueDate`, `deferDate`, and `plannedDate`
134- preserve notes instead of overwriting them casually unless the user asked for replacement
135- use `batch_add_items` when the request naturally contains multiple sibling tasks or parent/child structure
136
137For destructive actions:
138- `remove_item` and `batch_remove_items` should be used only when the user clearly asked to delete or remove the items
139- if the target is ambiguous by name, resolve the ambiguity before removing anything
140
141## Common Patterns
142
143### Daily review
144
145- Fetch urgent work with `query_omnifocus` on `tasks`
146- filter for `status`, `flagged`, `dueWithin`, or `dueOn`
147- return a concise agenda, then offer follow-up edits only if requested
148
149### Inbox processing
150
151- use `query_omnifocus` with inbox-focused filters first
152- group similar tasks
153- if the user wants changes, apply them with `edit_item` or `batch_add_items`
154
155### Project build-out from notes or transcripts
156
157- extract deliverables and action items
158- create a project with `add_project` if needed
159- create structured tasks with `batch_add_items`
160- use `tempId` and `parentTempId` for hierarchy when subtasks are obvious
161
162### Tag cleanup
163
164- call `list_tags` first if tag names may be uncertain
165- identify missing or inconsistent tags with `query_omnifocus`
166- propose the cleanup before mass edits
167
168## Perspective Workflows
169
170Use:
171- `list_perspectives` to enumerate built-in and custom perspectives
172- `get_perspective_view` to inspect a named perspective
173
174Important limitation:
175- the server can read a named perspective view, but due to OmniJS limitations it cannot programmatically switch perspectives in the GUI
176
177## When To Use `dump_database`
178
179Use `dump_database` only when one of these is true:
180- the user asks for a full OmniFocus inventory
181- the user wants cross-cutting analysis that is awkward with targeted queries
182- you need a broad export-style snapshot
183
184Avoid it for simple reads because it is slower and heavier than `query_omnifocus`.
185
186## Response Style
187
188When reporting results:
189- lead with the answer, not the raw tool call
190- keep large task lists grouped and easy to scan
191- mention important assumptions, especially around date interpretation
192- for write operations, state exactly what was added, edited, or removed
193
194## References
195
196- Query filter details: `{baseDir}/references/query_omnifocus.md`
197- OpenClaw MCP registration helper: `{baseDir}/scripts/register_mcp.sh`
198- Local setup check: `{baseDir}/scripts/check_setup.sh`