create_calendar_event
Calendar · macOS
Effect: write (strongest supported action). Status: gated.
Gated means the tool requires an installed app, a connected account, permission, or runtime availability. Check those requirements on the listed platform before using it.
macOS
Purpose
Creates an event in the Mac's Calendar app (Calendar.app). Requires title, start_date, end_date. Optionally invite attendees by email (CalDAV/Exchange calendars only), or make it a repeating event with `recurrence` (daily/weekly/monthly/yearly). For Microsoft 365 use m365_create_event instead.
Required inputs
title— Event titlestart_date— ISO 8601 date or datetime. With a time (2026-06-27T09:00:00) the event is timed; a time with NO timezone is read in the Mac's LOCAL zone, append Z or an offset (2026-06-27T09:00:00Z, or +02:00) to pin it to UTC/another zone. Pass a bare DATE (YYYY-MM-DD) for BOTH start_date and end_date to create an ALL-DAY event.end_date— ISO 8601 date or datetime, same timezone rules as start_date. For an all-day event pass a bare date (end is inclusive: same date as start = a one-day all-day event; a later date spans through that day).
Permissions and confirmation
Explicit confirmation parameter: inspect the schema and tool description before any real call. The documentation example keeps confirm false. Obtain user authorization before performing the action.
- Use only the apps, accounts and resources authorized by the user on this platform. Consult this tool's platform-specific description for its connection and permission requirements; this catalog does not assert additional OAuth scopes or OS entitlements.
Full input schema — macOS
{
"properties": {
"attendees": {
"description": "List of email addresses to invite (optional, CalDAV/Exchange only)",
"items": {
"type": "string"
},
"type": "array"
},
"calendar": {
"description": "Calendar name to match (optional, alternative to calendar_id)",
"type": "string"
},
"calendar_id": {
"description": "Calendar UUID from list_calendar_names (optional, defaults to default calendar)",
"type": "string"
},
"confirm": {
"description": "Must be true to create the event",
"type": "boolean"
},
"end_date": {
"description": "ISO 8601 date or datetime, same timezone rules as start_date. For an all-day event pass a bare date (end is inclusive: same date as start = a one-day all-day event; a later date spans through that day).",
"type": "string"
},
"location": {
"description": "Location (optional)",
"type": "string"
},
"notes": {
"description": "Event notes (optional)",
"type": "string"
},
"recurrence": {
"description": "Make it a repeating event: 'daily', 'weekly', 'monthly', or 'yearly' (optional; omit for a one-time event).",
"type": "string"
},
"recurrence_count": {
"description": "Total number of occurrences (optional). Mutually exclusive with recurrence_until; if neither is given the event repeats indefinitely.",
"type": "integer"
},
"recurrence_interval": {
"description": "Repeat every N periods (optional, default 1 — e.g. recurrence='weekly' + recurrence_interval=2 = every 2 weeks).",
"type": "integer"
},
"recurrence_until": {
"description": "ISO 8601 date the repetition stops on (optional; takes precedence over recurrence_count).",
"type": "string"
},
"start_date": {
"description": "ISO 8601 date or datetime. With a time (2026-06-27T09:00:00) the event is timed; a time with NO timezone is read in the Mac's LOCAL zone, append Z or an offset (2026-06-27T09:00:00Z, or +02:00) to pin it to UTC/another zone. Pass a bare DATE (YYYY-MM-DD) for BOTH start_date and end_date to create an ALL-DAY event.",
"type": "string"
},
"title": {
"description": "Event title",
"type": "string"
}
},
"required": [
"title",
"start_date",
"end_date"
],
"type": "object"
}Documentation example
Do not execute this example. These concrete inputs refer to a fictional demonstration dataset. Resolve real handles and obtain user authorization before any real call.
{
"confirm": false,
"end_date": "2026-10-06T11:00:00",
"start_date": "2026-10-06T10:00:00",
"title": "Planning meeting"
}