Skip to main content
Glama
desek

outlook-local-mcp

calendar

Destructive

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

TableJSON Schema
NameRequiredDescriptionDefault
bodyNoEvent body content (HTML or plain text).
dateNoDate 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.
queryNoText to search for in event subjects (case-insensitive).
outputNoOutput mode: 'text' (default), 'summary', or 'raw'.
accountNoAccount 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.
commentNoOptional message to the organizer explaining your response.
show_asNoFilter by free/busy status: free, tentative, busy, oof, or workingElsewhere.
subjectNoEvent title.
event_idNoThe unique identifier of the event to retrieve.
locationNoLocation display name (e.g. room name, office, or "Microsoft Teams").
responseNoResponse type: 'accept', 'tentative', or 'decline'.
timezoneNoIANA timezone name for returned event times (e.g., America/New_York).
attendeesNoJSON array of attendees: [{"email":"a@b.com","name":"Name","type":"required|optional|resource"}].
operationYesThe operation to perform. Call with operation="help" for full documentation.
categoriesNoComma-separated category names to filter by (matches any, client-side).
importanceNoFilter by importance: low, normal, or high.
is_all_dayNoFilter by all-day event status.
recurrenceNoJSON recurrence object, e.g. {"pattern":{"type":"weekly","interval":1,"daysOfWeek":["monday"]},"range":{"type":"endDate","startDate":"2026-04-15","endDate":"2026-12-31"}}.
calendar_idNoOptional calendar ID. If omitted, uses the default calendar.
max_resultsNoMaximum number of events to return (default 25, max 100).
sensitivityNoFilter by sensitivity: normal, personal, private, or confidential.
end_datetimeNoEnd of the time range in ISO 8601 format (e.g., 2026-03-13T00:00:00Z). Required unless 'date' is provided.
end_timezoneNoIANA timezone for end time. Defaults to server's configured timezone when omitted.
is_cancelledNoFilter by cancellation status.
send_responseNoWhether to send the response to the organizer. Defaults to true.
created_by_mcpNoWhen true, only return events created by this MCP server (server-side filter).
is_reminder_onNoEnable or disable the reminder.
start_datetimeNoStart of the time range in ISO 8601 format (e.g., 2026-03-12T00:00:00Z). Required unless 'date' is provided.
start_timezoneNoIANA timezone for start time, e.g. America/New_York. Defaults to server's configured timezone when omitted.
reminder_minutesNoReminder minutes before start.
is_online_meetingNoSet true to create a Teams online meeting (work/school accounts only).
new_start_datetimeNoNew start time in ISO 8601 without offset, e.g. 2026-04-17T14:00:00.
new_start_timezoneNoIANA timezone for the new start time. Defaults to the server's configured timezone.
Behavior4/5

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

Annotations indicate destructiveHint=true and readOnlyHint=false; the description adds specific behavioral details: delete_event 'permanently deletes and notifies attendees', create_meeting 'sends invitations; confirm with user first', etc. It explains the 'output' parameter behavior for get_event. No contradictions with annotations.

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?

The description is lengthy due to the number of operations (15), but it is well-structured: a brief intro followed by a bulleted list with each verb, its purpose, and required params. Information is front-loaded with the purpose. Every sentence serves a purpose.

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?

Given the complexity (33 parameters, 15 operations) and no output schema, the description covers each operation's behavior and required inputs. It does not explain return values but that is acceptable without an output schema. The 'help' operation provides a fallback for full documentation.

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 100%, but the description adds operational context by listing required parameters per verb (e.g., delete_event requires event_id). It also directs users to operation='help' for full parameter reference. This adds meaning beyond what the schema alone provides.

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?

The description clearly states the tool handles 'Calendar operations for Microsoft Outlook via Microsoft Graph' and lists 15 distinct operations with specific verbs and resources. This distinguishes it from sibling tools (account, mail, system) which cover different domains.

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?

The description provides clear guidance on when to use similar operations (e.g., 'create_event' for personal events vs 'create_meeting' for meetings with attendees). It does not explicitly contrast against sibling tools, but the domain difference is obvious. The 'help' operation is recommended for full documentation.

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/desek/outlook-local-mcp'

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