Skip to content

Add attendees support to calendar events - #3

Open
arndjan wants to merge 2 commits into
harriscarl:mainfrom
arndjan:feat/attendees
Open

Add attendees support to calendar events#3
arndjan wants to merge 2 commits into
harriscarl:mainfrom
arndjan:feat/attendees

Conversation

@arndjan

@arndjan arndjan commented Mar 17, 2026

Copy link
Copy Markdown

Summary

  • Add attendees parameter to calendar_create_event and calendar_edit_event tools
  • Each attendee is a dict with email (required) and name (optional)
  • Return attendee details (name, email, status, role, type) in all event responses
  • Uses the EKAttendee private class via PyObjC for adding attendees to events
  • Reading attendees uses the public EKParticipant API

Implementation details

  • _add_attendees_to_event() creates EKAttendee instances via initWithName:emailAddress:phoneNumber:url: and adds them with EKEvent.addAttendee:
  • _event_to_dict() now extracts attendee info from event.attendees() with email fallback via URL
  • Helper methods for participant status/role/type enum-to-string conversion

Limitations

  • Adding attendees uses Apple's undocumented EKAttendee class — works on current macOS but could break in future OS updates
  • Best suited for CalDAV and Exchange-backed calendars; local-only calendars may not support attendees
  • Reading attendees works on all calendar types via the public API

Test plan

  • Create event with attendees on a CalDAV calendar
  • Edit event to add attendees
  • Verify attendees appear in Calendar.app
  • Verify attendees are returned in get/list/search event responses
  • Test on Exchange-backed calendar

🤖 Generated with Claude Code

Arnd Jan Gulmans and others added 2 commits March 17, 2026 11:02
- Add attendees parameter (list of {email, name}) to create_event and edit_event
- Return attendee details (name, email, status, role, type) in event responses
- Uses EKAttendee private API via PyObjC for adding attendees
- Read support uses public EKParticipant API

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
addAttendee_ appends to existing attendees, causing duplicates when
editing events that already have attendees. setAttendees_ replaces
the entire list, which is the correct behavior for the edit flow.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant