Install
openclaw skills install mac-reminder-bridgeManage macOS Reminders.app from Docker via HTTP bridge. Use when user says: set/add/create a reminder, remind me to X, cancel/delete a reminder, mark reminder done/complete, update/edit a reminder, show/list my reminders. Requires listener.py running on Mac at port 5000.
openclaw skills install mac-reminder-bridgeControl macOS Reminders.app from inside Docker via HTTP.
Base URL: http://host.docker.internal:5000
| User intent | Endpoint |
|---|---|
| "Remind me to / Set a reminder / Add a reminder" | POST /add_reminder |
| "Cancel / Delete my reminder to ..." | POST /delete_reminder |
| "Done with / Mark ... as complete" | POST /complete_reminder |
| "Unmark / reopen reminder ..." | POST /complete_reminder with completed:false |
| "Update / Change / Edit my reminder ..." | POST /update_reminder |
| "What are my reminders / Show reminders" | GET /list_reminders |
| "What lists do I have" | GET /list_lists |
{
"task": "Buy groceries",
"list": "Shopping",
"due": "2025-12-31 09:00",
"remind_at": "2025-12-31 08:50",
"notes": "Get milk and eggs",
"priority": "high"
}
task required; all others optionaldue / remind_at format: YYYY-MM-DD HH:MMpriority: none | low | medium | highlist: leave empty to use the default list{
"task": "Buy groceries",
"fuzzy": false,
"new_task": "Buy organic groceries",
"new_due": "2025-12-31 10:00",
"new_notes": "Also get juice",
"new_priority": "medium"
}
task identifies which reminder to updatenew_due to "" to clear the due date{ "task": "Buy groceries", "fuzzy": false, "list": "" }
fuzzy: true → match by "contains" (useful when unsure of exact wording)list: leave empty to search ALL lists{ "task": "Buy groceries", "completed": true, "fuzzy": false }
completed: false → un-check / reopen the reminderGET /list_reminders
GET /list_reminders?list=Shopping
GET /list_reminders?completed=true
GET /list_reminders?completed=all
Returns structured JSON with task, due, notes, priority, completed, list.
Returns all lists with pending/total counts and the default list name.
Check if listener is running and has Reminders permission.
task (required), due, remind_at, notes, priority, list/add_reminderfuzzy: true if unsure of exact wording/delete_remindercount: if 0, say "⚠️ No reminder found matching '<task>'"/update_reminder with only the changed fields/list_reminders (add ?list=X if user specifies a list)curl http://host.docker.internal:5000/health
X-Bridge-Secret: <secret>