Skip to content
All tools

m365_create_event

Microsoft 365 · macOS · Windows

Effect: write (strongest supported action). Status: gated.

Gated means the tool requires an installed app, a connected account, permission, or runtime availability. Check those requirements on the listed platform before using it.

macOS

Purpose

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 — pass the user's timezone or the event lands at the wrong hour. Uses the primary calendar unless `calendar` names another. Called without confirm it returns a preview of every field and touches nothing; pass confirm=true to create. Returns the event id. For the Mac's Calendar app use create_calendar_event instead.

Required inputs

Permissions and confirmation

Explicit confirmation parameter: inspect the schema and tool description before any real call. The documentation example keeps confirm false. Obtain user authorization before performing the action.

Full input schema — macOS
{
  "properties": {
    "account": {
      "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"
    },
    "attendees": {
      "description": "Comma-separated email addresses to invite (optional)",
      "type": "string"
    },
    "body": {
      "description": "Event description (optional)",
      "type": "string"
    },
    "calendar": {
      "description": "Calendar name to create the event in — partial, case-insensitive match (optional). Omit to use the primary calendar.",
      "type": "string"
    },
    "confirm": {
      "description": "Must be true to create the event",
      "type": "boolean"
    },
    "end": {
      "description": "End time in ISO 8601, e.g. '2026-05-20T11:00:00'",
      "type": "string"
    },
    "location": {
      "description": "Location (optional)",
      "type": "string"
    },
    "start": {
      "description": "Start time in ISO 8601, e.g. '2026-05-20T10:00:00'",
      "type": "string"
    },
    "subject": {
      "description": "Event title",
      "type": "string"
    },
    "timezone": {
      "description": "IANA timezone, e.g. 'America/New_York' (default: UTC)",
      "type": "string"
    }
  },
  "required": [
    "subject",
    "start",
    "end"
  ],
  "type": "object"
}

Documentation example

Do not execute this example. These concrete inputs refer to a fictional demonstration dataset. Resolve real handles and obtain user authorization before any real call.

{
  "confirm": false,
  "end": "2026-10-06T11:00:00",
  "start": "2026-10-06T10:00:00",
  "subject": "Planning meeting"
}

Windows

Purpose

Creates an event in the default calendar of the Microsoft 365 account connected with connect_m365_account, through Microsoft Graph (for the Outlook desktop app use outlook_calendar_create_event). Without confirm=true nothing is created and nothing is sent: the call returns a preview of every field, without contacting Microsoft 365, so show it to the user. With confirm=true the event is created, each address in `attendees` is added as a required attendee, and Microsoft 365 sends each one a meeting invitation. `start` and `end` are read in `timezone`, which defaults to UTC, not the user's local zone: pass it. Nothing checks for an existing event, so confirming twice creates two. The reply carries the event ID, which m365_delete_event takes to remove the event; this server has no tool to edit one.

Required inputs

Permissions and confirmation

Explicit confirmation parameter: inspect the schema and tool description before any real call. The documentation example keeps confirm false. Obtain user authorization before performing the action.

Full input schema — Windows
{
  "properties": {
    "account": {
      "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"
    },
    "attendees": {
      "description": "Comma-separated email addresses to invite (optional)",
      "type": "string"
    },
    "body": {
      "description": "Event description (optional)",
      "type": "string"
    },
    "confirm": {
      "description": "Must be true to create the event. Without it the call returns a preview and creates nothing.",
      "type": "boolean"
    },
    "end": {
      "description": "End time ISO 8601, e.g. '2026-05-20T11:00:00'",
      "type": "string"
    },
    "location": {
      "description": "Location (optional)",
      "type": "string"
    },
    "start": {
      "description": "Start time ISO 8601, e.g. '2026-05-20T10:00:00'",
      "type": "string"
    },
    "subject": {
      "description": "Event title",
      "type": "string"
    },
    "timezone": {
      "description": "IANA timezone, e.g. 'America/New_York' (default: UTC)",
      "type": "string"
    }
  },
  "required": [
    "subject",
    "start",
    "end"
  ],
  "type": "object"
}

Documentation example

Do not execute this example. These concrete inputs refer to a fictional demonstration dataset. Resolve real handles and obtain user authorization before any real call.

{
  "confirm": false,
  "end": "2026-10-06T11:00:00",
  "start": "2026-10-06T10:00:00",
  "subject": "Planning meeting"
}