name: invites description: View and manage calendar invitations - check pending invites, accept/decline meeting requests, create events context: fork allowed-tools:
- Bash
- Read
Calendar Invitations & Events
Check pending calendar invitations, respond to meeting requests, and create new events.
Quick Status
~/.claude-mind/system/bin/calendar-invites list --text
Commands
List Pending Invitations
# Human-readable format
~/.claude-mind/system/bin/calendar-invites list --text
# JSON format (default)
~/.claude-mind/system/bin/calendar-invites list --json
# Custom date range
~/.claude-mind/system/bin/calendar-invites list --days 7
# Specific calendar
~/.claude-mind/system/bin/calendar-invites list --calendar "Work"
Show Event Details
~/.claude-mind/system/bin/calendar-invites show "EVENT_ID"
Respond to Invitations
# Accept an invitation (via AppleScript)
~/.claude-mind/system/bin/calendar-invites accept "EVENT_ID"
# Decline an invitation
~/.claude-mind/system/bin/calendar-invites decline "EVENT_ID"
# Mark as tentative/maybe
~/.claude-mind/system/bin/calendar-invites maybe "EVENT_ID"
# Accept all pending invitations (via AppleScript)
~/.claude-mind/system/bin/calendar-invites accept-all
# Accept all via UI automation (more reliable)
~/.claude-mind/system/bin/calendar-invites accept-all-ui
Sync/Refresh Calendars
# Force calendar sync with server
~/.claude-mind/system/bin/calendar-invites sync
Create Events
# Basic event (1 hour duration)
~/.claude-mind/system/bin/calendar-invites create --title "Team Meeting" --start "2026-01-20T14:00"
# Event with duration
~/.claude-mind/system/bin/calendar-invites create --title "Lunch" --start "2026-01-20 12:00" --duration 90
# Event with specific end time
~/.claude-mind/system/bin/calendar-invites create --title "Workshop" --start "2026-01-20 09:00" --end "2026-01-20 12:00"
# All-day event
~/.claude-mind/system/bin/calendar-invites create --title "Vacation" --start "2026-01-25" --all-day
# Multi-day all-day event
~/.claude-mind/system/bin/calendar-invites create --title "Conference" --start "2026-01-25" --end "2026-01-27" --all-day
# Event with location and notes
~/.claude-mind/system/bin/calendar-invites create --title "Client Call" --start "2026-01-20 15:00" \
--location "Zoom" --notes "Discuss Q1 planning" --calendar "Work"
Create Options:
--title- Event title (required)--start- Start date/time (required). Formats: ISO8601, "2026-01-20 14:00", "2026-01-20"--end- End date/time (optional)--duration- Duration in minutes (default: 60)--calendar- Calendar name (default: system default)--location- Event location--notes- Event notes/description--url- Event URL--all-day- Create an all-day event
List Available Calendars
~/.claude-mind/system/bin/calendar-invites calendars
Open in Calendar.app
~/.claude-mind/system/bin/calendar-invites open "EVENT_ID"
JSON Output Format
The list --json command returns:
{
"invitations": [
{
"event_id": "ABC123-DEF456",
"title": "Weekly Sync",
"start": "2026-01-20T09:00:00-05:00",
"end": "2026-01-20T10:00:00-05:00",
"calendar": "Work",
"organizer": {
"name": "Jane Smith",
"email": "jane@example.com"
},
"my_status": "pending",
"location": "Zoom",
"attendees": [...]
}
],
"count": 1
}
Workflow
- Check invitations: Run
list --textto see what's pending - Review if needed: Use
showfor full details on specific events - Respond: Use
accept,decline, ormaybe - Bulk accept: Use
accept-allfor routine meetings
Limitations
- EventKit is read-only for responses: Apple's EventKit API does not allow setting
participantStatus - AppleScript limitations: Direct property setting sometimes doesn't trigger server-side updates
- UI automation is most reliable: The
accept-all-uicommand clicks actual buttons in Calendar.app - Sync delays: Calendar providers (Exchange, Google, iCloud) may have sync delays
- Recurring events: Response may only affect the next occurrence
Response Methods (Fallback Chain)
- CalDAV (primary) - Proper iTIP protocol, notifies organizers, server-side
- AppleScript (fallback) - Local property change, may not sync
- UI automation (
accept-all-ui) - Clicks buttons in Calendar.app - Manual - Calendar.app opens for you to respond
Direct CalDAV Commands
# List pending invitations via CalDAV inbox
~/.claude-mind/system/bin/calendar-caldav inbox
# Accept via CalDAV (proper protocol)
~/.claude-mind/system/bin/calendar-caldav accept "EVENT_UID"
# Accept all pending via CalDAV
~/.claude-mind/system/bin/calendar-caldav accept-all
# Decline via CalDAV
~/.claude-mind/system/bin/calendar-caldav decline "EVENT_UID"
Troubleshooting
If authorization fails:
- Check System Settings > Privacy & Security > Calendars
- Ensure Terminal has calendar access
If invitations don't appear:
- Run
calendar-invites syncto force refresh - Check that calendar is syncing in Calendar.app preferences
If responses don't work:
- Check CalDAV credentials:
~/.claude-mind/system/bin/calendar-caldav test - Try
accept-all-uiinstead ofaccept-all(uses UI automation) - The script falls back to opening Calendar.app
CalDAV setup:
- Credentials stored in
~/.claude-mind/config/caldav-credentials.json - Requires app-specific password from appleid.apple.com