Skip to main content
Glama
Softeria

Microsoft 365 MCP Server

by Softeria

update-calendar-event

update-calendar-event
Destructive

Modify an existing event on the default Microsoft 365 calendar, such as changing its time, subject, or attendees. Requires the event ID and uses nested dateTime/timeZone objects.

Instructions

Update an event on the default calendar. Requires eventId (the event's ID from get-calendar-view or list-calendar-events). 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.
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.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and openWorldHint=true, so the safety profile is covered. The description adds the concrete consequence that setting attendees replaces the entire attendee list, plus the DST-resolution nuance for recurring events — meaningful behavioral detail beyond the generic annotation.

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?

Front-loaded with the core action and prerequisite, followed by focused guidance. The TIP/WARNING block with emoji and capitalization is slightly noisy but each sentence carries actionable content, so waste is minimal.

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 mutation tool with no output schema, the description covers the essential gotchas (ID source, time-zone semantics, attendee-list replacement). It could say more about the confirm gate or partial-update behavior, but it is largely complete for correct invocation.

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

Parameters4/5

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

Schema coverage is high (~80%), so the baseline is 3. The description still adds value: it clarifies eventId sourcing ('ID from get-calendar-view or list-calendar-events') and explains the nested {dateTime, timeZone} structure and which time zone to choose, going beyond the schema's field descriptions.

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+resource ('Update an event') and scopes it to 'the default calendar,' which cleanly distinguishes it from the sibling update-specific-calendar-event. An agent can identify the operation and its target calendar without opening the 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?

Provides strong context: the prerequisite eventId and where to obtain it (get-calendar-view/list-calendar-events), conditional time-zone guidance (UTC for one-offs, organizer zone for recurring), and a warning to look up recipient emails via list-users rather than guessing. It stops short of explicitly contrasting with the sibling update-specific-calendar-event or create/delete alternatives.

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