Skip to content
Download Longwave

Microsoft 365

Microsoft 365 is a local MCP server for Microsoft 365 mail, calendar, Teams, SharePoint, OneDrive, Excel, OneNote and To Do. Its connected implementation exposes 361 tools after you sign in with Microsoft.

Add to Longwave Source

Install elsewhere

Install Microsoft 365

Choose a harness. These instructions start the same local MCP server shown on this page.

Claude Code

Run this in your terminal. It adds a user-scoped server; use --scope project instead if it should apply only to the current project.

terminal
claude mcp add --scope user --transport stdio ms365 -- npx -y @softeria/ms-365-mcp-server --org-mode

What it does

Microsoft 365 MCP runs locally and talks to Microsoft Graph as you. Personal accounts provide mail, calendar, and OneDrive. Work or school accounts with organization mode also provide Teams, SharePoint, meetings, and shared mailboxes.

  • Read and send Outlook mail.
  • List and create calendar events.
  • Search OneDrive files.
  • Work with Excel, OneNote, and To Do.
  • Use a work or school account for organization tools.

Available functions

accept-calendar-event Accept the specified event in a user calendar. 💡 TIP: Accepts a meeting invitation. Optional body: { sendResponse: true, comment: 'I will attend.' }. Set sendResponse to false to accept silently without notifying the organizer.

Arguments

body required
object
confirm
boolean 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.
eventId required
string Value for the 'eventId' path segment. Pass it under the name 'eventId', not as 'id'. Use the 'id' field of the event object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
add-calendar-event-attachment Use this API to add an attachment to an existing event. This operation limits the size of the attachment you can add to under 3 MB. If an organizer adds an attachment to a meeting event, the organizer can subsequently update the event to send the attachment and update the event for each attendee as well. 💡 TIP: Under 3MB only. Body requires @odata.type: {"@odata.type": "#microsoft.graph.fileAttachment", "name": "file.pdf", "contentBytes": "<base64>"}. At 3MB and above use create-calendar-event-attachment-upload-session.

Arguments

body required
object
confirm
boolean 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.
eventId required
string Value for the 'eventId' path segment. Pass it under the name 'eventId', not as 'id'. Use the 'id' field of the event object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
add-excel-table-rows Add Excel table rows. 💡 TIP: Adds rows to a table. Body: { values: [['col1val', 'col2val', 'col3val'], ['row2col1', 'row2col2', 'row2col3']] }. Each inner array is one row. Values must match the number of columns in the table.

Arguments

body required
object
confirm
boolean 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.
driveId required
string Value for the 'driveId' path segment. Pass it under the name 'driveId', not as 'id'. Use the 'id' field of the drive object as returned by Microsoft Graph.
driveItemId required
string Value for the 'driveItemId' path segment. Pass it under the name 'driveItemId', not as 'id'. Use the 'id' field of the drive item object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
workbookTableId required
string Value for the 'workbookTableId' path segment. Pass it under the name 'workbookTableId', not as 'id'. Use the 'id' field of the workbook table object as returned by Microsoft Graph.
add-group-member Add a member to a security or Microsoft 365 group. When using the API to add multiple members in one request, you can add up to only 20 members. The following table shows the types of members that can be added to either security groups or Microsoft 365 groups. 💡 TIP: Adds a member to a group. Body: { '@odata.id': 'https://graph.microsoft.com/v1.0/directoryObjects/{user-id}' }. Use list-users to find the user ID first. The user must not already be a member.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
groupId required
string Value for the 'groupId' path segment. Pass it under the name 'groupId', not as 'id'. Use the 'id' field of the group object as returned by Microsoft Graph.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
add-group-owner Add a user or service principal to a Microsoft 365 or security group's owners. The owners are a set of users or service principals who are allowed to modify the group object. 💡 TIP: Adds an owner to a group. Body: { '@odata.id': 'https://graph.microsoft.com/v1.0/users/{user-id}' }. Use list-users to find the user ID. A group can have a maximum of 100 owners.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
groupId required
string Value for the 'groupId' path segment. Pass it under the name 'groupId', not as 'id'. Use the 'id' field of the group object as returned by Microsoft Graph.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
add-mail-attachment Use this API to create a new Attachment. An attachment can be one of the following types: All these types of attachment resources are derived from the attachment resource. 💡 TIP: The only path for attachments under 3MB. contentBytes must carry the complete base64 verbatim; a truncated argument fails with 400 UnableToDeserializePostBody. At 3MB and above use create-mail-attachment-upload-session, which rejects anything smaller. Body requires @odata.type: {"@odata.type": "#microsoft.graph.fileAttachment", "name": "file.pdf", "contentBytes": "<base64>"}.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
messageId required
string Value for the 'messageId' path segment. Pass it under the name 'messageId', not as 'id'. Use the 'id' field of the message object as returned by Microsoft Graph.
add-shared-mailbox-attachment Add an attachment under 3MB to a draft message in another user's mailbox or a shared mailbox. The user-id is the mailbox owner's ID or email address, and delegated access to that mailbox is required. 💡 TIP: Body requires @odata.type: {"@odata.type": "#microsoft.graph.fileAttachment", "name": "file.pdf", "contentBytes": "<base64>"}. Graph has no working path for 3MB and above here: upload sessions return 403 in a shared or delegated mailbox.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
messageId required
string Value for the 'messageId' path segment. Pass it under the name 'messageId', not as 'id'. Use the 'id' field of the message object as returned by Microsoft Graph.
userId required
string Value for the 'userId' path segment. Pass it under the name 'userId', not as 'id'. Use the 'id' field of the user object as returned by Microsoft Graph.
add-team-member Add a new conversationMember to a team.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
teamId required
string Value for the 'teamId' path segment. Pass it under the name 'teamId', not as 'id'. Use the 'id' field of the team object as returned by Microsoft Graph.
cancel-calendar-event This action allows the organizer of a meeting to send a cancellation message and cancel the event. The action moves the event to the Deleted Items folder. The organizer can also cancel an occurrence of a recurring meeting by providing the occurrence event ID. An attendee calling this action gets an error (HTTP 400 Bad Request), with the following error message: 'Your request can't be completed. You need to be an organizer to cancel a meeting.' This action differs from Delete in that Cancel is available to only the organizer, and lets the organizer send a custom message to the attendees about the cancellation. 💡 TIP: Cancels a meeting (organizer only) and sends a cancellation message to all attendees. Body: { Comment (optional string, custom message) }. Use this instead of delete-calendar-event when you want attendees to see 'Canceled' in their calendar. Attendees calling this get HTTP 400 — they should use decline-calendar-event instead.

Arguments

body required
object
confirm
boolean 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.
eventId required
string Value for the 'eventId' path segment. Pass it under the name 'eventId', not as 'id'. Use the 'id' field of the event object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
clear-excel-range Clear an Excel range. 💡 TIP: Clear cell contents and/or formatting on the given range. Body: { applyTo: 'All' | 'Formats' | 'Contents' }. 'Contents' wipes values but keeps formatting; 'Formats' resets styling but keeps values; 'All' wipes both. Use this to reset a worksheet section before a fresh write rather than overwriting cell-by-cell.

Arguments

address required
string Value for the 'address' path segment.
body required
object
confirm
boolean 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.
driveId required
string Value for the 'driveId' path segment. Pass it under the name 'driveId', not as 'id'. Use the 'id' field of the drive object as returned by Microsoft Graph.
driveItemId required
string Value for the 'driveItemId' path segment. Pass it under the name 'driveItemId', not as 'id'. Use the 'id' field of the drive item object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
workbookWorksheetId required
string Value for the 'workbookWorksheetId' path segment. Pass it under the name 'workbookWorksheetId', not as 'id'. Use the 'id' field of the workbook worksheet object as returned by Microsoft Graph.
clear-my-presence Clear the application's presence session for a user. If it is the user's only presence session, the user's presence will change to Offline/Offline. For details about presences sessions, see presence: setPresence. 💡 TIP: Ends the application's presence session for the current user. Body: { sessionId } — must match the sessionId used in set-my-presence. If this was the user's only presence session, their status returns to Offline.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
clear-my-user-preferred-presence Clear the preferred availability and activity status for a user. 💡 TIP: Clears any preferred (sticky) presence override set via set-my-user-preferred-presence. The user's visible status returns to their actual activity. Body: {} (an empty JSON object — required, not 'no body').

Arguments

confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
copilot-retrieve Search Microsoft 365 content using the Copilot Retrieval API. Grounds a natural-language query against the hybrid index behind Microsoft 365 Copilot and returns permission-trimmed text extracts with their source URLs. 💡 TIP: Retrieval here is semantic/hybrid, unlike search-query/search-onedrive-files/search-sharepoint-sites, which are lexical KQL. Prefer this for paraphrase/intent queries (e.g. resolving an informal project nickname, or matching 'packaging requirements' against text that never uses that phrase). Pass the request fields nested under a 'body' object: { queryString, dataSource, filterExpression?, resourceMetadata?, maximumNumberOfResults? }. Returns { retrievalHits: [{ webUrl, extracts: [{ text, relevanceScore }], resourceType, resourceMetadata, sensitivityLabel? }] }. Work/school accounts only (personal accounts are not supported). dataSource 'sharePoint'/'oneDriveBusiness' need delegated Files.Read.All + Sites.Read.All (requested by default); dataSource 'externalItem' (Copilot connectors) needs ExternalItem.Read.All, which is not requested by default - add it with --extra-scopes ExternalItem.Read.All.

Arguments

body required
object
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
copy-drive-item Copy a drive item. 💡 TIP: Asynchronously copy a file or folder to a new location and/or name. Body: { parentReference: { driveId: '...', id: '...' }, name?: 'New Name.xlsx' }. Returns 202 Accepted with a Location header pointing at a monitor URL for the async job. Ideal for duplicating templates (e.g. clone an Armhr Census Template per prospect), bulk file provisioning, or preserving an immutable snapshot of a working file.

Arguments

body required
object
confirm
boolean 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.
driveId required
string Value for the 'driveId' path segment. Pass it under the name 'driveId', not as 'id'. Use the 'id' field of the drive object as returned by Microsoft Graph.
driveItemId required
string Value for the 'driveItemId' path segment. Pass it under the name 'driveItemId', not as 'id'. Use the 'id' field of the drive item object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
copy-mail-message Copy a message to a folder within the user's mailbox. 💡 TIP: Copies a message to another mail folder. Body: { DestinationId: '<mailFolder-id or well-known name like inbox, archive, junkemail>' }. Returns the newly created message (with a new id) in the destination folder. For moving instead of copying, use move-mail-message.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
messageId required
string Value for the 'messageId' path segment. Pass it under the name 'messageId', not as 'id'. Use the 'id' field of the message object as returned by Microsoft Graph.
create-calendar Create a new calendar for a user. 💡 TIP: Creates a new personal calendar. Body: { name: 'My Calendar', color: 'auto' }. Available colors: auto, lightBlue, lightGreen, lightOrange, lightGray, lightYellow, lightTeal, lightPink, lightBrown, lightRed, maxColor.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
create-calendar-event Create (schedule) a new calendar event — a meeting or appointment — on the user's calendar. Times use nested objects, not flat fields: start: {dateTime, timeZone}, end: {dateTime, timeZone}. Do NOT use startDateTime/startTimeZone. For one-off events, UTC is simplest (e.g. 3:30 PM AEDT = 04:30 UTC). For recurring events, use the organizer's own time zone name instead — Graph resolves DST against the zone in start.timeZone, so UTC drifts after DST changes. Get the zone from get-mailbox-settings, or validate one with list-supported-time-zones instead of guessing from memory. Set subject, location, body, and attendees; supports online meetings and recurrence. 💡 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.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
create-calendar-event-attachment-upload-session Create an upload session that allows an app to iteratively upload ranges of a file, so as to attach the file to the specified Outlook item. The item can be a message or event. Use this approach to attach a file if the file size is between 3 MB and 150 MB. To attach a file that's smaller than 3 MB, do a POST operation on the attachments navigation property of the Outlook item; see how to do this for a message or for an event. As part of the response, this action returns an upload URL that you can use in subsequent sequential PUT queries. Request headers for each PUT operation let you specify the exact range of bytes to be uploaded. This allows transfer to be resumed, in case the network connection is dropped during upload. The following are the steps to attach a file to an Outlook item using an upload session: See attach large files to Outlook messages or events for an example. 💡 TIP: For attachments 3MB to 150MB; under 3MB use add-calendar-event-attachment. Body: { AttachmentItem: { attachmentType: 'file', name: 'report.pdf', size: 5000000 } }. Returns a pre-authenticated uploadUrl; the caller PUTs the bytes there itself in ranges up to 4MB.

Arguments

body required
object
confirm
boolean 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.
eventId required
string Value for the 'eventId' path segment. Pass it under the name 'eventId', not as 'id'. Use the 'id' field of the event object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
create-chat Create a new chat object. 💡 TIP: Creates a new 1:1 or group Teams chat. Body: { chatType ('oneOnOne' or 'group'), topic (optional, group only), members: [{ '@odata.type': '#microsoft.graph.aadUserConversationMember', roles: ['owner' | 'guest'], '[email protected]': 'https://graph.microsoft.com/v1.0/users({id})' }] }. A oneOnOne chat requires exactly 2 members (self + other), both with role 'owner'. For group chats, include all participants. The signed-in user must be one of the members. Returns the created chat with its id — use that id with send-chat-message, list-chat-members, etc.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
create-contact-child-folder Create a new contactFolder as a child of a specified folder. You can also create a new contactFolder under the user's default contact folder. 💡 TIP: Creates a sub-folder under an existing contact folder. Body: { displayName: 'Sub-folder name' }. Use list-contact-folders to discover the parent id. The returned contactFolder has its own id usable with update-contact-folder, delete-contact-folder, list-contact-folder-contacts, and create-contact-in-folder — contactFolder ids are mailbox-unique regardless of nesting depth.

Arguments

body required
object
confirm
boolean 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.
contactFolderId required
string Value for the 'contactFolderId' path segment. Pass it under the name 'contactFolderId', not as 'id'. Use the 'id' field of the contact folder object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
create-contact-folder Create a new contactFolder under the user's default contacts folder. You can also create a new contactfolder as a child of any specified contact folder. 💡 TIP: Creates a new contact folder under the user's mailbox root. Body: { displayName: 'Family' }. Returns the created contactFolder with its id. To create a sub-folder under an existing folder, use create-contact-child-folder.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
create-contact-in-folder Add a contact to the root Contacts folder or to the contacts endpoint of another contact folder. 💡 TIP: Creates a contact inside a specific folder (instead of the default Contacts folder). Body is a contact resource: { givenName, surname, displayName, emailAddresses: [{ address, name }], businessPhones: [], mobilePhone, jobTitle, companyName, ... }. The existing create-outlook-contact (POST /me/contacts) writes to the default folder only; use this when organizing contacts into named folders. Get the folder id via list-contact-folders.

Arguments

body required
object
confirm
boolean 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.
contactFolderId required
string Value for the 'contactFolderId' path segment. Pass it under the name 'contactFolderId', not as 'id'. Use the 'id' field of the contact folder object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
create-custom-emoji [beta] Create a new custom emoji in the teamwork messaging of the organization, which adds the custom emoji to Teams for the tenant. The emoji image is provided as base64-encoded content bytes. 💡 TIP: Uploads a custom Teams emoji for the organization using body: { displayName, contentBytes }. Only PNG and GIF are supported; pass the complete image file as base64. Confirm the exact name and image with the user before creating it. Returns the created emoji, including its image bytes; use excludeResponse=true when only success/failure is needed. Work/school accounts only. Microsoft Graph beta API: subject to change.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
create-draft-email Create a draft Outlook email message in the signed-in user's Drafts folder. Set subject, body, toRecipients, ccRecipients, and importance. The draft is saved, not sent — use send-mail to send a message directly, or send the draft afterwards.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
create-drive-item-preview Create a drive item preview. 💡 TIP: Generate a short-lived embeddable preview URL for a file (Office docs, PDFs, images). Body: { page?: number | string, zoom?: number, viewer?: 'onedrive' | 'office' }. Returns getUrl (interactive) and postUrl (form-post). Useful for surfacing inline previews in summary emails or chat messages without needing the recipient to open the file.

Arguments

body required
object
confirm
boolean 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.
driveId required
string Value for the 'driveId' path segment. Pass it under the name 'driveId', not as 'id'. Use the 'id' field of the drive object as returned by Microsoft Graph.
driveItemId required
string Value for the 'driveItemId' path segment. Pass it under the name 'driveItemId', not as 'id'. Use the 'id' field of the drive item object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
create-drive-item-share-link Create a link to share a driveItem driveItem. The createLink action creates a new sharing link if the specified link type doesn't already exist for the calling application. If a sharing link of the specified type already exists for the app, the existing sharing link is returned. DriveItem resources inherit sharing permissions from their ancestors. 💡 TIP: Create a shareable link for a file or folder WITHOUT sending an email invitation. Body: { type: 'view' | 'edit' | 'embed', scope: 'anonymous' | 'organization' | 'users', password?: string, expirationDateTime?: ISO-8601, retainInheritedPermissions?: boolean }. Returns a permission with link.webUrl. Pair with share-drive-item when you want to grant explicit access; use this when you only need a URL to paste into a doc/email/chat without triggering OneDrive notifications.

Arguments

body required
object
confirm
boolean 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.
driveId required
string Value for the 'driveId' path segment. Pass it under the name 'driveId', not as 'id'. Use the 'id' field of the drive object as returned by Microsoft Graph.
driveItemId required
string Value for the 'driveItemId' path segment. Pass it under the name 'driveItemId', not as 'id'. Use the 'id' field of the drive item object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
create-excel-chart Creates a new chart.

Arguments

body required
object
confirm
boolean 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.
driveId required
string Value for the 'driveId' path segment. Pass it under the name 'driveId', not as 'id'. Use the 'id' field of the drive object as returned by Microsoft Graph.
driveItemId required
string Value for the 'driveItemId' path segment. Pass it under the name 'driveItemId', not as 'id'. Use the 'id' field of the drive item object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
workbookWorksheetId required
string Value for the 'workbookWorksheetId' path segment. Pass it under the name 'workbookWorksheetId', not as 'id'. Use the 'id' field of the workbook worksheet object as returned by Microsoft Graph.
create-excel-table Create a new table. The range source address determines the worksheet under which the table will be added. If the table can't be added (for example, because the address is invalid, or the table would overlap with another table), an error is generated. 💡 TIP: Convert a worksheet range into a formal Excel table. Body: { address: 'A1:H171', hasHeaders: true }. Required before using add-excel-table-rows / update-excel-table-row / delete-excel-table-row on a plain-cells sheet.

Arguments

body required
object
confirm
boolean 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.
driveId required
string Value for the 'driveId' path segment. Pass it under the name 'driveId', not as 'id'. Use the 'id' field of the drive object as returned by Microsoft Graph.
driveItemId required
string Value for the 'driveItemId' path segment. Pass it under the name 'driveItemId', not as 'id'. Use the 'id' field of the drive item object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
workbookWorksheetId required
string Value for the 'workbookWorksheetId' path segment. Pass it under the name 'workbookWorksheetId', not as 'id'. Use the 'id' field of the workbook worksheet object as returned by Microsoft Graph.
create-focused-inbox-override Create an override for a sender identified by an SMTP address. Future messages from that SMTP address will be consistently classified as specified in the override. Note 💡 TIP: Creates a Focused Inbox override for a sender. Body: { classifyAs: 'focused', senderEmailAddress: { name: 'Display Name', address: '[email protected]' } }. classifyAs must be 'focused' or 'other'. If an override already exists for that SMTP address, POST updates the existing override's name and classifyAs (use this to rename a sender). Resolve the sender's address with list-users or by reading a recent mail header — do not invent SMTP addresses.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
create-forward-draft Create a forward draft. 💡 TIP: Create a forward draft (does not send). Useful when user wants to review before sending.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
messageId required
string Value for the 'messageId' path segment. Pass it under the name 'messageId', not as 'id'. Use the 'id' field of the message object as returned by Microsoft Graph.
create-group Create a new group as specified in the request body. You can create the following types of groups: This operation returns by default only a subset of the properties for each group. These default properties are noted in the Properties section. To get properties that are not returned by default, do a GET operation and specify the properties in a $select OData query option. 💡 TIP: Creates a new group. Required body: { displayName, mailEnabled (bool), mailNickname (no spaces), securityEnabled (bool) }. For Microsoft 365 group: mailEnabled=true, securityEnabled=false, groupTypes=['Unified']. For security group: mailEnabled=false, securityEnabled=true, groupTypes=[]. Optional: description, visibility ('Public' or 'Private'), [email protected] and [email protected] arrays with user directoryObject URLs.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
create-mail-attachment-upload-session Create an upload session that allows an app to iteratively upload ranges of a file, so as to attach the file to the specified Outlook item. The item can be a message or event. Use this approach to attach a file if the file size is between 3 MB and 150 MB. To attach a file that's smaller than 3 MB, do a POST operation on the attachments navigation property of the Outlook item; see how to do this for a message or for an event. As part of the response, this action returns an upload URL that you can use in subsequent sequential PUT queries. Request headers for each PUT operation let you specify the exact range of bytes to be uploaded. This allows transfer to be resumed, in case the network connection is dropped during upload. The following are the steps to attach a file to an Outlook item using an upload session: See attach large files to Outlook messages or events for an example. 💡 TIP: For attachments 3MB to 150MB. Graph rejects smaller files with ErrorAttachmentSizeShouldNotBeLessThanMinimumSize, so under 3MB use add-mail-attachment instead. Body: { AttachmentItem: { attachmentType: 'file', name: 'report.pdf', size: 5000000 } }. Returns a pre-authenticated uploadUrl; the caller PUTs the bytes there itself in ranges up to 4MB. This server does not perform the PUT.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
messageId required
string Value for the 'messageId' path segment. Pass it under the name 'messageId', not as 'id'. Use the 'id' field of the message object as returned by Microsoft Graph.
create-mail-child-folder Use this API to create a new child mailFolder. If you intend a new folder to be hidden, you must set the isHidden property to true on creation. 💡 TIP: Creates a subfolder inside an existing mail folder. Use list-mail-folders or list-mail-child-folders to find the parent folder ID.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
mailFolderId required
string Value for the 'mailFolderId' path segment. Pass it under the name 'mailFolderId', not as 'id'. Use the 'id' field of the mail folder object as returned by Microsoft Graph.
create-mail-folder Use this API to create a new mail folder in the root folder of the user's mailbox. If you intend a new folder to be hidden, you must set the isHidden property to true on creation. 💡 TIP: Creates a top-level mail folder. Use create-mail-child-folder to create a subfolder inside an existing folder. Use list-mail-folders to find existing folder IDs.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
create-mail-rule Create a messageRule object by specifying a set of conditions and actions. Outlook carries out those actions if an incoming message in the user's Inbox meets the specified conditions. 💡 TIP: Creates a message rule for a mail folder. Use the Inbox folder ID (get it from list-mail-folders) for inbox rules. Body: { displayName: 'Rule name', sequence: 1, isEnabled: true, conditions: { fromAddresses: [{ emailAddress: { address: '[email protected]' } }] }, actions: { moveToFolder: 'folder-id' } }. Actions: moveToFolder, copyToFolder, forwardTo, forwardAsAttachmentTo, delete, markAsRead, markImportance, stopProcessingRules.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
mailFolderId required
string Value for the 'mailFolderId' path segment. Pass it under the name 'mailFolderId', not as 'id'. Use the 'id' field of the mail folder object as returned by Microsoft Graph.
create-my-calendar-permission Create a calendarPermission resource to specify the identity and role of the user with whom the specified calendar is being shared or delegated. 💡 TIP: Shares the user's primary calendar with another user (or sets up a delegate). Body: { emailAddress: { name: 'Adele Vance', address: '[email protected]' }, role: 'read' | 'write' | 'delegateWithoutPrivateEventAccess' | 'delegateWithPrivateEventAccess', isInsideOrganization: true, isRemovable: true }. Use list-users to resolve the recipient SMTP. Returns the created calendarPermission with its id (used by update-my-calendar-permission and delete-my-calendar-permission).

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
create-onedrive-folder Create a OneDrive folder. 💡 TIP: Creates a new folder inside the specified drive item. Body must include name (string) and folder ({}) fields. Use @microsoft.graph.conflictBehavior to control behavior on name conflict: 'rename' (default), 'replace', or 'fail'.

Arguments

