Scheduling
Apple Calendar
API integration
Ship Scheduling features without building the integration. Full Apple Calendar API access via Proxy and 10+ MCP-ready tools for AI agents — extend models and mappings to fit your product.
Talk to usUse Cases
Why integrate with Apple Calendar
Common scenarios for SaaS companies building Apple Calendar integrations for their customers.
Offer scheduling for Apple-first users
Booking and scheduling platforms can let freelancers, consultants, and solopreneurs connect their iCloud Calendar to prevent double-booking. Truto abstracts away CalDAV, principal discovery, and partition routing so you can ship this without touching XML or .ics parsing.
Sync CRM meetings to personal iCloud calendars
CRMs used by real estate agents, agencies, and independent professionals can push deal-related meetings directly into a user's Apple Calendar and pull back manually-created events. This keeps the source of truth aligned without asking users to switch calendar providers.
Provision dedicated calendars for SaaS-generated events
ATSs, project tools, and coaching platforms can create a dedicated calendar inside a user's iCloud account (e.g., 'Interviews' or 'Client Sessions') to isolate app-generated events from personal ones. This keeps the user's main calendar clean and gives your product a clear ownership boundary.
Enable personal availability shadowing for enterprise users
Productivity and calendar tools can let users connect their personal Apple Calendar to block time on their work calendar without exposing event details. This is a common ask for professionals who keep work on Google or Outlook but manage life on iCloud.
Automate time tracking from iCloud events
Time tracking and billing tools can read events from a consultant's Apple Calendar and turn them into suggested time entries. Truto handles polling and normalization so your app receives clean event objects instead of raw iCalendar payloads.
What You Can Build
Ship these features with Truto + Apple Calendar
Concrete product features your team can ship faster by leveraging Truto’s Apple Calendar integration instead of building from scratch.
Two-way event sync with iCloud
Create, read, update, and delete events on a user's Apple Calendar and mirror user-initiated changes back into your product.
Automatic calendar provisioning
Create a dedicated sub-calendar inside the user's iCloud account at connection time so all app-generated events live in an isolated, brand-owned space.
Multi-calendar selector at connect time
List all calendars on the user's iCloud account and let them choose which ones to read from or write to during onboarding.
Calendar lifecycle management
Rename, update, or delete the calendars your app provisions so users can clean up or rebrand without leaving your product.
Event lookup and enrichment
Fetch a single event by ID to enrich records in your CRM, ATS, or PM tool with structured meeting metadata.
Server and account health checks
Resolve the user's principal, calendar home, and server partition on connection to confirm the account is reachable and correctly routed before you start syncing.
SuperAI
Apple Calendar AI agent tools
Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.
get_single_apple_calendar_principal_by_id
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
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:
list_all_apple_calendar_calendars
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 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 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 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 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
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 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
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 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 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
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.
Why Truto
Why use Truto’s MCP server for Apple Calendar
Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 650+ integrations.
Auto-generated, always up to date
Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.
Fine-grained access control
Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.
Multi-tenant by design
Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.
Works with every MCP client
Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.
Built-in auth, rate limits, and error handling
Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.
Expiring and auditable servers
Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.
How It Works
From zero to integrated
Go live with Apple Calendar in under an hour. No boilerplate, no maintenance burden.
Link your customer’s Apple Calendar account
Use Truto’s frontend SDK to connect your customer’s Apple Calendar account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.
We handle authentication
Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.
Call our API, we call Apple Calendar
Truto’s Proxy API is a 1-to-1 mapping of the Apple Calendar API. You call us, we call Apple Calendar, and pass the response back in the same cycle.
Unified response format
Every response follows a single format across all integrations. We translate Apple Calendar’s pagination into unified cursor-based pagination. Data is always in the result attribute.
FAQs
Common questions about Apple Calendar on Truto
Authentication, rate limits, data freshness, and everything else you need to know before you integrate.
How does authentication with Apple Calendar work?
Apple Calendar uses CalDAV, which authenticates with the user's Apple ID and an app-specific password generated from appleid.apple.com. Truto handles the connection flow and the underlying CalDAV auth so your app only deals with a standard connected account.
Does Apple Calendar support webhooks for real-time updates?
No. Apple Calendar has no webhook mechanism. Data freshness relies on polling the CalDAV sync-collection endpoint, which Truto manages on your behalf so you can consume changes without implementing the polling loop yourself.
Do I need to parse iCalendar (.ics) or CalDAV XML?
No. Even though Apple Calendar is CalDAV under the hood, Truto exposes calendars and events as normalized JSON via tools like list_all_apple_calendar_calendars, create_a_apple_calendar_event, and update_a_apple_calendar_event_by_id. You never touch VCALENDAR, VEVENT, or PROPFIND XML.
How does Truto handle iCloud's partitioned hosts?
iCloud shards accounts across partition hosts (e.g., p34-caldav.icloud.com) that must be discovered per user. Truto resolves the principal, calendar home, and server via get_single_apple_calendar_principal_by_id, get_single_apple_calendar_calendar_home_by_id, and get_single_apple_calendar_server_by_id so requests are always routed to the correct partition.
What operations are supported on events?
You can create, retrieve, update, and delete events on any calendar the user has write access to via create_a_apple_calendar_event, get_single_apple_calendar_event_by_id, update_a_apple_calendar_event_by_id, and delete_a_apple_calendar_event_by_id. Truto handles the underlying ETag and conditional PUT logic so concurrent updates don't clobber each other.
Can I search calendars or manage multiple calendars per user?
Yes. Use list_all_apple_calendar_calendars to enumerate all calendars on a user's account, apple_calendar_calendars_search to filter them, and create_a_apple_calendar_calendar / update_a_apple_calendar_calendar_by_id / delete_a_apple_calendar_calendar_by_id to manage app-owned calendars in the user's iCloud account.
From the Blog
Apple Calendar integration guides
Deep dives, architecture guides, and practical tutorials for building Apple Calendar integrations.
Apple Calendar
Get Apple Calendar integrated into your app
Our team understands what it takes to make a Apple Calendar integration successful. A short, crisp 30 minute call with folks who understand the problem.