Skip to main content
Glama
Softeria

Microsoft 365 MCP Server

by Softeria

update-specific-calendar-event

update-specific-calendar-event
Destructive

Update a specific calendar event by providing its calendar ID and event ID. Change time, subject, attendees, or other details.

Instructions

Update a specific calendar event. Requires calendarId (from list-calendars) and eventId (from list-specific-calendar-events or get-specific-calendar-view for that same calendar). Times use nested {dateTime, timeZone} objects. UTC is simplest for one-off events; for recurring events use the organizer's own time zone (from get-mailbox-settings or list-supported-time-zones) instead of UTC, since Graph resolves DST against that zone.

šŸ’” TIP: CRITICAL: Do not try to guess the email address of the recipients. Use the list-users tool to find the email address of the recipients. WARNING: Setting attendees replaces the entire attendee list — include all attendees, not just new ones.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
bodyYes
confirmNoFor destructive operations when the confirm gate is enabled (MS365_MCP_REQUIRE_CONFIRM=true; off by default). Set to true only after the user has explicitly approved this action. When the gate is on, calls without confirm: true return { error: "confirmation_required" } without touching user data.
eventIdYesValue for the 'eventId' path segment. Pass it under the name 'eventId', not as 'id'. Use the 'id' field of the event object as returned by Microsoft Graph.
calendarIdYesValue for the 'calendarId' path segment. Pass it under the name 'calendarId', not as 'id'. Use the 'id' field of the calendar object as returned by Microsoft Graph.
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed21 schema fields changedv0.145.2
    • removedInput schema / $defs
      Removed value: -{
      -  "def0": {
      -    "enum": [
      -      "sunday",
      -      "monday",
      -      "tuesday",
      -      "wednesday",
      -      "thursday",
      -      "friday",
      -      "saturday"
      -    ],
      -    "type": "string"
      -  },
      -  "def1": {
      -    "additionalProperties": true,
      -    "properties": {
      -      "dateTime": {
      -        "description": "A single point of time in a combined date and time representation ({date}T{time}; for example, 2017-08-29T04:00:00.0000000).",
      -        "type": "string"
      -      },
      -      "timeZone": {
      -        "description": "Represents a time zone, for example, 'Pacific Standard Time'. See below for more possible values.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      }
      -    },
      -    "type": "object"
      -  }
      -}
    • removedInput schema / properties / body / properties / attendees / items / properties / proposedNewTime / properties / end / $ref
      Removed value: -"#/$defs/def1"
    • addedInput schema / properties / body / properties / attendees / items / properties / proposedNewTime / properties / end / additionalProperties
      Added value: +true
    • addedInput schema / properties / body / properties / attendees / items / properties / proposedNewTime / properties / end / properties
      Added value: +{
      +  "dateTime": {
      +    "description": "A single point of time in a combined date and time representation ({date}T{time}; for example, 2017-08-29T04:00:00.0000000).",
      +    "type": "string"
      +  },
      +  "timeZone": {
      +    "description": "Represents a time zone, for example, 'Pacific Standard Time'. See below for more possible values.",
      +    "type": [
      +      "string",
      +      "null"
      +    ]
      +  }
      +}
    • addedInput schema / properties / body / properties / attendees / items / properties / proposedNewTime / properties / end / type
      Added value: +"object"
    • removedInput schema / properties / body / properties / attendees / items / properties / proposedNewTime / properties / start / $ref
      Removed value: -"#/$defs/def1"
    • addedInput schema / properties / body / properties / attendees / items / properties / proposedNewTime / properties / start / additionalProperties
      Added value: +true
    • addedInput schema / properties / body / properties / attendees / items / properties / proposedNewTime / properties / start / properties
      Added value: +{
      +  "dateTime": {
      +    "description": "A single point of time in a combined date and time representation ({date}T{time}; for example, 2017-08-29T04:00:00.0000000).",
      +    "type": "string"
      +  },
      +  "timeZone": {
      +    "description": "Represents a time zone, for example, 'Pacific Standard Time'. See below for more possible values.",
      +    "type": [
      +      "string",
      +      "null"
      +    ]
      +  }
      +}
    • addedInput schema / properties / body / properties / attendees / items / properties / proposedNewTime / properties / start / type
      Added value: +"object"
    • removedInput schema / properties / body / properties / end / $ref
      Removed value: -"#/$defs/def1"
    • addedInput schema / properties / body / properties / end / additionalProperties
      Added value: +true
    • addedInput schema / properties / body / properties / end / properties
      Added value: +{
      +  "dateTime": {
      +    "description": "A single point of time in a combined date and time representation ({date}T{time}; for example, 2017-08-29T04:00:00.0000000).",
      +    "type": "string"
      +  },
      +  "timeZone": {
      +    "description": "Represents a time zone, for example, 'Pacific Standard Time'. See below for more possible values.",
      +    "type": [
      +      "string",
      +      "null"
      +    ]
      +  }
      +}
    • addedInput schema / properties / body / properties / end / type
      Added value: +"object"
    • changedInput schema / properties / body / properties / recurrence / properties / pattern / properties / daysOfWeek / items / anyOf
      Previous value: -[
      -  {
      -    "$ref": "#/$defs/def0"
      -  },
      -  {
      -    "additionalProperties": true,
      -    "properties": {},
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "enum": [
      +      "sunday",
      +      "monday",
      +      "tuesday",
      +      "wednesday",
      +      "thursday",
      +      "friday",
      +      "saturday"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "additionalProperties": true,
      +    "properties": {},
      +    "type": "object"
      +  }
      +]
    • removedInput schema / properties / body / properties / recurrence / properties / pattern / properties / firstDayOfWeek / $ref
      Removed value: -"#/$defs/def0"
    • addedInput schema / properties / body / properties / recurrence / properties / pattern / properties / firstDayOfWeek / enum
      Added value: +[
      +  "sunday",
      +  "monday",
      +  "tuesday",
      +  "wednesday",
      +  "thursday",
      +  "friday",
      +  "saturday"
      +]
    • addedInput schema / properties / body / properties / recurrence / properties / pattern / properties / firstDayOfWeek / type
      Added value: +"string"
    • removedInput schema / properties / body / properties / start / $ref
      Removed value: -"#/$defs/def1"
    • addedInput schema / properties / body / properties / start / additionalProperties
      Added value: +true
    • addedInput schema / properties / body / properties / start / properties
      Added value: +{
      +  "dateTime": {
      +    "description": "A single point of time in a combined date and time representation ({date}T{time}; for example, 2017-08-29T04:00:00.0000000).",
      +    "type": "string"
      +  },
      +  "timeZone": {
      +    "description": "Represents a time zone, for example, 'Pacific Standard Time'. See below for more possible values.",
      +    "type": [
      +      "string",
      +      "null"
      +    ]
      +  }
      +}
    • addedInput schema / properties / body / properties / start / type
      Added value: +"object"
  2. Addedv0.134.4
  3. Removedv0.131.2
  4. Changed1 schema field changedv0.131.1
    • addedInput schema / properties / confirm
      Added value: +{
      +  "description": "For destructive operations when the confirm gate is enabled (MS365_MCP_REQUIRE_CONFIRM=true; off by default). Set to true only after the user has explicitly approved this action. When the gate is on, calls without confirm: true return { error: \"confirmation_required\" } without touching user data.",
      +  "type": "boolean"
      +}
  5. Addedv0.114.0
  6. Removedv0.112.2
  7. Addedv0.110.0
  8. Removedv0.108.0
  9. Changed30 schema fields changedv0.96.0
    • changedInput schema / properties / body / properties / attendees / items / additionalProperties
      Previous value: -falseNew value: +true
    • changedInput schema / properties / body / properties / attendees / items / properties / emailAddress / additionalProperties
      Previous value: -falseNew value: +true
    • changedInput schema / properties / body / properties / attendees / items / properties / proposedNewTime / additionalProperties
      Previous value: -falseNew value: +true
    • addedInput schema / properties / body / properties / attendees / items / properties / proposedNewTime / properties / end / $ref
      Added value: +"#/properties/body/properties/start"
    • removedInput schema / properties / body / properties / attendees / items / properties / proposedNewTime / properties / end / additionalProperties
      Removed value: -false
    • removedInput schema / properties / body / properties / attendees / items / properties / proposedNewTime / properties / end / properties
      Removed value: -{
      -  "dateTime": {
      -    "description": "A single point of time in a combined date and time representation ({date}T{time}; for example, 2017-08-29T04:00:00.0000000).",
      -    "type": "string"
      -  },
      -  "timeZone": {
      -    "description": "Represents a time zone, for example, 'Pacific Standard Time'. See below for more possible values.",
      -    "type": [
      -      "string",
      -      "null"
      -    ]
      -  }
      -}
    • removedInput schema / properties / body / properties / attendees / items / properties / proposedNewTime / properties / end / type
      Removed value: -"object"
    • changedInput schema / properties / body / properties / attendees / items / properties / proposedNewTime / properties / start / $ref
      Previous value: -"#/properties/body/properties/attendees/items/properties/proposedNewTime/properties/end"New value: +"#/properties/body/properties/start"
    • changedInput schema / properties / body / properties / attendees / items / properties / status / additionalProperties
      Previous value: -falseNew value: +true
    • changedInput schema / properties / body / properties / body / additionalProperties
      Previous value: -falseNew value: +true
    • removedInput schema / properties / body / properties / bodyPreview
      Removed value: -{
      -  "description": "The preview of the message associated with the event. It's in text format.",
      -  "type": [
      -    "string",
      -    "null"
      -  ]
      -}
    • removedInput schema / properties / body / properties / cancelledOccurrences
      Removed value: -{
      -  "description": "Contains occurrenceId property values of canceled instances in a recurring series, if the event is the series master. Instances in a recurring series that are canceled are called canceled occurences.Returned only on $select in a Get operation which specifies the ID (seriesMasterId property value) of a series master event.",
      -  "items": {
      -    "type": "string"
      -  },
      -  "type": "array"
      -}
    • changedInput schema / properties / body / properties / end / $ref
      Previous value: -"#/properties/body/properties/attendees/items/properties/proposedNewTime/properties/end"New value: +"#/properties/body/properties/start"
    • removedInput schema / properties / body / properties / hasAttachments
      Removed value: -{
      -  "description": "Set to true if the event has attachments.",
      -  "type": [
      -    "boolean",
      -    "null"
      -  ]
      -}
    • removedInput schema / properties / body / properties / hideAttendees
      Removed value: -{
      -  "description": "When set to true, each attendee only sees themselves in the meeting request and meeting Tracking list. The default is false.",
      -  "type": [
      -    "boolean",
      -    "null"
      -  ]
      -}
    • removedInput schema / properties / body / properties / iCalUId
      Removed value: -{
      -  "description": "A unique identifier for an event across calendars. This ID is different for each occurrence in a recurring series. Read-only.",
      -  "type": [
      -    "string",
      -    "null"
      -  ]
      -}
    • removedInput schema / properties / body / properties / isCancelled
      Removed value: -{
      -  "description": "Set to true if the event has been canceled.",
      -  "type": [
      -    "boolean",
      -    "null"
      -  ]
      -}
    • removedInput schema / properties / body / properties / isDraft
      Removed value: -{
      -  "description": "Set to true if the user has updated the meeting in Outlook but hasn't sent the updates to attendees. Set to false if all changes are sent, or if the event is an appointment without any attendees.",
      -  "type": [
      -    "boolean",
      -    "null"
      -  ]
      -}
    • removedInput schema / properties / body / properties / isOrganizer
      Removed value: -{
      -  "description": "Set to true if the calendar owner (specified by the owner property of the calendar) is the organizer of the event (specified by the organizer property of the event). It also applies if a delegate organized the event on behalf of the owner.",
      -  "type": [
      -    "boolean",
      -    "null"
      -  ]
      -}
    • changedInput schema / properties / body / properties / location / additionalProperties
      Previous value: -falseNew value: +true
    • changedInput schema / properties / body / properties / location / properties / address / additionalProperties
      Previous value: -falseNew value: +true
    • changedInput schema / properties / body / properties / location / properties / coordinates / additionalProperties
      Previous value: -falseNew value: +true
    • addedInput schema / properties / body / properties / multiValueExtendedProperties
      Added value: +{
      +  "description": "The collection of multi-value extended properties defined for the event. Read-only. Nullable.",
      +  "items": {
      +    "additionalProperties": true,
      +    "properties": {
      +      "id": {
      +        "description": "The unique identifier for an entity. Read-only.",
      +        "type": "string"
      +      },
      +      "value": {
      +        "description": "A collection of property values.",
      +        "items": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "type": "array"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / body / properties / recurrence
      Added value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "pattern": {
      +      "additionalProperties": true,
      +      "properties": {
      +        "dayOfMonth": {
      +          "description": "The day of the month on which the event occurs. Required if type is absoluteMonthly or absoluteYearly.",
      +          "maximum": 2147483647,
      +          "minimum": -2147483648,
      +          "type": "number"
      +        },
      +        "daysOfWeek": {
      +          "description": "A collection of the days of the week on which the event occurs. The possible values are: sunday, monday, tuesday, wednesday, thursday, friday, saturday. If type is relativeMonthly or relativeYearly, and daysOfWeek specifies more than one day, the event falls on the first day that satisfies the pattern.  Required if type is weekly, relativeMonthly, or relativeYearly.",
      +          "items": {
      +            "anyOf": [
      +              {
      +                "enum": [
      +                  "sunday",
      +                  "monday",
      +                  "tuesday",
      +                  "wednesday",
      +                  "thursday",
      +                  "friday",
      +                  "saturday"
      +                ],
      +                "type": "string"
      +              },
      +              {
      +                "additionalProperties": true,
      +                "properties": {},
      +                "type": "object"
      +              }
      +            ]
      +          },
      +          "type": "array"
      +        },
      +        "firstDayOfWeek": {
      +          "$ref": "#/properties/body/properties/recurrence/properties/pattern/properties/daysOfWeek/items/anyOf/0"
      +        },
      +        "index": {
      +          "enum": [
      +            "first",
      +            "second",
      +            "third",
      +            "fourth",
      +            "last"
      +          ],
      +          "type": "string"
      +        },
      +        "interval": {
      +          "description": "The number of units between occurrences, where units can be in days, weeks, months, or years, depending on the type. Required.",
      +          "maximum": 2147483647,
      +          "minimum": -2147483648,
      +          "type": "number"
      +        },
      +        "month": {
      +          "description": "The month in which the event occurs.  This is a number from 1 to 12.",
      +          "maximum": 2147483647,
      +          "minimum": -2147483648,
      +          "type": "number"
      +        },
      +        "type": {
      +          "enum": [
      +            "daily",
      +            "weekly",
      +            "absoluteMonthly",
      +            "relativeMonthly",
      +            "absoluteYearly",
      +            "relativeYearly"
      +          ],
      +          "type": "string"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "range": {
      +      "additionalProperties": true,
      +      "properties": {
      +        "endDate": {
      +          "anyOf": [
      +            {
      +              "description": "The date to stop applying the recurrence pattern. Depending on the recurrence pattern of the event, the last occurrence of the meeting may not be this date. Required if type is endDate.",
      +              "pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$",
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "description": "The date to stop applying the recurrence pattern. Depending on the recurrence pattern of the event, the last occurrence of the meeting may not be this date. Required if type is endDate."
      +        },
      +        "numberOfOccurrences": {
      +          "description": "The number of times to repeat the event. Required and must be positive if type is numbered.",
      +          "maximum": 2147483647,
      +          "minimum": -2147483648,
      +          "type": "number"
      +        },
      +        "recurrenceTimeZone": {
      +          "description": "Time zone for the startDate and endDate properties. Optional. If not specified, the time zone of the event is used.",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "startDate": {
      +          "anyOf": [
      +            {
      +              "description": "The date to start applying the recurrence pattern. The first occurrence of the meeting may be this date or later, depending on the recurrence pattern of the event. Must be the same value as the start property of the recurring event. Required.",
      +              "pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$",
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "description": "The date to start applying the recurrence pattern. The first occurrence of the meeting may be this date or later, depending on the recurrence pattern of the event. Must be the same value as the start property of the recurring event. Required."
      +        },
      +        "type": {
      +          "enum": [
      +            "endDate",
      +            "noEnd",
      +            "numbered"
      +          ],
      +          "type": "string"
      +        }
      +      },
      +      "type": "object"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedInput schema / properties / body / properties / reminderMinutesBeforeStart
      Added value: +{
      +  "anyOf": [
      +    {
      +      "description": "The number of minutes before the event start time that the reminder alert occurs.",
      +      "maximum": 2147483647,
      +      "minimum": -2147483648,
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "The number of minutes before the event start time that the reminder alert occurs."
      +}
    • addedInput schema / properties / body / properties / responseRequested
      Added value: +{
      +  "description": "Default is true, which represents the organizer would like an invitee to send a response to the event.",
      +  "type": [
      +    "boolean",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / body / properties / sensitivity
      Added value: +{
      +  "enum": [
      +    "normal",
      +    "personal",
      +    "private",
      +    "confidential"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / body / properties / showAs
      Added value: +{
      +  "enum": [
      +    "unknown",
      +    "free",
      +    "tentative",
      +    "busy",
      +    "oof",
      +    "workingElsewhere"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / body / properties / singleValueExtendedProperties
      Added value: +{
      +  "description": "The collection of single-value extended properties defined for the event. Read-only. Nullable.",
      +  "items": {
      +    "additionalProperties": true,
      +    "properties": {
      +      "id": {
      +        "description": "The unique identifier for an entity. Read-only.",
      +        "type": "string"
      +      },
      +      "value": {
      +        "description": "A property value.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / body / properties / start
      Added value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "dateTime": {
      +      "description": "A single point of time in a combined date and time representation ({date}T{time}; for example, 2017-08-29T04:00:00.0000000).",
      +      "type": "string"
      +    },
      +    "timeZone": {
      +      "description": "Represents a time zone, for example, 'Pacific Standard Time'. See below for more possible values.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    }
      +  },
      +  "type": "object"
      +}
  10. First observedv0.31.0

TDQS

A4/5.0
Behavior4/5

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

Annotations already flag destructiveHint and openWorldHint, so safety is covered, but the description adds real behavioral context the annotations do not: that attendee substitution is wholesale replacement, that DST is resolved against the organizer's zone, and that email addresses must not be guessed. It does not discuss confirm gating, ETag concurrency, or read-only fields, leaving modest gaps.

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

Conciseness3/5

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

The core guidance is front-loaded and useful, but the 'TIP' block is verbose and partly redundant ('CRITICAL: Do not try to guess the email address'), and the description is dense with parenthetical tool references. It is informative but could be trimmed without losing meaning.

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

Completeness4/5

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

For a 6-parameter mutation tool with a deep nested body, no output schema, and 83% schema coverage, the description supplies the critical operational context (ID provenance, time-zone resolution, attendee replacement). Missing only the confirm-gate workflow and concurrency (ETag) notes, which would raise it to a 5.

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 83%, so most parameters are already documented, and the description reinforces the nested {dateTime, timeZone} shape and the calendarId/eventId naming. With coverage this high the description's marginal param value is limited, matching the 3 baseline.

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 ('Update a specific calendar event') and distinguishes itself from siblings by naming the exact prerequisite tools for each ID (list-calendars for calendarId, list-specific-calendar-events/get-specific-calendar-view for eventId). An agent can route to this tool 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 Guidelines4/5

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

The description gives clear provenance for each required ID and a rule for choosing time zones (UTC for one-offs, organizer zone for recurring events), plus a warning that setting attendees replaces the whole list. It lacks explicit when-not-to-use guidance (e.g. when to prefer create vs update, or the single-instance vs seriesMaster distinction).

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

Deploy Server

Other Tools