body required
object
confirm
boolean 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.
driveId required
string Value for the 'driveId' path segment. Pass it under the name 'driveId', not as 'id'. Use the 'id' field of the drive object as returned by Microsoft Graph.
driveItemId required
string Value for the 'driveItemId' path segment. Pass it under the name 'driveItemId', not as 'id'. Use the 'id' field of the drive item object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
create-onenote-notebook Create a new OneNote notebook. 💡 TIP: Creates a new OneNote notebook. Body: { displayName: 'Notebook Name' }. The name must be unique across the user's notebooks.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
create-onenote-page Create a new OneNote page in the default section of the default notebook. To create a page in a different section in the default notebook, you can use the sectionName query parameter. Example: ../onenote/pages?sectionName=My%20section The POST /onenote/pages operation is used only to create pages in the current user's default notebook. If you're targeting other notebooks, you can create pages in a specified section. 💡 TIP: Body must be a full HTML document (with <html><head><title>...</title></head><body>...</body></html>). Partial HTML or plain text fails silently or creates malformed pages.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
create-onenote-section Create a new onenoteSection in the specified notebook. 💡 TIP: Creates a new section in a notebook. Body: { displayName: 'Section Name' }.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
notebookId required
string Value for the 'notebookId' path segment. Pass it under the name 'notebookId', not as 'id'. Use the 'id' field of the notebook object as returned by Microsoft Graph.
create-onenote-section-page Create a new page in the specified section. 💡 TIP: Body must be a full HTML document (with <html><head><title>...</title></head><body>...</body></html>). Partial HTML fails silently.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
onenoteSectionId required
string Value for the 'onenoteSectionId' path segment. Pass it under the name 'onenoteSectionId', not as 'id'. Use the 'id' field of the onenote section object as returned by Microsoft Graph.
create-online-meeting Create an online meeting on behalf of a user. 💡 TIP: Creates a new online meeting. Required body: { subject, endDateTime }. startDateTime is not documented as required, but is commonly supplied. Optional: participants (with organizer and attendees), lobbyBypassSettings, isEntryExitAnnounced, allowedPresenters (everyone/organization/roleIsPresenter/organizer). Returns the created meeting with joinWebUrl and meeting ID.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
create-outlook-category Create an outlookCategory object in the user's master list of categories. 💡 TIP: Creates a new Outlook category. Body: { displayName (unique), color (one of: none, preset0 … preset24 — maps to red, orange, yellow, green, teal, olive, blue, purple, cranberry, steel, dark-steel, gray, dark-gray, black, dark-red, dark-orange, dark-yellow, dark-green, dark-teal, dark-olive, dark-blue, dark-purple, dark-cranberry) }. Category names are case-sensitive when applied to messages/events.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
create-outlook-contact Add a contact to the root Contacts folder or to the contacts endpoint of another contact folder.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
create-planner-bucket Create a new plannerBucket object.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
create-planner-task Create a new plannerTask.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
create-planner-task-message [beta] Create a new plannerTaskChatMessage on a plannerTask. 💡 TIP: Posts a message to a Planner task's chat (the modern 'task chat', not the legacy conversationThreadId comment). Microsoft is retiring the classic task comments experience and hiding it from the task (Planner 2026 update), so task chat is the current supported way to post per-task updates teammates will see, with @mentions. Body: { content: 'plain text or sanitized HTML', mentions?: [{ mentioned: 'user-id', position: 0, mentionType: 'user' }] } (mentions optional). No ETag/If-Match required. BETA Graph API: subject to change; delegated work/school accounts only — no application permissions, no personal Microsoft accounts, global cloud only (not GCC/DoD/21Vianet).

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
plannerTaskId required
string Value for the 'plannerTaskId' path segment. Pass it under the name 'plannerTaskId', not as 'id'. Use the 'id' field of the planner task object as returned by Microsoft Graph.
create-reply-all-draft Create a draft to reply to the sender and all recipients of a message in either JSON or MIME format. When using JSON format: - Specify either a comment or the body property of the message parameter. Specifying both will return an HTTP 400 Bad Request error. - If the original message specifies a recipient in the replyTo property, per Internet Message Format (RFC 2822), you should send the reply to the recipients in the replyTo and toRecipients properties, and not the recipients in the from and toRecipients properties. - You can update the draft later to add reply content to the body or change other message properties. When using MIME format: - Provide the applicable Internet message headers and the MIME content, all encoded in base64 format in the request body. - Add any attachments and S/MIME properties to the MIME content. Send the draft message in a subsequent operation. Alternatively, reply-all to a message in a single action. 💡 TIP: For HTML replies pass Message.body.contentType: 'html' with Message.body.content as HTML. Note: supplying Message.body replaces the whole draft body, so the original quoted history is not included. Specifying both 'comment' and Message.body returns 400. Signatures are added by the Outlook client only, not via Graph.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
messageId required
string Value for the 'messageId' path segment. Pass it under the name 'messageId', not as 'id'. Use the 'id' field of the message object as returned by Microsoft Graph.
create-reply-draft Create a draft to reply to the sender of a message in either JSON or MIME format. When using JSON format: - Specify either a comment or the body property of the message parameter. Specifying both will return an HTTP 400 Bad Request error. - If replyTo is specified in the original message, per Internet Message Format (RFC 2822), you should send the reply to the recipients in replyTo, and not the recipients in from. - You can update the draft later to add reply content to the body or change other message properties. When using MIME format: - Provide the applicable Internet message headers and the MIME content, all encoded in base64 format in the request body. - Add any attachments and S/MIME properties to the MIME content. Send the draft message in a subsequent operation. Alternatively, reply to a message in a single operation. 💡 TIP: For HTML replies pass Message.body.contentType: 'html' with Message.body.content as HTML. Note: supplying Message.body replaces the whole draft body, so the original quoted history is not included. Specifying both 'comment' and Message.body returns 400. Signatures are added by the Outlook client only, not via Graph.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
messageId required
string Value for the 'messageId' path segment. Pass it under the name 'messageId', not as 'id'. Use the 'id' field of the message object as returned by Microsoft Graph.
create-shared-mailbox-child-folder Create a subfolder inside a mail folder in another user's mailbox or a shared mailbox. The user-id is the mailbox owner's ID or email address, and delegated access to that mailbox is required.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
mailFolderId required
string Value for the 'mailFolderId' path segment. Pass it under the name 'mailFolderId', not as 'id'. Use the 'id' field of the mail folder object as returned by Microsoft Graph.
userId required
string Value for the 'userId' path segment. Pass it under the name 'userId', not as 'id'. Use the 'id' field of the user object as returned by Microsoft Graph.
create-shared-mailbox-draft Create a shared mailbox draft.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
userId required
string Value for the 'userId' path segment. Pass it under the name 'userId', not as 'id'. Use the 'id' field of the user object as returned by Microsoft Graph.
create-shared-mailbox-folder Create a top-level mail folder in another user's mailbox or a shared mailbox. The user-id is the mailbox owner's ID or email address, and delegated access to that mailbox is required.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
userId required
string Value for the 'userId' path segment. Pass it under the name 'userId', not as 'id'. Use the 'id' field of the user object as returned by Microsoft Graph.
create-shared-mailbox-forward-draft Create a shared mailbox forward draft. 💡 TIP: Create a forward draft in a shared mailbox without sending. The 'user-id' is the shared mailbox email address. Does not send — use send-shared-mailbox-draft to send afterwards. Useful when the user wants to review before the forward goes out. Requires delegated access to the shared mailbox.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
messageId required
string Value for the 'messageId' path segment. Pass it under the name 'messageId', not as 'id'. Use the 'id' field of the message object as returned by Microsoft Graph.
userId required
string Value for the 'userId' path segment. Pass it under the name 'userId', not as 'id'. Use the 'id' field of the user object as returned by Microsoft Graph.
create-shared-mailbox-reply-all-draft Create a draft to reply to the sender and all recipients of a message in either JSON or MIME format. When using JSON format: - Specify either a comment or the body property of the message parameter. Specifying both will return an HTTP 400 Bad Request error. - If the original message specifies a recipient in the replyTo property, per Internet Message Format (RFC 2822), you should send the reply to the recipients in the replyTo and toRecipients properties, and not the recipients in the from and toRecipients properties. - You can update the draft later to add reply content to the body or change other message properties. When using MIME format: - Provide the applicable Internet message headers and the MIME content, all encoded in base64 format in the request body. - Add any attachments and S/MIME properties to the MIME content. Send the draft message in a subsequent operation. Alternatively, reply-all to a message in a single action. 💡 TIP: Create a reply-all draft in a shared mailbox preserving thread metadata (conversationId, In-Reply-To, References). The 'user-id' is the shared mailbox email address. Does not send — use send-shared-mailbox-draft to send afterwards. For HTML replies pass Message.body.contentType: 'html' with Message.body.content as HTML. Specifying both 'comment' and Message.body returns 400. Requires delegated access to the shared mailbox.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
messageId required
string Value for the 'messageId' path segment. Pass it under the name 'messageId', not as 'id'. Use the 'id' field of the message object as returned by Microsoft Graph.
userId required
string Value for the 'userId' path segment. Pass it under the name 'userId', not as 'id'. Use the 'id' field of the user object as returned by Microsoft Graph.
create-shared-mailbox-reply-draft Create a draft to reply to the sender of a message in either JSON or MIME format. When using JSON format: - Specify either a comment or the body property of the message parameter. Specifying both will return an HTTP 400 Bad Request error. - If replyTo is specified in the original message, per Internet Message Format (RFC 2822), you should send the reply to the recipients in replyTo, and not the recipients in from. - You can update the draft later to add reply content to the body or change other message properties. When using MIME format: - Provide the applicable Internet message headers and the MIME content, all encoded in base64 format in the request body. - Add any attachments and S/MIME properties to the MIME content. Send the draft message in a subsequent operation. Alternatively, reply to a message in a single operation. 💡 TIP: Create a reply draft in a shared mailbox preserving thread metadata (conversationId, In-Reply-To, References). The 'user-id' is the shared mailbox email address (e.g. [email protected]). Does not send — use send-shared-mailbox-draft to send afterwards. For HTML replies pass Message.body.contentType: 'html' with Message.body.content as HTML. Specifying both 'comment' and Message.body returns 400. Requires delegated access to the shared mailbox.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
messageId required
string Value for the 'messageId' path segment. Pass it under the name 'messageId', not as 'id'. Use the 'id' field of the message object as returned by Microsoft Graph.
userId required
string Value for the 'userId' path segment. Pass it under the name 'userId', not as 'id'. Use the 'id' field of the user object as returned by Microsoft Graph.
create-sharepoint-list Create a new list in a site. 💡 TIP: Creates a new SharePoint list in a site. Body: { displayName: 'My List', description: 'Optional', list: { template: 'genericList' }, columns: [ { name: 'Status', text: {} }, { name: 'Due', dateTime: {} } ] }. Templates include genericList, documentLibrary, tasks, calendar, contacts, links, announcements, survey. Columns can be defined inline at creation; otherwise add them later via create-sharepoint-list-column. Use search-sharepoint-sites or get-sharepoint-site-by-path to find the site ID first.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
siteId required
string Value for the 'siteId' path segment. Pass it under the name 'siteId', not as 'id'. Use the 'id' field of the site object as returned by Microsoft Graph.
create-sharepoint-list-column Create a column for a list with a request that specifies a columnDefinition. 💡 TIP: Creates a new column on a SharePoint list. Body must include name and exactly one column type property: { name: 'Priority', text: {} } or { name: 'DueDate', dateTime: { format: 'dateOnly' } } or { name: 'Status', choice: { choices: ['Open','In Progress','Done'] } }. Other types: number, boolean, currency, hyperlinkOrPicture, personOrGroup, lookup, calculated. Optional: displayName, description, required, indexed, enforceUniqueValues.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
listId required
string Value for the 'listId' path segment. Pass it under the name 'listId', not as 'id'. Use the 'id' field of the list object as returned by Microsoft Graph.
siteId required
string Value for the 'siteId' path segment. Pass it under the name 'siteId', not as 'id'. Use the 'id' field of the site object as returned by Microsoft Graph.
create-sharepoint-list-item Create a new listItem in a list. 💡 TIP: Creates a new item in a SharePoint list. Body: { fields: { Title: 'Item name', ColumnName: 'value', ... } }. Use list-sharepoint-site-lists to find the list ID and get-sharepoint-site-list to discover available columns.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
listId required
string Value for the 'listId' path segment. Pass it under the name 'listId', not as 'id'. Use the 'id' field of the list object as returned by Microsoft Graph.
siteId required
string Value for the 'siteId' path segment. Pass it under the name 'siteId', not as 'id'. Use the 'id' field of the site object as returned by Microsoft Graph.
create-sharepoint-site-onenote-notebook Create a SharePoint site OneNote notebook.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
siteId required
string Value for the 'siteId' path segment. Pass it under the name 'siteId', not as 'id'. Use the 'id' field of the site object as returned by Microsoft Graph.
create-sharepoint-site-onenote-section Create a SharePoint site OneNote section.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
notebookId required
string Value for the 'notebookId' path segment. Pass it under the name 'notebookId', not as 'id'. Use the 'id' field of the notebook object as returned by Microsoft Graph.
siteId required
string Value for the 'siteId' path segment. Pass it under the name 'siteId', not as 'id'. Use the 'id' field of the site object as returned by Microsoft Graph.
create-sharepoint-site-onenote-section-group-section Create a SharePoint site OneNote section group section.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
sectionGroupId required
string Value for the 'sectionGroupId' path segment. Pass it under the name 'sectionGroupId', not as 'id'. Use the 'id' field of the section group object as returned by Microsoft Graph.
siteId required
string Value for the 'siteId' path segment. Pass it under the name 'siteId', not as 'id'. Use the 'id' field of the site object as returned by Microsoft Graph.
create-sharepoint-site-onenote-section-page Create a SharePoint site OneNote section page. 💡 TIP: Body must be a full HTML document (with <html><head><title>...</title></head><body>...</body></html>). Partial HTML fails silently.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
onenoteSectionId required
string Value for the 'onenoteSectionId' path segment. Pass it under the name 'onenoteSectionId', not as 'id'. Use the 'id' field of the onenote section object as returned by Microsoft Graph.
siteId required
string Value for the 'siteId' path segment. Pass it under the name 'siteId', not as 'id'. Use the 'id' field of the site object as returned by Microsoft Graph.
create-specific-calendar-event Create a calendar event on a specific calendar. Requires calendarId (the target calendar's ID). Times use nested {dateTime, timeZone} objects — do NOT use startDateTime/startTimeZone. UTC is simplest for one-off events; for recurring events use the organizer's own time zone (from get-mailbox-settings or list-supported-time-zones) instead of UTC, since Graph resolves DST against that zone. 💡 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.

Arguments

body required
object
calendarId required
string Value 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.
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
create-subscription Subscribes a listener application to receive change notifications when the requested type of changes occur to the specified resource in Microsoft Graph. To identify the resources for which you can create subscriptions and the limitations on subscriptions, see Set up notifications for changes in resource data: Supported resources. Some resources support rich notifications, that is, notifications that include resource data. For more information about these resources, see Set up change notifications that include resource data: Supported resources. 💡 TIP: Creates a webhook subscription for change notifications. Required body: { changeType (comma-separated: 'created,updated,deleted'), notificationUrl (HTTPS, must validate with token echo), resource (e.g. '/me/mailFolders/inbox/messages', '/users/{id}/events', '/teams/{id}/channels/{id}/messages'), expirationDateTime (ISO 8601, max varies by resource type — 1 hour for calls, 24h for messages, 3 days for mail), clientState (opaque string returned in notifications, for validation) }. Optional: includeResourceData (true enables rich notifications, requires encryptionCertificate + encryptionCertificateId). No dedicated scope — caller must have a read permission for the target resource (e.g. Mail.Read, Calendars.Read, ChannelMessage.Read.All, Files.Read.All).

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
create-team-channel Create a new channel in a team, as specified in the request body. When you create a channel, the maximum length of the channel's displayName is 50 characters. This is the name that appears to the user in Microsoft Teams. If you're creating a private channel, you can add a maximum of 200 members.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
teamId required
string Value for the 'teamId' path segment. Pass it under the name 'teamId', not as 'id'. Use the 'id' field of the team object as returned by Microsoft Graph.
create-todo-checklist-item Create a new checklistItem object. 💡 TIP: Adds a step (checklist item) to an existing To Do task. Body: { displayName: "..." }; optional isChecked (defaults to false). Returns the new item with its id. To add steps while creating a task, pass checklistItems in the create-todo-task body instead.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
todoTaskId required
string Value for the 'todoTaskId' path segment. Pass it under the name 'todoTaskId', not as 'id'. Use the 'id' field of the todo task object as returned by Microsoft Graph.
todoTaskListId required
string Value for the 'todoTaskListId' path segment. Pass it under the name 'todoTaskListId', not as 'id'. Use the 'id' field of the todo task list object as returned by Microsoft Graph.
create-todo-linked-resource Create a linkedResource object to associate a specified task with an item in a partner application. For example, you can associate a task with an email item in Outlook that spurred the task, and you can create a linkedResource object to track its association. You can also create a linkedResource object while creating a task. 💡 TIP: Links a resource to a To Do task. Body: { webUrl: 'https://...', applicationName: 'Mail', displayName: 'Related email', externalId: 'optional-id' }. Use to link tasks to emails, files, or web pages for context.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
todoTaskId required
string Value for the 'todoTaskId' path segment. Pass it under the name 'todoTaskId', not as 'id'. Use the 'id' field of the todo task object as returned by Microsoft Graph.
todoTaskListId required
string Value for the 'todoTaskListId' path segment. Pass it under the name 'todoTaskListId', not as 'id'. Use the 'id' field of the todo task list object as returned by Microsoft Graph.
create-todo-task Create a new task object in a specified todoTaskList. 💡 TIP: Creates a new task in a Microsoft To Do list. Body: { title: "..." }; optional dueDateTime, reminderDateTime, importance, body (notes), recurrence, categories, and checklistItems: [{ displayName: "...", isChecked: false }] to create the task's steps inline (isChecked is optional). Requires todoTaskListId from list-todo-task-lists. To change steps after the task exists, use the *-todo-checklist-item tools.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
todoTaskListId required
string Value for the 'todoTaskListId' path segment. Pass it under the name 'todoTaskListId', not as 'id'. Use the 'id' field of the todo task list object as returned by Microsoft Graph.
create-todo-task-list Create a new lists object. 💡 TIP: Creates a new Microsoft To Do task list (the named buckets shown in the To Do app sidebar). Body: { displayName: 'My new list' }. Returns the created todoTaskList with its id, displayName, isOwner, isShared, and wellknownListName ('none' for user-created lists). The built-in lists ('Tasks', 'Flagged emails') already exist and cannot be re-created. Pair with create-todo-task to populate it.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
create-upload-session Create an upload session. 💡 TIP: For large file uploads (no size limit, and no minimum unlike the Outlook attachment session). Returns a pre-authenticated uploadUrl; the caller PUTs the bytes there itself. This server does not perform the PUT. For new files use path: /items/{parentId}:/{fileName}:/createUploadSession. Body (optional): { item: { '@microsoft.graph.conflictBehavior': 'rename' } }.

Arguments

body required
object
confirm
boolean 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.
driveId required
string Value for the 'driveId' path segment. Pass it under the name 'driveId', not as 'id'. Use the 'id' field of the drive object as returned by Microsoft Graph.
driveItemId required
string Value for the 'driveItemId' path segment. Pass it under the name 'driveItemId', not as 'id'. Use the 'id' field of the drive item object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
decline-calendar-event Decline invitation to the specified event in a user calendar. If the event allows proposals for new times, on declining the event, an invitee can choose to suggest an alternative time by including the proposedNewTime parameter. For more information on how to propose a time, and how to receive and accept a new time proposal, see Propose new meeting times. 💡 TIP: Declines a meeting invitation. Optional body: { sendResponse: true, comment: 'Cannot attend, conflict.' }. The event remains in the calendar as declined unless the user deletes it.

Arguments

body required
object
confirm
boolean 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.
eventId required
string Value for the 'eventId' path segment. Pass it under the name 'eventId', not as 'id'. Use the 'id' field of the event object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
delete-calendar Delete a calendar other than the default calendar. 💡 TIP: Deletes a calendar and all its events. The default calendar cannot be deleted. This action cannot be undone.

Arguments

calendarId required
string Value 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.
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
If-Match
string ETag
includeHeaders
boolean Include response headers (including ETag) in the response metadata
delete-calendar-event Removes the specified event from the containing calendar. If the event is a meeting, deleting the event on the organizer's calendar sends a cancellation message to the meeting attendees. 💡 TIP: Deleting a seriesMaster deletes ALL occurrences of the recurring event. To cancel a single occurrence, delete that specific instance ID from list-calendar-event-instances.

Arguments

confirm
boolean 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.
eventId required
string Value for the 'eventId' path segment. Pass it under the name 'eventId', not as 'id'. Use the 'id' field of the event object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
If-Match
string ETag
includeHeaders
boolean Include response headers (including ETag) in the response metadata
delete-contact-folder Delete contactFolder other than the default contactFolder. 💡 TIP: Deletes a contact folder. The default 'Contacts' folder cannot be deleted — Graph returns an error. The folder (and its contents) typically lands in Deleted Items rather than being permanently removed. Get the folder id via list-contact-folders.

Arguments

confirm
boolean 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.
contactFolderId required
string Value for the 'contactFolderId' path segment. Pass it under the name 'contactFolderId', not as 'id'. Use the 'id' field of the contact folder object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
If-Match
string ETag
includeHeaders
boolean Include response headers (including ETag) in the response metadata
delete-drive-item-permission Delete a drive item permission. 💡 TIP: Removes a specific permission from a file or folder. Only permissions that are not inherited can be deleted. Use list-drive-item-permissions first to find the permission ID.

Arguments

confirm
boolean 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.
driveId required
string Value for the 'driveId' path segment. Pass it under the name 'driveId', not as 'id'. Use the 'id' field of the drive object as returned by Microsoft Graph.
driveItemId required
string Value for the 'driveItemId' path segment. Pass it under the name 'driveItemId', not as 'id'. Use the 'id' field of the drive item object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
If-Match
string ETag
includeHeaders
boolean Include response headers (including ETag) in the response metadata
permissionId required
string Value for the 'permissionId' path segment. Pass it under the name 'permissionId', not as 'id'. Use the 'id' field of the permission object as returned by Microsoft Graph.
delete-excel-range Delete an Excel range. 💡 TIP: Delete cells at the given range, shifting remaining content. Body: { shift: 'Up' } or { shift: 'Left' }. Use 'Up' to delete entire rows.

Arguments

address required
string Value for the 'address' path segment.
body required
object
confirm
boolean 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.
driveId required
string Value for the 'driveId' path segment. Pass it under the name 'driveId', not as 'id'. Use the 'id' field of the drive object as returned by Microsoft Graph.
driveItemId required
string Value for the 'driveItemId' path segment. Pass it under the name 'driveItemId', not as 'id'. Use the 'id' field of the drive item object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
workbookWorksheetId required
string Value for the 'workbookWorksheetId' path segment. Pass it under the name 'workbookWorksheetId', not as 'id'. Use the 'id' field of the workbook worksheet object as returned by Microsoft Graph.
delete-excel-table-row Delete an Excel table row. 💡 TIP: Delete a single row from a formal Excel table by zero-based row index.

Arguments

confirm
boolean 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.
driveId required
string Value for the 'driveId' path segment. Pass it under the name 'driveId', not as 'id'. Use the 'id' field of the drive object as returned by Microsoft Graph.
driveItemId required
string Value for the 'driveItemId' path segment. Pass it under the name 'driveItemId', not as 'id'. Use the 'id' field of the drive item object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
index required
string Value for the 'index' path segment.
workbookTableId required
string Value for the 'workbookTableId' path segment. Pass it under the name 'workbookTableId', not as 'id'. Use the 'id' field of the workbook table object as returned by Microsoft Graph.
delete-focused-inbox-override Delete an override specified by its ID. 💡 TIP: Deletes a Focused Inbox override. Future messages from that sender revert to the Outlook ML classifier's default behavior. Use list-focused-inbox-overrides to find the ID first.

Arguments

confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
If-Match
string ETag
includeHeaders
boolean Include response headers (including ETag) in the response metadata
inferenceClassificationOverrideId required
string Value for the 'inferenceClassificationOverrideId' path segment. Pass it under the name 'inferenceClassificationOverrideId', not as 'id'. Use the 'id' field of the inference classification override object as returned by Microsoft Graph.
delete-group Delete a group. When deleted, both Microsoft 365 and security groups are moved to a temporary container and can be restored within 30 days. After that time, they're permanently deleted. This doesn't apply to Distribution groups which are permanently deleted immediately. To learn more, see deletedItems. 💡 TIP: Permanently deletes a group and all its associated resources (conversations, files, calendar, planner). This action is irreversible. Use get-group to verify the group before deleting.

Arguments

confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
groupId required
string Value for the 'groupId' path segment. Pass it under the name 'groupId', not as 'id'. Use the 'id' field of the group object as returned by Microsoft Graph.
If-Match
string ETag
includeHeaders
boolean Include response headers (including ETag) in the response metadata
delete-mail-attachment Delete a mail attachment.

Arguments

attachmentId required
string Value for the 'attachmentId' path segment. Pass it under the name 'attachmentId', not as 'id'. Use the 'id' field of the attachment object as returned by Microsoft Graph.
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
If-Match
string ETag
includeHeaders
boolean Include response headers (including ETag) in the response metadata
messageId required
string Value for the 'messageId' path segment. Pass it under the name 'messageId', not as 'id'. Use the 'id' field of the message object as returned by Microsoft Graph.
delete-mail-folder Delete the specified mailFolder. The folder can be a mailSearchFolder. You can specify a mail folder by its folder ID, or by its well-known folder name, if one exists. 💡 TIP: Deletes a mail folder and all its contents. This action is irreversible. Use list-mail-folders to find the folder ID.

Arguments

confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
If-Match
string ETag
includeHeaders
boolean Include response headers (including ETag) in the response metadata
mailFolderId required
string Value for the 'mailFolderId' path segment. Pass it under the name 'mailFolderId', not as 'id'. Use the 'id' field of the mail folder object as returned by Microsoft Graph.
delete-mail-message Delete an Outlook email message by its message ID. This is a soft delete that moves the message to Deleted Items. 💡 TIP: Soft delete — moves to Deleted Items. To permanently delete, delete again from Deleted Items.

Arguments

confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
If-Match
string ETag
includeHeaders
boolean Include response headers (including ETag) in the response metadata
messageId required
string Value for the 'messageId' path segment. Pass it under the name 'messageId', not as 'id'. Use the 'id' field of the message object as returned by Microsoft Graph.
delete-mail-rule Delete the specified messageRule object. 💡 TIP: Deletes a message rule permanently. Use the Inbox folder ID (get it from list-mail-folders) for inbox rules.

Arguments

confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
If-Match
string ETag
includeHeaders
boolean Include response headers (including ETag) in the response metadata
mailFolderId required
string Value for the 'mailFolderId' path segment. Pass it under the name 'mailFolderId', not as 'id'. Use the 'id' field of the mail folder object as returned by Microsoft Graph.
messageRuleId required
string Value for the 'messageRuleId' path segment. Pass it under the name 'messageRuleId', not as 'id'. Use the 'id' field of the message rule object as returned by Microsoft Graph.
delete-my-calendar-permission Delete my calendar permission. 💡 TIP: Revokes a calendar share or delegate access. Get the permission id via list-my-calendar-permissions. Permissions where isRemovable=false (e.g. the implicit 'My Organization' default) cannot be deleted — Graph returns an error.

Arguments

calendarPermissionId required
string Value for the 'calendarPermissionId' path segment. Pass it under the name 'calendarPermissionId', not as 'id'. Use the 'id' field of the calendar permission object as returned by Microsoft Graph.
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
If-Match
string ETag
includeHeaders
boolean Include response headers (including ETag) in the response metadata
delete-onedrive-file Delete a OneDrive file.

Arguments

confirm
boolean 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.
driveId required
string Value for the 'driveId' path segment. Pass it under the name 'driveId', not as 'id'. Use the 'id' field of the drive object as returned by Microsoft Graph.
driveItemId required
string Value for the 'driveItemId' path segment. Pass it under the name 'driveItemId', not as 'id'. Use the 'id' field of the drive item object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
If-Match
string ETag
includeHeaders
boolean Include response headers (including ETag) in the response metadata
delete-onenote-page Delete a OneNote page. 💡 TIP: Deletes a OneNote page permanently. This cannot be undone.

Arguments

confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
If-Match
string ETag
includeHeaders
boolean Include response headers (including ETag) in the response metadata
onenotePageId required
string Value for the 'onenotePageId' path segment. Pass it under the name 'onenotePageId', not as 'id'. Use the 'id' field of the onenote page object as returned by Microsoft Graph.
delete-online-meeting Delete an onlineMeeting object. 💡 TIP: Deletes an online meeting. This cannot be undone. The meeting join link will no longer work after deletion.

Arguments

confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
If-Match
string ETag
includeHeaders
boolean Include response headers (including ETag) in the response metadata
onlineMeetingId required
string Value for the 'onlineMeetingId' path segment. Pass it under the name 'onlineMeetingId', not as 'id'. Use the 'id' field of the online meeting object as returned by Microsoft Graph.
delete-outlook-contact Delete a contact.

Arguments

confirm
boolean 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.
contactId required
string Value for the 'contactId' path segment. Pass it under the name 'contactId', not as 'id'. Use the 'id' field of the contact object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
If-Match
string ETag
includeHeaders
boolean Include response headers (including ETag) in the response metadata
delete-planner-bucket Delete plannerBucket. 💡 TIP: CRITICAL: Requires If-Match header with ETag from get-planner-bucket (use includeHeaders=true).

Arguments

confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
If-Match
string ETag
includeHeaders
boolean Include response headers (including ETag) in the response metadata
plannerBucketId required
string Value for the 'plannerBucketId' path segment. Pass it under the name 'plannerBucketId', not as 'id'. Use the 'id' field of the planner bucket object as returned by Microsoft Graph.
delete-planner-task-message [beta] Delete a plannerTaskChatMessage object. 💡 TIP: Deletes a message from a Planner task's chat. No request body; If-Match is optional if you want conditional deletion; returns 204. BETA Graph API: subject to change; delegated work/school accounts only — no application permissions, no personal Microsoft accounts, global cloud only (not GCC/DoD/21Vianet).

Arguments

confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
If-Match
string ETag
includeHeaders
boolean Include response headers (including ETag) in the response metadata
plannerTaskChatMessageId required
string Value for the 'plannerTaskChatMessageId' path segment. Pass it under the name 'plannerTaskChatMessageId', not as 'id'. Use the 'id' field of the planner task chat message object as returned by Microsoft Graph.
plannerTaskId required
string Value for the 'plannerTaskId' path segment. Pass it under the name 'plannerTaskId', not as 'id'. Use the 'id' field of the planner task object as returned by Microsoft Graph.
delete-shared-mailbox-attachment Delete an attachment from a message in another user's mailbox or a shared mailbox. The user-id is the mailbox owner's ID or email address, and delegated access to that mailbox is required.

Arguments

attachmentId required
string Value for the 'attachmentId' path segment. Pass it under the name 'attachmentId', not as 'id'. Use the 'id' field of the attachment object as returned by Microsoft Graph.
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
If-Match
string ETag
includeHeaders
boolean Include response headers (including ETag) in the response metadata
messageId required
string Value for the 'messageId' path segment. Pass it under the name 'messageId', not as 'id'. Use the 'id' field of the message object as returned by Microsoft Graph.
userId required
string Value for the 'userId' path segment. Pass it under the name 'userId', not as 'id'. Use the 'id' field of the user object as returned by Microsoft Graph.
delete-sharepoint-list-column Delete a SharePoint list column. 💡 TIP: Deletes a column from a SharePoint list. This is irreversible — all data stored in this column across every list item is lost. Confirm with the user before calling. Cannot delete built-in columns (Title, Created, Modified, etc.).

Arguments

columnDefinitionId required
string Value for the 'columnDefinitionId' path segment. Pass it under the name 'columnDefinitionId', not as 'id'. Use the 'id' field of the column definition object as returned by Microsoft Graph.
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
If-Match
string ETag
includeHeaders
boolean Include response headers (including ETag) in the response metadata
listId required
string Value for the 'listId' path segment. Pass it under the name 'listId', not as 'id'. Use the 'id' field of the list object as returned by Microsoft Graph.
siteId required
string Value for the 'siteId' path segment. Pass it under the name 'siteId', not as 'id'. Use the 'id' field of the site object as returned by Microsoft Graph.
delete-sharepoint-list-item Removes an item from a list. 💡 TIP: Deletes a list item permanently. This cannot be undone — the item is moved to the site recycle bin.

Arguments

confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
If-Match
string ETag
includeHeaders
boolean Include response headers (including ETag) in the response metadata
listId required
string Value for the 'listId' path segment. Pass it under the name 'listId', not as 'id'. Use the 'id' field of the list object as returned by Microsoft Graph.
listItemId required
string Value for the 'listItemId' path segment. Pass it under the name 'listItemId', not as 'id'. Use the 'id' field of the list item object as returned by Microsoft Graph.
siteId required
string Value for the 'siteId' path segment. Pass it under the name 'siteId', not as 'id'. Use the 'id' field of the site object as returned by Microsoft Graph.
delete-sharepoint-site-onenote-page Delete a SharePoint site OneNote page.

Arguments

confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
If-Match
string ETag
includeHeaders
boolean Include response headers (including ETag) in the response metadata
onenotePageId required
string Value for the 'onenotePageId' path segment. Pass it under the name 'onenotePageId', not as 'id'. Use the 'id' field of the onenote page object as returned by Microsoft Graph.
siteId required
string Value for the 'siteId' path segment. Pass it under the name 'siteId', not as 'id'. Use the 'id' field of the site object as returned by Microsoft Graph.
delete-specific-calendar-event Delete a specific calendar event. Requires calendarId (the target calendar's ID) and eventId (the event's own ID). 💡 TIP: Deleting a seriesMaster deletes ALL occurrences. To cancel a single occurrence, use the specific instance ID.

Arguments

calendarId required
string Value 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.
confirm
boolean 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.
eventId required
string Value for the 'eventId' path segment. Pass it under the name 'eventId', not as 'id'. Use the 'id' field of the event object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
If-Match
string ETag
includeHeaders
boolean Include response headers (including ETag) in the response metadata
delete-subscription Delete a subscription. For the list of resources that support subscribing to change notifications, see the table in the Permissions section. 💡 TIP: Deletes a webhook subscription. No further change notifications will be sent. Use this to clean up stale subscriptions or stop receiving notifications. Use list-subscriptions to find the id.

Arguments

confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
If-Match
string ETag
includeHeaders
boolean Include response headers (including ETag) in the response metadata
subscriptionId required
string Value for the 'subscriptionId' path segment. Pass it under the name 'subscriptionId', not as 'id'. Use the 'id' field of the subscription object as returned by Microsoft Graph.
delete-team-channel Delete the channel.

Arguments

channelId required
string Value for the 'channelId' path segment. Pass it under the name 'channelId', not as 'id'. Use the 'id' field of the channel object as returned by Microsoft Graph.
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
If-Match
string ETag
includeHeaders
boolean Include response headers (including ETag) in the response metadata
teamId required
string Value for the 'teamId' path segment. Pass it under the name 'teamId', not as 'id'. Use the 'id' field of the team object as returned by Microsoft Graph.
delete-todo-checklist-item Delete a checklistItem object. 💡 TIP: Deletes a step (checklist item) from a To Do task. This cannot be undone. Requires checklistItemId from list-todo-checklist-items.

Arguments

checklistItemId required
string Value for the 'checklistItemId' path segment. Pass it under the name 'checklistItemId', not as 'id'. Use the 'id' field of the checklist item object as returned by Microsoft Graph.
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
If-Match
string ETag
includeHeaders
boolean Include response headers (including ETag) in the response metadata
todoTaskId required
string Value for the 'todoTaskId' path segment. Pass it under the name 'todoTaskId', not as 'id'. Use the 'id' field of the todo task object as returned by Microsoft Graph.
todoTaskListId required
string Value for the 'todoTaskListId' path segment. Pass it under the name 'todoTaskListId', not as 'id'. Use the 'id' field of the todo task list object as returned by Microsoft Graph.
delete-todo-linked-resource Delete a linkedResource object. 💡 TIP: Removes a linked resource from a To Do task.

Arguments

confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
If-Match
string ETag
includeHeaders
boolean Include response headers (including ETag) in the response metadata
linkedResourceId required
string Value for the 'linkedResourceId' path segment. Pass it under the name 'linkedResourceId', not as 'id'. Use the 'id' field of the linked resource object as returned by Microsoft Graph.
todoTaskId required
string Value for the 'todoTaskId' path segment. Pass it under the name 'todoTaskId', not as 'id'. Use the 'id' field of the todo task object as returned by Microsoft Graph.
todoTaskListId required
string Value for the 'todoTaskListId' path segment. Pass it under the name 'todoTaskListId', not as 'id'. Use the 'id' field of the todo task list object as returned by Microsoft Graph.
delete-todo-task Delete a todoTask object.

Arguments

confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
If-Match
string ETag
includeHeaders
boolean Include response headers (including ETag) in the response metadata
todoTaskId required
string Value for the 'todoTaskId' path segment. Pass it under the name 'todoTaskId', not as 'id'. Use the 'id' field of the todo task object as returned by Microsoft Graph.
todoTaskListId required
string Value for the 'todoTaskListId' path segment. Pass it under the name 'todoTaskListId', not as 'id'. Use the 'id' field of the todo task list object as returned by Microsoft Graph.
delete-todo-task-list Deletes a todoTaskList object. 💡 TIP: Deletes a Microsoft To Do task list. Built-in lists (Flagged emails, the default Tasks list) cannot be deleted — the API returns an error for those. Get list ids via list-todo-task-lists.

Arguments

confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
If-Match
string ETag
includeHeaders
boolean Include response headers (including ETag) in the response metadata
todoTaskListId required
string Value for the 'todoTaskListId' path segment. Pass it under the name 'todoTaskListId', not as 'id'. Use the 'id' field of the todo task list object as returned by Microsoft Graph.
dismiss-calendar-event-reminder Dismiss a reminder that has been triggered for an event in a user calendar. 💡 TIP: Dismisses a triggered event reminder so it won't re-fire. No request body required. Pair with list-calendar-events or get-schedule to find active reminders.

Arguments

confirm
boolean 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.
eventId required
string Value for the 'eventId' path segment. Pass it under the name 'eventId', not as 'id'. Use the 'id' field of the event object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
download-bytes Download binary content from Microsoft Graph and return it as base64. Single tool for any binary read: drive file content, mail attachment, profile photo, Teams hosted content, meeting recording. Returns { contentType, encoding: "base64", contentLength, contentBytes }. For large drive/SharePoint file content, prefer get-download-url, which returns a pre-authenticated URL to stream bytes out-of-band instead of base64 through the agent context. With the server's blob output on, the bytes come back as a file resource instead (capped by the server's download limit); pass fileName to name it.

