Skip to main content
Glama

Get calendar event

get_event
Read-onlyIdempotent

Fetch a single calendar event by resource ID or calendar ID and UID pair, with optional raw iCalendar for diagnostics. Use range searches to list multiple events.

Instructions

Read one event by resource_id, preferably from a previous result, or by the calendar_id and uid pair. Use list_events for range searches. Request raw iCalendar only for controlled diagnostics because it may contain sensitive calendar data.

Input Schema

NameRequiredDescriptionDefault
uidNoiCalendar UID of the event. Provide it together with calendar_id when resource_id is unavailable.
calendar_idNoOpaque calendar ID returned by list_calendars. Provide it together with uid when resource_id is unavailable.
resource_idNoOpaque event resource ID returned by list_events or get_event. Provide it alone instead of calendar_id and uid.
include_raw_icalNoInclude the raw iCalendar resource for controlled diagnostics; it may contain sensitive calendar data. Defaults to false.

Output Schema

NameRequiredDescriptionDefault
endYesNormalized event end.
uidYesStored iCalendar UID.
etagYesCurrent ETag for optimistic concurrency, when available.
hrefYesRedacted fingerprint of the CalDAV resource URL.
rruleYesStored RFC 5545 recurrence rule without the RRULE: prefix.
startYesNormalized event start.
alarmsYesNormalized alarms attached to the event.
summaryYesStored event title.
locationYesStored event location.
raw_icalNoRaw iCalendar resource, included only when explicitly requested.
recurringYesWhether this event belongs to a recurring series.
calendar_idYesOpaque ID of the containing calendar.
descriptionYesStored event notes.
resource_idYesOpaque event ID accepted by get_event, update_event, and delete_event.
recurrence_idYesOccurrence identifier for an expanded recurring event.
travel_minutesYesApple Calendar travel time in whole minutes before the start, or null when none is set.
recurrence_exceptionYesWhether this result is an overridden recurrence instance.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv0.2.0
    • addedOutput schema / properties / travel_minutes
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maximum": 9007199254740991,
      +      "minimum": -9007199254740991,
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Apple Calendar travel time in whole minutes before the start, or null when none is set."
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "calendar_id",
      -  "resource_id",
      -  "uid",
      -  "href",
      -  "etag",
      -  "summary",
      -  "start",
      -  "end",
      -  "description",
      -  "location",
      -  "rrule",
      -  "alarms",
      -  "recurring",
      -  "recurrence_exception",
      -  "recurrence_id"
      -]New value: +[
      +  "calendar_id",
      +  "resource_id",
      +  "uid",
      +  "href",
      +  "etag",
      +  "summary",
      +  "start",
      +  "end",
      +  "description",
      +  "location",
      +  "rrule",
      +  "alarms",
      +  "travel_minutes",
      +  "recurring",
      +  "recurrence_exception",
      +  "recurrence_id"
      +]
  2. Changed14 schema fields changedv0.1.7
    • removedOutput schema / properties / alarms / items / properties / description / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / alarms / items / properties / description / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / alarms / items / properties / uid / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / alarms / items / properties / uid / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / description / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / description / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / etag / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / etag / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / location / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / location / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / recurrence_id / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / recurrence_id / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / rrule / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / rrule / type
      Added value: +[
      +  "string",
      +  "null"
      +]
  3. Changed27 schema fields changedv0.1.1
    • addedInput schema / properties / calendar_id / description
      Added value: +"Opaque calendar ID returned by list_calendars. Provide it together with uid when resource_id is unavailable."
    • addedInput schema / properties / include_raw_ical / description
      Added value: +"Include the raw iCalendar resource for controlled diagnostics; it may contain sensitive calendar data. Defaults to false."
    • addedInput schema / properties / resource_id / description
      Added value: +"Opaque event resource ID returned by list_events or get_event. Provide it alone instead of calendar_id and uid."
    • addedInput schema / properties / uid / description
      Added value: +"iCalendar UID of the event. Provide it together with calendar_id when resource_id is unavailable."
    • addedOutput schema / properties / alarms / description
      Added value: +"Normalized alarms attached to the event."
    • addedOutput schema / properties / alarms / items / description
      Added value: +"A normalized alarm returned by iCloud Calendar."
    • addedOutput schema / properties / alarms / items / properties / action / description
      Added value: +"Stored iCalendar alarm action."
    • addedOutput schema / properties / alarms / items / properties / description / description
      Added value: +"Stored alarm notification text, when available."
    • addedOutput schema / properties / alarms / items / properties / minutes_before / description
      Added value: +"Whole minutes before event start, when representable."
    • addedOutput schema / properties / alarms / items / properties / uid / description
      Added value: +"Stored alarm UID, when available."
    • addedOutput schema / properties / calendar_id / description
      Added value: +"Opaque ID of the containing calendar."
    • addedOutput schema / properties / description / description
      Added value: +"Stored event notes."
    • changedOutput schema / properties / end / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "date_time": {
      -        "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:Z|[+-]\\d{2}:\\d{2})$",
      -        "type": "string"
      -      },
      -      "timezone": {
      -        "maxLength": 4096,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "date_time",
      -      "timezone"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "date": {
      -        "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "date"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "description": "A stored timed calendar value.",
      +    "properties": {
      +      "date_time": {
      +        "description": "Stored ISO 8601 date-time with seconds and an explicit UTC offset or Z.",
      +        "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:Z|[+-]\\d{2}:\\d{2})$",
      +        "type": "string"
      +      },
      +      "timezone": {
      +        "description": "IANA timezone associated with the stored date-time.",
      +        "maxLength": 4096,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "date_time",
      +      "timezone"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "description": "An all-day calendar value.",
      +    "properties": {
      +      "date": {
      +        "description": "Calendar date in YYYY-MM-DD format.",
      +        "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "date"
      +    ],
      +    "type": "object"
      +  }
      +]
    • addedOutput schema / properties / end / description
      Added value: +"Normalized event end."
    • addedOutput schema / properties / etag / description
      Added value: +"Current ETag for optimistic concurrency, when available."
    • addedOutput schema / properties / href / description
      Added value: +"Redacted fingerprint of the CalDAV resource URL."
    • addedOutput schema / properties / location / description
      Added value: +"Stored event location."
    • addedOutput schema / properties / raw_ical / description
      Added value: +"Raw iCalendar resource, included only when explicitly requested."
    • addedOutput schema / properties / recurrence_exception / description
      Added value: +"Whether this result is an overridden recurrence instance."
    • addedOutput schema / properties / recurrence_id / description
      Added value: +"Occurrence identifier for an expanded recurring event."
    • addedOutput schema / properties / recurring / description
      Added value: +"Whether this event belongs to a recurring series."
    • addedOutput schema / properties / resource_id / description
      Added value: +"Opaque event ID accepted by get_event, update_event, and delete_event."
    • addedOutput schema / properties / rrule / description
      Added value: +"Stored RFC 5545 recurrence rule without the RRULE: prefix."
    • changedOutput schema / properties / start / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "date_time": {
      -        "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:Z|[+-]\\d{2}:\\d{2})$",
      -        "type": "string"
      -      },
      -      "timezone": {
      -        "maxLength": 4096,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "date_time",
      -      "timezone"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "date": {
      -        "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "date"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "description": "A stored timed calendar value.",
      +    "properties": {
      +      "date_time": {
      +        "description": "Stored ISO 8601 date-time with seconds and an explicit UTC offset or Z.",
      +        "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:Z|[+-]\\d{2}:\\d{2})$",
      +        "type": "string"
      +      },
      +      "timezone": {
      +        "description": "IANA timezone associated with the stored date-time.",
      +        "maxLength": 4096,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "date_time",
      +      "timezone"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "description": "An all-day calendar value.",
      +    "properties": {
      +      "date": {
      +        "description": "Calendar date in YYYY-MM-DD format.",
      +        "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "date"
      +    ],
      +    "type": "object"
      +  }
      +]
    • addedOutput schema / properties / start / description
      Added value: +"Normalized event start."
    • addedOutput schema / properties / summary / description
      Added value: +"Stored event title."
    • addedOutput schema / properties / uid / description
      Added value: +"Stored iCalendar UID."
  4. First observedv0.1.0

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so safety is covered; the description contributes the extra warning that raw iCalendar output may contain sensitive calendar data and should be reserved for diagnostics. It doesn't cover lookup failure behavior (e.g., what happens if the resource_id is stale), which is the only material gap.

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

Conciseness5/5

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

Three short sentences, front-loaded with the primary lookup path before the alternative and the parameter caveat. No sentence is 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?

Required-params is zero and the real constraint (resource_id alone OR calendar_id + uid) is not encoded as a schema requirement, so the description carrying that selection logic is exactly what's needed. With annotations and an output schema present, nothing else is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so both the either/or key selection and the include_raw_ical sensitivity caveat are already documented in the property descriptions. The description restates rather than adds to them, so the baseline 3 applies.

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?

States a specific verb and resource ('Read one event') and immediately names the two valid lookup keys (resource_id, or calendar_id + uid pair). It also distinguishes itself from list_events, so an agent can tell it apart from a sibling without opening any schema.

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?

Explicitly routes range searching to the alternative ('Use list_events for range searches') and gives a preference rule ('preferably from a previous result') for choosing resource_id over the composite key. It also scopes the raw iCalendar option to controlled diagnostics, which is a when-to-use constraint on a parameter.

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