# Apple Calendar MCP connector

The Apple Calendar connector lets Claude, ChatGPT, Cursor and the Elaichi Agent create, update and cancel events and manage calendars in Apple Calendar, with every change running under the signed-in person's own access and recorded in an audit log.

Source: https://elaichi.ai/connectors/apple-calendar/

## Facts

| | |
| --- | --- |
| Application | Apple Calendar |
| Category | Scheduling |
| AI tools | 13 |
| Authentication | Connects with an API key |
| Needs your own OAuth app | No |
| MCP endpoint | https://api.elaichi.ai/mcp |
| Works with | Claude, ChatGPT, Cursor, any MCP client, and the Elaichi Agent |
| Tools advertised by name | Yes |

## What you can ask once Apple Calendar is connected

- List every event on the Sales calendar next week.
- Create a 30 minute event on the Support calendar Friday.
- Which calendars have events overlapping Tuesday afternoon?

## Connect Apple Calendar in Elaichi

This happens once for the organization, before any client is involved.

1. Open Connections, choose Add connection, and pick Apple Calendar.
2. Optionally set Share with, then press Connect.
3. Paste an Apple Calendar API key. One person generates a token in Apple Calendar and pastes it once. Everyone else works through Share with, and never sees it.

Credentials are vaulted and nobody, including the AI, reads them back. The connection becomes a toolbox immediately, so you can curate which Apple Calendar tools are exposed, rename them, or freeze arguments before anyone points a client at it.

## Connect Apple Calendar to Claude

Endpoint: https://api.elaichi.ai/mcp

1. Open Customize, then Connectors.
2. Press Add.
3. Name it, paste the MCP server URL, then Continue.
4. Sign in and approve.

On Team and Enterprise, an Owner adds it once. Everyone else turns it on for themselves.

## Connect Apple Calendar to ChatGPT

Endpoint: https://api.elaichi.ai/mcp

1. Open Plugins, then press the + button.
2. Name it and paste the endpoint into Server URL.
3. Leave Authentication on OAuth, then tick the risk acknowledgement.
4. Press Create, then sign in and approve.

Works on the web today. The plugin directory lives at chatgpt.com/plugins.

## Connect Apple Calendar to Cursor

Endpoint: https://api.elaichi.ai/mcp

1. Open `~/.cursor/mcp.json`.
2. Add the endpoint under `mcpServers`.
3. Reload Cursor, then sign in and approve.

Set up per machine, so repeat it on each computer you work from.

## Connect Apple Calendar to any MCP client

Endpoint: https://api.elaichi.ai/mcp

1. Add the endpoint as a remote MCP server.
2. Sign in and approve.

The Elaichi Agent already has these tools, with nothing to set up.

## What the consent screen decides

Only Read is granted by default, which is not enough to call a Apple Calendar tool. Over MCP there is no trusted place to confirm a write in the moment, so the consent screen is the standing approval rather than a formality. Grant Read and Run tools. Think hard before granting Delete, which reaches into connected apps and cannot be undone.

## What teams do with Apple Calendar through Elaichi

### Book the follow-up before the call ends

Sales. Ask for a 30 minute follow-up with the prospect next Tuesday at ten and it lands on your Apple Calendar with the right title and time. If the prospect asks to move it, the event moves too.

### Schedule the callback a customer asked for

Support. When a ticket needs a phone call, put the callback on the agent's Apple Calendar with the customer's name and the ticket reference in the notes, then change the time if the customer replies with a better one.

### Set up a shared calendar for a project

Office. Create a new Apple Calendar for a launch, an office move or a visiting group, give it a clear name and color, and retire it when the work is done.

### Put interviews on the calendar in one go

Recruiting. Turn a list of candidates and interview slots into events on the hiring panel's Apple Calendar, then update an event when a candidate reschedules.

### Keep the campaign calendar current

Marketing. Add webinar dates, send dates and content deadlines to the marketing Apple Calendar, and update the details when a launch slips a week.

### Tidy the executive's week after a plan change

Leadership. When a board meeting moves, have the agent update the event, cancel the sessions that no longer fit and add the new prep time, all on the executive's own Apple Calendar.

## Frequently asked questions

### How do I connect Apple Calendar to Claude?

Connecting Apple Calendar to Claude takes two steps. First, connect Apple Calendar in Elaichi, where the sign-in step is pasting the Apple Calendar API key you are given, with no client ID or secret to generate. Then open Claude, go to Customize, then Connectors, then Add, and paste the endpoint https://api.elaichi.ai/mcp, after which Claude asks you to sign in to Elaichi as yourself.

### Does Apple Calendar work with ChatGPT and Cursor as well as Claude?

Yes. Once Apple Calendar is connected in Elaichi, the same endpoint, https://api.elaichi.ai/mcp, works in Claude, ChatGPT, Cursor, the Elaichi Agent and any other MCP client. You connect Apple Calendar once and every client you use picks it up.

### What can an AI agent actually do with my Apple Calendar data?

With Apple Calendar connected, an AI agent can put a new event on your calendar, look up an existing event, change its time, title or details, and cancel it when a meeting falls through. It can also list your Apple Calendar calendars, find a particular one, create a new calendar for a project or team, rename or recolor it, and remove it when it is no longer needed.

### Does connecting Apple Calendar give the AI access to every calendar?

No. When someone connects Apple Calendar through Elaichi, the AI works only within the calendars that person can already see and edit in Apple Calendar. Elaichi can narrow that further, for example by blocking deletions or limiting a team to specific actions, but it can never grant access to an Apple Calendar that the person does not already have.

### Can my team share one Apple Calendar connection?