Arguments

fileName
string Name of the file, used as the last segment of the returned resource URI when the server runs with blob output. Optional.
target required
string Relative Microsoft Graph path starting with "/". Common paths: /drives/{drive-id}/items/{driveItem-id}/content (drive file content); /me/messages/{message-id}/attachments/{attachment-id}/$value (mail attachment, list-mail-attachments returns the IDs); /me/photo/$value or /users/{user-id}/photo/$value (profile photo); /chats/{chat-id}/messages/{chatMessage-id}/hostedContents/{chatMessageHostedContent-id}/$value (Teams chat hosted content, list-chat-message-hosted-contents returns the IDs); /teams/{team-id}/channels/{channel-id}/messages/{chatMessage-id}/hostedContents/{chatMessageHostedContent-id}/$value (Teams channel hosted content). For meeting recordings, use get-meeting-recording-content where available; Microsoft Graph returns authenticated recording bytes, not a pre-authenticated download URL.
download-bytes-to-file Write authenticated Microsoft Graph byte content to a local file on the server, returning { path, contentType, bytesWritten } instead of base64. The only out-of-band way to save mail attachments and meeting recordings, whose bytes are exposed solely through authenticated endpoints. Also handles profile photos and Teams hosted content. Writes to an absolute outputPath and never overwrites an existing file. stdio mode, or HTTP with --http-local-file-tools. For OneDrive or SharePoint file content, get-download-url is preferred — it returns a pre-authenticated URL for fully out-of-band download without the server fetching the bytes.

Arguments

outputPath required
string Absolute path on the server's filesystem where the bytes are written, e.g. /Users/me/downloads/invoice.pdf. Must be absolute; relative paths are rejected. The parent directory must already exist, and an existing file is never overwritten (the call errors if outputPath already exists).
target required
string Relative Microsoft Graph path starting with "/". Common paths: /drives/{drive-id}/items/{driveItem-id}/content (drive file content); /me/messages/{message-id}/attachments/{attachment-id}/$value (mail attachment, list-mail-attachments returns the IDs); /me/photo/$value or /users/{user-id}/photo/$value (profile photo); /chats/{chat-id}/messages/{chatMessage-id}/hostedContents/{chatMessageHostedContent-id}/$value (Teams chat hosted content, list-chat-message-hosted-contents returns the IDs); /teams/{team-id}/channels/{channel-id}/messages/{chatMessage-id}/hostedContents/{chatMessageHostedContent-id}/$value (Teams channel hosted content). For meeting recordings, use get-meeting-recording-content where available; Microsoft Graph returns authenticated recording bytes, not a pre-authenticated download URL.
extract-drive-item-sensitivity-labels Extract drive item sensitivity labels. 💡 TIP: Returns the Microsoft Information Protection (MIP) sensitivity labels assigned to a file. No request body. Response: { value: { labels: [{ sensitivityLabelId, assignmentMethod, tenantId }] } }. Use list-sensitivity-labels to map sensitivityLabelId to a human-readable name. Not supported for personal Microsoft accounts. May return 423 Locked if the file is double-key-encrypted or decryption is deferred.

Arguments

confirm
boolean 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.
driveId required
string Value for the 'driveId' path segment. Pass it under the name 'driveId', not as 'id'. Use the 'id' field of the drive object as returned by Microsoft Graph.
driveItemId required
string Value for the 'driveItemId' path segment. Pass it under the name 'driveItemId', not as 'id'. Use the 'id' field of the drive item object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
find-meeting-times Suggest meeting times and locations based on organizer and attendee availability, and time or location constraints specified as parameters. If findMeetingTimes cannot return any meeting suggestions, the response would indicate a reason in the emptySuggestionsReason property. Based on this value, you can better adjust the parameters and call findMeetingTimes again. The algorithm used to suggest meeting times and locations undergoes fine-tuning from time to time. In scenarios like test environments where the input parameters and calendar data remain static, expect that the suggested results may differ over time.

Arguments

body required
object
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
timezone
string IANA timezone name (e.g., "America/New_York", "Europe/London", "Asia/Tokyo") for calendar event times. If not specified, times are returned in UTC.
format-excel-range Format an Excel range. 💡 TIP: Apply rangeFormat properties to a specific range. Required path param 'address' (e.g. 'A1:E5' or 'Sheet1!A1:E5'). Body: { horizontalAlignment, verticalAlignment, wrapText, columnWidth, rowHeight }. Font, fill, and borders are NOT set here; use format-excel-range-font, format-excel-range-fill, and format-excel-range-border for those.

Arguments

address required
string Value for the 'address' path segment.
body required
object
confirm
boolean 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.
driveId required
string Value for the 'driveId' path segment. Pass it under the name 'driveId', not as 'id'. Use the 'id' field of the drive object as returned by Microsoft Graph.
driveItemId required
string Value for the 'driveItemId' path segment. Pass it under the name 'driveItemId', not as 'id'. Use the 'id' field of the drive item object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
workbookWorksheetId required
string Value for the 'workbookWorksheetId' path segment. Pass it under the name 'workbookWorksheetId', not as 'id'. Use the 'id' field of the workbook worksheet object as returned by Microsoft Graph.
format-excel-range-border Format an Excel range border. 💡 TIP: Sets one border side. The {sideIndex} path param selects which side: EdgeTop, EdgeBottom, EdgeLeft, EdgeRight, InsideVertical, InsideHorizontal, DiagonalDown, or DiagonalUp. To outline all four edges, call once per side.

Arguments

address required
string Value for the 'address' path segment.
body required
object
confirm
boolean 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.
driveId required
string Value for the 'driveId' path segment. Pass it under the name 'driveId', not as 'id'. Use the 'id' field of the drive object as returned by Microsoft Graph.
driveItemId required
string Value for the 'driveItemId' path segment. Pass it under the name 'driveItemId', not as 'id'. Use the 'id' field of the drive item object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
sideIndex required
string Value for the 'sideIndex' path segment.
workbookWorksheetId required
string Value for the 'workbookWorksheetId' path segment. Pass it under the name 'workbookWorksheetId', not as 'id'. Use the 'id' field of the workbook worksheet object as returned by Microsoft Graph.
format-excel-range-fill Format an Excel range fill. 💡 TIP: Set the background fill color of a range's cells.

Arguments

address required
string Value for the 'address' path segment.
body required
object
confirm
boolean 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.
driveId required
string Value for the 'driveId' path segment. Pass it under the name 'driveId', not as 'id'. Use the 'id' field of the drive object as returned by Microsoft Graph.
driveItemId required
string Value for the 'driveItemId' path segment. Pass it under the name 'driveItemId', not as 'id'. Use the 'id' field of the drive item object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
workbookWorksheetId required
string Value for the 'workbookWorksheetId' path segment. Pass it under the name 'workbookWorksheetId', not as 'id'. Use the 'id' field of the workbook worksheet object as returned by Microsoft Graph.
format-excel-range-font Format an Excel range font. 💡 TIP: Set font formatting on a range: bold, italic, underline, size, color, and font name.

Arguments

address required
string Value for the 'address' path segment.
body required
object
confirm
boolean 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.
driveId required
string Value for the 'driveId' path segment. Pass it under the name 'driveId', not as 'id'. Use the 'id' field of the drive object as returned by Microsoft Graph.
driveItemId required
string Value for the 'driveItemId' path segment. Pass it under the name 'driveItemId', not as 'id'. Use the 'id' field of the drive item object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
workbookWorksheetId required
string Value for the 'workbookWorksheetId' path segment. Pass it under the name 'workbookWorksheetId', not as 'id'. Use the 'id' field of the workbook worksheet object as returned by Microsoft Graph.
forward-calendar-event This action allows the organizer or attendee of a meeting event to forward the meeting request to a new recipient. If the meeting event is forwarded from an attendee's Microsoft 365 mailbox to another recipient, this action also sends a message to notify the organizer of the forwarding, and adds the recipient to the organizer's copy of the meeting event. This convenience is not available when forwarding from an Outlook.com account. 💡 TIP: Forwards a meeting invitation to additional recipients. Body: { ToRecipients: [{ emailAddress: { address, name } }], Comment (optional) }. If the forwarder is an attendee (not organizer), the organizer is also notified and the new recipient is added to the organizer's attendee list.

Arguments

body required
object
confirm
boolean 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.
eventId required
string Value for the 'eventId' path segment. Pass it under the name 'eventId', not as 'id'. Use the 'id' field of the event object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
forward-mail-message Forward a message using either JSON or MIME format. When using JSON format, you can: - Specify either a comment or the body property of the message parameter. Specifying both will return an HTTP 400 Bad Request error. - Specify either the toRecipients parameter or the toRecipients property of the message parameter. Specifying both or specifying neither will return an HTTP 400 Bad Request error. When using MIME format: - Provide the applicable Internet message headers and the MIME content, all encoded in base64 format in the request body. - Add any attachments and S/MIME properties to the MIME content. This method saves the message in the Sent Items folder. Alternatively, create a draft to forward a message, and send it later. 💡 TIP: Forward an email preserving full HTML formatting and attachments. The 'comment' field adds text above the forwarded content. toRecipients is required. Do NOT reconstruct the email manually - this endpoint handles everything server-side.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
messageId required
string Value for the 'messageId' path segment. Pass it under the name 'messageId', not as 'id'. Use the 'id' field of the message object as returned by Microsoft Graph.
forward-shared-mailbox-mail Forward a message using either JSON or MIME format. When using JSON format, you can: - Specify either a comment or the body property of the message parameter. Specifying both will return an HTTP 400 Bad Request error. - Specify either the toRecipients parameter or the toRecipients property of the message parameter. Specifying both or specifying neither will return an HTTP 400 Bad Request error. When using MIME format: - Provide the applicable Internet message headers and the MIME content, all encoded in base64 format in the request body. - Add any attachments and S/MIME properties to the MIME content. This method saves the message in the Sent Items folder. Alternatively, create a draft to forward a message, and send it later. 💡 TIP: Forward a message from a shared mailbox preserving full HTML formatting and attachments. The 'user-id' is the shared mailbox email address. 'toRecipients' is required. The 'comment' field adds text above the forwarded content. Requires Send As permission on the shared mailbox in Exchange.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
messageId required
string Value for the 'messageId' path segment. Pass it under the name 'messageId', not as 'id'. Use the 'id' field of the message object as returned by Microsoft Graph.
userId required
string Value for the 'userId' path segment. Pass it under the name 'userId', not as 'id'. Use the 'id' field of the user object as returned by Microsoft Graph.
get-adhoc-call-transcript-content The content of the transcript. Read-only. 💡 TIP: Returns the transcript of an ad hoc call as WebVTT with speaker tags and timestamps. Take adhocCallId (the callId) and callTranscriptId (the id) from list-adhoc-call-transcripts; copy both exactly. On 403 SpeakerAttributionNotAllowed retry with Accept set to application/vnd.microsoft.graph.transcript+text.

Arguments

Accept
string Accept header for the response representation. Defaults to "text/vtt". Only set this when Graph asks for a different format — e.g. a 403 SpeakerAttributionNotAllowed on transcript content names the media type to retry with.
adhocCallId required
string Value for the 'adhocCallId' path segment. Pass it under the name 'adhocCallId', not as 'id'. Use the 'id' field of the adhoc call object as returned by Microsoft Graph.
callTranscriptId required
string Value for the 'callTranscriptId' path segment. Pass it under the name 'callTranscriptId', not as 'id'. Use the 'id' field of the call transcript object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
get-calendar-event Get the properties and relationships of the specified event object. Currently, this operation returns event bodies in only HTML format. There are two scenarios where an app can get an event in another user's calendar: Since the event resource supports extensions, you can also use the GET operation to get custom properties and extension data in an event instance.

Arguments

eventId required
string Value for the 'eventId' path segment. Pass it under the name 'eventId', not as 'id'. Use the 'id' field of the event object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
expandExtendedProperties
boolean When true, expands singleValueExtendedProperties on each event. Use this to retrieve custom extended properties (e.g., sync metadata) stored on calendar events.
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
timezone
string IANA timezone name (e.g., "America/New_York", "Europe/London", "Asia/Tokyo") for calendar event times. If not specified, times are returned in UTC.
get-calendar-view Get the occurrences, exceptions, and single instances of events in a calendar view defined by a time range, from the user's default calendar, or from some other calendar of the user. 💡 TIP: Returns expanded recurring event instances (not just seriesMaster) within a date range for the default calendar. Requires startDateTime and endDateTime query parameters in ISO 8601 format (e.g., 2024-01-01T00:00:00Z). Use get-specific-calendar-view if you need a non-default calendar. To find Teams meetings, use $select=subject,start,isOnlineMeeting,onlineMeetingProvider,onlineMeeting and keep the events with isOnlineMeeting true and onlineMeetingProvider teamsForBusiness; neither property is filterable (isOnlineMeeting returns 400 ErrorInvalidProperty). To search by subject, use $filter=contains(subject,'keyword'). Teams meetings expose their join link as onlineMeeting/joinUrl; the event resource has no joinWebUrl property. Pass that joinUrl to list-online-meetings as $filter=JoinWebUrl eq '{url}' to reach transcripts.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
endDateTime required
string The end date and time of the time range, represented in ISO 8601 format. For example, 2019-11-08T20:00:00-08:00
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
expandExtendedProperties
boolean When true, expands singleValueExtendedProperties on each event. Use this to retrieve custom extended properties (e.g., sync metadata) stored on calendar events.
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
startDateTime required
string The start date and time of the time range, represented in ISO 8601 format. For example, 2019-11-08T19:00:00-08:00
timezone
string IANA timezone name (e.g., "America/New_York", "Europe/London", "Asia/Tokyo") for calendar event times. If not specified, times are returned in UTC.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
get-channel-files-folder Get the metadata for the location where the files of a channel are stored. 💡 TIP: Gets the SharePoint driveItem (folder) that contains the files for a Teams channel. Returns id, name, webUrl, and parentReference with driveId. Use the driveId and id with OneDrive/SharePoint endpoints (list-folder-files) to browse and download channel files.

Arguments

channelId required
string Value for the 'channelId' path segment. Pass it under the name 'channelId', not as 'id'. Use the 'id' field of the channel object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
teamId required
string Value for the 'teamId' path segment. Pass it under the name 'teamId', not as 'id'. Use the 'id' field of the team object as returned by Microsoft Graph.
get-channel-message Retrieve a single message or a message reply in a channel or a chat.

Arguments

channelId required
string Value for the 'channelId' path segment. Pass it under the name 'channelId', not as 'id'. Use the 'id' field of the channel object as returned by Microsoft Graph.
chatMessageId required
string Value for the 'chatMessageId' path segment. Pass it under the name 'chatMessageId', not as 'id'. Use the 'id' field of the chat message object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
teamId required
string Value for the 'teamId' path segment. Pass it under the name 'teamId', not as 'id'. Use the 'id' field of the team object as returned by Microsoft Graph.
get-chat Retrieve a single chat (without its messages). This method supports federation. To access a chat, at least one chat member must belong to the tenant the request initiated from.

Arguments

chatId required
string Value for the 'chatId' path segment. Pass it under the name 'chatId', not as 'id'. Use the 'id' field of the chat object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
get-chat-message Retrieve a single message or a message reply in a channel or a chat.

Arguments

chatId required
string Value for the 'chatId' path segment. Pass it under the name 'chatId', not as 'id'. Use the 'id' field of the chat object as returned by Microsoft Graph.
chatMessageId required
string Value for the 'chatMessageId' path segment. Pass it under the name 'chatMessageId', not as 'id'. Use the 'id' field of the chat message object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
get-current-user Retrieve the properties and relationships of user object. This operation returns by default only a subset of the more commonly used properties for each user. These default properties are noted in the Properties section. To get properties that are not returned by default, do a GET operation for the user and specify the properties in a $select OData query option. Because the user resource supports extensions, you can also use the GET operation to get custom properties and extension data in a user instance. Customers through Microsoft Entra ID for customers can also use this API operation to retrieve their details.

Arguments

ConsistencyLevel
string Indicates the requested consistency level. Documentation URL: https://docs.microsoft.com/graph/aad-advanced-queries
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
get-download-url Resolve a short-lived, pre-authenticated download URL for Microsoft Graph binary content that exposes one (drive/SharePoint file content). The returned URL streams the bytes with NO Authorization header, so the client can fetch it straight to disk (e.g. curl) without round-tripping base64 through the agent context. Prefer this over download-bytes for any file above a few KB or any bulk download. Returns { downloadUrl, name?, size?, contentType? }. Mail file attachments (/messages/{id}/attachments/{id}/$value), meeting recordings and other $value byte endpoints have no pre-authenticated URL from Graph itself, but call this tool for them anyway: a server running with --enable-attachment-urls mints its own single-use URL for them, and one without it answers with the reason and points at download-bytes.

Arguments

target required
string Relative Microsoft Graph path starting with "/". Either a driveItem content path or the item path itself, e.g. /drives/{drive-id}/items/{driveItem-id}/content, /me/drive/items/{driveItem-id}/content, or /sites/{site-id}/drive/items/{driveItem-id}. A trailing /content is optional and is stripped automatically for drive items. Mail attachment $value paths and meeting recordings are accepted on a server running with --enable-attachment-urls.
get-drive-delta Track changes in a driveItem and its children over time. Your app begins by calling delta without any parameters. The service starts enumerating the drive's hierarchy, returning pages of items and either an @odata.nextLink or an @odata.deltaLink, as described below. Your app should continue calling with the @odata.nextLink until you no longer see an @odata.nextLink returned, or you see a response with an empty set of changes. After you have finished receiving all the changes, you may apply them to your local state. To check for changes in the future, call delta again with the @odata.deltaLink from the previous response. Deleted items are returned with the deleted facet. Items with this property set should be removed from your local state. 💡 TIP: Tracks changes to a driveItem and its children over time. Returns a collection of driveItems that have been created, modified, or deleted. Use get-drive-root-item first to get the root driveItem-id, then pass it here. Supports $select and delta tokens for incremental sync via @odata.deltaLink.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
driveId required
string Value for the 'driveId' path segment. Pass it under the name 'driveId', not as 'id'. Use the 'id' field of the drive object as returned by Microsoft Graph.
driveItemId required
string Value for the 'driveItemId' path segment. Pass it under the name 'driveItemId', not as 'id'. Use the 'id' field of the drive item object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
get-drive-item All items contained in the drive. Read-only. Nullable. 💡 TIP: Gets metadata for a file or folder: name, size, lastModifiedDateTime, createdBy, webUrl, file (mimeType, hashes), folder (childCount), parentReference, and @microsoft.graph.downloadUrl. For large drive/SharePoint files, call get-download-url with target=/drives/{drive-id}/items/{driveItem-id}/content to fetch out-of-band with no Authorization header. For small files where base64 in the tool response is acceptable, call download-bytes with the same /content target.

Arguments

driveId required
string Value for the 'driveId' path segment. Pass it under the name 'driveId', not as 'id'. Use the 'id' field of the drive object as returned by Microsoft Graph.
driveItemId required
string Value for the 'driveItemId' path segment. Pass it under the name 'driveItemId', not as 'id'. Use the 'id' field of the drive item object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
get-drive-root-item The root folder of the drive. Read-only.

Arguments

driveId required
string Value for the 'driveId' path segment. Pass it under the name 'driveId', not as 'id'. Use the 'id' field of the drive object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
get-excel-range Get an Excel range.

Arguments

address required
string Value for the 'address' path segment.
driveId required
string Value for the 'driveId' path segment. Pass it under the name 'driveId', not as 'id'. Use the 'id' field of the drive object as returned by Microsoft Graph.
driveItemId required
string Value for the 'driveItemId' path segment. Pass it under the name 'driveItemId', not as 'id'. Use the 'id' field of the drive item object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
workbookWorksheetId required
string Value for the 'workbookWorksheetId' path segment. Pass it under the name 'workbookWorksheetId', not as 'id'. Use the 'id' field of the workbook worksheet object as returned by Microsoft Graph.
get-excel-range-format Returns a format object, encapsulating the range's font, fill, borders, alignment, and other properties. Read-only. 💡 TIP: Reads a range's format: alignment, wrapText, columnWidth, rowHeight. Font, fill, and borders are nested and omitted by default; add font, fill, and borders to the $expand parameter to include them in one call. Cell styling often encodes meaning (a fill or font color flagging status such as tentative or reconciled), so expand these to interpret what the cells mean.

Arguments

address required
string Value for the 'address' path segment.
driveId required
string Value for the 'driveId' path segment. Pass it under the name 'driveId', not as 'id'. Use the 'id' field of the drive object as returned by Microsoft Graph.
driveItemId required
string Value for the 'driveItemId' path segment. Pass it under the name 'driveItemId', not as 'id'. Use the 'id' field of the drive item object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
workbookWorksheetId required
string Value for the 'workbookWorksheetId' path segment. Pass it under the name 'workbookWorksheetId', not as 'id'. Use the 'id' field of the workbook worksheet object as returned by Microsoft Graph.
get-excel-table Represents a collection of tables associated with the workbook. Read-only. 💡 TIP: Gets a specific table by name or ID. Returns table properties including columns, showHeaders, showTotals, and style.

Arguments

driveId required
string Value for the 'driveId' path segment. Pass it under the name 'driveId', not as 'id'. Use the 'id' field of the drive object as returned by Microsoft Graph.
driveItemId required
string Value for the 'driveItemId' path segment. Pass it under the name 'driveItemId', not as 'id'. Use the 'id' field of the drive item object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
workbookTableId required
string Value for the 'workbookTableId' path segment. Pass it under the name 'workbookTableId', not as 'id'. Use the 'id' field of the workbook table object as returned by Microsoft Graph.
get-excel-used-range Get an Excel used range. 💡 TIP: Get the smallest range that encompasses any cells with values or formatting on the worksheet. Returns address, values, formulas, numberFormat, rowCount, columnCount. Use this to discover the populated bounds of a sheet before reading or appending — avoids guessing how far data extends. Optional $select to trim the response.

Arguments

driveId required
string Value for the 'driveId' path segment. Pass it under the name 'driveId', not as 'id'. Use the 'id' field of the drive object as returned by Microsoft Graph.
driveItemId required
string Value for the 'driveItemId' path segment. Pass it under the name 'driveItemId', not as 'id'. Use the 'id' field of the drive item object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
workbookWorksheetId required
string Value for the 'workbookWorksheetId' path segment. Pass it under the name 'workbookWorksheetId', not as 'id'. Use the 'id' field of the workbook worksheet object as returned by Microsoft Graph.
get-group Get the properties and relationships of a group object. This operation returns by default only a subset of all the available properties, as noted in the Properties section. To get properties that aren't_ returned by default, specify them in a $select OData query option. The hasMembersWithLicenseErrors and isArchived properties are an exception and aren't returned in the $select query. 💡 TIP: Gets a specific group's details: displayName, description, mail, visibility, groupTypes, membershipRule, createdDateTime. Use $select to limit returned properties.

