Install
openclaw skills install icloud-caldavDirect iCloud Calendar integration via CalDAV protocol. Create, read, update, and delete calendar events without third-party services. Use when the user wants to manage their iCloud Calendar, check schedule, create events, or find free time. Requires Apple ID and app-specific password.
openclaw skills install icloud-caldavManage iCloud Calendar directly via CalDAV protocol. No third-party services, no data leaves your machine except to Apple's servers.
Activate when the user wants to:
Do NOT use for:
apple-reminders skill if available)Required credentials:
APPLE_ID — Your Apple ID email addressAPPLE_APP_PASSWORD — An app-specific password (NOT your regular Apple ID password)To generate app-specific password:
# Set credentials
export APPLE_ID="your.email@icloud.com"
export APPLE_APP_PASSWORD="xxxx-xxxx-xxxx-xxxx"
# List calendars
./scripts/caldav.py list-calendars
# List events for next 7 days
./scripts/caldav.py list-events --days 7
# Create an event
./scripts/caldav.py create-event \
--title "Team Meeting" \
--start "2025-07-23T14:00:00" \
--duration 60 \
--calendar "Work"
| Operation | Command | Description |
|---|---|---|
| List calendars | list-calendars | Show all iCloud calendars |
| List events | list-events | Events in a date range |
| Create event | create-event | Add new calendar event |
| Delete event | delete-event | Remove event by filename or UID |
# Basic event
./scripts/caldav.py create-event \
--title "Dentist Appointment" \
--start "2025-07-25T09:30:00" \
--duration 30
# With location and description
./scripts/caldav.py create-event \
--title "Project Review" \
--start "2025-07-26T14:00:00" \
--duration 60 \
--location "Conference Room B" \
--description "Q3 planning review" \
--calendar "Work"
# All-day event
./scripts/caldav.py create-event \
--title "Vacation" \
--start "2025-08-01" \
--all-day
Note: CalDAV does not support native batch operations. To create multiple events, run the script multiple times:
# Create multiple events by running the command multiple times
./scripts/caldav.py create-event --title "Meeting 1" --start "2025-07-26T10:00:00" --duration 60
./scripts/caldav.py create-event --title "Meeting 2" --start "2025-07-26T14:00:00" --duration 60
./scripts/caldav.py create-event --title "Meeting 3" --start "2025-07-27T09:00:00" --duration 60
iCloud handles rapid sequential requests well, but there is no single API call for creating multiple events.
# Delete by filename
./scripts/caldav.py delete-event \
--file "event-name.ics" \
--calendar "Calendar"
# Delete by UID (searches calendar for matching event)
./scripts/caldav.py delete-event \
--uid "openclaw-xxx@openclaw.local" \
--calendar "Calendar"
Warning: Deletions are permanent. iCloud may have its own backup, but standard CalDAV DELETE immediately removes the event.
2025-07-23T14:00:00 (assumes local timezone if none specified)2025-07-23T14:00:00+08:002025-07-23 (date only)caldav.icloud.com| Error | Cause | Solution |
|---|---|---|
| 401 Unauthorized | Bad credentials | Check APPLE_ID and APPLE_APP_PASSWORD |
| 404 Not Found | Calendar/event doesn't exist | List calendars/events first |
| 403 Forbidden | Read-only calendar | Try a different calendar |
| Timeout | Network issue | Retry the request |
references/caldav-protocol.md for CalDAV implementation detailsreferences/icloud-endpoints.md for iCloud-specific endpoints