calendar
Manage Outlook calendar events: list, create, update, delete, and search events; handle meetings with attendees; check free/busy availability.
Instructions
Calendar operations for Microsoft Outlook via Microsoft Graph.
Set the required operation parameter to one of the verbs below. Each line names the verb, what it does, and the parameters that verb requires. Optional parameters are omitted here; call operation="help" for the full parameter reference.
help: show detailed documentation for all verbs or a single named verb. No required parameters.list_calendars: list all calendars accessible to the authenticated user. No required parameters.list_events: list events in a time window; expands recurring events into occurrences. No required parameters.get_event: get full event details by ID; bodyPreview by default, full body via output=raw. Requires: event_id.search_events: search events by subject, date range, importance, sensitivity, and other filters. No required parameters.create_event: create a personal calendar event (no attendees); use create_meeting for meetings. Requires: subject, start_datetime.update_event: update a personal event (PATCH); use update_meeting to change attendees. Requires: event_id.delete_event: permanently delete an event by ID (organizer deletions notify attendees). Requires: event_id.respond_event: accept, tentatively accept, or decline an invitation; notifies organizer. Requires: event_id, response.reschedule_event: move a personal event to a new start time, preserving its original duration. Requires: event_id, new_start_datetime.create_meeting: create a meeting with attendees; sends invitations; confirm with user first. Requires: subject, start_datetime, attendees.update_meeting: update a meeting including attendee changes; sends notifications; confirm first. Requires: event_id.cancel_meeting: cancel a meeting and notify attendees; organizer only; confirm with user first. Requires: event_id.reschedule_meeting: move a meeting to a new start time, preserving duration; notifies attendees. Requires: event_id, new_start_datetime.get_free_busy: get free/busy availability for a time range; returns busy periods with times. No required parameters.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Event body content (HTML or plain text). | |
| date | No | Date shorthand: 'today', 'tomorrow', 'this_week', 'next_week', or ISO 8601 date (YYYY-MM-DD). Expands to start/end boundaries in the configured timezone. When start_datetime/end_datetime are also provided, they take precedence. | |
| query | No | Text to search for in event subjects (case-insensitive). | |
| output | No | Output mode: 'text' (default), 'summary', or 'raw'. | |
| account | No | Account label or UPN to use. Never assume a default account — always check account list first. Accepts a label (e.g. 'work') or UPN (e.g. 'user@contoso.com'). Disconnected accounts are listed but require login before use. | |
| comment | No | Optional message to the organizer explaining your response. | |
| show_as | No | Filter by free/busy status: free, tentative, busy, oof, or workingElsewhere. | |
| subject | No | Event title. | |
| event_id | No | The unique identifier of the event to retrieve. | |
| location | No | Location display name (e.g. room name, office, or "Microsoft Teams"). | |
| response | No | Response type: 'accept', 'tentative', or 'decline'. | |
| timezone | No | IANA timezone name for returned event times (e.g., America/New_York). | |
| attendees | No | JSON array of attendees: [{"email":"a@b.com","name":"Name","type":"required|optional|resource"}]. | |
| operation | Yes | The operation to perform. Call with operation="help" for full documentation. | |
| categories | No | Comma-separated category names to filter by (matches any, client-side). | |
| importance | No | Filter by importance: low, normal, or high. | |
| is_all_day | No | Filter by all-day event status. | |
| recurrence | No | JSON recurrence object, e.g. {"pattern":{"type":"weekly","interval":1,"daysOfWeek":["monday"]},"range":{"type":"endDate","startDate":"2026-04-15","endDate":"2026-12-31"}}. | |
| calendar_id | No | Optional calendar ID. If omitted, uses the default calendar. | |
| max_results | No | Maximum number of events to return (default 25, max 100). | |
| sensitivity | No | Filter by sensitivity: normal, personal, private, or confidential. | |
| end_datetime | No | End of the time range in ISO 8601 format (e.g., 2026-03-13T00:00:00Z). Required unless 'date' is provided. | |
| end_timezone | No | IANA timezone for end time. Defaults to server's configured timezone when omitted. | |
| is_cancelled | No | Filter by cancellation status. | |
| send_response | No | Whether to send the response to the organizer. Defaults to true. | |
| created_by_mcp | No | When true, only return events created by this MCP server (server-side filter). | |
| is_reminder_on | No | Enable or disable the reminder. | |
| start_datetime | No | Start of the time range in ISO 8601 format (e.g., 2026-03-12T00:00:00Z). Required unless 'date' is provided. | |
| start_timezone | No | IANA timezone for start time, e.g. America/New_York. Defaults to server's configured timezone when omitted. | |
| reminder_minutes | No | Reminder minutes before start. | |
| is_online_meeting | No | Set true to create a Teams online meeting (work/school accounts only). | |
| new_start_datetime | No | New start time in ISO 8601 without offset, e.g. 2026-04-17T14:00:00. | |
| new_start_timezone | No | IANA timezone for the new start time. Defaults to the server's configured timezone. |