Arguments

excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
groupId required
string Value for the 'groupId' path segment. Pass it under the name 'groupId', not as 'id'. Use the 'id' field of the group object as returned by Microsoft Graph.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
get-group-calendar-view Get the occurrences, exceptions, and single instances of events in a calendar view defined by a time range, from the default calendar of a group.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
endDateTime required
string The end date and time of the time range, represented in ISO 8601 format. For example, 2019-11-08T20:00:00-08:00
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
groupId required
string Value for the 'groupId' path segment. Pass it under the name 'groupId', not as 'id'. Use the 'id' field of the group object as returned by Microsoft Graph.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
startDateTime required
string The start date and time of the time range, represented in ISO 8601 format. For example, 2019-11-08T19:00:00-08:00
timezone
string IANA timezone name (e.g., "America/New_York", "Europe/London", "Asia/Tokyo") for calendar event times. If not specified, times are returned in UTC.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
get-mail-attachment-content Download the raw bytes of a file attachment of an Outlook message in the signed-in user's mailbox, by message ID and attachment ID. 💡 TIP: Find the attachment id with list-mail-attachments first. With the server's blob output on, the bytes come back as a file resource; pass fileName (the attachment's name) to name it. Files over the server's download limit are refused with an error naming the limit.

Arguments

attachmentId required
string Value for the 'attachmentId' path segment. Pass it under the name 'attachmentId', not as 'id'. Use the 'id' field of the attachment object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
fileName
string Name of the file, used as the last segment of the returned resource URI when the server runs with blob output. Optional.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
messageId required
string Value for the 'messageId' path segment. Pass it under the name 'messageId', not as 'id'. Use the 'id' field of the message object as returned by Microsoft Graph.
get-mail-message Get a single Outlook email message by its message ID, including full subject, sender, recipients, body, and attachment flags. Use list-mail-messages first to obtain the message ID.

Arguments

excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
messageId required
string Value for the 'messageId' path segment. Pass it under the name 'messageId', not as 'id'. Use the 'id' field of the message object as returned by Microsoft Graph.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
get-mail-message-mime Download the raw MIME source (RFC 5322 .eml content) of an Outlook email message by its message ID. Returns the complete original message including headers and encoded attachments. 💡 TIP: Download an email message as raw RFC 5322 MIME content (.eml format). Use this when archiving an email to disk preserving all original headers, body, and inline-encoded attachments. Returns the MIME stream as text. Find the message id with list-mail-messages first.

Arguments

Accept
string Accept header for the response representation. Defaults to "text/plain". Only set this when Graph asks for a different format — e.g. a 403 SpeakerAttributionNotAllowed on transcript content names the media type to retry with.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
fileName
string Name of the file, used as the last segment of the returned resource URI when the server runs with blob output. Optional.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
includeHiddenMessages
string Include Hidden Messages
messageId required
string Value for the 'messageId' path segment. Pass it under the name 'messageId', not as 'id'. Use the 'id' field of the message object as returned by Microsoft Graph.
get-mail-tips Get the MailTips of one or more recipients as available to the signed-in user. Note that by making a POST call to the getMailTips action, you can request specific types of MailTips to be returned for more than one recipient at one time. The requested MailTips are returned in a mailTips collection. 💡 TIP: Looks up MailTips for one or more recipients before sending an email — answers 'is this person on auto-reply / OOF?', 'will my email exceed their mailbox quota?', 'are they an external recipient?', 'is this a mailbox or distribution list?'. Body: { EmailAddresses: ['[email protected]', ...], MailTipsOptions: 'automaticReplies, mailboxFullStatus, customMailTip, externalMemberCount, totalMemberCount, maxMessageSize, deliveryRestriction, moderationStatus, recipientScope, recipientSuggestions' (comma-separated subset) }. Returns mailTips per recipient with the requested fields populated. Use this to short-circuit urgent emails when a recipient is OOF, or to warn before fanning out to a large DL.

Arguments

body required
object
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
get-mailbox-settings Get the user's mailboxSettings. You can view all mailbox settings, or get specific settings. Users can set the following settings for their mailboxes through an Outlook client: Users can set their preferred date and time formats using Outlook on the web. Users can choose one of the supported short date or short time formats. This GET operation returns the format the user has chosen. Users can set the time zone they prefer on any Outlook client, by choosing from the supported time zones that their administrator has set up for their mailbox server. The administrator can set up time zones in the Windows time zone format or Internet Assigned Numbers Authority (IANA) time zone (also known as Olson time zone) format. The Windows format is the default. This GET operation returns the user's preferred time zone in the format that the administrator has set up. If you want that time zone to be in a specific format (Windows or IANA), you can first update the preferred time zone in that format as a mailbox setting. Subsequently you will be able to get the time zone in that format. Alternatively, you can manage the format conversion separately in your app. 💡 TIP: Gets the current user's mailbox settings including automaticRepliesSetting (out-of-office status, message, scheduledStartDateTime/EndDateTime, externalAudience), language, timeZone, dateFormat, timeFormat, delegateMeetingMessageDeliveryOptions, and userPurpose.

Arguments

excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
get-meeting-attendance-report Get the meetingAttendanceReport for an onlineMeeting or a virtualEvent. When an online meeting ends, an attendance report is generated for that session. 💡 TIP: Gets a specific attendance report with totalParticipantCount, meetingStartDateTime, meetingEndDateTime.

Arguments

excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
meetingAttendanceReportId required
string Value for the 'meetingAttendanceReportId' path segment. Pass it under the name 'meetingAttendanceReportId', not as 'id'. Use the 'id' field of the meeting attendance report object as returned by Microsoft Graph.
onlineMeetingId required
string Value for the 'onlineMeetingId' path segment. Pass it under the name 'onlineMeetingId', not as 'id'. Use the 'id' field of the online meeting object as returned by Microsoft Graph.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
get-meeting-recording The recordings of an online meeting. Read-only. 💡 TIP: Gets metadata for a specific recording: createdDateTime, endDateTime, contentCorrelationId (links recording to its transcript), meetingOrganizer, callId. Use contentCorrelationId to match a recording with its transcript. For the actual video file, use get-meeting-recording-content instead.

Arguments

callRecordingId required
string Value for the 'callRecordingId' path segment. Pass it under the name 'callRecordingId', not as 'id'. Use the 'id' field of the call recording object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
onlineMeetingId required
string Value for the 'onlineMeetingId' path segment. Pass it under the name 'onlineMeetingId', not as 'id'. Use the 'id' field of the online meeting object as returned by Microsoft Graph.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
get-meeting-recording-content The content of the recording. Read-only. 💡 TIP: Returns the authenticated meeting recording video bytes in MP4 format. The recording may be large; prefer out-of-band handling by the client when possible, but Microsoft Graph does not expose a pre-authenticated download URL for this resource.

Arguments

callRecordingId required
string Value for the 'callRecordingId' path segment. Pass it under the name 'callRecordingId', not as 'id'. Use the 'id' field of the call recording object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
onlineMeetingId required
string Value for the 'onlineMeetingId' path segment. Pass it under the name 'onlineMeetingId', not as 'id'. Use the 'id' field of the online meeting object as returned by Microsoft Graph.
get-meeting-transcript The transcripts of an online meeting. Read-only. 💡 TIP: Gets metadata for a specific transcript: createdDateTime, contentCorrelationId (links transcript to its recording), meetingId, meetingOrganizer. Use contentCorrelationId to match a transcript with its recording. For the actual transcript text, use get-meeting-transcript-content instead.

Arguments

callTranscriptId required
string Value for the 'callTranscriptId' path segment. Pass it under the name 'callTranscriptId', not as 'id'. Use the 'id' field of the call transcript object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
onlineMeetingId required
string Value for the 'onlineMeetingId' path segment. Pass it under the name 'onlineMeetingId', not as 'id'. Use the 'id' field of the online meeting object as returned by Microsoft Graph.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
get-meeting-transcript-content The content of the transcript. Read-only. 💡 TIP: Returns the transcript content in WebVTT format with speaker identification and timestamps.

Arguments

Accept
string Accept header for the response representation. Defaults to "text/vtt". Only set this when Graph asks for a different format — e.g. a 403 SpeakerAttributionNotAllowed on transcript content names the media type to retry with.
callTranscriptId required
string Value for the 'callTranscriptId' path segment. Pass it under the name 'callTranscriptId', not as 'id'. Use the 'id' field of the call transcript object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
onlineMeetingId required
string Value for the 'onlineMeetingId' path segment. Pass it under the name 'onlineMeetingId', not as 'id'. Use the 'id' field of the online meeting object as returned by Microsoft Graph.
get-my-manager The user or contact that is this user's manager. Read-only. Supports $expand. 💡 TIP: Gets the current user's manager. Returns a directoryObject with displayName, mail, jobTitle, id. Use the id to chain further queries (e.g. get their direct reports or presence).

Arguments

ConsistencyLevel
string Indicates the requested consistency level. Documentation URL: https://docs.microsoft.com/graph/aad-advanced-queries
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
get-my-presence Get a user's presence information. 💡 TIP: Gets the current user's presence status. Returns availability (Available, Busy, DoNotDisturb, BeRightBack, Away, Offline) and activity (InACall, InAMeeting, Presenting, OutOfOffice, etc.). Useful to check your own status before scheduling.

Arguments

excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
get-my-profile [beta] Retrieve the properties and relationships of a profile object for a given user. The profile resource exposes various rich properties that are descriptive of the user as relationships, for example, anniversaries and education activities. To get one of these navigation properties, use the corresponding GET method on that property. See the methods exposed by profile. 💡 TIP: Retrieves the signed-in user's rich profile - a richer object than get-current-user, exposing relationships like skills, projects, languages, education and work positions. Use $expand to pull related collections (e.g. $expand=skills,projects).

Arguments

excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
get-onenote-notebook-from-web-url Retrieve the properties and relationships of a notebook object by using its URL path. The location can be user notebooks on Microsoft 365, group notebooks, or SharePoint site-hosted team notebooks on Microsoft 365. 💡 TIP: Resolves a OneNote notebook from its web URL (the link a user copies from OneNote / SharePoint / Teams). Body: { webUrl: 'https://...' }. Returns a notebook object with id, displayName, sectionsUrl, sectionGroupsUrl, and isShared — you can then list its sections via list-onenote-notebook-sections. Accepts user notebooks, group notebooks, and SharePoint-hosted team notebooks. Personal Microsoft accounts are not supported.

Arguments

body required
object
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
get-onenote-page-content The page's HTML content.

Arguments

excludeResponse
boolean Exclude the full response body and only return success or failure indication
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
onenotePageId required
string Value for the 'onenotePageId' path segment. Pass it under the name 'onenotePageId', not as 'id'. Use the 'id' field of the onenote page object as returned by Microsoft Graph.
get-online-meeting Retrieve the properties and relationships of an onlineMeeting object. For example, you can: Teams live event attendee report (deprecated) and Teams live event recordings (deprecated) are online meeting artifacts. For more information, see Online meeting artifacts and permissions. 💡 TIP: Gets a specific online meeting by ID. Returns full details including subject, startDateTime, endDateTime, joinWebUrl, chatInfo (threadId for meeting chat), participants (organizer, attendees), lobbyBypassSettings, and videoTeleconferenceId. Use list-online-meetings first to find the meeting ID. The full meeting object is large and can include the invite HTML and the meeting passcode, so pass select with the fields you came here for, e.g. select=id,chatInfo,participants.

Arguments

excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
onlineMeetingId required
string Value for the 'onlineMeetingId' path segment. Pass it under the name 'onlineMeetingId', not as 'id'. Use the 'id' field of the online meeting object as returned by Microsoft Graph.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
get-outlook-contact Retrieve the properties and relationships of a contact object. There are two scenarios where an app can get a contact in another user's contact folder:

Arguments

contactId required
string Value for the 'contactId' path segment. Pass it under the name 'contactId', not as 'id'. Use the 'id' field of the contact object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
get-planner-bucket Retrieve the properties and relationships of a plannerBucket object. 💡 TIP: Response includes @odata.etag — required as If-Match for update-planner-bucket and delete-planner-bucket. Use includeHeaders=true.

Arguments

excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
plannerBucketId required
string Value for the 'plannerBucketId' path segment. Pass it under the name 'plannerBucketId', not as 'id'. Use the 'id' field of the planner bucket object as returned by Microsoft Graph.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
get-planner-plan Retrieve the properties and relationships of a plannerplan object.

Arguments

excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
plannerPlanId required
string Value for the 'plannerPlanId' path segment. Pass it under the name 'plannerPlanId', not as 'id'. Use the 'id' field of the planner plan object as returned by Microsoft Graph.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
get-planner-task Retrieve the properties and relationships of plannerTask object. 💡 TIP: Response includes @odata.etag — save it, required as If-Match header for update-planner-task. Use includeHeaders=true to capture it.

Arguments

excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
plannerTaskId required
string Value for the 'plannerTaskId' path segment. Pass it under the name 'plannerTaskId', not as 'id'. Use the 'id' field of the planner task object as returned by Microsoft Graph.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
get-planner-task-details Retrieve the properties and relationships of a plannerTaskDetails object. 💡 TIP: Response includes @odata.etag — required for update-planner-task-details. Use includeHeaders=true.

Arguments

excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
plannerTaskId required
string Value for the 'plannerTaskId' path segment. Pass it under the name 'plannerTaskId', not as 'id'. Use the 'id' field of the planner task object as returned by Microsoft Graph.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
get-presences-by-user-id Get the presence information for multiple users. 💡 TIP: Gets presence for multiple users in a single call. Body: { ids: ['user-id-1', 'user-id-2', ...] }. Returns array of presence objects. More efficient than calling get-user-presence for each user. Maximum 650 user IDs per request.

Arguments

body required
object
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
get-room Get a collection of the specified type of place objects defined in a tenant. You can do the following for a given tenant: - List all buildings. - List all floors. - List all sections. - List all desks. - List all rooms. - List all workspaces. - List all room lists. - List rooms in a specific room list. - List workspaces in a specific room list. 💡 TIP: Gets a place cast as a room, returning room-specific properties: displayName, emailAddress (for booking), capacity, building, floorNumber, floorLabel, isWheelChairAccessible, audioDeviceName, videoDeviceName, displayDeviceName. The place-id can be the room's ID or email address.

Arguments

excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
placeId required
string Value for the 'placeId' path segment. Pass it under the name 'placeId', not as 'id'. Use the 'id' field of the place object as returned by Microsoft Graph.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
get-room-list Read the properties of a place object specified by its ID. The place object can be one of the following types: The listed resources are derived from the place object. 💡 TIP: Gets a place cast as a room list, returning room list properties: displayName, emailAddress, address. Use the place-id (ID or email address) of the room list. Then use list-room-list-rooms to get the rooms within this list.

Arguments

excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
placeId required
string Value for the 'placeId' path segment. Pass it under the name 'placeId', not as 'id'. Use the 'id' field of the place object as returned by Microsoft Graph.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
get-room-list-room Get a single meeting room from a room list, by room ID. 💡 TIP: The place-id is the room list ID or email, and room-id is the specific room ID. Returns full room details including capacity, building, floor, and AV equipment.

Arguments

excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
placeId required
string Value for the 'placeId' path segment. Pass it under the name 'placeId', not as 'id'. Use the 'id' field of the place object as returned by Microsoft Graph.
roomId required
string Value for the 'roomId' path segment. Pass it under the name 'roomId', not as 'id'. Use the 'id' field of the room object as returned by Microsoft Graph.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
get-schedule Get the free/busy availability information for a collection of users, distributions lists, or resources (rooms or equipment) for a specified time period.

Arguments

body required
object
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
timezone
string IANA timezone name (e.g., "America/New_York", "Europe/London", "Asia/Tokyo") for calendar event times. If not specified, times are returned in UTC.
get-sensitivity-label Get a sensitivity label. 💡 TIP: Gets a single MIP sensitivity label by id. Use list-sensitivity-labels to find ids. Not supported for personal Microsoft accounts.

Arguments

excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
sensitivityLabelId required
string Value for the 'sensitivityLabelId' path segment. Pass it under the name 'sensitivityLabelId', not as 'id'. Use the 'id' field of the sensitivity label object as returned by Microsoft Graph.
get-shared-calendar-view List the occurrences, exceptions, and single instances of events in another user's default calendar over a time range. Requires the startDateTime and endDateTime query parameters in ISO 8601 format. Unlike list-shared-calendar-events, recurring series are expanded into individual occurrences.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
endDateTime required
string The end date and time of the time range, represented in ISO 8601 format. For example, 2019-11-08T20:00:00-08:00
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
startDateTime required
string The start date and time of the time range, represented in ISO 8601 format. For example, 2019-11-08T19:00:00-08:00
timezone
string IANA timezone name (e.g., "America/New_York", "Europe/London", "Asia/Tokyo") for calendar event times. If not specified, times are returned in UTC.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
userId required
string Value for the 'userId' path segment. Pass it under the name 'userId', not as 'id'. Use the 'id' field of the user object as returned by Microsoft Graph.
get-shared-mailbox-attachment-content Download the raw bytes of a file attachment of a message in another user's mailbox or a shared mailbox, by message ID and attachment ID. The user-id is the mailbox owner's ID or email address, and delegated access to that mailbox is required. 💡 TIP: Find the attachment id with list-shared-mailbox-attachments first. With the server's blob output on, the bytes come back as a file resource; pass fileName (the attachment's name) to name it. Files over the server's download limit are refused with an error naming the limit.

Arguments

attachmentId required
string Value for the 'attachmentId' path segment. Pass it under the name 'attachmentId', not as 'id'. Use the 'id' field of the attachment object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
fileName
string Name of the file, used as the last segment of the returned resource URI when the server runs with blob output. Optional.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
messageId required
string Value for the 'messageId' path segment. Pass it under the name 'messageId', not as 'id'. Use the 'id' field of the message object as returned by Microsoft Graph.
userId required
string Value for the 'userId' path segment. Pass it under the name 'userId', not as 'id'. Use the 'id' field of the user object as returned by Microsoft Graph.
get-shared-mailbox-message Get a single Outlook message from another user's mailbox or a shared mailbox, by message ID. The user-id is the mailbox owner's ID or email address, and delegated access to that mailbox is required.

Arguments

excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
includeHiddenMessages
string Include Hidden Messages
messageId required
string Value for the 'messageId' path segment. Pass it under the name 'messageId', not as 'id'. Use the 'id' field of the message object as returned by Microsoft Graph.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
userId required
string Value for the 'userId' path segment. Pass it under the name 'userId', not as 'id'. Use the 'id' field of the user object as returned by Microsoft Graph.
get-shared-mailbox-message-mime Download the raw MIME source (RFC 5322 .eml content) of a message in another user's mailbox or a shared mailbox, by message ID. The user-id is the mailbox owner's ID or email address, and delegated access to that mailbox is required. 💡 TIP: Download a message of a shared mailbox as an .eml. Find the message id with list-shared-mailbox-messages first. With the server's blob output on, the bytes come back as a file resource; pass fileName to name it.

Arguments

Accept
string Accept header for the response representation. Defaults to "text/plain". Only set this when Graph asks for a different format — e.g. a 403 SpeakerAttributionNotAllowed on transcript content names the media type to retry with.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
fileName
string Name of the file, used as the last segment of the returned resource URI when the server runs with blob output. Optional.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
messageId required
string Value for the 'messageId' path segment. Pass it under the name 'messageId', not as 'id'. Use the 'id' field of the message object as returned by Microsoft Graph.
userId required
string Value for the 'userId' path segment. Pass it under the name 'userId', not as 'id'. Use the 'id' field of the user object as returned by Microsoft Graph.
get-sharepoint-list-column The collection of field definitions for this list. 💡 TIP: Gets a specific column definition by ID, including its full type configuration (choices for choice columns, format for dateTime, etc.). Use list-sharepoint-list-columns first to find the column ID.

Arguments

columnDefinitionId required
string Value for the 'columnDefinitionId' path segment. Pass it under the name 'columnDefinitionId', not as 'id'. Use the 'id' field of the column definition object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
listId required
string Value for the 'listId' path segment. Pass it under the name 'listId', not as 'id'. Use the 'id' field of the list object as returned by Microsoft Graph.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
siteId required
string Value for the 'siteId' path segment. Pass it under the name 'siteId', not as 'id'. Use the 'id' field of the site object as returned by Microsoft Graph.
get-sharepoint-site Retrieve properties and relationships for a site resource. A site resource represents a team site in SharePoint.

Arguments

excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
siteId required
string Value for the 'siteId' path segment. Pass it under the name 'siteId', not as 'id'. Use the 'id' field of the site object as returned by Microsoft Graph.
get-sharepoint-site-by-path Get a SharePoint site by path. 💡 TIP: Resolve a SharePoint site from its server-relative URL. site-id is the hostname (contoso.sharepoint.com) and path is the site path without a leading slash (sites/marketing, teams/hr). Returns the site object whose id feeds list-sharepoint-site-drives.

Arguments

excludeResponse
boolean Exclude the full response body and only return success or failure indication
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
path required
string Value for the 'path' path segment.
siteId required
string Value for the 'siteId' path segment. Pass it under the name 'siteId', not as 'id'. Use the 'id' field of the site object as returned by Microsoft Graph.
get-sharepoint-site-drive-by-id The collection of drives (document libraries) under this site.

Arguments

driveId required
string Value for the 'driveId' path segment. Pass it under the name 'driveId', not as 'id'. Use the 'id' field of the drive object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
siteId required
string Value for the 'siteId' path segment. Pass it under the name 'siteId', not as 'id'. Use the 'id' field of the site object as returned by Microsoft Graph.
get-sharepoint-site-item Used to address any item contained in this site. This collection can't be enumerated.

Arguments

baseItemId required
string Value for the 'baseItemId' path segment. Pass it under the name 'baseItemId', not as 'id'. Use the 'id' field of the base item object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
siteId required
string Value for the 'siteId' path segment. Pass it under the name 'siteId', not as 'id'. Use the 'id' field of the site object as returned by Microsoft Graph.
get-sharepoint-site-list Returns the metadata for a list.

Arguments

excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
listId required
string Value for the 'listId' path segment. Pass it under the name 'listId', not as 'id'. Use the 'id' field of the list object as returned by Microsoft Graph.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
siteId required
string Value for the 'siteId' path segment. Pass it under the name 'siteId', not as 'id'. Use the 'id' field of the site object as returned by Microsoft Graph.
get-sharepoint-site-list-item Returns the metadata for an item in a list. 💡 TIP: Add $expand=fields to include actual column values. Without it, only metadata is returned.

Arguments

excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
listId required
string Value for the 'listId' path segment. Pass it under the name 'listId', not as 'id'. Use the 'id' field of the list object as returned by Microsoft Graph.
listItemId required
string Value for the 'listItemId' path segment. Pass it under the name 'listItemId', not as 'id'. Use the 'id' field of the list item object as returned by Microsoft Graph.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
siteId required
string Value for the 'siteId' path segment. Pass it under the name 'siteId', not as 'id'. Use the 'id' field of the site object as returned by Microsoft Graph.
get-sharepoint-site-onenote-page-content The page's HTML content.

Arguments

excludeResponse
boolean Exclude the full response body and only return success or failure indication
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
onenotePageId required
string Value for the 'onenotePageId' path segment. Pass it under the name 'onenotePageId', not as 'id'. Use the 'id' field of the onenote page object as returned by Microsoft Graph.
siteId required
string Value for the 'siteId' path segment. Pass it under the name 'siteId', not as 'id'. Use the 'id' field of the site object as returned by Microsoft Graph.
get-sharepoint-sites-delta Get newly created, updated, or deleted sites without having to perform a full read of the entire sites collection. A delta function call for sites is similar to a GET request, except that by appropriately applying state tokens in one or more of these calls, you can query for incremental changes in the sites. It allows you to maintain and synchronize a local store of a user's sites without having to fetch all the sites from the server every time. The application calls the API without specifying any parameters. The service begins enumerating sites and returns pages of changes to these sites, accompanied by either an @odata.nextLink or an @odata.deltaLink. Your application should continue making calls using the @odata.nextLink until there's an @odata.deltaLink in the response. After you receive all the changes, you can apply them to your local state. To monitor future changes, call the delta API by using the @odata.deltaLink in the previous response. Any resources marked as deleted should be removed from your local state.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
get-specific-calendar-event Get a single event from one of the signed-in user's calendars, addressed by calendar ID and event ID. Any calendar can be addressed this way, including the default one.

Arguments

calendarId required
string Value 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.
eventId required
string Value for the 'eventId' path segment. Pass it under the name 'eventId', not as 'id'. Use the 'id' field of the event object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
expandExtendedProperties
boolean When true, expands singleValueExtendedProperties on each event. Use this to retrieve custom extended properties (e.g., sync metadata) stored on calendar events.
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
timezone
string IANA timezone name (e.g., "America/New_York", "Europe/London", "Asia/Tokyo") for calendar event times. If not specified, times are returned in UTC.
get-specific-calendar-view List the occurrences, exceptions, and single instances of events over a time range, from one of the signed-in user's calendars addressed by calendar ID. 💡 TIP: Returns expanded recurring event instances (not just seriesMaster) within a date range for a specific calendar. Requires startDateTime and endDateTime query parameters in ISO 8601 format (e.g., 2024-01-01T00:00:00Z). Each instance includes seriesMasterId and type (occurrence/exception) fields for recurring event linkage. Use fetchAllPages=true to retrieve all results when there are many events. To find Teams meetings, use $select=subject,start,isOnlineMeeting,onlineMeetingProvider,onlineMeeting and keep the events with isOnlineMeeting true and onlineMeetingProvider teamsForBusiness; neither property is filterable (isOnlineMeeting returns 400 ErrorInvalidProperty). Teams meetings expose their join link as onlineMeeting/joinUrl; the event resource has no joinWebUrl property. Pass that joinUrl to list-online-meetings as $filter=JoinWebUrl eq '{url}' to reach transcripts.

Arguments

calendarId required
string Value 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.
count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
endDateTime required
string The end date and time of the time range, represented in ISO 8601 format. For example, 2019-11-08T20:00:00-08:00
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
expandExtendedProperties
boolean When true, expands singleValueExtendedProperties on each event. Use this to retrieve custom extended properties (e.g., sync metadata) stored on calendar events.
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
startDateTime required
string The start date and time of the time range, represented in ISO 8601 format. For example, 2019-11-08T19:00:00-08:00
timezone
string IANA timezone name (e.g., "America/New_York", "Europe/London", "Asia/Tokyo") for calendar event times. If not specified, times are returned in UTC.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
get-subscription Retrieve the properties and relationships of a subscription. See the table in the Permissions section for the list of resources that support subscribing to change notifications. 💡 TIP: Gets a specific webhook subscription by id. Use list-subscriptions to find the id. Returns full subscription details including resource, changeType, notificationUrl, expirationDateTime, applicationId.

Arguments

excludeResponse
boolean Exclude the full response body and only return success or failure indication
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
subscriptionId required
string Value for the 'subscriptionId' path segment. Pass it under the name 'subscriptionId', not as 'id'. Use the 'id' field of the subscription object as returned by Microsoft Graph.
get-team Retrieve the properties and relationships of the specified team.

Arguments

excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
teamId required
string Value for the 'teamId' path segment. Pass it under the name 'teamId', not as 'id'. Use the 'id' field of the team object as returned by Microsoft Graph.
get-team-channel Retrieve the properties and relationships of a channel. This method supports federation. Only a user who is a member of the shared channel can retrieve channel information.

Arguments

channelId required
string Value for the 'channelId' path segment. Pass it under the name 'channelId', not as 'id'. Use the 'id' field of the channel object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
teamId required
string Value for the 'teamId' path segment. Pass it under the name 'teamId', not as 'id'. Use the 'id' field of the team object as returned by Microsoft Graph.
get-todo-task Read the properties and relationships of a todoTask object. 💡 TIP: Returns a single To Do task. NOTE: $select is NOT supported — do not pass select parameter, Graph returns RequestBroker--ParseUri (400). Use $expand=linkedResources to include linked email/resource. Returns body content (HTML format), checklist items, and linked resources.

Arguments

excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
todoTaskId required
string Value for the 'todoTaskId' path segment. Pass it under the name 'todoTaskId', not as 'id'. Use the 'id' field of the todo task object as returned by Microsoft Graph.
todoTaskListId required
string Value for the 'todoTaskListId' path segment. Pass it under the name 'todoTaskListId', not as 'id'. Use the 'id' field of the todo task list object as returned by Microsoft Graph.
get-upload-url Mint a short-lived, single-use URL that this server serves for uploading a file as an attachment to a draft message or an event, so the bytes go straight from the caller to Microsoft Graph instead of passing as base64 through the agent context. target is the attachments collection of the item: /me/messages/{message-id}/attachments (a draft; create it first) or /me/events/{event-id}/attachments. PUT the raw file bytes to the returned uploadUrl with a Content-Length (e.g. curl -T file "<uploadUrl>"); the response confirms the attachment. Files under 3 MB are attached directly, larger ones (up to 150 MB) through a Graph upload session. Requires --enable-attachment-urls. Returns { uploadUrl, method, expiresAt, singleUse, maxBytes }.

Arguments

contentType
string MIME type of the file, e.g. application/pdf. Defaults to application/octet-stream.
name required
string Attachment file name as the recipient will see it, e.g. report.pdf
target required
string Attachments collection of a draft message or an event, e.g. /me/messages/{message-id}/attachments or /me/events/{event-id}/attachments.
get-user-manager Returns the user or organizational contact assigned as the agentUser's manager. 💡 TIP: Gets the manager of a specific user by user ID or UPN (email). Returns a directoryObject with displayName, mail, jobTitle.

Arguments

ConsistencyLevel
string Indicates the requested consistency level. Documentation URL: https://docs.microsoft.com/graph/aad-advanced-queries
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
userId required
string Value for the 'userId' path segment. Pass it under the name 'userId', not as 'id'. Use the 'id' field of the user object as returned by Microsoft Graph.
get-user-presence Get a user's presence information. 💡 TIP: Gets presence status for a specific user by their user ID or UPN (email). Returns availability and activity. Use list-users to find the user ID first.

Arguments

excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
userId required
string Value for the 'userId' path segment. Pass it under the name 'userId', not as 'id'. Use the 'id' field of the user object as returned by Microsoft Graph.
get-virtual-event-webinar Read the properties and relationships of a virtualEventWebinar object. All roles can get the details of a webinar event. 💡 TIP: Gets a specific webinar with full details: displayName, description, startDateTime, endDateTime, audience, coOrganizers, presenters, registrationConfiguration, and status.

Arguments

excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
virtualEventWebinarId required
string Value for the 'virtualEventWebinarId' path segment. Pass it under the name 'virtualEventWebinarId', not as 'id'. Use the 'id' field of the virtual event webinar object as returned by Microsoft Graph.
graph-batch Combine up to 20 Graph requests into a single HTTP call. Body: { requests: [{ id: '1', method: 'GET'|'POST'|'PATCH'|'DELETE', url: '/me/messages?$top=5', headers?: {...}, body?: {...}, dependsOn?: ['1'] }, ...] }. Returns { responses: [{ id, status, body, headers }] } in arbitrary order — match by id. Use cases: (1) parallelize many small reads (e.g. fetch 15 mail messages by id in one round-trip); (2) sequence dependent writes via dependsOn; (3) batch many Excel range writes into one call to dramatically reduce latency on large workbook builds. Note: each sub-request URL is relative to the Graph version root (/me/..., /drives/..., NOT https://graph.microsoft.com/v1.0/...). 💡 TIP: Combine up to 20 Graph requests into a single HTTP call. Body: { requests: [{ id: '1', method: 'GET'|'POST'|'PATCH'|'DELETE', url: '/me/messages?$top=5', headers?: {...}, body?: {...}, dependsOn?: ['1'] }, ...] }. Returns { responses: [{ id, status, body, headers }] } in arbitrary order — match by id. Use cases: (1) parallelize many small reads (e.g. fetch 15 mail messages by id in one round-trip); (2) sequence dependent writes via dependsOn; (3) batch many Excel range writes into one call to dramatically reduce latency on large workbook builds. Note: each sub-request URL is relative to the Graph version root (/me/..., /drives/..., NOT https://graph.microsoft.com/v1.0/...).

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
insert-excel-range Insert an Excel range. 💡 TIP: Insert blank cells at the given range, shifting existing content. Body: { shift: 'Down' } or { shift: 'Right' }. Use 'Down' to insert blank rows above existing data.

Arguments

address required
string Value for the 'address' path segment.
body required
object
confirm
boolean 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.
driveId required
string Value for the 'driveId' path segment. Pass it under the name 'driveId', not as 'id'. Use the 'id' field of the drive object as returned by Microsoft Graph.
driveItemId required
string Value for the 'driveItemId' path segment. Pass it under the name 'driveItemId', not as 'id'. Use the 'id' field of the drive item object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
workbookWorksheetId required
string Value for the 'workbookWorksheetId' path segment. Pass it under the name 'workbookWorksheetId', not as 'id'. Use the 'id' field of the workbook worksheet object as returned by Microsoft Graph.
list-accounts List all Microsoft accounts configured in this server. Use this to discover available account emails before making tool calls. Reflects accounts added mid-session via --login.
list-adhoc-call-transcripts List adhoc call transcripts. 💡 TIP: Lists transcripts of ad hoc calls (PSTN, 1:1 and group calls) started by the signed-in user. Use this for calls that have no calendar event and no online meeting, e.g. recordings named 'Anruf mit ...'. userId must be the signed-in user's object id (from get-current-user), not an email. startDateTime and endDateTime are required ISO 8601 UTC timestamps such as 2026-08-01T00:00:00Z. Each item carries callId and id (the transcript id) for get-adhoc-call-transcript-content; contentCorrelationId ends with the yyyyMMdd_HHmmss stamp that also appears in the recording file name in OneDrive. Do not use $filter, $orderby or $top.

Arguments

endDateTime required
string Value for the 'endDateTime' path segment.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
startDateTime required
string Value for the 'startDateTime' path segment.
userId required
string Value for the 'userId' path segment. Pass it under the name 'userId', not as 'id'. Use the 'id' field of the user object as returned by Microsoft Graph.
list-all-onenote-sections Retrieve a list of onenoteSection objects. 💡 TIP: Lists all sections across all notebooks. Use list-onenote-notebook-sections to list sections within a specific notebook instead.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-calendar-event-instances The occurrences of a recurring series, if the event is a series master. This property includes occurrences that are part of the recurrence pattern, and exceptions modified, but doesn't include occurrences canceled from the series. Navigation property. Read-only. Nullable. 💡 TIP: Expand a recurring event into individual instances within a date range. Requires startDateTime and endDateTime query parameters in ISO 8601 format (e.g., 2024-01-01T00:00:00Z). Use this to see all occurrences of a recurring event.

Arguments

calendarId required
string Value 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.
count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
endDateTime required
string The end date and time of the time range, represented in ISO 8601 format. For example, 2019-11-08T20:00:00-08:00
eventId required
string Value for the 'eventId' path segment. Pass it under the name 'eventId', not as 'id'. Use the 'id' field of the event object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
expandExtendedProperties
boolean When true, expands singleValueExtendedProperties on each event. Use this to retrieve custom extended properties (e.g., sync metadata) stored on calendar events.
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
startDateTime required
string The start date and time of the time range, represented in ISO 8601 format. For example, 2019-11-08T19:00:00-08:00
timezone
string IANA timezone name (e.g., "America/New_York", "Europe/London", "Asia/Tokyo") for calendar event times. If not specified, times are returned in UTC.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-calendar-events Get a list of event objects in the user's mailbox. The list contains single instance meetings and series masters. To get expanded event instances, you can get the calendar view, or get the instances of an event. Currently, this operation returns event bodies in only HTML format. There are two scenarios where an app can get events in another user's calendar: 💡 TIP: WARNING: Does NOT expand recurring events — only returns seriesMaster. Use get-calendar-view instead to see individual occurrences within a date range.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
expandExtendedProperties
boolean When true, expands singleValueExtendedProperties on each event. Use this to retrieve custom extended properties (e.g., sync metadata) stored on calendar events.
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
timezone
string IANA timezone name (e.g., "America/New_York", "Europe/London", "Asia/Tokyo") for calendar event times. If not specified, times are returned in UTC.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-calendar-events-delta Get a set of event resources that have been added, deleted, or updated in a calendarView (a range of events defined by start and end dates) of the user's primary calendar. Typically, synchronizing events in a calendarView in a local store entails a round of multiple delta function calls. The initial call is a full synchronization, and every subsequent delta call in the same round gets the incremental changes (additions, deletions, or updates). This allows you to maintain and synchronize a local store of events in the specified calendarView, without having to fetch all the events of that calendar from the server every time. 💡 TIP: Incremental sync of events across the default calendar. First call returns all events plus @odata.deltaLink. Subsequent calls with that link return only additions/updates/removals. Use $select to limit fields. Deltas expire after ~30 days — start over if the server returns 410 Gone. For a time-bounded view with delta semantics, use list-calendar-view-delta instead.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
endDateTime required
string The end date and time of the time range in the function, represented in ISO 8601 format. For example, 2019-11-08T20:00:00-08:00
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
startDateTime required
string The start date and time of the time range in the function, represented in ISO 8601 format. For example, 2019-11-08T20:00:00-08:00
list-calendar-view-delta Get a set of event resources that have been added, deleted, or updated in a calendarView (a range of events defined by start and end dates) of the user's primary calendar. Typically, synchronizing events in a calendarView in a local store entails a round of multiple delta function calls. The initial call is a full synchronization, and every subsequent delta call in the same round gets the incremental changes (additions, deletions, or updates). This allows you to maintain and synchronize a local store of events in the specified calendarView, without having to fetch all the events of that calendar from the server every time. 💡 TIP: Incremental sync of events within a time window. Required query params on first call: startDateTime, endDateTime (ISO 8601). Returns events in the window plus @odata.deltaLink; subsequent calls with that link return only changes. Expands recurring events to individual occurrences (unlike list-calendar-events-delta which returns the series master). Use this for calendar UIs showing a week/month view.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
endDateTime required
string The end date and time of the time range in the function, represented in ISO 8601 format. For example, 2019-11-08T20:00:00-08:00
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
startDateTime required
string The start date and time of the time range in the function, represented in ISO 8601 format. For example, 2019-11-08T20:00:00-08:00
timezone
string IANA timezone name (e.g., "America/New_York", "Europe/London", "Asia/Tokyo") for calendar event times. If not specified, times are returned in UTC.
list-calendars Get all the user's calendars (/calendars navigation property), get the calendars from the default calendar group or from a specific calendar group.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-channel-message-hosted-contents Retrieve the list of chatMessageHostedContent objects from a message. This API only lists the hosted content objects. To get the content bytes, see get chatmessage hosted content. 💡 TIP: Lists hosted-content references (inline images, code snippets) attached to a Teams channel message. Returns { id, contentType } per item. To download bytes, call download-bytes with target=/teams/{team-id}/channels/{channel-id}/messages/{chatMessage-id}/hostedContents/{id}/$value.

Arguments

channelId required
string Value for the 'channelId' path segment. Pass it under the name 'channelId', not as 'id'. Use the 'id' field of the channel object as returned by Microsoft Graph.
chatMessageId required
string Value for the 'chatMessageId' path segment. Pass it under the name 'chatMessageId', not as 'id'. Use the 'id' field of the chat message object as returned by Microsoft Graph.
count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
teamId required
string Value for the 'teamId' path segment. Pass it under the name 'teamId', not as 'id'. Use the 'id' field of the team object as returned by Microsoft Graph.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-channel-message-replies List all the replies to a message in a channel of a team. This method lists only the replies of the specified message, if any. To get the message itself, call get channel message.

Arguments

channelId required
string Value for the 'channelId' path segment. Pass it under the name 'channelId', not as 'id'. Use the 'id' field of the channel object as returned by Microsoft Graph.
chatMessageId required
string Value for the 'chatMessageId' path segment. Pass it under the name 'chatMessageId', not as 'id'. Use the 'id' field of the chat message object as returned by Microsoft Graph.
count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
teamId required
string Value for the 'teamId' path segment. Pass it under the name 'teamId', not as 'id'. Use the 'id' field of the team object as returned by Microsoft Graph.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-channel-messages Retrieve the list of messages (without the replies) in a channel of a team. To get the replies for a message, call the list message replies or the get message reply API. This method supports federation. To list channel messages in application context, the request must be made from the tenant that the channel owner belongs to (represented by the tenantId property on the channel).

Arguments

channelId required
string Value for the 'channelId' path segment. Pass it under the name 'channelId', not as 'id'. Use the 'id' field of the channel object as returned by Microsoft Graph.
count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
teamId required
string Value for the 'teamId' path segment. Pass it under the name 'teamId', not as 'id'. Use the 'id' field of the team object as returned by Microsoft Graph.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-channel-tabs Retrieve the list of tabs in the specified channel within a team.

Arguments

channelId required
string Value for the 'channelId' path segment. Pass it under the name 'channelId', not as 'id'. Use the 'id' field of the channel object as returned by Microsoft Graph.
count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
teamId required
string Value for the 'teamId' path segment. Pass it under the name 'teamId', not as 'id'. Use the 'id' field of the team object as returned by Microsoft Graph.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-chat-members List all conversation members in a chat or channel. 💡 TIP: Lists members of a chat. Each member has displayName, email, roles (owner/guest), and visibleHistoryStartDateTime. For meeting chats, use the chatInfo.threadId from get-online-meeting as the chat-id to see who participated in the meeting chat. Pass name to keep only members whose displayName or email contains that text (case-insensitive); use the returned userId in an @mention.

Arguments

chatId required
string Value for the 'chatId' path segment. Pass it under the name 'chatId', not as 'id'. Use the 'id' field of the chat object as returned by Microsoft Graph.
count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
name
string Case-insensitive text to match against each member's displayName and email. Applied after $select projection, so only fields you can see are matched. Without fetchAllPages only the fetched page is filtered, and @odata.count still reports the unfiltered total.
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-chat-message-hosted-contents Retrieve the list of chatMessageHostedContent objects from a message. This API only lists the hosted content objects. To get the content bytes, see get chatmessage hosted content. 💡 TIP: Lists hosted-content references (inline images, code snippets) attached to a Teams chat message. Returns { id, contentType } per item. To download bytes, call download-bytes with target=/chats/{chat-id}/messages/{chatMessage-id}/hostedContents/{id}/$value. IDs can also be extracted from the <img src> URL in the message body between /hostedContents/ and /$value.

Arguments

chatId required
string Value for the 'chatId' path segment. Pass it under the name 'chatId', not as 'id'. Use the 'id' field of the chat object as returned by Microsoft Graph.
chatMessageId required
string Value for the 'chatMessageId' path segment. Pass it under the name 'chatMessageId', not as 'id'. Use the 'id' field of the chat message object as returned by Microsoft Graph.
count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-chat-message-replies Replies for a specified message. Supports $expand for channel messages.

Arguments

chatId required
string Value for the 'chatId' path segment. Pass it under the name 'chatId', not as 'id'. Use the 'id' field of the chat object as returned by Microsoft Graph.
chatMessageId required
string Value for the 'chatMessageId' path segment. Pass it under the name 'chatMessageId', not as 'id'. Use the 'id' field of the chat message object as returned by Microsoft Graph.
count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-chat-messages Retrieve the list of messages in a chat. This method supports federation. To list chat messages in application context, the request must be made from the tenant that the channel owner belongs to (represented by the tenantId property on the channel). 💡 TIP: Lists messages in a chat. $top is capped at 50 (higher values return 400) and $orderby accepts only descending order on createdDateTime or lastModifiedDateTime - ascending is rejected. Meeting chats mostly hold system events; transcripts are not available here, use list-meeting-transcripts instead.

Arguments

chatId required
string Value for the 'chatId' path segment. Pass it under the name 'chatId', not as 'id'. Use the 'id' field of the chat object as returned by Microsoft Graph.
count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-chats List chats. 💡 TIP: Lists the signed-in user's chats. Only $filter, $top (max 50), $expand (members, lastMessagePreview) and $orderby are supported; $orderby accepts just lastMessagePreview/createdDateTime in descending order. Other options are rejected: $search returns 400 'Query option Search is not allowed', and ordering by lastUpdatedDateTime returns 400 BadRequest. Meeting chats have chatType=meeting and carry the meeting subject in topic.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-contact-folder-child-folders Get a collection of child folders under the specified contact folder. 💡 TIP: Lists immediate sub-folders under a given contact folder. Returns id, displayName, parentFolderId. Use list-contact-folders to discover top-level folders, then this tool to traverse one level deeper. Supports $filter, $top, $orderby. Note: contact folders are typically a flat list in Outlook clients, but Graph allows nesting via this endpoint.

Arguments

contactFolderId required
string Value for the 'contactFolderId' path segment. Pass it under the name 'contactFolderId', not as 'id'. Use the 'id' field of the contact folder object as returned by Microsoft Graph.
count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-contact-folder-contacts Get a contact collection from the default Contacts folder of the signed-in user (.../me/contacts), or from the specified contact folder. 💡 TIP: Lists contacts inside a specific folder. Pair with list-contact-folders to discover the folder id. Note: the existing list-outlook-contacts (GET /me/contacts) only returns contacts from the default folder — use this tool to read contacts from any folder. Supports $filter, $search='query', $orderby, $top, $select.

Arguments

contactFolderId required
string Value for the 'contactFolderId' path segment. Pass it under the name 'contactFolderId', not as 'id'. Use the 'id' field of the contact folder object as returned by Microsoft Graph.
count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-contact-folders Get the contact folder collection in the default Contacts folder of the signed-in user. 💡 TIP: Lists the user's Outlook contact folders (the named buckets that organize contacts). Always includes the built-in 'Contacts' folder; user-created folders also appear. Returns id, displayName, and parentFolderId. To identify the default folder, match displayName === 'Contacts'. Use this before list-contact-folder-contacts or create-contact-in-folder to discover folder ids. Supports OData query parameters.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-custom-emojis [beta] Get a list of custom emojis available in the teamwork messaging of the organization. 💡 TIP: Lists the organization's custom Teams emojis, including displayName, createdBy and createdDateTime. Graph can return contentBytes: null by default; request select='displayName,contentBytes' (or a string array) to retrieve base64 PNG/GIF images. Supports $top, $filter and $select. Image bytes can make responses large: use a small $top when selecting contentBytes; use fetchAllPages only for an explicitly requested export. displayName is the unique key, not an id. Work/school accounts only. Microsoft Graph beta API: subject to change.

Arguments

excludeResponse
boolean Exclude the full response body and only return success or failure indication
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter.
filter
string OData filter expression for custom emojis, forwarded to Microsoft Graph. Filter support is determined by the beta API.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
select
Properties to return as a comma-separated string or string array. Explicitly select contentBytes to retrieve base64 PNG/GIF images, for example displayName,contentBytes. Graph can return contentBytes: null when it is not explicitly selected.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Number of custom emojis to return in one page. Base64 image content is opt-in with select; use a small page size when selecting contentBytes.
list-drive-item-permissions The set of permissions for the item. Read-only. Nullable. 💡 TIP: Lists all permissions (sharing links, direct access, inherited) on a file or folder. Each permission has roles, grantedTo (user), link (sharing URL), and inheritedFrom.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
driveId required
string Value for the 'driveId' path segment. Pass it under the name 'driveId', not as 'id'. Use the 'id' field of the drive object as returned by Microsoft Graph.
driveItemId required
string Value for the 'driveItemId' path segment. Pass it under the name 'driveItemId', not as 'id'. Use the 'id' field of the drive item object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-drive-item-thumbnails Collection of thumbnailSet objects associated with the item. For more information, see getting thumbnails. Read-only. Nullable. 💡 TIP: Lists thumbnail sets for a file. Each set contains small (96px), medium (176px), large (800px) thumbnails with url and dimensions. Returns empty for unsupported types (text docs). Use $select=small,medium,large or $expand=small($select=url) to fetch specific sizes. The returned URLs are short-lived — fetch the bytes immediately.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
driveId required
string Value for the 'driveId' path segment. Pass it under the name 'driveId', not as 'id'. Use the 'id' field of the drive object as returned by Microsoft Graph.
driveItemId required
string Value for the 'driveItemId' path segment. Pass it under the name 'driveItemId', not as 'id'. Use the 'id' field of the drive item object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-drive-item-versions The list of previous versions of the item. For more info, see getting previous versions. Read-only. Nullable. 💡 TIP: Lists version history of a file. Each version has id, lastModifiedDateTime, lastModifiedBy, and size. Use the version id with /versions/{id}/content to download a specific version.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
driveId required
string Value for the 'driveId' path segment. Pass it under the name 'driveId', not as 'id'. Use the 'id' field of the drive object as returned by Microsoft Graph.
driveItemId required
string Value for the 'driveItemId' path segment. Pass it under the name 'driveItemId', not as 'id'. Use the 'id' field of the drive item object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-drives Retrieve the list of Drive resources available for a target User, Group, or Site.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-excel-table-rows The list of all the rows in the table. Read-only. 💡 TIP: Lists all rows in a table. Each row has index and values (array of cell values). Use $top and $skip for pagination on large tables.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
driveId required
string Value for the 'driveId' path segment. Pass it under the name 'driveId', not as 'id'. Use the 'id' field of the drive object as returned by Microsoft Graph.
driveItemId required
string Value for the 'driveItemId' path segment. Pass it under the name 'driveItemId', not as 'id'. Use the 'id' field of the drive item object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
workbookTableId required
string Value for the 'workbookTableId' path segment. Pass it under the name 'workbookTableId', not as 'id'. Use the 'id' field of the workbook table object as returned by Microsoft Graph.
list-excel-tables Represents a collection of tables associated with the workbook. Read-only. 💡 TIP: Lists all named tables in a workbook. Each table has id, name, showHeaders, showTotals, columns, and style. Use the table name or id with other table endpoints.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
driveId required
string Value for the 'driveId' path segment. Pass it under the name 'driveId', not as 'id'. Use the 'id' field of the drive object as returned by Microsoft Graph.
driveItemId required
string Value for the 'driveItemId' path segment. Pass it under the name 'driveItemId', not as 'id'. Use the 'id' field of the drive item object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-excel-worksheets Represents a collection of worksheets associated with the workbook. Read-only.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
driveId required
string Value for the 'driveId' path segment. Pass it under the name 'driveId', not as 'id'. Use the 'id' field of the drive object as returned by Microsoft Graph.
driveItemId required
string Value for the 'driveItemId' path segment. Pass it under the name 'driveItemId', not as 'id'. Use the 'id' field of the drive item object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-focused-inbox-overrides Get the overrides that a user has set up to always classify messages from certain senders in specific ways. Each override corresponds to an SMTP address of a sender. Initially, a user doesn't have any overrides. 💡 TIP: Lists Focused Inbox classification overrides — explicit rules that force messages from a given sender (by SMTP address) into either the Focused or Other tab, regardless of what the Outlook ML classifier would predict. Each override has id, classifyAs ('focused' or 'other'), and senderEmailAddress {name, address}. Returns an empty collection if the user has never set an override.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-folder-files Return a collection of DriveItems in the children relationship of a DriveItem. DriveItems with a non-null folder or package facet can have one or more child DriveItems.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
driveId required
string Value for the 'driveId' path segment. Pass it under the name 'driveId', not as 'id'. Use the 'id' field of the drive object as returned by Microsoft Graph.
driveItemId required
string Value for the 'driveItemId' path segment. Pass it under the name 'driveItemId', not as 'id'. Use the 'id' field of the drive item object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-group-conversations Retrieve the list of conversations in this group. 💡 TIP: Legacy — Microsoft recommends Teams channels instead of group conversations.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
groupId required
string Value for the 'groupId' path segment. Pass it under the name 'groupId', not as 'id'. Use the 'id' field of the group object as returned by Microsoft Graph.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-group-events Retrieve a list of event objects.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
groupId required
string Value for the 'groupId' path segment. Pass it under the name 'groupId', not as 'id'. Use the 'id' field of the group object as returned by Microsoft Graph.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
timezone
string IANA timezone name (e.g., "America/New_York", "Europe/London", "Asia/Tokyo") for calendar event times. If not specified, times are returned in UTC.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-group-members Get a list of the group's direct members. A group can have users, organizational contacts, devices, service principals and other groups as members. This operation is not transitive. 💡 TIP: Lists members of a group. Returns directoryObjects with displayName, mail, jobTitle, userPrincipalName. Use $select to limit fields. Use $top and pagination for large groups.

Arguments

ConsistencyLevel
string Indicates the requested consistency level. Documentation URL: https://docs.microsoft.com/graph/aad-advanced-queries
count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
groupId required
string Value for the 'groupId' path segment. Pass it under the name 'groupId', not as 'id'. Use the 'id' field of the group object as returned by Microsoft Graph.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-group-owners Retrieve a list of the group's owners. The owners are a set of users or service principals who are allowed to modify the group object. Owners are currently not available in Microsoft Graph for groups that were created in Exchange, distribution groups, or groups that are synchronized from an on-premises environment. 💡 TIP: Lists owners of a group. Owners can manage group settings and membership. Returns directoryObjects with displayName, mail, userPrincipalName.

Arguments

ConsistencyLevel
string Indicates the requested consistency level. Documentation URL: https://docs.microsoft.com/graph/aad-advanced-queries
count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
groupId required
string Value for the 'groupId' path segment. Pass it under the name 'groupId', not as 'id'. Use the 'id' field of the group object as returned by Microsoft Graph.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-group-threads Get all the threads of a group. 💡 TIP: Legacy — Microsoft recommends Teams channels instead of group threads.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
groupId required
string Value for the 'groupId' path segment. Pass it under the name 'groupId', not as 'id'. Use the 'id' field of the group object as returned by Microsoft Graph.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-groups List all the groups available in an organization, excluding dynamic distribution groups. To retrieve dynamic distribution groups, use the Exchange admin center. This operation returns by default only a subset of the properties for each group. These default properties are noted in the Properties section. To get properties that are not returned by default, do a GET operation for the group and specify the properties in a $select OData query option. The hasMembersWithLicenseErrors and isArchived properties are an exception and are not returned in the $select query. 💡 TIP: Lists organization groups (Microsoft 365 groups, security groups, distribution lists). Use $filter=groupTypes/any(g:g eq 'Unified') for M365 groups only. Use $filter=mailEnabled eq true and securityEnabled eq false for distribution lists. Use $search="displayName:keyword" to search by name (requires ConsistencyLevel: eventual header). Use $select to limit fields.

Arguments

ConsistencyLevel
string Indicates the requested consistency level. Documentation URL: https://docs.microsoft.com/graph/aad-advanced-queries
count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-joined-teams Get the teams in Microsoft Teams that the user is a direct member of.

Arguments

excludeResponse
boolean Exclude the full response body and only return success or failure indication
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
list-mail-attachments Retrieve a list of attachment objects. 💡 TIP: Lists attachments on a message: id, name, contentType, size, isInline. To download the bytes, call download-bytes with target=/me/messages/{message-id}/attachments/{attachment-id}/$value (the /$value suffix returns raw bytes; the bare attachment URL embeds contentBytes in JSON which can truncate large files).

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
messageId required
string Value for the 'messageId' path segment. Pass it under the name 'messageId', not as 'id'. Use the 'id' field of the message object as returned by Microsoft Graph.
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-mail-child-folders Get the folder collection under the specified folder. You can use the .../me/mailFolders shortcut to get the top-level folder collection and navigate to another folder. By default, this operation doesn't return hidden folders. Use a query parameter includeHiddenFolders to include them in the response.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
includeHiddenFolders
string Include Hidden Folders
mailFolderId required
string Value for the 'mailFolderId' path segment. Pass it under the name 'mailFolderId', not as 'id'. Use the 'id' field of the mail folder object as returned by Microsoft Graph.
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-mail-folder-messages Get all the messages in the specified user's mailbox, or those messages in a specified folder in the mailbox. 💡 TIP: List read search Outlook emails within a specific mail folder. CRITICAL: When searching emails, the $search parameter value MUST be wrapped in double quotes. Format: $search="your search query here". Use KQL (Keyword Query Language) syntax to search specific properties: 'from:', 'subject:', 'body:', 'to:', 'cc:', 'bcc:', 'attachment:', 'hasAttachments:', 'importance:', 'received:', 'sent:'. Examples: $search="from:[email protected]" | $search="subject:meeting AND hasAttachments:true" | $search="body:urgent AND received>=2024-01-01" | $search="from:alice AND importance:high". Remember: ALWAYS wrap the entire search expression in double quotes! Reference: https://learn.microsoft.com/en-us/graph/search-query-parameter IMPORTANT: Always use $select to limit returned fields and reduce response size. Recommended default: $select=id,subject,from,toRecipients,receivedDateTime,bodyPreview,isRead,hasAttachments. Use bodyPreview instead of body for listings. To read the full email body, use get-mail-message with the specific message id.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
mailFolderId required
string Value for the 'mailFolderId' path segment. Pass it under the name 'mailFolderId', not as 'id'. Use the 'id' field of the mail folder object as returned by Microsoft Graph.
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-mail-folder-messages-delta Get a set of messages added, deleted, or updated in a specified folder. A delta function call for messages in a folder is similar to a GET request, except that by appropriately applying state tokens in one or more of these calls, you can [query for incremental changes in the messages in that folder](/graph/delta-query-messages). It allows you to maintain and synchronize a local store of a user's messages without having to fetch the entire set of messages from the server every time. 💡 TIP: Incremental sync of messages within a mail folder. Graph only supports delta scoped to a folder — use mailFolder-id = 'inbox' for the well-known inbox, or another folder id from list-mail-folders. First call returns all messages plus @odata.deltaLink; subsequent calls with that link return only changes (created/updated/deleted). @odata.nextLink paginates within a single delta window. Deltas expire after ~30 days of inactivity — start over if the server returns 410. Prefer this over full re-list for polling.

Arguments

changeType
string A custom query option to filter the delta response based on the type of change. Supported values are created, updated or deleted.
count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
mailFolderId required
string Value for the 'mailFolderId' path segment. Pass it under the name 'mailFolderId', not as 'id'. Use the 'id' field of the mail folder object as returned by Microsoft Graph.
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-mail-folders Get the mail folder collection directly under the root folder of the signed-in user. The returned collection includes any mail search folders directly under the root. By default, this operation doesn't return hidden folders. Use a query parameter includeHiddenFolders to include them in the response. This operation doesn't return all mail folders in a mailbox, only the child folders of the root folder. To return all mail folders in a mailbox, each child folder must be traversed separately.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
includeHiddenFolders
string Include Hidden Folders
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-mail-messages List, search, and filter Outlook email messages in the signed-in user's mailbox across all folders. Returns message metadata (subject, from, receivedDateTime, isRead, hasAttachments) plus a body preview. Use $search for keyword queries, $filter to narrow by sender/read state/date, $top to limit page size, and $select to trim fields. 💡 TIP: List read search my Outlook emails across folders. CRITICAL: When searching emails, the $search parameter value MUST be wrapped in double quotes. Format: $search="your search query here". Use KQL (Keyword Query Language) syntax to search specific properties: 'from:', 'subject:', 'body:', 'to:', 'cc:', 'bcc:', 'attachment:', 'hasAttachments:', 'importance:', 'received:', 'sent:'. Examples: $search="from:[email protected]" | $search="subject:meeting AND hasAttachments:true" | $search="body:urgent AND received>=2024-01-01" | $search="from:john AND importance:high". Remember: ALWAYS wrap the entire search expression in double quotes! Reference: https://learn.microsoft.com/en-us/graph/search-query-parameter IMPORTANT: Always use $select to limit returned fields and reduce response size. Recommended default: $select=id,subject,from,toRecipients,receivedDateTime,bodyPreview,isRead,hasAttachments. Use bodyPreview instead of body for listings. To read the full email body, use get-mail-message with the specific message id.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
includeHiddenMessages
string Include Hidden Messages
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-mail-rules Get all the messageRule objects defined for the user's inbox. 💡 TIP: Lists all message rules for a mail folder. Use the Inbox folder ID (get it from list-mail-folders) for inbox rules. Each rule has displayName, sequence, isEnabled, conditions (fromAddresses, subjectContains, etc.), actions (moveToFolder, forwardTo, delete, etc.), and exceptions.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
mailFolderId required
string Value for the 'mailFolderId' path segment. Pass it under the name 'mailFolderId', not as 'id'. Use the 'id' field of the mail folder object as returned by Microsoft Graph.
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-meeting-attendance-records Get a list of attendanceRecord objects and their properties. 💡 TIP: Lists individual attendance records for a meeting report. Each record has: identity (displayName), emailAddress, role (Organizer/Presenter/Attendee), totalAttendanceInSeconds, and attendanceIntervals with joinDateTime/leaveDateTime. Use to determine who attended, how long, and when they joined/left.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
meetingAttendanceReportId required
string Value for the 'meetingAttendanceReportId' path segment. Pass it under the name 'meetingAttendanceReportId', not as 'id'. Use the 'id' field of the meeting attendance report object as returned by Microsoft Graph.
onlineMeetingId required
string Value for the 'onlineMeetingId' path segment. Pass it under the name 'onlineMeetingId', not as 'id'. Use the 'id' field of the online meeting object as returned by Microsoft Graph.
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-meeting-attendance-reports Get a list of meetingAttendanceReport objects for an onlineMeeting or a virtualEvent. Each time an online meeting or a virtual event ends, an attendance report is generated for that session. 💡 TIP: Lists attendance reports for a meeting. Each report has meetingStartDateTime, meetingEndDateTime, totalParticipantCount. For recurring meetings, there is one report per occurrence. Get the meeting ID first via list-online-meetings.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
onlineMeetingId required
string Value for the 'onlineMeetingId' path segment. Pass it under the name 'onlineMeetingId', not as 'id'. Use the 'id' field of the online meeting object as returned by Microsoft Graph.
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-meeting-recordings Get a callRecording object associated with a scheduled online meeting and an ad hoc call. This API supports the retrieval of call recordings from all meeting types except live events. For a recording, this API returns the metadata of the single recording associated with the online meeting or an ad hoc call. For the content of a recording, this API returns the stream of bytes associated with the recording. 💡 TIP: Lists recordings for a meeting. Each recording has createdDateTime, endDateTime, meetingOrganizer, contentCorrelationId (links to corresponding transcript). For recurring meetings, there is one recording per occurrence.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
onlineMeetingId required
string Value for the 'onlineMeetingId' path segment. Pass it under the name 'onlineMeetingId', not as 'id'. Use the 'id' field of the online meeting object as returned by Microsoft Graph.
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-meeting-transcripts The transcripts of an online meeting. Read-only. 💡 TIP: Lists available transcripts for a meeting. Get the meeting ID first via list-online-meetings.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
onlineMeetingId required
string Value for the 'onlineMeetingId' path segment. Pass it under the name 'onlineMeetingId', not as 'id'. Use the 'id' field of the online meeting object as returned by Microsoft Graph.
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-my-associated-teams Get the list of teams in Microsoft Teams that a user is associated with. Currently, a user can be associated with a team in two different ways: 💡 TIP: Lists Teams the current user is associated with — both joined teams and host teams of shared channels the user is a direct member of. Returns associatedTeamInfo objects with id, displayName, and tenantId. Broader than list-joined-teams because it includes shared-channel host teams.

Arguments

excludeResponse
boolean Exclude the full response body and only return success or failure indication
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
list-my-calendar-permissions The permissions of the users with whom the calendar is shared. 💡 TIP: Lists share recipients and delegates on the user's primary calendar. Returns calendarPermission objects with id, role ('none' | 'freeBusyRead' | 'limitedRead' | 'read' | 'write' | 'delegateWithoutPrivateEventAccess' | 'delegateWithPrivateEventAccess' | 'custom'), emailAddress { name, address }, isInsideOrganization, isRemovable, allowedRoles. Returns an empty collection when called by a delegate or share recipient (only the calendar owner sees the full list). For a non-primary calendar, use /me/calendars/{calendar-id}/calendarPermissions — not currently exposed.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-my-direct-reports Get a user's direct reports. Returns the users and contacts for whom this user is assigned as manager. This API doesn't support getting the direct report chain beyond the specified user's direct reports. 💡 TIP: Lists users who report directly to the current user. Returns directoryObjects with displayName, mail, jobTitle, id. Useful for building org charts or sending team-wide communications.

Arguments

ConsistencyLevel
string Indicates the requested consistency level. Documentation URL: https://docs.microsoft.com/graph/aad-advanced-queries
count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-my-installed-teams-apps The apps installed in the personal scope of this user. 💡 TIP: Lists Teams apps installed in the current user's personal scope (the apps pinned to the user's Teams sidebar / accessible without joining a team or chat). Use $expand=teamsApp,teamsAppDefinition for full app metadata (displayName, version, distributionMethod). Useful before send-my-activity-notification to discover the user's own teamsAppId.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-my-memberships The groups and directory roles that the user is a member of. Read-only. Nullable. Supports $expand. 💡 TIP: Lists all groups, directory roles, and administrative units the current user is a member of. Returns directoryObjects — use $filter=isof('microsoft.graph.group') to filter to groups only. Each group has displayName, mail, groupTypes, membershipRule.

