Skip to main content
Glama

calendar_delete_event

Destructive

Delete an iCloud calendar event by unique ID: a single event, an entire repeating series, or one occurrence.

Instructions

Delete an event by uid: a single event, a whole repeating series, or just one date of a series.

Use when: the owner asks to remove or cancel an event. Not for moving it to another calendar (use calendar_move_event; never delete and recreate), for rescheduling (use calendar_update_event), or for declining someone else's invitation (use calendar_respond_to_event). A cancellation notice from someone else means updating or moving the event, not deleting it, unless the owner says so. Parameters:

  • uid is the opaque string from calendar_list_events or calendar_create_event, copied exactly; every date of a series shares one uid. An unknown uid gives "No event with uid".

  • calendar (name in any case, or id from calendar_list_calendars) only narrows the search; omitted, every calendar is searched, which is slower. An unknown name is refused with the list of valid names.

  • occurrence_start picks one date: pass the occurrence's recurrence_id if set, else its start, exactly as listed. A timed series needs a date-time, an all-day series a date. A value matching no date of the series is refused. Omitted, the entire series goes.

  • timezone is only read with occurrence_start, for a value without an offset; an unknown zone is refused. Behavior: permanent; this server cannot undo it. One occurrence is cancelled as an exception date and the rest of the series stays. If the event has guests, iCloud emails them a cancellation, which is refused unless the server allows calendar invites (ALLOW_CALENDAR_INVITES). The delete only lands if the event is unchanged since it was read. Not idempotent: a second call finds no event and errors. Returns: {deleted, uid, summary, calendar}; for one date also occurrence_only and occurrence_start. Errors: "No event with uid" (already gone or wrong uid), "changed on the server since it was read" (read it again), "This event does not repeat" (leave out occurrence_start), deletion blocked by settings.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
uidYesEvent uid (from calendar_list_events).
calendarNoCalendar name (calendar_list_calendars); omit for all.
timezoneNoIANA timezone for times without an offset, e.g. 'Europe/Berlin'; default the owner's.
occurrence_startNoONE occurrence of a repeating event (listed with recurring or recurrence_id) to cancel: its 'recurrence_id' if set, else its 'start'. Omit to delete the whole series.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / occurrence_start / description
      Previous value: -"ONE occurrence of a repeating event to cancel: its 'recurrence_id' if set, else its 'start'. Omit to delete the whole series."New value: +"ONE occurrence of a repeating event (listed with recurring or recurrence_id) to cancel: its 'recurrence_id' if set, else its 'start'. Omit to delete the whole series."
    • changedOutput schema / (root)
      Previous value: -{
      -  "additionalProperties": true,
      -  "title": "calendar_delete_eventDictOutput",
      -  "type": "object"
      -}New value: +null
  2. Changed18 schema fields changedv0.7.0
    • removedInput schema / properties / calendar / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / calendar / default
      Removed value: -null
    • changedInput schema / properties / calendar / description
      Previous value: -"Calendar name from calendar_list_calendars. Omit to search all calendars."New value: +"Calendar name (calendar_list_calendars); omit for all."
    • removedInput schema / properties / calendar / title
      Removed value: -"Calendar"
    • addedInput schema / properties / calendar / type
      Added value: +"string"
    • removedInput schema / properties / occurrence_start / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / occurrence_start / default
      Removed value: -null
    • changedInput schema / properties / occurrence_start / description
      Previous value: -"For a repeating event: the start of the ONE occurrence to cancel, taken from calendar_list_events (its 'recurrence_id' if set, otherwise its 'start'). Omit to delete the whole series."New value: +"ONE occurrence of a repeating event to cancel: its 'recurrence_id' if set, else its 'start'. Omit to delete the whole series."
    • removedInput schema / properties / occurrence_start / title
      Removed value: -"Occurrence Start"
    • addedInput schema / properties / occurrence_start / type
      Added value: +"string"
    • removedInput schema / properties / timezone / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / timezone / default
      Removed value: -null
    • changedInput schema / properties / timezone / description
      Previous value: -"IANA timezone for start/end without an offset, e.g. 'Europe/Berlin'. Omit to use the server timezone."New value: +"IANA timezone for times without an offset, e.g. 'Europe/Berlin'; default the owner's."
    • removedInput schema / properties / timezone / title
      Removed value: -"Timezone"
    • addedInput schema / properties / timezone / type
      Added value: +"string"
    • changedInput schema / properties / uid / description
      Previous value: -"Event uid from calendar_list_events, calendar_get_event or calendar_create_event results."New value: +"Event uid (from calendar_list_events)."
    • removedInput schema / properties / uid / title
      Removed value: -"Uid"
    • removedInput schema / title
      Removed value: -"calendar_delete_eventArguments"
  3. Changed2 schema fields changedv0.4.0
    • addedInput schema / properties / occurrence_start
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "For a repeating event: the start of the ONE occurrence to cancel, taken from calendar_list_events (its 'recurrence_id' if set, otherwise its 'start'). Omit to delete the whole series.",
      +  "title": "Occurrence Start"
      +}
    • addedInput schema / properties / timezone
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "IANA timezone for start/end without an offset, e.g. 'Europe/Berlin'. Omit to use the server timezone.",
      +  "title": "Timezone"
      +}
  4. First observedv0.1.0

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (destructiveHint, idempotentHint=false) the description discloses permanence/no-undo, that a single occurrence becomes an exception date while the series persists, guest cancellation emails gated by ALLOW_CALENDAR_INVITES, optimistic concurrency ("delete only lands if the event is unchanged since it was read"), and the non-idempotent second-call failure mode.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well front-loaded and organized into labeled sections (Use when / Parameters / Behavior / Returns), with every sentence carrying semantic weight. It is long and dense for a 4-parameter tool, but the length is largely earned by the edge-case and error detail rather than filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, yet the description documents the return object ({deleted, uid, summary, calendar}, plus occurrence_only/occurrence_start for single-date deletes) and the exact error strings for already-gone, changed-on-server, non-repeating, and settings-blocked cases. Nothing an agent needs to invoke or interpret it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, but the description goes well past it: uid is opaque and shared across all dates of a series with a specific error for unknown values, calendar only narrows an otherwise slower all-calendar search, occurrence_start must be recurrence_id-or-start and date-time vs date depending on series type, and timezone is read only when occurrence_start lacks an offset.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening clause states a specific verb+resource ("Delete an event by uid") and immediately enumerates the three deletion scopes: single event, whole series, or one date. It explicitly names sibling tools (calendar_move_event, calendar_update_event, calendar_respond_to_event) it must not be confused with.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides an explicit "Use when" trigger plus three named exclusions with the correct alternative for each, including the non-obvious instruction never to delete-and-recreate for a move. The extra note about cancellation notices from others distinguishes when this tool is and isn't appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.