Yes. One person connects Apple Calendar in Elaichi and shares the connection with a team, and nobody else on the team ever handles the API key. Each teammate still signs in to Elaichi as themselves, so every event created or changed in Apple Calendar is logged against the person who asked for it.

### Can I stop an agent from deleting or changing things in Apple Calendar?

Yes. In Elaichi, restrictions on the Apple Calendar connector apply per action, so you can allow creating and updating events while blocking event deletion or calendar deletion entirely. A blocked action is never shown to Claude, ChatGPT or any other client, so no prompt, however worded, can reach it.

### What happens to an Apple Calendar connection when someone leaves?

When you offboard a person in Elaichi, their access to Apple Calendar through every AI client ends at once. If they had shared their Apple Calendar connection with a team, it keeps working for everyone else until an admin decides otherwise. Disconnecting Apple Calendar once in Elaichi removes it from Claude, ChatGPT, Cursor and every other connected client at the same time.

## All 13 Apple Calendar tools

Every tool below is callable through https://api.elaichi.ai/mcp once Apple Calendar is connected, subject to the toolbox it is in and the restrictions on the caller.

- **Get single apple calendar principal by ID** (Get). Discover the current-user-principal for the authenticated Apple Calendar user via CalDAV PROPFIND on the root resource. Returns a CalDAV 207 Multi-Status XML document containing the user's principal path (e.g., /200385701/principal/). Use the principal path with calendar_home.get to discover the partition host and calendar home URL.
- **Get single apple calendar calendar home by ID** (Get). Discover the calendar-home-set URL for a principal via CalDAV PROPFIND. Returns a CalDAV 207 Multi-Status XML document containing the calendar home URL on the account's partition host (e.g., https://p34-caldav.icloud.com:443/200385701/calendars/). All subsequent calendar and event requests must use that partition host as base_url. Required: principal_path (from principals.get). Send XML body: <d:propfind xmlns:d="DAV:" xmlns:c="urn:ietf:params:xml:ns:caldav"><d:prop><c:calendar-home-set/></d:prop></d:propfind>.
- **List all apple calendar calendars** (List). List all Apple Calendar calendars for a user via CalDAV PROPFIND. Returns: displayname, calendar_color, resourcetype, supported_calendar_component_set, current_user_privilege_set, getctag, sync_token. Required: user_id.
- **Get single apple calendar calendar by ID** (Get). Get a single Apple Calendar calendar by id via CalDAV PROPFIND. Returns: displayname, calendar_color, resourcetype, supported_calendar_component_set, current_user_privilege_set, getctag, sync_token. Required: user_id, id.
- **Create a apple calendar calendar** (Create). Create a new Apple Calendar calendar via CalDAV MKCALENDAR. The calendar_id should be a newly generated UUID. Returns an empty 201 response on success. Required: user_id, calendar_id.
- **Update a apple calendar calendar by ID** (Update). Update Apple Calendar calendar properties such as displayname, calendar_color, description, or timezone via CalDAV PROPPATCH. Returns: displayname, calendar_color, resourcetype, supported_calendar_component_set, current_user_privilege_set, getctag, sync_token. Required: user_id, id.
- **Delete a apple calendar calendar by ID** (Delete). Delete an Apple Calendar calendar and all its events. Returns an empty 204 response on success. Required: user_id, id. This operation is irreversible.
- **Apple calendar calendars search** (Search). Run a CalDAV REPORT against a calendar collection on Apple Calendar / iCloud. The XML request body selects the report type: calendar-query (RFC 4791) to filter/list VEVENTs, calendar-multiget to fetch specific event hrefs, sync-collection (RFC 6578) for incremental sync (iCloud has no webhooks — poll this report), or free-busy-query (RFC 6638) for VFREEBUSY data. All report types use HTTP REPORT on the same calendar collection URL; only the XML body differs. Returns 207 Multi-Status XML. Required: user_id, id (calendar collection id).
- **Create a apple calendar event** (Create). Create a new Apple Calendar event by uploading a full iCalendar VCALENDAR via HTTP PUT. event_id must be a new UUID without the .ics suffix (the .ics extension is appended to the URL automatically). Request body is raw text/calendar content. If-None-Match: * is sent automatically. Required: user_id, calendar_id, event_id.
- **Get single apple calendar event by ID** (Get). Fetch a single Apple Calendar event as an iCalendar (.ics) resource via HTTP GET. The id is the event resource filename including the .ics suffix (e.g., 603275E4-6A47-4EFA-BAEF-CCD33A314C30.ics). Returns text/calendar with an ETag header for conditional updates. Required: user_id, calendar_id, id.
- **Update a apple calendar event by ID** (Update). Update an existing Apple Calendar event by replacing the entire iCalendar VCALENDAR via HTTP PUT. iCloud does not support PATCH — GET the event first, modify VEVENT properties, then PUT the complete VCALENDAR back as raw text/calendar. Use If-Match with the event ETag for safe conditional updates. Required: user_id, calendar_id, id (filename including .ics suffix).
- **Delete a apple calendar event by ID** (Delete). Delete an Apple Calendar event via HTTP DELETE on its .ics resource URL. Use If-Match with the event ETag for safe conditional deletion. Required: user_id, calendar_id, id (filename including .ics suffix).
- **Get single apple calendar server by ID** (Get). Probe Apple Calendar (iCloud) CalDAV server capabilities via HTTP OPTIONS on the root URL. Returns response headers such as DAV, Allow, and supported feature classes (calendar-access, calendar-schedule, sync-collection). Use during discovery before PROPFIND; does not return user or calendar data.