Arguments

ConsistencyLevel
string Indicates the requested consistency level. Documentation URL: https://docs.microsoft.com/graph/aad-advanced-queries
count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-onenote-notebook-sections Retrieve a list of onenoteSection objects from the specified notebook.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
notebookId required
string Value for the 'notebookId' path segment. Pass it under the name 'notebookId', not as 'id'. Use the 'id' field of the notebook object as returned by Microsoft Graph.
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-onenote-notebooks Retrieve a list of notebook objects.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-onenote-pages Retrieve a list of page objects. 💡 TIP: Lists all OneNote pages across every notebook and section the user has access to — transverse alternative to walking notebooks → sections → pages. Default returns top 20 ordered by lastModifiedTime desc. Supports $filter (e.g. lastModifiedTime gt 2026-01-01, or contains(tolower(title), 'topic') for title search), $top (max 100), $select, and $expand=parentNotebook,parentSection. Use this instead of bouncing through list-onenote-notebooks / list-all-onenote-sections / list-onenote-section-pages when you have a topic in mind.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-onenote-section-groups Retrieve a list of sectionGroup objects. 💡 TIP: Lists all OneNote section groups (subfolders inside notebooks that contain their own sections and nested section groups) for the user. A section group is a folder-like container — many notebooks use them to organize sections by theme. Default sort is name asc. Supports $expand=sections,sectionGroups,parentNotebook,parentSectionGroup to traverse the full hierarchy. Pair with list-onenote-notebooks for a complete picture of the user's notebook structure.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-onenote-section-pages Retrieve a list of page objects from the specified section.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
onenoteSectionId required
string Value for the 'onenoteSectionId' path segment. Pass it under the name 'onenoteSectionId', not as 'id'. Use the 'id' field of the onenote section object as returned by Microsoft Graph.
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-online-meetings Retrieve the properties and relationships of an onlineMeeting object. For example, you can: Teams live event attendee report (deprecated) and Teams live event recordings (deprecated) are online meeting artifacts. For more information, see Online meeting artifacts and permissions. 💡 TIP: Look up a meeting with $filter=JoinWebUrl eq '{url}', using the joinUrl from an event's onlineMeeting property. This filter is required: the collection cannot be listed or paged, and $search/$orderby are not supported. Without it Graph returns 400 InvalidArgument ('One of the required parameters to lookup meeting by QueryOptions is null or empty'). Returns the meeting ID needed for transcript access. The full meeting object is large and can include the invite HTML and the meeting passcode, so pass select=id,subject,joinWebUrl unless you need more.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-outlook-categories Get all the categories that have been defined for a user. 💡 TIP: Lists the user's Outlook categories (colored labels) used to tag messages, events, contacts, and tasks. Each category has displayName and color (preset0 through preset24, or 'none'). Use this to show available tags before applying via update-mail-message or update-calendar-event with body { categories: ['Category Name'] }.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-outlook-contacts Get a contact collection from the default contacts folder of the signed-in user. There are two scenarios where an app can get contacts in another user's contact folder: 💡 TIP: $filter only supports startswith() — contains() and eq on emailAddresses do not work. Use $search as alternative for broader matching.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-pinned-chat-messages Get a list of pinnedChatMessages in a chat.

Arguments

chatId required
string Value for the 'chatId' path segment. Pass it under the name 'chatId', not as 'id'. Use the 'id' field of the chat object as returned by Microsoft Graph.
count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-plan-buckets Retrieve a list of plannerBucket objects contained by a plannerPlan object.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
plannerPlanId required
string Value for the 'plannerPlanId' path segment. Pass it under the name 'plannerPlanId', not as 'id'. Use the 'id' field of the planner plan object as returned by Microsoft Graph.
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-plan-tasks Retrieve a list of plannerTask objects associated with a plannerPlan object. 💡 TIP: Priority is 0-10 (lower = higher priority); Planner's own UI presets are 1=Urgent, 3=Important, 5=Medium, 9=Low.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
plannerPlanId required
string Value for the 'plannerPlanId' path segment. Pass it under the name 'plannerPlanId', not as 'id'. Use the 'id' field of the planner plan object as returned by Microsoft Graph.
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-planner-task-messages [beta] Retrieve a list of plannerTaskChatMessage objects associated with a plannerTask. 💡 TIP: Lists messages in a Planner task's chat — the modern Planner 'task chat', distinct from the legacy conversationThreadId comments (which live in the M365 group conversation thread). Each message has id, content (HTML), createdBy, createdDateTime, mentions, reactions. BETA Graph API: subject to change; delegated work/school accounts only — no application permissions, no personal Microsoft accounts, global cloud only (not GCC/DoD/21Vianet).

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
plannerTaskId required
string Value for the 'plannerTaskId' path segment. Pass it under the name 'plannerTaskId', not as 'id'. Use the 'id' field of the planner task object as returned by Microsoft Graph.
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-planner-tasks Retrieve a list of plannertask objects assigned to a User. 💡 TIP: Priority is 0-10 (lower = higher priority); Planner's own UI presets are 1=Urgent, 3=Important, 5=Medium, 9=Low.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-relevant-people Retrieve a collection of person objects ordered by their relevance to the user, which is determined by the user's communication and collaboration patterns, and business relationships. You can get this information via the People API. For examples, see the Examples section and the article Use the People API to get information about the people most relevant to you. 💡 TIP: Lists people most relevant to the current user, ordered by relevance. Based on communication patterns, collaboration, and business relationships. Each person has displayName, scoredEmailAddresses, jobTitle, department, officeLocation. Use $search to find specific people by name. Use $top to limit results.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-room-list-rooms List the meeting rooms that belong to a room list. 💡 TIP: The place-id is the ID or email address of the room list (from get-room-list). Returns rooms with displayName, emailAddress, capacity, building, floorNumber, floorLabel, and AV equipment details. Combine with find-meeting-times to find available rooms for booking.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
placeId required
string Value for the 'placeId' path segment. Pass it under the name 'placeId', not as 'id'. Use the 'id' field of the place object as returned by Microsoft Graph.
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-sensitivity-labels List sensitivity labels. 💡 TIP: Lists Microsoft Information Protection (MIP) sensitivity labels available to the signed-in user. Use to map label IDs (returned by extract-drive-item-sensitivity-labels) to human-readable names. Not supported for personal Microsoft accounts.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-shared-calendar-events List events in another user's default calendar. The user-id is the calendar owner's ID or email address, and delegated access to that calendar is required. Recurring events are returned as a single series master, not expanded into occurrences - use get-shared-calendar-view for that.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
timezone
string IANA timezone name (e.g., "America/New_York", "Europe/London", "Asia/Tokyo") for calendar event times. If not specified, times are returned in UTC.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
userId required
string Value for the 'userId' path segment. Pass it under the name 'userId', not as 'id'. Use the 'id' field of the user object as returned by Microsoft Graph.
list-shared-mailbox-attachments List the attachments on a message in another user's mailbox or a shared mailbox. The user-id is the mailbox owner's ID or email address, and delegated access to that mailbox is required. 💡 TIP: To download the bytes, call download-bytes or get-download-url with target=/users/{user-id}/messages/{message-id}/attachments/{attachment-id}/$value.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
messageId required
string Value for the 'messageId' path segment. Pass it under the name 'messageId', not as 'id'. Use the 'id' field of the message object as returned by Microsoft Graph.
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
userId required
string Value for the 'userId' path segment. Pass it under the name 'userId', not as 'id'. Use the 'id' field of the user object as returned by Microsoft Graph.
list-shared-mailbox-child-folders List the child folders of a mail folder in another user's mailbox or a shared mailbox. The user-id is the mailbox owner's ID or email address, and delegated access to that mailbox is required.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
includeHiddenFolders
string Include Hidden Folders
mailFolderId required
string Value for the 'mailFolderId' path segment. Pass it under the name 'mailFolderId', not as 'id'. Use the 'id' field of the mail folder object as returned by Microsoft Graph.
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
userId required
string Value for the 'userId' path segment. Pass it under the name 'userId', not as 'id'. Use the 'id' field of the user object as returned by Microsoft Graph.
list-shared-mailbox-folder-messages The collection of messages in the mailFolder. 💡 TIP: CRITICAL: When searching emails, the $search parameter value MUST be wrapped in double quotes. Format: $search="your search query here". Use KQL (Keyword Query Language) syntax to search specific properties: 'from:', 'subject:', 'body:', 'to:', 'cc:', 'bcc:', 'attachment:', 'hasAttachments:', 'importance:', 'received:', 'sent:'. Examples: $search="from:[email protected]" | $search="subject:meeting AND hasAttachments:true" | $search="body:urgent AND received>=2024-01-01" | $search="from:alice AND importance:high". Remember: ALWAYS wrap the entire search expression in double quotes! Reference: https://learn.microsoft.com/en-us/graph/search-query-parameter IMPORTANT: Always use $select to limit returned fields and reduce response size. Recommended default: $select=id,subject,from,toRecipients,receivedDateTime,bodyPreview,isRead,hasAttachments. Use bodyPreview instead of body for listings. To read the full email body, use get-shared-mailbox-message with the specific message id.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
mailFolderId required
string Value for the 'mailFolderId' path segment. Pass it under the name 'mailFolderId', not as 'id'. Use the 'id' field of the mail folder object as returned by Microsoft Graph.
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
userId required
string Value for the 'userId' path segment. Pass it under the name 'userId', not as 'id'. Use the 'id' field of the user object as returned by Microsoft Graph.
list-shared-mailbox-folders List the top-level mail folders in another user's mailbox or a shared mailbox. The user-id is the mailbox owner's ID or email address, and delegated access to that mailbox is required.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
includeHiddenFolders
string Include Hidden Folders
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
userId required
string Value for the 'userId' path segment. Pass it under the name 'userId', not as 'id'. Use the 'id' field of the user object as returned by Microsoft Graph.
list-shared-mailbox-messages The messages in a mailbox or folder. Read-only. Nullable. 💡 TIP: CRITICAL: When searching emails, the $search parameter value MUST be wrapped in double quotes. Format: $search="your search query here". Use KQL (Keyword Query Language) syntax to search specific properties: 'from:', 'subject:', 'body:', 'to:', 'cc:', 'bcc:', 'attachment:', 'hasAttachments:', 'importance:', 'received:', 'sent:'. Examples: $search="from:[email protected]" | $search="subject:meeting AND hasAttachments:true" | $search="body:urgent AND received>=2024-01-01" | $search="from:alice AND importance:high". Remember: ALWAYS wrap the entire search expression in double quotes! Reference: https://learn.microsoft.com/en-us/graph/search-query-parameter IMPORTANT: Always use $select to limit returned fields and reduce response size. Recommended default: $select=id,subject,from,toRecipients,receivedDateTime,bodyPreview,isRead,hasAttachments. Use bodyPreview instead of body for listings. To read the full email body, use get-shared-mailbox-message with the specific message id.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
includeHiddenMessages
string Include Hidden Messages
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
userId required
string Value for the 'userId' path segment. Pass it under the name 'userId', not as 'id'. Use the 'id' field of the user object as returned by Microsoft Graph.
list-sharepoint-list-columns Get the collection of columns represented as columnDefinition resources in a list. 💡 TIP: Lists column definitions for a SharePoint list. Returns each column's id, name, displayName, description, type indicator (text, number, choice, dateTime, person, lookup, boolean, calculated, hyperlinkOrPicture, etc.), required, indexed, hidden, readOnly. Use this to discover the schema before creating or updating list items.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
listId required
string Value for the 'listId' path segment. Pass it under the name 'listId', not as 'id'. Use the 'id' field of the list object as returned by Microsoft Graph.
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
siteId required
string Value for the 'siteId' path segment. Pass it under the name 'siteId', not as 'id'. Use the 'id' field of the site object as returned by Microsoft Graph.
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-sharepoint-site-drives The collection of drives (document libraries) under this site.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
siteId required
string Value for the 'siteId' path segment. Pass it under the name 'siteId', not as 'id'. Use the 'id' field of the site object as returned by Microsoft Graph.
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-sharepoint-site-items Used to address any item contained in this site. This collection can't be enumerated.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
siteId required
string Value for the 'siteId' path segment. Pass it under the name 'siteId', not as 'id'. Use the 'id' field of the site object as returned by Microsoft Graph.
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-sharepoint-site-list-items Get the collection of items in a list. 💡 TIP: Add $expand=fields to include actual column values. Without it, only metadata is returned.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
listId required
string Value for the 'listId' path segment. Pass it under the name 'listId', not as 'id'. Use the 'id' field of the list object as returned by Microsoft Graph.
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
siteId required
string Value for the 'siteId' path segment. Pass it under the name 'siteId', not as 'id'. Use the 'id' field of the site object as returned by Microsoft Graph.
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-sharepoint-site-lists Get the collection of lists for a site. Lists with the system facet are hidden by default. To list them, include system in your $select statement.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
siteId required
string Value for the 'siteId' path segment. Pass it under the name 'siteId', not as 'id'. Use the 'id' field of the site object as returned by Microsoft Graph.
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-sharepoint-site-onenote-notebook-section-groups The section groups in the notebook. Read-only. Nullable.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
notebookId required
string Value for the 'notebookId' path segment. Pass it under the name 'notebookId', not as 'id'. Use the 'id' field of the notebook object as returned by Microsoft Graph.
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
siteId required
string Value for the 'siteId' path segment. Pass it under the name 'siteId', not as 'id'. Use the 'id' field of the site object as returned by Microsoft Graph.
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-sharepoint-site-onenote-notebook-sections The sections in the notebook. Read-only. Nullable.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
notebookId required
string Value for the 'notebookId' path segment. Pass it under the name 'notebookId', not as 'id'. Use the 'id' field of the notebook object as returned by Microsoft Graph.
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
siteId required
string Value for the 'siteId' path segment. Pass it under the name 'siteId', not as 'id'. Use the 'id' field of the site object as returned by Microsoft Graph.
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-sharepoint-site-onenote-notebooks The collection of OneNote notebooks that are owned by the user or group. Read-only. Nullable.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
siteId required
string Value for the 'siteId' path segment. Pass it under the name 'siteId', not as 'id'. Use the 'id' field of the site object as returned by Microsoft Graph.
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-sharepoint-site-onenote-section-group-section-groups The section groups in the section. Read-only. Nullable.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
sectionGroupId required
string Value for the 'sectionGroupId' path segment. Pass it under the name 'sectionGroupId', not as 'id'. Use the 'id' field of the section group object as returned by Microsoft Graph.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
siteId required
string Value for the 'siteId' path segment. Pass it under the name 'siteId', not as 'id'. Use the 'id' field of the site object as returned by Microsoft Graph.
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-sharepoint-site-onenote-section-group-sections The sections in the section group. Read-only. Nullable.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
sectionGroupId required
string Value for the 'sectionGroupId' path segment. Pass it under the name 'sectionGroupId', not as 'id'. Use the 'id' field of the section group object as returned by Microsoft Graph.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
siteId required
string Value for the 'siteId' path segment. Pass it under the name 'siteId', not as 'id'. Use the 'id' field of the site object as returned by Microsoft Graph.
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-sharepoint-site-onenote-section-pages The collection of pages in the section. Read-only. Nullable.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
onenoteSectionId required
string Value for the 'onenoteSectionId' path segment. Pass it under the name 'onenoteSectionId', not as 'id'. Use the 'id' field of the onenote section object as returned by Microsoft Graph.
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
siteId required
string Value for the 'siteId' path segment. Pass it under the name 'siteId', not as 'id'. Use the 'id' field of the site object as returned by Microsoft Graph.
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-specific-calendar-events List events from one of the signed-in user's calendars, addressed by calendar ID. 💡 TIP: WARNING: Does NOT expand recurring events — only returns seriesMaster. Use get-specific-calendar-view instead.

Arguments

calendarId required
string Value 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.
count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
expandExtendedProperties
boolean When true, expands singleValueExtendedProperties on each event. Use this to retrieve custom extended properties (e.g., sync metadata) stored on calendar events.
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
timezone
string IANA timezone name (e.g., "America/New_York", "Europe/London", "Asia/Tokyo") for calendar event times. If not specified, times are returned in UTC.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-subscriptions Retrieve the properties and relationships of webhook subscriptions, based on the app ID, the user, and the user's role with a tenant. The content of the response depends on the context in which the app is calling; for details, see the scenarios in the Permissions section. 💡 TIP: Lists webhook subscriptions owned by the current app/user. Returns id, resource, changeType, notificationUrl, expirationDateTime, clientState. Use $filter=resource eq '/me/messages' to find subscriptions for a specific resource. No dedicated 'Subscription.*' scope exists — the caller must already have a read permission for the subscribed resource (e.g. Mail.Read for /me/messages), which is supplied by the tool that reads that resource.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-supported-languages Get the list of locales and languages that are supported for the user, as configured on the user's mailbox server. When setting up an Outlook client, the user selects the preferred language from this supported list. You can subsequently get the preferred language by getting the user's mailbox settings. 💡 TIP: Lists locales and languages the user's mailbox server supports for the Outlook UI and message rendering. Returns localeInfo objects with locale (e.g. 'en-US') and displayName ('English (United States)'). Use this to validate the locale value before calling update-mailbox-settings to change the user's preferred language.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-supported-time-zones Get the list of time zones that are supported for the user, as configured on the user's mailbox server. You can explicitly specify to have time zones returned in the Windows time zone format or Internet Assigned Numbers Authority (IANA) time zone (also known as Olson time zone) format. The Windows format is the default. When setting up an Outlook client, the user selects the preferred time zone from this supported list. You can subsequently get the preferred time zone by getting the user's mailbox settings. 💡 TIP: Lists time zones the user's mailbox server supports. TimeZoneStandard path parameter must be one of: Windows (default — Windows time zone names like 'Pacific Standard Time'), or Iana (IANA / Olson names like 'America/Los_Angeles'). Note the PascalCase — the values are case-sensitive enums, not lowercase strings. Returns timeZoneInformation objects with alias and displayName. Use the result to validate or look up the value before calling update-mailbox-settings to change the user's preferred timeZone, or before setting timeZone on a calendar event's start/end (especially for recurring events) — don't guess a time zone name from memory, look it up here.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
TimeZoneStandard required
string Value for the 'TimeZoneStandard' path segment.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-team-channels Retrieve the list of channels in this team.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
teamId required
string Value for the 'teamId' path segment. Pass it under the name 'teamId', not as 'id'. Use the 'id' field of the team object as returned by Microsoft Graph.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-team-members Get the conversationMember collection of a team. The membership IDs returned by the server must be treated as opaque strings. The client shouldn't try to parse or make assumptions about these resource IDs. In the future, membership results can include users from various tenants, as indicated in the response. Clients should avoid assuming that all members exclusively belong to the current tenant. 💡 TIP: Lists members of a team. Each member has displayName, email, roles and userId. Pass name to keep only members whose displayName or email contains that text (case-insensitive); use the returned userId in an @mention.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
name
string Case-insensitive text to match against each member's displayName and email. Applied after $select projection, so only fields you can see are matched. Without fetchAllPages only the fetched page is filtered, and @odata.count still reports the unfiltered total.
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
teamId required
string Value for the 'teamId' path segment. Pass it under the name 'teamId', not as 'id'. Use the 'id' field of the team object as returned by Microsoft Graph.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-todo-checklist-items Get the checklistItem resources associated to a todoTask from the checklistItems navigation property. 💡 TIP: Lists the steps (checklist items) of a To Do task. Each item has id, displayName, isChecked, checkedDateTime, and createdDateTime. Graph supports no OData query parameters on this endpoint, so do not pass select, filter, orderby, or top. Requires todoTaskListId from list-todo-task-lists and todoTaskId from list-todo-tasks.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
todoTaskId required
string Value for the 'todoTaskId' path segment. Pass it under the name 'todoTaskId', not as 'id'. Use the 'id' field of the todo task object as returned by Microsoft Graph.
todoTaskListId required
string Value for the 'todoTaskListId' path segment. Pass it under the name 'todoTaskListId', not as 'id'. Use the 'id' field of the todo task list object as returned by Microsoft Graph.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-todo-linked-resources Get information of one or more items in a partner application, based on which a specified task was created. The information is represented in a linkedResource object for each item. It includes an external ID for the item in the partner application, and if applicable, a deep link to that item in the application. 💡 TIP: Lists resources linked to a To Do task (emails, URLs, etc.). Each linked resource has displayName, webUrl, applicationName, and externalId.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
todoTaskId required
string Value for the 'todoTaskId' path segment. Pass it under the name 'todoTaskId', not as 'id'. Use the 'id' field of the todo task object as returned by Microsoft Graph.
todoTaskListId required
string Value for the 'todoTaskListId' path segment. Pass it under the name 'todoTaskListId', not as 'id'. Use the 'id' field of the todo task list object as returned by Microsoft Graph.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-todo-task-lists Get a list of the todoTaskList objects and their properties. 💡 TIP: Lists all To Do task lists. Returns todoTaskList-id needed for all task operations. The default list is typically called 'Tasks'. NOTE: $select is NOT supported by this endpoint — do not pass select parameter, Graph returns 400.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-todo-tasks Get the todoTask resources from the tasks navigation property of a specified todoTaskList. 💡 TIP: Lists tasks in a To Do list. Requires todoTaskList-id — use list-todo-task-lists to find it. NOTE: $select is NOT supported — do not pass select, Graph returns 400. Use $filter=status eq 'notStarted' or $filter=status eq 'completed' to filter by status. Use $top to limit results. Status values: 'notStarted', 'inProgress', 'completed', 'waitingOnOthers', 'deferred'.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
todoTaskListId required
string Value for the 'todoTaskListId' path segment. Pass it under the name 'todoTaskListId', not as 'id'. Use the 'id' field of the todo task list object as returned by Microsoft Graph.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-trending-insights Calculated insight that includes a list of documents trending around the user. 💡 TIP: Lists documents trending around the current user. Each item has resourceVisualization (title, type, previewImageUrl, containerDisplayName), resourceReference (webUrl, id, type), and weight (relevance score). Use $filter=resourceVisualization/type eq 'PowerPoint' to filter by file type. Use $orderby=weight/value desc to sort by relevance.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-user-direct-reports Get an agentUser's direct reports. Returns the users and contacts for whom this agent user is assigned as manager. 💡 TIP: Lists users who report directly to a specific user. Use with get-user-manager to traverse the org hierarchy.

Arguments

ConsistencyLevel
string Indicates the requested consistency level. Documentation URL: https://docs.microsoft.com/graph/aad-advanced-queries
count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
userId required
string Value for the 'userId' path segment. Pass it under the name 'userId', not as 'id'. Use the 'id' field of the user object as returned by Microsoft Graph.
list-users Retrieve a list of user objects. 💡 TIP: CRITICAL: This request requires the ConsistencyLevel header set to eventual. When searching users, the $search parameter value MUST be wrapped in double quotes. Format: $search="your search query here". Use KQL (Keyword Query Language) syntax to search specific properties: 'displayName:'. Examples: $search="displayName:john" | $search="displayName:john" OR "displayName:jane". Remember: ALWAYS wrap the entire search expression in double quotes and set the ConsistencyLevel header to eventual! Reference: https://learn.microsoft.com/en-us/graph/search-query-parameter

Arguments

ConsistencyLevel
string Indicates the requested consistency level. Documentation URL: https://docs.microsoft.com/graph/aad-advanced-queries
count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
list-webinar-sessions Get a list of all virtualEventSession summary objects under a virtual event. A session summary contains only the endDateTime, id, joinWebUrl, startDateTime, and subject of a virtual event session. The rest of session properties will be null. Currently, the following virtual event types are supported: - virtualEventTownhall - virtualEventWebinar 💡 TIP: Lists sessions for a webinar. Each session has startDateTime, endDateTime, joinWebUrl, subject, and is essentially an online meeting associated with the webinar.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
virtualEventWebinarId required
string Value for the 'virtualEventWebinarId' path segment. Pass it under the name 'virtualEventWebinarId', not as 'id'. Use the 'id' field of the virtual event webinar object as returned by Microsoft Graph.
login Authenticate with Microsoft account

Arguments

force
boolean Force a new login even if already logged in Default: false
logout Log out from Microsoft account
merge-excel-range Merge an Excel range. 💡 TIP: Merge the cells in the given range into a single cell. Body: { across: false } merges the entire range into one cell; { across: true } merges each row separately. Useful for building styled headers, banner rows, and report layouts.

Arguments

address required
string Value for the 'address' path segment.
body required
object
confirm
boolean 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.
driveId required
string Value for the 'driveId' path segment. Pass it under the name 'driveId', not as 'id'. Use the 'id' field of the drive object as returned by Microsoft Graph.
driveItemId required
string Value for the 'driveItemId' path segment. Pass it under the name 'driveItemId', not as 'id'. Use the 'id' field of the drive item object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
workbookWorksheetId required
string Value for the 'workbookWorksheetId' path segment. Pass it under the name 'workbookWorksheetId', not as 'id'. Use the 'id' field of the workbook worksheet object as returned by Microsoft Graph.
move-mail-message Move a message to another folder within the specified user's mailbox. This creates a new copy of the message in the destination folder and removes the original message. 💡 TIP: destinationId accepts folder ID or well-known name (inbox, drafts, sentitems, deleteditems, junkemail, archive).

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
messageId required
string Value for the 'messageId' path segment. Pass it under the name 'messageId', not as 'id'. Use the 'id' field of the message object as returned by Microsoft Graph.
move-rename-onedrive-item Move or rename a OneDrive item. 💡 TIP: Move and/or rename a file or folder. To move, provide parentReference with the target folder's id. To rename, provide a new name. Both can be done in a single request.

Arguments

body required
object
confirm
boolean 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.
driveId required
string Value for the 'driveId' path segment. Pass it under the name 'driveId', not as 'id'. Use the 'id' field of the drive object as returned by Microsoft Graph.
driveItemId required
string Value for the 'driveItemId' path segment. Pass it under the name 'driveItemId', not as 'id'. Use the 'id' field of the drive item object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
move-shared-mailbox-message Move a message in another user's mailbox or a shared mailbox to a different folder. The user-id is the mailbox owner's ID or email address, and delegated access to that mailbox is required. 💡 TIP: destinationId accepts folder ID or well-known name (inbox, drafts, sentitems, deleteditems, junkemail, archive).

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
messageId required
string Value for the 'messageId' path segment. Pass it under the name 'messageId', not as 'id'. Use the 'id' field of the message object as returned by Microsoft Graph.
userId required
string Value for the 'userId' path segment. Pass it under the name 'userId', not as 'id'. Use the 'id' field of the user object as returned by Microsoft Graph.
parse-teams-url Converts any Teams meeting URL format (short /meet/, full /meetup-join/, or recap ?threadId=) into a standard joinWebUrl. Use this before list-online-meetings when the user provides a recap or short URL.

Arguments

url required
string Teams meeting URL in any format
pin-chat-message Pin a chat message in the specified chat. This API cannot create a new chat; you must use the list chats method to retrieve the ID of an existing chat before you can pin a chat message.

Arguments

body required
object
chatId required
string Value for the 'chatId' path segment. Pass it under the name 'chatId', not as 'id'. Use the 'id' field of the chat object as returned by Microsoft Graph.
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
reauthorize-subscription Reauthorize a subscription when you receive a reauthorizationRequired challenge. 💡 TIP: Reauthorizes a subscription after receiving a 'reauthorizationRequired' lifecycle notification from Microsoft Graph. No body required. Must be called within the reauthorizationRequiredDateTime window (typically 48h) to avoid subscription expiry.

Arguments

confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
subscriptionId required
string Value for the 'subscriptionId' path segment. Pass it under the name 'subscriptionId', not as 'id'. Use the 'id' field of the subscription object as returned by Microsoft Graph.
remove-account Remove a Microsoft account from the cache. Accepts email address (e.g. [email protected]) or account ID. Use list-accounts to discover available accounts.

Arguments

account required
string Email address or account ID of the account to remove
remove-group-member Remove a member from a group via the members navigation property. You can't remove a member from groups with dynamic memberships. 💡 TIP: Removes a member from a group. Use list-group-members to find the member's directory object ID first. Cannot remove the last owner of a group.

Arguments

confirm
boolean 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.
directoryObjectId required
string Value for the 'directoryObjectId' path segment. Pass it under the name 'directoryObjectId', not as 'id'. Use the 'id' field of the directory object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
groupId required
string Value for the 'groupId' path segment. Pass it under the name 'groupId', not as 'id'. Use the 'id' field of the group object as returned by Microsoft Graph.
If-Match
string ETag
includeHeaders
boolean Include response headers (including ETag) in the response metadata
remove-group-owner Remove an owner from a Microsoft 365 group or a security group through the owners navigation property. Once owners are assigned to a group, the last owner (a user object) of the group cannot be removed. 💡 TIP: Removes an owner from a group. A group must have at least one owner — this call fails if you try to remove the last owner. Use list-group-owners to find the owner's ID.

Arguments

confirm
boolean 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.
directoryObjectId required
string Value for the 'directoryObjectId' path segment. Pass it under the name 'directoryObjectId', not as 'id'. Use the 'id' field of the directory object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
groupId required
string Value for the 'groupId' path segment. Pass it under the name 'groupId', not as 'id'. Use the 'id' field of the group object as returned by Microsoft Graph.
If-Match
string ETag
includeHeaders
boolean Include response headers (including ETag) in the response metadata
remove-team-member Remove a conversationMember from a team.

Arguments

confirm
boolean 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.
conversationMemberId required
string Value for the 'conversationMemberId' path segment. Pass it under the name 'conversationMemberId', not as 'id'. Use the 'id' field of the conversation member object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
If-Match
string ETag
includeHeaders
boolean Include response headers (including ETag) in the response metadata
teamId required
string Value for the 'teamId' path segment. Pass it under the name 'teamId', not as 'id'. Use the 'id' field of the team object as returned by Microsoft Graph.
reply-all-mail-message Reply to all recipients of a message using either JSON or MIME format. When using JSON format: - Specify either a comment or the body property of the message parameter. Specifying both will return an HTTP 400 Bad Request error. - If the original message specifies a recipient in the replyTo property, per Internet Message Format (RFC 2822), send the reply to the recipients in replyTo and not the recipient in the from property. When using MIME format: - Provide the applicable Internet message headers and the MIME content, all encoded in base64 format in the request body. - Add any attachments and S/MIME properties to the MIME content. This method saves the message in the Sent Items folder. Alternatively, create a draft to reply-all to a message and send it later. 💡 TIP: Reply-all preserving full HTML formatting. The 'comment' field is your reply text.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
messageId required
string Value for the 'messageId' path segment. Pass it under the name 'messageId', not as 'id'. Use the 'id' field of the message object as returned by Microsoft Graph.
reply-all-shared-mailbox-mail Reply to all recipients of a message using either JSON or MIME format. When using JSON format: - Specify either a comment or the body property of the message parameter. Specifying both will return an HTTP 400 Bad Request error. - If the original message specifies a recipient in the replyTo property, per Internet Message Format (RFC 2822), send the reply to the recipients in replyTo and not the recipient in the from property. When using MIME format: - Provide the applicable Internet message headers and the MIME content, all encoded in base64 format in the request body. - Add any attachments and S/MIME properties to the MIME content. This method saves the message in the Sent Items folder. Alternatively, create a draft to reply-all to a message and send it later. 💡 TIP: Reply-all to a message from a shared mailbox preserving full HTML formatting and conversation thread. The 'user-id' is the shared mailbox email address. The 'comment' field is your reply text. Requires Send As permission on the shared mailbox in Exchange.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
messageId required
string Value for the 'messageId' path segment. Pass it under the name 'messageId', not as 'id'. Use the 'id' field of the message object as returned by Microsoft Graph.
userId required
string Value for the 'userId' path segment. Pass it under the name 'userId', not as 'id'. Use the 'id' field of the user object as returned by Microsoft Graph.
reply-mail-message Reply to the sender of a message using either JSON or MIME format. When using JSON format: * Specify either a comment or the body property of the message parameter. Specifying both will return an HTTP 400 Bad Request error. * If the original message specifies a recipient in the replyTo property, per Internet Message Format (RFC 2822), send the reply to the recipients in replyTo and not the recipient in the from property. When using MIME format: - Provide the applicable Internet message headers and the MIME content, all encoded in base64 format in the request body. - Add any attachments and S/MIME properties to the MIME content. This method saves the message in the Sent Items folder. Alternatively, create a draft to reply to an existing message and send it later. 💡 TIP: Reply to an email preserving full HTML formatting. The 'comment' field is your reply text. Do NOT reconstruct the email manually.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
messageId required
string Value for the 'messageId' path segment. Pass it under the name 'messageId', not as 'id'. Use the 'id' field of the message object as returned by Microsoft Graph.
reply-shared-mailbox-mail Reply to the sender of a message using either JSON or MIME format. When using JSON format: * Specify either a comment or the body property of the message parameter. Specifying both will return an HTTP 400 Bad Request error. * If the original message specifies a recipient in the replyTo property, per Internet Message Format (RFC 2822), send the reply to the recipients in replyTo and not the recipient in the from property. When using MIME format: - Provide the applicable Internet message headers and the MIME content, all encoded in base64 format in the request body. - Add any attachments and S/MIME properties to the MIME content. This method saves the message in the Sent Items folder. Alternatively, create a draft to reply to an existing message and send it later. 💡 TIP: Reply to a message from a shared mailbox preserving full HTML formatting and conversation thread. The 'user-id' is the shared mailbox email address (e.g. [email protected]). The 'comment' field is your reply text. Do NOT reconstruct the email manually. Requires Send As permission on the shared mailbox in Exchange.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
messageId required
string Value for the 'messageId' path segment. Pass it under the name 'messageId', not as 'id'. Use the 'id' field of the message object as returned by Microsoft Graph.
userId required
string Value for the 'userId' path segment. Pass it under the name 'userId', not as 'id'. Use the 'id' field of the user object as returned by Microsoft Graph.
reply-to-channel-message Create a new reply to a chatMessage in a specified channel. 💡 TIP: To @mention someone, put <at user-id="<aad-user-id>">Display Name</at> in the html content; the server numbers the tag and builds the mentions array. Use the userId field (not id) from list-team-members or list-chat-members. Use contentType 'html' in the body — plain text contentType gets mangled by Graph API. Alternatively, hand-build the raw form: put an <at id="0">Name</at> tag in the html content and add a mentions array to the request body, as a sibling of the body property (not a separate top-level tool parameter): { body: { contentType: 'html', content: 'Hi <at id="0">Name</at>' }, mentions: [{ id: 0, mentionText: 'Name', mentioned: { user: { id: '<aad-user-id>', displayName: 'Name', userIdentityType: 'aadUser' } } }] }. Each mention id must match its <at id> value; include userIdentityType: 'aadUser' or Graph returns 400 'value without a type name'.

Arguments

body required
object
channelId required
string Value for the 'channelId' path segment. Pass it under the name 'channelId', not as 'id'. Use the 'id' field of the channel object as returned by Microsoft Graph.
chatMessageId required
string Value for the 'chatMessageId' path segment. Pass it under the name 'chatMessageId', not as 'id'. Use the 'id' field of the chat message object as returned by Microsoft Graph.
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
teamId required
string Value for the 'teamId' path segment. Pass it under the name 'teamId', not as 'id'. Use the 'id' field of the team object as returned by Microsoft Graph.
reply-to-chat-message Reply to a chat message. 💡 TIP: To @mention someone, put <at user-id="<aad-user-id>">Display Name</at> in the html content; the server numbers the tag and builds the mentions array. Use the userId field (not id) from list-team-members or list-chat-members. Use contentType 'html' in the body — plain text contentType gets mangled by Graph API. Alternatively, hand-build the raw form: put an <at id="0">Name</at> tag in the html content and add a mentions array to the request body, as a sibling of the body property (not a separate top-level tool parameter): { body: { contentType: 'html', content: 'Hi <at id="0">Name</at>' }, mentions: [{ id: 0, mentionText: 'Name', mentioned: { user: { id: '<aad-user-id>', displayName: 'Name', userIdentityType: 'aadUser' } } }] }. Each mention id must match its <at id> value; include userIdentityType: 'aadUser' or Graph returns 400 'value without a type name'.

Arguments

body required
object
chatId required
string Value for the 'chatId' path segment. Pass it under the name 'chatId', not as 'id'. Use the 'id' field of the chat object as returned by Microsoft Graph.
chatMessageId required
string Value for the 'chatMessageId' path segment. Pass it under the name 'chatMessageId', not as 'id'. Use the 'id' field of the chat message object as returned by Microsoft Graph.
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
reply-to-group-thread Reply to a conversation thread in a Microsoft 365 group, adding a new post to the thread. Use list-group-threads to obtain the thread ID. 💡 TIP: Legacy — Microsoft recommends Teams channels instead of group threads.

Arguments

body required
object
confirm
boolean 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.
conversationThreadId required
string Value for the 'conversationThreadId' path segment. Pass it under the name 'conversationThreadId', not as 'id'. Use the 'id' field of the conversation thread object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
groupId required
string Value for the 'groupId' path segment. Pass it under the name 'groupId', not as 'id'. Use the 'id' field of the group object as returned by Microsoft Graph.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
search-onedrive-files Search the hierarchy of items for items matching a query. You can search within a folder hierarchy, a whole drive, or files shared with the current user. 💡 TIP: Searches for files in a drive by name or content. The q parameter searches file names, metadata, and file content. Returns matching driveItems with id, name, webUrl, size, lastModifiedDateTime. Use list-drives first to get the drive-id.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
driveId required
string Value for the 'driveId' path segment. Pass it under the name 'driveId', not as 'id'. Use the 'id' field of the drive object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
q required
string Value for the 'q' path segment.
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
search-query Runs the query specified in the request body. Search results are provided in the response.

Arguments

body required
object
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
search-sharepoint-sites List all available sites in an organization. Specific filter criteria and query options are also supported and described below: In addition, you can use a $search query against the /sites collection to find sites matching given keywords. If you want to list all sites across all geographies, refer to getAllSites. For more guidance about building applications that use site discovery for scanning purposes, see Best practices for discovering files and detecting changes at scale.

Arguments

count
boolean Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains(). The response then includes @odata.count, the total for the filtered collection, which can exceed the items returned when fetchAllPages hits its page/item cap.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
expand
Navigation properties to inline, e.g. attachments on a message or event. Only navigation properties can be expanded: expanding a non-navigation property such as a message body fails with "Parsing OData Select and Expand failed". Request ordinary fields with $select instead. Some APIs accept only one relationship per request, so prefer a single value. Some relationships support nested selection, e.g. children($select=id,name).
fetchAllPages
boolean Follow @odata.nextLink and merge up to 100 pages into one response. Can return enormous payloads—only when the user explicitly needs a full export. Prefer a small $top first, then paginate or narrow with $filter/$search.
filter
string OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
orderby
Sort expression, e.g. receivedDateTime desc
search
string KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.
select
Comma-separated fields to return, e.g. id,subject,from,receivedDateTime
skip
integer Items to skip for pagination. Not supported with $search.
skiptoken
string Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.
top
integer Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. Use $select to return fewer fields per item. For more rows, use @odata.nextLink from the response instead of a very large $top.
select-account Select a Microsoft account as the default. Accepts email address (e.g. [email protected]) or account ID. Use list-accounts to discover available accounts.

Arguments

account required
string Email address or account ID of the account to select
send-channel-message Send a new chatMessage in the specified channel. 💡 TIP: To @mention someone, put <at user-id="<aad-user-id>">Display Name</at> in the html content; the server numbers the tag and builds the mentions array. Use the userId field (not id) from list-team-members or list-chat-members. Use contentType 'html' in the body — plain text contentType gets mangled by Graph API. Alternatively, hand-build the raw form: put an <at id="0">Name</at> tag in the html content and add a mentions array to the request body, as a sibling of the body property (not a separate top-level tool parameter): { body: { contentType: 'html', content: 'Hi <at id="0">Name</at>' }, mentions: [{ id: 0, mentionText: 'Name', mentioned: { user: { id: '<aad-user-id>', displayName: 'Name', userIdentityType: 'aadUser' } } }] }. Each mention id must match its <at id> value; include userIdentityType: 'aadUser' or Graph returns 400 'value without a type name'.

Arguments

body required
object
channelId required
string Value for the 'channelId' path segment. Pass it under the name 'channelId', not as 'id'. Use the 'id' field of the channel object as returned by Microsoft Graph.
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
teamId required
string Value for the 'teamId' path segment. Pass it under the name 'teamId', not as 'id'. Use the 'id' field of the team object as returned by Microsoft Graph.
send-chat-message Send a new chatMessage in the specified chat. This API can't create a new chat; you must use the list chats method to retrieve the ID of an existing chat before you can create a chat message. 💡 TIP: To @mention someone, put <at user-id="<aad-user-id>">Display Name</at> in the html content; the server numbers the tag and builds the mentions array. Use the userId field (not id) from list-team-members or list-chat-members. Use contentType 'html' in the body — plain text contentType gets mangled by Graph API. Alternatively, hand-build the raw form: put an <at id="0">Name</at> tag in the html content and add a mentions array to the request body, as a sibling of the body property (not a separate top-level tool parameter): { body: { contentType: 'html', content: 'Hi <at id="0">Name</at>' }, mentions: [{ id: 0, mentionText: 'Name', mentioned: { user: { id: '<aad-user-id>', displayName: 'Name', userIdentityType: 'aadUser' } } }] }. Each mention id must match its <at id> value; include userIdentityType: 'aadUser' or Graph returns 400 'value without a type name'.

Arguments

body required
object
chatId required
string Value for the 'chatId' path segment. Pass it under the name 'chatId', not as 'id'. Use the 'id' field of the chat object as returned by Microsoft Graph.
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
send-draft-message Send an existing draft message. The draft message can be a new message draft, reply draft, reply-all draft, or a forward draft. This method saves the message in the Sent Items folder. Alternatively, send a new message in a single operation. 💡 TIP: No request body needed — just call with the message ID. Draft must exist in Drafts folder.

Arguments

confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
messageId required
string Value for the 'messageId' path segment. Pass it under the name 'messageId', not as 'id'. Use the 'id' field of the message object as returned by Microsoft Graph.
send-mail Send the message specified in the request body using either JSON or MIME format. When using JSON format, you can include a file attachment in the same sendMail action call. When using MIME format: This method saves the message in the Sent Items folder. Alternatively, create a draft message to send later. To learn more about the steps involved in the backend before a mail is delivered to recipients, see here. 💡 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.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
send-my-activity-notification Send an activity feed notification to a user. For more information, see sending Teams activity notifications. 💡 TIP: Sends a Teams activity feed notification to the current user (the badge + entry in their Activity tab). Body: { topic: { source: 'entityUrl' | 'text', value: <Graph URL or plain text>, webUrl: <required when source='text', click-through URL> }, activityType: <must be declared in the calling Teams app's manifest, OR the reserved 'systemDefault' which provides free-form Actor+Reason text>, previewText: { content: 'short preview' }, templateParameters?: [{ name, value }] (substituted into the manifest's localized notification template), teamsAppId?: <optional disambiguator when multiple installed apps share a Microsoft Entra app ID — fetch via list-my-installed-teams-apps>, chainId?, iconId? }. Use to ping the user with 'action required' notifications from agentic workflows. See https://learn.microsoft.com/graph/teams-send-activityfeednotifications.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
send-shared-mailbox-draft Send an existing draft message. The draft message can be a new message draft, reply draft, reply-all draft, or a forward draft. This method saves the message in the Sent Items folder. Alternatively, send a new message in a single operation. 💡 TIP: Send an existing draft from a shared mailbox. No request body needed — just call with the message ID and the shared mailbox user-id. Draft must exist in the shared mailbox's Drafts folder. Requires Send As permission on the shared mailbox in Exchange.

Arguments

confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
messageId required
string Value for the 'messageId' path segment. Pass it under the name 'messageId', not as 'id'. Use the 'id' field of the message object as returned by Microsoft Graph.
userId required
string Value for the 'userId' path segment. Pass it under the name 'userId', not as 'id'. Use the 'id' field of the user object as returned by Microsoft Graph.
send-shared-mailbox-mail Send the message specified in the request body using either JSON or MIME format. When using JSON format, you can include a file attachment in the same sendMail action call. When using MIME format: This method saves the message in the Sent Items folder. Alternatively, create a draft message to send later. To learn more about the steps involved in the backend before a mail is delivered to recipients, see here. 💡 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.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
userId required
string Value for the 'userId' path segment. Pass it under the name 'userId', not as 'id'. Use the 'id' field of the user object as returned by Microsoft Graph.
set-channel-message-reaction Set a channel message reaction.

Arguments

body required
object
channelId required
string Value for the 'channelId' path segment. Pass it under the name 'channelId', not as 'id'. Use the 'id' field of the channel object as returned by Microsoft Graph.
chatMessageId required
string Value for the 'chatMessageId' path segment. Pass it under the name 'chatMessageId', not as 'id'. Use the 'id' field of the chat message object as returned by Microsoft Graph.
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
teamId required
string Value for the 'teamId' path segment. Pass it under the name 'teamId', not as 'id'. Use the 'id' field of the team object as returned by Microsoft Graph.
set-chat-message-reaction Set a chat message reaction.

Arguments

