Skip to main content
Glama

Microsoft 365 Create Event

m365_create_event
Destructive

Creates an event in the connected Microsoft 365 / Outlook calendar. If attendees is set, Microsoft 365 emails each of them a meeting invitation as soon as the event is created: creating with attendees IS sending invitations, so check the list with the user first. Times are read in timezone, which defaults to UTC (not this Mac's time, unlike create_calendar_event) — pass the user's timezone or the event lands at the wrong hour; the preview says when no timezone was given. Uses the primary calendar unless calendar names another. With attendees, the call without confirm returns a preview of every field and touches nothing; pass confirm=true to create it and send the invitations. Without attendees it creates the event on the first call. Returns the event id. For the Mac's Calendar app use create_calendar_event instead.

Input Schema

NameRequiredDescriptionDefault
endYesEnd time in ISO 8601, e.g. '2026-05-20T11:00:00'
bodyNoEvent description (optional)
startYesStart time in ISO 8601, e.g. '2026-05-20T10:00:00'
accountNoWhich connected Microsoft 365 account to use: its email (UPN), its id from list_m365_accounts, or its display name when unique. Leave it out to use the default account.
confirmNoNeeded only with attendees (the invitations are emails): must be true to create the event and send them. Without attendees it is ignored.
subjectYesEvent title
calendarNoCalendar name to create the event in — partial, case-insensitive match (optional). Omit to use the primary calendar.
locationNoLocation (optional)
rememberNoWith confirm: true, also stop asking for this kind of action from now on. Only when the person said so ("don't ask again"). The person can revoke it in LMCP or with set_always_allowed.
timezoneNoIANA timezone, e.g. 'America/New_York' (default: UTC)
attendeesNoComma-separated email addresses to invite (optional)

Output Schema

NameRequiredDescriptionDefault
idNo
okNo
accountNoThe email (UPN) of the Microsoft 365 account this call used.
messageNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / confirm / description
      Previous value: -"Must be true to create the event"New value: +"Needed only with attendees (the invitations are emails): must be true to create the event and send them. Without attendees it is ignored."
    • addedInput schema / properties / remember
      Added value: +{
      +  "description": "With confirm: true, also stop asking for this kind of action from now on. Only when the person said so (\"don't ask again\"). The person can revoke it in LMCP or with set_always_allowed.",
      +  "type": "boolean"
      +}
  2. Changed2 schema fields changed
    • addedInput schema / properties / account
      Added value: +{
      +  "description": "Which connected Microsoft 365 account to use: its email (UPN), its id from list_m365_accounts, or its display name when unique. Leave it out to use the default account.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / account
      Added value: +{
      +  "description": "The email (UPN) of the Microsoft 365 account this call used.",
      +  "type": "string"
      +}
  3. Changed1 schema field changed
    • addedInput schema / properties / confirm
      Added value: +{
      +  "description": "Must be true to create the event",
      +  "type": "boolean"
      +}
  4. Changed1 schema field changed
    • removedInput schema / properties / confirm
      Removed value: -{
      -  "description": "Must be true to create the event",
      -  "type": "boolean"
      -}
  5. Changed1 schema field changed
    • addedInput schema / properties / confirm
      Added value: +{
      +  "description": "Must be true to create the event",
      +  "type": "boolean"
      +}
  6. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing the irreversible side effect (creating with attendees IS sending email invitations immediately), the preview/confirm two-step flow, the UTC timezone default and the consequence of a wrong timezone ('the event lands at the wrong hour'), the primary-calendar default, and the return value. The destructiveHint=true annotation is consistent with, and clarified by, the involuntary-email behavior described.

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-loads the core action and the highest-risk fact (invitations are sent) before secondary details. It is dense and every sentence carries information, but the parenthetical aside about 'this Mac's time' and the mix of side-effect, timezone, and routing topics in one block makes it slightly harder to scan than a shorter, better-partitioned version would be.

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?

Covers everything an agent needs for an 11-parameter, open-world, destructive-capable mutation: prerequisites (connected account), side effects, the confirmation protocol, timezone handling, calendar selection default, and return value. With an output schema present, it correctly spends no space enumerating returned fields beyond the event id.

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 already 100%, so the baseline is 3; the description still adds meaning by framing timezone as an IANA default-to-UTC pitfall that differs from the sibling tool and by explaining that confirm is only meaningful when attendees are set, while being ignored otherwise. It does not add anything for account, calendar, remember, or the ISO 8601 format beyond what the schema already documents.

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?

Opens with a specific verb and resource ('Creates an event in the connected Microsoft 365 / Outlook calendar') and immediately distinguishes itself from the similarly named sibling create_calendar_event, which targets the Mac Calendar app. An agent can route between the two without inspecting either 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 states when this tool applies versus create_calendar_event, and gives concrete when-to-call guidance: without attendees it creates on first call, with attendees a preview is returned unless confirm=true is passed. It also adds a human-in-the-loop instruction ('check the list with the user first'), which is exactly the kind of usage rule the schema cannot express.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources