Skip to main content
Glama
Softeria

Microsoft 365 MCP Server

by Softeria

create-specific-calendar-event

create-specific-calendar-event
Destructive

Create a new event in a user's or Microsoft 365 group's calendar by specifying subject, start/end time, location, attendees, and recurrence options.

Instructions

Use this API to create a new event in a calendar. The calendar can be one for a user, or the default calendar of a Microsoft 365 group.

šŸ’” 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.

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.
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. Dates show when Glama detected each change.

  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

B3.3/5.0
Behavior2/5

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

Annotations already signal that this is a mutating/destructive operation (readOnlyHint=false, destructiveHint=true), and the description adds little behavior beyond restating that it creates an event. The tip about not guessing recipient emails is useful workflow advice, but it does not clarify side effects such as invites being sent, permission requirements, or the confirmation behavior.

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?

The description is compact and front-loaded: the first sentence states the action and target, and the second adds a genuinely important guardrail. Every sentence earns its place, and there is no redundant filler or repeated field-level documentation.

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

Completeness3/5

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

For a simple create operation, the core target and key user-facing tip are present, and the rich input schema fills in event details. However, the tool is part of a large calendar-related sibling group, and the description does not clarify return values or side effects, and it relies on the agent inferring that the returned object will match the calendar event schema.

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?

With 80% schema description coverage, the schema already documents most parameters well, so the baseline is 3. The description adds some value by clarifying valid calendar targets and calling out the need to use list-users for recipient emails rather than guessing, but it does not systematically improve the agent's understanding of the body parameter's required structure.

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

Purpose4/5

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

The description clearly identifies the operation as creating a new event in a specific calendar and adds the useful scope that the calendar can be a user calendar or a Microsoft 365 group's default calendar. However, it does not explicitly distinguish itself from the sibling create-calendar-event tool, so an agent could struggle to know why this 'specific' variant exists.

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

Usage Guidelines3/5

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

The description gives functional context: it is used when you want to create an event in a user or M365 group calendar. However, it gives no explicit guidance about when to prefer this tool over create-calendar-event, update-specific-calendar-event, or other sibling calendar tools, and it does not state any exclusions.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Softeria/ms-365-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server