body required
object
chatId required
string Value for the 'chatId' path segment. Pass it under the name 'chatId', not as 'id'. Use the 'id' field of the chat object as returned by Microsoft Graph.
chatMessageId required
string Value for the 'chatMessageId' path segment. Pass it under the name 'chatMessageId', not as 'id'. Use the 'id' field of the chat message object as returned by Microsoft Graph.
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
set-my-presence Set the state of a user's presence session as an application. For more information about presence sessions, states permutations, and timeouts, see Manage presence state using the Microsoft Graph API. 💡 TIP: Sets the user's presence session as an application. Body: { sessionId (your app's client/session id, required), availability + activity (must be one of these documented combos: Available/Available, Busy/InACall, Busy/InAConferenceCall, Away/Away, DoNotDisturb/Presenting), expirationDuration (ISO 8601 duration like 'PT1H' — defaults to PT5M, valid range PT5M–PT4H) }. Note: if the user also wants to override their *visible* status regardless of activity, prefer set-my-user-preferred-presence. clear-my-presence ends the session.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
set-my-status-message Set a presence status message for a user. An optional expiration date and time can be supplied. 💡 TIP: Sets the user's Teams status message (the free-text note shown next to their name, e.g. 'Heads-down on Q3 plan'). Body: { statusMessage: { message: { content: 'text or HTML', contentType: 'text' | 'html' }, expiryDateTime: { dateTime: '2026-05-06T17:00:00', timeZone: 'UTC' } (optional) } }. Pass an empty object {} or message.content='' to clear. expiryDateTime is optional — omit for no expiration.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
set-my-user-preferred-presence Set the preferred availability and activity status for a user. If the preferred presence of a user is set, the user's presence shows as the preferred status. Preferred presence takes effect only when at least one presence session exists for the user. Otherwise, the user's presence shows as Offline. A presence session is created as a result of a successful setPresence operation, or if the user is signed in on a Microsoft Teams client. For more details, see presence sessions and time-out and expiration. 💡 TIP: Sets the user's preferred (sticky) availability and activity — the value Teams clients display regardless of underlying activity. Body: { availability + activity (must be one of these documented combos: Available/Available, Busy/Busy, DoNotDisturb/DoNotDisturb, BeRightBack/BeRightBack, Away/Away, Offline/OffWork), expirationDuration (ISO 8601 duration like 'PT2H' — if omitted, defaults to 1 day for DoNotDisturb/Busy and 7 days for other availability values; not 'indefinite'). Requires at least one active presence session (Teams client signed in or set-my-presence call) — otherwise the user appears Offline. Use this for 'put me in Do Not Disturb for 2 hours' workflows. clear-my-user-preferred-presence reverts to actual presence.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
share-drive-item Send a sharing invitation for a driveItem. A sharing invitation provides permissions to the recipients and, optionally, sends them an email to notify them that the item was shared. 💡 TIP: Shares a file or folder with specific users. Body: { recipients: [{ email: '[email protected]' }], roles: ['read'], sendInvitation: true, message: 'Please review this file.' }. Roles: 'read', 'write', 'owner'. Set requireSignIn to true to require authentication.

Arguments

body required
object
confirm
boolean 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.
driveId required
string Value for the 'driveId' path segment. Pass it under the name 'driveId', not as 'id'. Use the 'id' field of the drive object as returned by Microsoft Graph.
driveItemId required
string Value for the 'driveItemId' path segment. Pass it under the name 'driveItemId', not as 'id'. Use the 'id' field of the drive item object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
snooze-calendar-event-reminder Postpone a reminder for an event in a user calendar until a new time. 💡 TIP: Postpones a triggered event reminder. Body: { NewReminderTime: { dateTime (ISO 8601), timeZone (IANA or Windows, e.g. 'Pacific Standard Time') } }. The reminder will re-fire at the new time.

Arguments

body required
object
confirm
boolean 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.
eventId required
string Value for the 'eventId' path segment. Pass it under the name 'eventId', not as 'id'. Use the 'id' field of the event object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
sort-excel-range Sort an Excel range.

Arguments

body required
object
confirm
boolean 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.
driveId required
string Value for the 'driveId' path segment. Pass it under the name 'driveId', not as 'id'. Use the 'id' field of the drive object as returned by Microsoft Graph.
driveItemId required
string Value for the 'driveItemId' path segment. Pass it under the name 'driveItemId', not as 'id'. Use the 'id' field of the drive item object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
workbookWorksheetId required
string Value for the 'workbookWorksheetId' path segment. Pass it under the name 'workbookWorksheetId', not as 'id'. Use the 'id' field of the workbook worksheet object as returned by Microsoft Graph.
tentatively-accept-calendar-event Tentatively accept the specified event in a user calendar. If the event allows proposals for new times, on responding tentative to the event, an invitee can choose to suggest an alternative time by including the proposedNewTime parameter. For more information on how to propose a time, and how to receive and accept a new time proposal, see Propose new meeting times. 💡 TIP: Tentatively accepts a meeting invitation. Optional body: { sendResponse: true, comment: 'I might be able to attend.' }. Use proposedNewTime to suggest an alternative: { proposedNewTime: { start: { dateTime, timeZone }, end: { dateTime, timeZone } } }.

Arguments

body required
object
confirm
boolean 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.
eventId required
string Value for the 'eventId' path segment. Pass it under the name 'eventId', not as 'id'. Use the 'id' field of the event object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
unmerge-excel-range Unmerge an Excel range. 💡 TIP: Unmerge any merged cells within the given range back into individual cells. No request body. Inverse of merge-excel-range.

Arguments

address required
string Value for the 'address' path segment.
confirm
boolean 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.
driveId required
string Value for the 'driveId' path segment. Pass it under the name 'driveId', not as 'id'. Use the 'id' field of the drive object as returned by Microsoft Graph.
driveItemId required
string Value for the 'driveItemId' path segment. Pass it under the name 'driveItemId', not as 'id'. Use the 'id' field of the drive item object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
workbookWorksheetId required
string Value for the 'workbookWorksheetId' path segment. Pass it under the name 'workbookWorksheetId', not as 'id'. Use the 'id' field of the workbook worksheet object as returned by Microsoft Graph.
unpin-chat-message Unpin a message from a chat.

Arguments

chatId required
string Value for the 'chatId' path segment. Pass it under the name 'chatId', not as 'id'. Use the 'id' field of the chat object as returned by Microsoft Graph.
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
If-Match
string ETag
includeHeaders
boolean Include response headers (including ETag) in the response metadata
pinnedChatMessageInfoId required
string Value for the 'pinnedChatMessageInfoId' path segment. Pass it under the name 'pinnedChatMessageInfoId', not as 'id'. Use the 'id' field of the pinned chat message info object as returned by Microsoft Graph.
unset-channel-message-reaction Unset a channel message reaction.

Arguments

body required
object
channelId required
string Value for the 'channelId' path segment. Pass it under the name 'channelId', not as 'id'. Use the 'id' field of the channel object as returned by Microsoft Graph.
chatMessageId required
string Value for the 'chatMessageId' path segment. Pass it under the name 'chatMessageId', not as 'id'. Use the 'id' field of the chat message object as returned by Microsoft Graph.
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
teamId required
string Value for the 'teamId' path segment. Pass it under the name 'teamId', not as 'id'. Use the 'id' field of the team object as returned by Microsoft Graph.
unset-chat-message-reaction Unset a chat message reaction.

Arguments

body required
object
chatId required
string Value for the 'chatId' path segment. Pass it under the name 'chatId', not as 'id'. Use the 'id' field of the chat object as returned by Microsoft Graph.
chatMessageId required
string Value for the 'chatMessageId' path segment. Pass it under the name 'chatMessageId', not as 'id'. Use the 'id' field of the chat message object as returned by Microsoft Graph.
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
update-calendar Update a calendar. 💡 TIP: Updates a calendar's properties. Body: { name: 'New Name', color: 'lightBlue' }. Cannot update the default calendar's name.

Arguments

body required
object
calendarId required
string Value 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.
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
update-calendar-event Update an event on the default calendar. Requires eventId (the event's ID from get-calendar-view or list-calendar-events). Times use nested {dateTime, timeZone} objects. UTC is simplest for one-off events; for recurring events use the organizer's own time zone (from get-mailbox-settings or list-supported-time-zones) instead of UTC, since Graph resolves DST against that zone. 💡 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. WARNING: Setting attendees replaces the entire attendee list — include all attendees, not just new ones.

Arguments

body required
object
confirm
boolean 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.
eventId required
string Value for the 'eventId' path segment. Pass it under the name 'eventId', not as 'id'. Use the 'id' field of the event object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
update-channel-message Update a chatMessage object. Except for the policyViolation property, all properties of a chatMessage can be updated in delegated permissions scenarios. Only the policyViolation property of a chatMessage can be updated in application permissions scenarios. The update only works for chats where members are Microsoft Teams users. If one of the participants is using Skype, the operation fails. This method doesn't support federation. Only the user in the tenant who sent the message can perform data loss prevention (DLP) updates on the specified chat message. 💡 TIP: To @mention someone, put <at user-id="<aad-user-id>">Display Name</at> in the html content; the server numbers the tag and builds the mentions array. Use the userId field (not id) from list-team-members or list-chat-members. Use contentType html in the body.

Arguments

body required
object
channelId required
string Value for the 'channelId' path segment. Pass it under the name 'channelId', not as 'id'. Use the 'id' field of the channel object as returned by Microsoft Graph.
chatMessageId required
string Value for the 'chatMessageId' path segment. Pass it under the name 'chatMessageId', not as 'id'. Use the 'id' field of the chat message object as returned by Microsoft Graph.
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
teamId required
string Value for the 'teamId' path segment. Pass it under the name 'teamId', not as 'id'. Use the 'id' field of the team object as returned by Microsoft Graph.
update-channel-message-reply Update a channel message reply. 💡 TIP: To @mention someone, put <at user-id="<aad-user-id>">Display Name</at> in the html content; the server numbers the tag and builds the mentions array. Use the userId field (not id) from list-team-members or list-chat-members. Use contentType html in the body.

Arguments

body required
object
channelId required
string Value for the 'channelId' path segment. Pass it under the name 'channelId', not as 'id'. Use the 'id' field of the channel object as returned by Microsoft Graph.
chatMessageId required
string Value for the 'chatMessageId' path segment. Pass it under the name 'chatMessageId', not as 'id'. Use the 'id' field of the chat message object as returned by Microsoft Graph.
chatMessageId1 required
string Value for the 'chatMessageId1' path segment. Pass it under the name 'chatMessageId1', not as 'id'. It identifies a different resource from the similarly named parameter without the number; check the tool's path to see which.
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
teamId required
string Value for the 'teamId' path segment. Pass it under the name 'teamId', not as 'id'. Use the 'id' field of the team object as returned by Microsoft Graph.
update-chat-message Update a chat message. 💡 TIP: To @mention someone, put <at user-id="<aad-user-id>">Display Name</at> in the html content; the server numbers the tag and builds the mentions array. Use the userId field (not id) from list-team-members or list-chat-members. Use contentType html in the body.

Arguments

body required
object
chatId required
string Value for the 'chatId' path segment. Pass it under the name 'chatId', not as 'id'. Use the 'id' field of the chat object as returned by Microsoft Graph.
chatMessageId required
string Value for the 'chatMessageId' path segment. Pass it under the name 'chatMessageId', not as 'id'. Use the 'id' field of the chat message object as returned by Microsoft Graph.
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
update-contact-folder Update the properties of contactfolder object. 💡 TIP: Updates a contact folder. Body: { displayName?: 'New name', parentFolderId?: '<id>' } — both displayName (rename) and parentFolderId (move) are writable. The default 'Contacts' folder may not be renameable. Get the folder id via list-contact-folders.

Arguments

body required
object
confirm
boolean 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.
contactFolderId required
string Value for the 'contactFolderId' path segment. Pass it under the name 'contactFolderId', not as 'id'. Use the 'id' field of the contact folder object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
update-excel-range Update an Excel range. 💡 TIP: Set cell values, formulas, or number format on any range — does NOT require the worksheet to be a formal Excel table. Body: { values: [['v1','v2','v3']] } for a single row, or [['a','b'],['c','d']] for multi-row. Use this for append (target the next empty row's address, e.g. 'A172:H172'), update (target a single cell like 'H42'), or prepend-style edits (read existing, concatenate, write back). Number of inner-array values must match the column count of the address.

Arguments

address required
string Value for the 'address' path segment.
body required
object
confirm
boolean 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.
driveId required
string Value for the 'driveId' path segment. Pass it under the name 'driveId', not as 'id'. Use the 'id' field of the drive object as returned by Microsoft Graph.
driveItemId required
string Value for the 'driveItemId' path segment. Pass it under the name 'driveItemId', not as 'id'. Use the 'id' field of the drive item object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
workbookWorksheetId required
string Value for the 'workbookWorksheetId' path segment. Pass it under the name 'workbookWorksheetId', not as 'id'. Use the 'id' field of the workbook worksheet object as returned by Microsoft Graph.
update-excel-table-row Update an Excel table row. 💡 TIP: Update a single row in a formal Excel table by zero-based row index. Body: { values: [[...]] } with one inner array matching the column count.

Arguments

body required
object
confirm
boolean 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.
driveId required
string Value for the 'driveId' path segment. Pass it under the name 'driveId', not as 'id'. Use the 'id' field of the drive object as returned by Microsoft Graph.
driveItemId required
string Value for the 'driveItemId' path segment. Pass it under the name 'driveItemId', not as 'id'. Use the 'id' field of the drive item object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
index required
string Value for the 'index' path segment.
workbookTableId required
string Value for the 'workbookTableId' path segment. Pass it under the name 'workbookTableId', not as 'id'. Use the 'id' field of the workbook table object as returned by Microsoft Graph.
update-focused-inbox-override Change the classifyAs field of an override as specified. You cannot use PATCH to change any other fields in an inferenceClassificationOverride instance. If an override exists for a sender and the sender changes his/her display name, you can use POST to force an update to the name field in the existing override. If an override exists for a sender and the sender changes his/her SMTP address, deleting the existing override and creating a new one with the new SMTP address is the only way to 'update' the override for this sender. 💡 TIP: Updates the classifyAs field of an existing override. Body: { classifyAs: 'focused' } or { classifyAs: 'other' }. Per Graph API, PATCH cannot change senderEmailAddress — to change the SMTP address, delete and recreate the override. To rename the display name only, POST a new override with the same SMTP address (it will overwrite the name).

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
inferenceClassificationOverrideId required
string Value for the 'inferenceClassificationOverrideId' path segment. Pass it under the name 'inferenceClassificationOverrideId', not as 'id'. Use the 'id' field of the inference classification override object as returned by Microsoft Graph.
update-group Create a new group object if it doesn't exist, or update the properties of an existing group object. You can create or update the following types of group: By default, this operation returns only a subset of the properties for each group. For a list of properties that are returned by default, see the Properties section of the group resource. To get properties that are not returned by default, do a GET operation and specify the properties in a $select OData query option. 💡 TIP: Updates group properties. Body can include: displayName, description, visibility ('Public' or 'Private'), mailNickname. Use get-group to verify current values before updating.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
groupId required
string Value for the 'groupId' path segment. Pass it under the name 'groupId', not as 'id'. Use the 'id' field of the group object as returned by Microsoft Graph.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
update-mail-folder Update the properties of mailfolder object. 💡 TIP: Renames a mail folder by updating its displayName. Use list-mail-folders to find the folder ID.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
mailFolderId required
string Value for the 'mailFolderId' path segment. Pass it under the name 'mailFolderId', not as 'id'. Use the 'id' field of the mail folder object as returned by Microsoft Graph.
update-mail-message Update an existing Outlook email message by its message ID — for example mark it read or unread (isRead), flag it (flag), change its categories, importance, or edit a draft's subject, body, or recipients.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
messageId required
string Value for the 'messageId' path segment. Pass it under the name 'messageId', not as 'id'. Use the 'id' field of the message object as returned by Microsoft Graph.
update-mail-rule Change writable properties on a messageRule object and save the changes. 💡 TIP: Updates an existing message rule. Use the Inbox folder ID (get it from list-mail-folders) for inbox rules. Send only the properties to change. Common use: { isEnabled: false } to disable a rule, or update conditions/actions.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
mailFolderId required
string Value for the 'mailFolderId' path segment. Pass it under the name 'mailFolderId', not as 'id'. Use the 'id' field of the mail folder object as returned by Microsoft Graph.
messageRuleId required
string Value for the 'messageRuleId' path segment. Pass it under the name 'messageRuleId', not as 'id'. Use the 'id' field of the message rule object as returned by Microsoft Graph.
update-mailbox-settings Enable, configure, or disable one or more of the following settings as part of a user's mailboxSettings: When updating the preferred date or time format for a user, specify it in respectively, the short date or short time format. When updating the preferred time zone for a user, specify it in the Windows or Internet Assigned Numbers Authority (IANA) time zone (also known as Olson time zone) format. You can also further customize the time zone as shown in example 2 below. 💡 TIP: Updates mailbox settings. Common use: configure Out-of-Office (automatic replies). Body example: { automaticRepliesSetting: { status: 'scheduled', scheduledStartDateTime: { dateTime: '2026-03-28T17:00:00', timeZone: 'Eastern Standard Time' }, scheduledEndDateTime: { dateTime: '2026-04-01T08:00:00', timeZone: 'Eastern Standard Time' }, internalReplyMessage: 'I am OOO.', externalReplyMessage: 'I am out of office.' } }. Status values: disabled, alwaysEnabled, scheduled.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
update-my-calendar-permission Update my calendar permission. 💡 TIP: Changes the role (permission level) granted to an existing share recipient or delegate. Body: { role: 'read' | 'write' | 'delegateWithoutPrivateEventAccess' | 'delegateWithPrivateEventAccess' }. Only the role property is writable — to change the recipient's email or other properties, delete and recreate via delete-my-calendar-permission + create-my-calendar-permission. Get the permission id via list-my-calendar-permissions.

Arguments

body required
object
calendarPermissionId required
string Value for the 'calendarPermissionId' path segment. Pass it under the name 'calendarPermissionId', not as 'id'. Use the 'id' field of the calendar permission object as returned by Microsoft Graph.
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
update-online-meeting Update the properties of the specified onlineMeeting object. For the list of properties that support updating, see the Request body section. 💡 TIP: Updates an existing online meeting. Updatable properties: subject, startDateTime, endDateTime, participants, lobbyBypassSettings, isEntryExitAnnounced, allowedPresenters. Send only the properties you want to change.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
onlineMeetingId required
string Value for the 'onlineMeetingId' path segment. Pass it under the name 'onlineMeetingId', not as 'id'. Use the 'id' field of the online meeting object as returned by Microsoft Graph.
update-outlook-contact Update the properties of a contact object. 💡 TIP: emailAddresses array is replaced entirely — include all addresses, not just new ones.

Arguments

body required
object
confirm
boolean 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.
contactId required
string Value for the 'contactId' path segment. Pass it under the name 'contactId', not as 'id'. Use the 'id' field of the contact object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
update-place Update the properties of place object that can be a building, floor, section, desk, room, workspace, or roomList. You can identify the place by specifying the id property. 💡 TIP: Updates properties of a place (room, room list, building, floor, section, desk, workspace). Body can include: displayName, phone, capacity, building, floorNumber, floorLabel, tags, audioDeviceName, videoDeviceName, displayDeviceName, isWheelChairAccessible. Use get-room or get-room-list to verify current values before updating.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
placeId required
string Value for the 'placeId' path segment. Pass it under the name 'placeId', not as 'id'. Use the 'id' field of the place object as returned by Microsoft Graph.
update-planner-bucket Update the properties of plannerbucket object. 💡 TIP: CRITICAL: Requires If-Match header with ETag from get-planner-bucket (use includeHeaders=true).

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
If-Match required
string ETag value.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
plannerBucketId required
string Value for the 'plannerBucketId' path segment. Pass it under the name 'plannerBucketId', not as 'id'. Use the 'id' field of the planner bucket object as returned by Microsoft Graph.
update-planner-task Update the properties of plannerTask object. 💡 TIP: CRITICAL: Requires If-Match header with the task's @odata.etag value, otherwise returns 412 Precondition Failed. Get the ETag from get-planner-task with includeHeaders=true. Priority is 0-10 (lower = higher priority); Planner's own UI presets are 1=Urgent, 3=Important, 5=Medium, 9=Low.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
If-Match required
string ETag value.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
plannerTaskId required
string Value for the 'plannerTaskId' path segment. Pass it under the name 'plannerTaskId', not as 'id'. Use the 'id' field of the planner task object as returned by Microsoft Graph.
update-planner-task-details Update the properties of plannerTaskDetails object. 💡 TIP: CRITICAL: Requires If-Match header with ETag from get-planner-task-details (use includeHeaders=true). Checklist items use GUID keys: {"checklist": {"<guid>": {"title": "...", "isChecked": false}}}.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
If-Match required
string ETag value.
includeHeaders
boolean Include response headers (including ETag) in the response metadata
plannerTaskId required
string Value for the 'plannerTaskId' path segment. Pass it under the name 'plannerTaskId', not as 'id'. Use the 'id' field of the planner task object as returned by Microsoft Graph.
update-shared-mailbox-message Update a message in another user's mailbox or a shared mailbox — for example mark it read or unread (isRead), flag it (flag), change its categories or importance, or edit a draft's subject, body, or recipients. The user-id is the mailbox owner's ID or email address, and delegated access to that mailbox is required.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
messageId required
string Value for the 'messageId' path segment. Pass it under the name 'messageId', not as 'id'. Use the 'id' field of the message object as returned by Microsoft Graph.
userId required
string Value for the 'userId' path segment. Pass it under the name 'userId', not as 'id'. Use the 'id' field of the user object as returned by Microsoft Graph.
update-sharepoint-list-column Update a SharePoint list column. 💡 TIP: Updates a column definition. Body: { displayName: 'New name', description: 'New description', required: true, ... }. The column type itself (text, choice, etc.) cannot be changed — only its metadata and per-type options (e.g. choices array for a choice column). Send only the fields you want to change.

Arguments

body required
object
columnDefinitionId required
string Value for the 'columnDefinitionId' path segment. Pass it under the name 'columnDefinitionId', not as 'id'. Use the 'id' field of the column definition object as returned by Microsoft Graph.
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
listId required
string Value for the 'listId' path segment. Pass it under the name 'listId', not as 'id'. Use the 'id' field of the list object as returned by Microsoft Graph.
siteId required
string Value for the 'siteId' path segment. Pass it under the name 'siteId', not as 'id'. Use the 'id' field of the site object as returned by Microsoft Graph.
update-sharepoint-list-item Update a SharePoint list item. 💡 TIP: Updates fields on an existing list item. Body: { fields: { ColumnName: 'new value' } }. Send only the fields you want to change. Use $expand=fields on get-sharepoint-site-list-item to see current values first.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
listId required
string Value for the 'listId' path segment. Pass it under the name 'listId', not as 'id'. Use the 'id' field of the list object as returned by Microsoft Graph.
listItemId required
string Value for the 'listItemId' path segment. Pass it under the name 'listItemId', not as 'id'. Use the 'id' field of the list item object as returned by Microsoft Graph.
siteId required
string Value for the 'siteId' path segment. Pass it under the name 'siteId', not as 'id'. Use the 'id' field of the site object as returned by Microsoft Graph.
update-sharepoint-site-onenote-page-content Update SharePoint site OneNote page content.

Arguments

body required
array
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
onenotePageId required
string Value for the 'onenotePageId' path segment. Pass it under the name 'onenotePageId', not as 'id'. Use the 'id' field of the onenote page object as returned by Microsoft Graph.
siteId required
string Value for the 'siteId' path segment. Pass it under the name 'siteId', not as 'id'. Use the 'id' field of the site object as returned by Microsoft Graph.
update-specific-calendar-event Update a specific calendar event. Requires calendarId (from list-calendars) and eventId (from list-specific-calendar-events or get-specific-calendar-view for that same calendar). Times use nested {dateTime, timeZone} objects. UTC is simplest for one-off events; for recurring events use the organizer's own time zone (from get-mailbox-settings or list-supported-time-zones) instead of UTC, since Graph resolves DST against that zone. 💡 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. WARNING: Setting attendees replaces the entire attendee list — include all attendees, not just new ones.

Arguments

body required
object
calendarId required
string Value 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.
confirm
boolean 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.
eventId required
string Value for the 'eventId' path segment. Pass it under the name 'eventId', not as 'id'. Use the 'id' field of the event object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
update-subscription Renew a subscription by extending its expiry time. The table in the Permissions section lists the resources that support subscribing to change notifications. Subscriptions expire after a length of time that varies by resource type. In order to avoid missing change notifications, an app should renew its subscriptions well in advance of their expiry date. See subscription for maximum length of a subscription for each resource type. 💡 TIP: Renews a webhook subscription by extending its expiration. Body: { expirationDateTime (ISO 8601, new expiry) }. Call before the current expirationDateTime to avoid missing notifications. Max extension varies by resource type — check Microsoft Graph docs for subscription limits.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
subscriptionId required
string Value for the 'subscriptionId' path segment. Pass it under the name 'subscriptionId', not as 'id'. Use the 'id' field of the subscription object as returned by Microsoft Graph.
update-team-channel Update the properties of the specified channel.

Arguments

body required
object
channelId required
string Value for the 'channelId' path segment. Pass it under the name 'channelId', not as 'id'. Use the 'id' field of the channel object as returned by Microsoft Graph.
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
teamId required
string Value for the 'teamId' path segment. Pass it under the name 'teamId', not as 'id'. Use the 'id' field of the team object as returned by Microsoft Graph.
update-todo-checklist-item Update the properties of a checklistItem object. 💡 TIP: Updates a step (checklist item) of a To Do task. Use this to check a step off (body: { isChecked: true }), uncheck it (isChecked: false), or rename it (displayName). Requires checklistItemId from list-todo-checklist-items.

Arguments

body required
object
checklistItemId required
string Value for the 'checklistItemId' path segment. Pass it under the name 'checklistItemId', not as 'id'. Use the 'id' field of the checklist item object as returned by Microsoft Graph.
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
todoTaskId required
string Value for the 'todoTaskId' path segment. Pass it under the name 'todoTaskId', not as 'id'. Use the 'id' field of the todo task object as returned by Microsoft Graph.
todoTaskListId required
string Value for the 'todoTaskListId' path segment. Pass it under the name 'todoTaskListId', not as 'id'. Use the 'id' field of the todo task list object as returned by Microsoft Graph.
update-todo-task Update the properties of a todoTask object. 💡 TIP: Updates a Microsoft To Do task. Use this to mark a to-do item complete or done (body: { status: "completed" }), reopen it (status: "notStarted"), rename it (title), or change its due date (dueDateTime), reminder (reminderDateTime), importance, or notes (body). Requires todoTaskListId from list-todo-task-lists and todoTaskId from list-todo-tasks. Steps (checklistItems) can't be changed here: Graph rejects checklistItems in a PATCH on the task with 400. Use create-todo-checklist-item, update-todo-checklist-item, or delete-todo-checklist-item instead.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
todoTaskId required
string Value for the 'todoTaskId' path segment. Pass it under the name 'todoTaskId', not as 'id'. Use the 'id' field of the todo task object as returned by Microsoft Graph.
todoTaskListId required
string Value for the 'todoTaskListId' path segment. Pass it under the name 'todoTaskListId', not as 'id'. Use the 'id' field of the todo task list object as returned by Microsoft Graph.
update-todo-task-list Update the properties of a todoTaskList object. 💡 TIP: Renames a Microsoft To Do task list. Body: { displayName: 'New name' }. Only displayName is writable. Built-in lists (Flagged emails, the default Tasks list) cannot be renamed — the API returns an error. Get list ids via list-todo-task-lists.

Arguments

body required
object
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
todoTaskListId required
string Value for the 'todoTaskListId' path segment. Pass it under the name 'todoTaskListId', not as 'id'. Use the 'id' field of the todo task list object as returned by Microsoft Graph.
upload-file-content The content stream, if the item represents a file. 💡 TIP: Body is a base64-encoded string of the file bytes; the server decodes it before PUT. Graph accepts up to 250MB here, but the whole string travels as a tool argument and a truncated one decodes to a truncated file with no error, so use create-upload-session rather than emitting a large base64 string. For new files use path format: /items/root:/path/to/file.txt:/content. Overwrites existing files without warning.

Arguments

body required
string Base64-encoded file content. The server decodes it and PUTs the raw bytes to Microsoft Graph.
confirm
boolean 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.
driveId required
string Value for the 'driveId' path segment. Pass it under the name 'driveId', not as 'id'. Use the 'id' field of the drive object as returned by Microsoft Graph.
driveItemId required
string Value for the 'driveItemId' path segment. Pass it under the name 'driveItemId', not as 'id'. Use the 'id' field of the drive item object as returned by Microsoft Graph.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
upload-my-profile-photo Update the photo for the specified contact, group, team, or user in a tenant. The size of the photo you can update to is limited to 4 MB. You can use either PATCH or PUT for this operation. 💡 TIP: Uploads a new profile photo for the signed-in user. Body is a base64-encoded string of the image bytes (the server decodes before PUT). Photo must be JPEG, max 4 MB; the base64 travels as a tool argument and a truncated one is written without error, so resize before encoding instead of emitting a large string. Microsoft 365 generates HD downsized variants automatically (48x48, 64x64, 96x96, 120x120, 240x240, 360x360, 432x432, 504x504, 648x648). For work or school accounts, ProfilePhoto.ReadWrite.All is the more granular alternative permission. Use download-bytes with target=/me/photo/$value to retrieve the current photo.

Arguments

body required
string Base64-encoded file content. The server decodes it and PUTs the raw bytes to Microsoft Graph.
confirm
boolean 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.
excludeResponse
boolean Exclude the full response body and only return success or failure indication
includeHeaders
boolean Include response headers (including ETag) in the response metadata
verify-login Check current Microsoft authentication status

Questions people ask

Does Microsoft 365 MCP need an API key?

No. Microsoft 365 uses device-code sign-in.

  1. Click Add to Longwave on this page.
  2. Start the thread.
  3. Complete Microsoft's device-code sign-in.
How do I use Microsoft 365 MCP with Claude Code?

Claude Code can find Microsoft 365 mail or meetings.

  1. Click Add to Longwave on this page.
  2. Start a thread and pick Claude Code.
  3. Complete the Microsoft sign-in when Longwave asks.
  4. Ask Claude Code to find a mail or a meeting.
How do I use Microsoft 365 MCP in Cursor?

Cursor can find Microsoft 365 mail or meetings.

  1. Click Add to Longwave on this page.
  2. Start a thread and pick Cursor.
  3. Complete the Microsoft sign-in when Longwave asks.
  4. Ask Cursor to find a mail or a meeting.
Can it read Outlook and put a meeting on the calendar?

Yes. Microsoft 365 can search mail and create calendar events.

  1. Ask the agent to search your mail.
  2. Ask it to create a calendar event.
  3. Confirm before it sends mail or creates a write.
Can it search OneDrive?

Yes. Microsoft 365 can list and download files in the signed-in OneDrive.

  1. Ask the agent to search or list OneDrive files.
  2. Choose a file.
  3. Ask it to download the file or create a share link.
Can Microsoft 365 MCP access Teams?

Yes. Longwave runs Microsoft 365 in organization mode, which exposes Teams, SharePoint, meetings, and shared mailboxes for work or school accounts.

  1. Click Add to Longwave on this page.
  2. Start a thread and pick a harness.
  3. Sign in with a work or school Microsoft account.
  4. Approve administrator consent if Microsoft requests it.
  5. Ask the agent to read or manage the Teams or SharePoint resource.
Does a personal Outlook.com account work?

Yes. A personal Microsoft account supports mail, calendar, and OneDrive. Use a work or school account for Teams, SharePoint, meetings, or shared mailboxes.

  1. Click Add to Longwave on this page.
  2. Sign in with a personal Microsoft account.
  3. Ask the agent to use mail, calendar, or OneDrive.
Is this Microsoft's official MCP?

Longwave uses Softeria's local Graph server. Read the Softeria server for its implementation. Microsoft and Claude also ship different Microsoft 365 connectors.

Put the inbox and calendar in the thread.

Let the agent find the mail, meeting, or OneDrive file without a copy-paste relay.