@softeria/ms-365-mcp-server
A Model Context Protocol (MCP) server for interacting with Microsoft 365 and Office services through the Graph API
npm · fingerprint 6941232229b4af3dbf4cee1e · repository · RSS
What changed
Changed 2026-10-18 11:10 UTC
4 descriptions rewritten, 3 schema or annotation changes with the description left byte-identical.
--- pinned/get-todo-task +++ observed/get-todo-task { "annotations": { "destructiveHint": false, - "description": "Read the properties and relationships of a todoTask object.\n\n💡 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.", + "description": "Read the properties and relationships of a todoTask object.\n\n💡 TIP: Returns a single To Do task. Use $expand=linkedResources to include linked email/resource. Returns body content (HTML format), checklist items, and linked resources.", "execution": { "taskSupport": "forbidden" }, - "description": "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)." + "description": "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\". 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": { - "description": "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.", + "description": "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.", "type": "boolean" }, "includeHeaders": { - "select": { - "anyOf": [ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } - ], - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" - }, "todoTaskId": { "description": "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.", "type": "string"
--- pinned/list-calendar-events-delta +++ observed/list-calendar-events-delta { "annotations": { "destructiveHint": false, - "description": "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.", + "description": "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.", "type": "boolean" }, "includeHeaders": {
--- pinned/list-calendar-view-delta +++ observed/list-calendar-view-delta { "annotations": { "destructiveHint": false, - "description": "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.", + "description": "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.", "type": "boolean" }, "includeHeaders": {
--- pinned/list-todo-checklist-items +++ observed/list-todo-checklist-items { "annotations": { "destructiveHint": false, - "description": "Get the checklistItem resources associated to a todoTask from the checklistItems navigation property.\n\n💡 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.", + "description": "Get the checklistItem resources associated to a todoTask from the checklistItems navigation property.\n\n💡 TIP: Lists the steps (checklist items) of a To Do task. Each item has id, displayName, isChecked, checkedDateTime, and createdDateTime. Requires todoTaskListId from list-todo-task-lists and todoTaskId from list-todo-tasks.", "execution": { "taskSupport": "forbidden" }, - "count": { - "description": "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.", - "type": "boolean" - }, "excludeResponse": { "description": "Exclude the full response body and only return success or failure indication", "type": "boolean" - "expand": { - "anyOf": [ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } - ], - "description": "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": { - "description": "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.", + "description": "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.", "type": "boolean" }, - "filter": { - "description": "OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.", - "type": "string" - }, "includeHeaders": { "description": "Include response headers (including ETag) in the response metadata", "type": "boolean" - "orderby": { - "anyOf": [ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } - ], - "description": "Sort expression, e.g. receivedDateTime desc" - }, - "search": { - "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", - "type": "string" - }, - "select": { - "anyOf": [ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } - ], - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" - }, - "skip": { - "description": "Items to skip for pagination. Not supported with $search.", - "minimum": 0, - "type": "integer" - }, - "skiptoken": { - "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", - "type": "string" - }, "todoTaskId": { "description": "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.", "type": "string" - }, - "top": { - "description": "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.", - "minimum": 0, - "type": "integer" } }, "required": [
--- pinned/list-todo-linked-resources +++ observed/list-todo-linked-resources { "annotations": { "destructiveHint": false, - "count": { - "description": "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.", - "type": "boolean" - }, "excludeResponse": { "description": "Exclude the full response body and only return success or failure indication", "type": "boolean" - "expand": { - "anyOf": [ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } - ], - "description": "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": { - "description": "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.", + "description": "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.", "type": "boolean" }, "filter": { - "description": "OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.", + "description": "OData filter expression.", "type": "string" }, "includeHeaders": { - "search": { - "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", - "type": "string" - }, - "select": { - "anyOf": [ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } - ], - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" - }, "skip": { - "description": "Items to skip for pagination. Not supported with $search.", + "description": "Items to skip for pagination.", "minimum": 0, "type": "integer" }, - "description": "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.", + "description": "Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. For more rows, use @odata.nextLink from the response instead of a very large $top.", "minimum": 0, "type": "integer" }
--- pinned/list-todo-task-lists +++ observed/list-todo-task-lists { "annotations": { "destructiveHint": false, - "description": "Get a list of the todoTaskList objects and their properties.\n\n💡 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.", + "description": "Get a list of the todoTaskList objects and their properties.\n\n💡 TIP: Lists all To Do task lists. Returns todoTaskList-id needed for all task operations. The default list is typically called 'Tasks'.", "execution": { "taskSupport": "forbidden" }, - "count": { - "description": "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.", - "type": "boolean" - }, "excludeResponse": { "description": "Exclude the full response body and only return success or failure indication", "type": "boolean" - "expand": { - "anyOf": [ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } - ], - "description": "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": { - "description": "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.", + "description": "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.", "type": "boolean" }, "filter": { - "description": "OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.", + "description": "OData filter expression.", "type": "string" }, "includeHeaders": { - "orderby": { - "anyOf": [ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } - ], - "description": "Sort expression, e.g. receivedDateTime desc" - }, - "search": { - "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", - "type": "string" - }, - "select": { - "anyOf": [ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } - ], - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" - }, "skip": { - "description": "Items to skip for pagination. Not supported with $search.", + "description": "Items to skip for pagination.", "minimum": 0, "type": "integer" }, - "description": "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.", + "description": "Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. For more rows, use @odata.nextLink from the response instead of a very large $top.", "minimum": 0, "type": "integer" }
--- pinned/list-todo-tasks +++ observed/list-todo-tasks { "annotations": { "destructiveHint": false, - "description": "Get the todoTask resources from the tasks navigation property of a specified todoTaskList.\n\n💡 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'.", + "description": "Get the todoTask resources from the tasks navigation property of a specified todoTaskList.\n\n💡 TIP: Lists tasks in a To Do list. Requires todoTaskList-id — use list-todo-task-lists to find it. 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'. $orderby works on createdDateTime, lastModifiedDateTime, importance, status and reminderDateTime/dateTime, not on title or isReminderOn. A $filter on isReminderOn can also return 400; filter it client-side.", "execution": { "taskSupport": "forbidden" }, - "count": { - "description": "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.", - "type": "boolean" - }, "excludeResponse": { "description": "Exclude the full response body and only return success or failure indication", "type": "boolean" - "description": "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)." + "description": "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\". 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": { - "description": "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.", + "description": "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.", "type": "boolean" }, "filter": { - "description": "OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.", + "description": "OData filter expression.", "type": "string" }, "includeHeaders": { - "search": { - "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", - "type": "string" - }, - "select": { - "anyOf": [ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } - ], - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" - }, "skip": { - "description": "Items to skip for pagination. Not supported with $search.", + "description": "Items to skip for pagination.", "minimum": 0, "type": "integer" }, - "description": "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.", + "description": "Page size (Graph $top). Start small (e.g. 5–15) so responses fit the model context; raise only if needed. For more rows, use @odata.nextLink from the response instead of a very large $top.", "minimum": 0, "type": "integer" }
Changed 2026-10-17 10:58 UTC
1 description rewritten, 1 schema or annotation change with the description left byte-identical, 1 tool added.
--- pinned/list-calendar-events-delta +++ observed/list-calendar-events-delta { "annotations": { "destructiveHint": false, - "description": "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.\n\n💡 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.", + "description": "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.\n\n💡 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. 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.", "execution": { "taskSupport": "forbidden" }, - "count": { - "description": "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.", - "type": "boolean" - }, - "endDateTime": { - "description": "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", - "type": "string" - }, "excludeResponse": { "description": "Exclude the full response body and only return success or failure indication", "type": "boolean" - "expand": { - "anyOf": [ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } - ], - "description": "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": { "description": "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.", "type": "boolean" - "filter": { - "description": "OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.", - "type": "string" - }, "includeHeaders": { "description": "Include response headers (including ETag) in the response metadata", "type": "boolean" - "orderby": { - "anyOf": [ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } - ], - "description": "Sort expression, e.g. receivedDateTime desc" - }, - "search": { - "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", - "type": "string" - }, - "select": { - "anyOf": [ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } - ], - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" - }, - "skip": { - "description": "Items to skip for pagination. Not supported with $search.", - "minimum": 0, - "type": "integer" - }, "skiptoken": { "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", "type": "string" - "startDateTime", - "endDateTime" + "startDateTime" ], "type": "object" },
--- pinned/list-calendar-view-delta +++ observed/list-calendar-view-delta { "annotations": { "destructiveHint": false, - "count": { - "description": "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.", - "type": "boolean" - }, "endDateTime": { "description": "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", "type": "string" - "expand": { - "anyOf": [ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } - ], - "description": "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": { "description": "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.", "type": "boolean" - "filter": { - "description": "OData filter expression. Add $count=true for advanced filters (flag/flagStatus, contains()). Cannot combine with $search.", - "type": "string" - }, "includeHeaders": { "description": "Include response headers (including ETag) in the response metadata", "type": "boolean" - "orderby": { - "anyOf": [ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } - ], - "description": "Sort expression, e.g. receivedDateTime desc" - }, - "search": { - "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", - "type": "string" - }, - "select": { - "anyOf": [ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } - ], - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" - }, - "skip": { - "description": "Items to skip for pagination. Not supported with $search.", - "minimum": 0, - "type": "integer" - }, "skiptoken": { "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", "type": "string"
+ tool added: read-mail-text
Changed 2026-10-14 12:08 UTC
3 descriptions rewritten, 1 schema or annotation change with the description left byte-identical, 5 tools added.
+ tool added: create-todo-checklist-item
--- pinned/create-todo-task +++ observed/create-todo-task { "annotations": { "destructiveHint": true, - "description": "Create a new task object in a specified todoTaskList.\n\n💡 TIP: Creates a new task in a Microsoft To Do list. Body: { title: \"...\" }; optional dueDateTime, reminderDateTime, importance, body (notes), recurrence, categories. Requires todoTaskListId from list-todo-task-lists.", + "description": "Create a new task object in a specified todoTaskList.\n\n💡 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.", "execution": { "taskSupport": "forbidden" },
+ tool added: delete-todo-checklist-item
--- pinned/download-bytes +++ observed/download-bytes { "annotations": { "openWorldHint": true, - "description": "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.", + "description": "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.", "execution": { "taskSupport": "forbidden" }, + "fileName": { + "description": "Name of the file, used as the last segment of the returned resource URI when the server runs with blob output. Optional.", + "type": "string" + }, "target": { "description": "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.", "type": "string"
+ tool added: get-mail-attachment-content
--- pinned/get-mail-message-mime +++ observed/get-mail-message-mime { "annotations": { "destructiveHint": false, + "fileName": { + "description": "Name of the file, used as the last segment of the returned resource URI when the server runs with blob output. Optional.", + "type": "string" + }, "includeHeaders": { "description": "Include response headers (including ETag) in the response metadata", "type": "boolean"
+ tool added: list-todo-checklist-items
+ tool added: update-todo-checklist-item
--- pinned/update-todo-task +++ observed/update-todo-task { "annotations": { "destructiveHint": true, - "description": "Update the properties of a todoTask object.\n\n💡 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.", + "description": "Update the properties of a todoTask object.\n\n💡 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.", "execution": { "taskSupport": "forbidden" },
Changed 2026-10-12 15:40 UTC
64 schema or annotation changes with the description left byte-identical, 2 tools added.
+ tool added: add-calendar-event-attachment
+ tool added: create-calendar-event-attachment-upload-session
--- pinned/get-calendar-event +++ observed/get-calendar-event { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "When true, expands singleValueExtendedProperties on each event. Use this to retrieve custom extended properties (e.g., sync metadata) stored on calendar events.",
--- pinned/get-calendar-view +++ observed/get-calendar-view { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "endDateTime": { - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "When true, expands singleValueExtendedProperties on each event. Use this to retrieve custom extended properties (e.g., sync metadata) stored on calendar events.",
--- pinned/get-current-user +++ observed/get-current-user { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/get-drive-delta +++ observed/get-drive-delta { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "driveId": { - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/get-drive-item +++ observed/get-drive-item { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/get-drive-root-item +++ observed/get-drive-root-item { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/get-excel-range-format +++ observed/get-excel-range-format { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/get-excel-table +++ observed/get-excel-table { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/get-mail-message +++ observed/get-mail-message { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/get-mailbox-settings +++ observed/get-mailbox-settings { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/get-my-profile +++ observed/get-my-profile { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/get-outlook-contact +++ observed/get-outlook-contact { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/get-planner-bucket +++ observed/get-planner-bucket { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/get-planner-plan +++ observed/get-planner-plan { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/get-planner-task +++ observed/get-planner-task { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/get-planner-task-details +++ observed/get-planner-task-details { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/get-specific-calendar-event +++ observed/get-specific-calendar-event { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "When true, expands singleValueExtendedProperties on each event. Use this to retrieve custom extended properties (e.g., sync metadata) stored on calendar events.",
--- pinned/get-specific-calendar-view +++ observed/get-specific-calendar-view { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "endDateTime": { - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "When true, expands singleValueExtendedProperties on each event. Use this to retrieve custom extended properties (e.g., sync metadata) stored on calendar events.",
--- pinned/get-todo-task +++ observed/get-todo-task { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/list-all-onenote-sections +++ observed/list-all-onenote-sections { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "excludeResponse": { - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/list-calendar-event-instances +++ observed/list-calendar-event-instances { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "endDateTime": { - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "When true, expands singleValueExtendedProperties on each event. Use this to retrieve custom extended properties (e.g., sync metadata) stored on calendar events.",
--- pinned/list-calendar-events +++ observed/list-calendar-events { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "excludeResponse": { - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "When true, expands singleValueExtendedProperties on each event. Use this to retrieve custom extended properties (e.g., sync metadata) stored on calendar events.",
--- pinned/list-calendar-events-delta +++ observed/list-calendar-events-delta { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "endDateTime": { - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/list-calendar-view-delta +++ observed/list-calendar-view-delta { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "endDateTime": { - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/list-calendars +++ observed/list-calendars { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "excludeResponse": { - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/list-contact-folder-child-folders +++ observed/list-contact-folder-child-folders { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "excludeResponse": { - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/list-contact-folder-contacts +++ observed/list-contact-folder-contacts { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "excludeResponse": { - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/list-contact-folders +++ observed/list-contact-folders { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "excludeResponse": { - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/list-drive-item-permissions +++ observed/list-drive-item-permissions { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "driveId": { - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/list-drive-item-thumbnails +++ observed/list-drive-item-thumbnails { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "driveId": { - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/list-drive-item-versions +++ observed/list-drive-item-versions { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "driveId": { - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/list-drives +++ observed/list-drives { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "excludeResponse": { - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/list-excel-table-rows +++ observed/list-excel-table-rows { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "driveId": { - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/list-excel-tables +++ observed/list-excel-tables { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "driveId": { - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/list-excel-worksheets +++ observed/list-excel-worksheets { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "driveId": { - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/list-focused-inbox-overrides +++ observed/list-focused-inbox-overrides { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "excludeResponse": { - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/list-folder-files +++ observed/list-folder-files { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "driveId": { - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/list-mail-attachments +++ observed/list-mail-attachments { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "excludeResponse": { - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/list-mail-child-folders +++ observed/list-mail-child-folders { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "excludeResponse": { - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/list-mail-folder-messages +++ observed/list-mail-folder-messages { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "excludeResponse": { - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/list-mail-folder-messages-delta +++ observed/list-mail-folder-messages-delta { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "excludeResponse": { - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/list-mail-folders +++ observed/list-mail-folders { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "excludeResponse": { - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/list-mail-messages +++ observed/list-mail-messages { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "excludeResponse": { - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/list-mail-rules +++ observed/list-mail-rules { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "excludeResponse": { - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/list-my-calendar-permissions +++ observed/list-my-calendar-permissions { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "excludeResponse": { - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/list-onenote-notebook-sections +++ observed/list-onenote-notebook-sections { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "excludeResponse": { - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/list-onenote-notebooks +++ observed/list-onenote-notebooks { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "excludeResponse": { - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/list-onenote-pages +++ observed/list-onenote-pages { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "excludeResponse": { - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/list-onenote-section-groups +++ observed/list-onenote-section-groups { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "excludeResponse": { - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/list-onenote-section-pages +++ observed/list-onenote-section-pages { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "excludeResponse": { - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/list-outlook-categories +++ observed/list-outlook-categories { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "excludeResponse": { - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/list-outlook-contacts +++ observed/list-outlook-contacts { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "excludeResponse": { - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/list-plan-buckets +++ observed/list-plan-buckets { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "excludeResponse": { - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/list-plan-tasks +++ observed/list-plan-tasks { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "excludeResponse": { - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/list-planner-task-messages +++ observed/list-planner-task-messages { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "excludeResponse": { - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/list-planner-tasks +++ observed/list-planner-tasks { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "excludeResponse": { - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/list-specific-calendar-events +++ observed/list-specific-calendar-events { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "excludeResponse": { - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "When true, expands singleValueExtendedProperties on each event. Use this to retrieve custom extended properties (e.g., sync metadata) stored on calendar events.",
--- pinned/list-subscriptions +++ observed/list-subscriptions { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "excludeResponse": { - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/list-supported-languages +++ observed/list-supported-languages { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "excludeResponse": {
--- pinned/list-supported-time-zones +++ observed/list-supported-time-zones { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "excludeResponse": {
--- pinned/list-todo-linked-resources +++ observed/list-todo-linked-resources { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "excludeResponse": { - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/list-todo-task-lists +++ observed/list-todo-task-lists { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "excludeResponse": { - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/list-todo-tasks +++ observed/list-todo-tasks { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "excludeResponse": { - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
--- pinned/search-onedrive-files +++ observed/search-onedrive-files { "annotations": { "destructiveHint": false, - "description": "Set true to enable advanced query mode (ConsistencyLevel: eventual). Required for complex $filter on flag/flagStatus or contains().", + "description": "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.", "type": "boolean" }, "driveId": { - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." + "description": "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": { "description": "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.",
Changed 2026-10-08 13:45 UTC
1 tool added.
+ tool added: get-upload-url
Changed 2026-10-07 13:39 UTC
2 schema or annotation changes with the description left byte-identical.
--- pinned/create-subscription +++ observed/create-subscription { "annotations": { "destructiveHint": true, + }, + "vapidPublicKey": { + "description": "Optional. The application server's VAPID public key, base64url-encoded (P-256 uncompressed point, 65 bytes pre-encoding). Obtained by calling the getVapidPublicKey function on the subscription collection. The browser passes this value to PushManager.subscribe({ applicationServerKey: vapidPublicKey }) to bind the push subscription to this server identity. Required when notificationUrl targets a known Web Push service origin (for example, *.push.apple.com, fcm.googleapis.com, updates.push.services.mozilla.com); rejected with 400 Bad Request if supplied on a standard webhook subscription. For more information, see RFC 8292.", + "type": [ + "string", + "null" + ] + }, + "webPushEncryptionP256dhPublicKey": { + "description": "Optional. The subscriber's ECDH public key, base64url-encoded (P-256 uncompressed point, 65 bytes pre-encoding). Obtained from the browser via PushSubscription.getKey('p256dh'). Used as the peer public key during ECDH key agreement to derive the per-message content encryption key for RFC 8291 payload encryption. Required when notificationUrl targets a known Web Push service origin; rejected with 400 Bad Request if supplied on a standard webhook subscription. For more information, see RFC 8291 Section 3.", + "type": [ + "string", + "null" + ] + }, + "webPushEncryptionSecret": { + "description": "Optional. The subscriber's auth secret, base64url-encoded (16 bytes pre-encoding). Obtained from the browser via PushSubscription.getKey('auth'). Used as the HMAC-SHA-256 salt for the HKDF combine step that derives key material for RFC 8291 payload encryption. Write-only: this value is never returned in GET responses (returned as null). Treat as a secret. Required when notificationUrl targets a known Web Push service origin; rejected with 400 Bad Request if supplied on a standard webhook subscription. For more information, see RFC 8291 Section 3.", + "type": [ + "string", + "null" + ] } }, "type": "object"
--- pinned/update-subscription +++ observed/update-subscription { "annotations": { "destructiveHint": true, + }, + "vapidPublicKey": { + "description": "Optional. The application server's VAPID public key, base64url-encoded (P-256 uncompressed point, 65 bytes pre-encoding). Obtained by calling the getVapidPublicKey function on the subscription collection. The browser passes this value to PushManager.subscribe({ applicationServerKey: vapidPublicKey }) to bind the push subscription to this server identity. Required when notificationUrl targets a known Web Push service origin (for example, *.push.apple.com, fcm.googleapis.com, updates.push.services.mozilla.com); rejected with 400 Bad Request if supplied on a standard webhook subscription. For more information, see RFC 8292.", + "type": [ + "string", + "null" + ] + }, + "webPushEncryptionP256dhPublicKey": { + "description": "Optional. The subscriber's ECDH public key, base64url-encoded (P-256 uncompressed point, 65 bytes pre-encoding). Obtained from the browser via PushSubscription.getKey('p256dh'). Used as the peer public key during ECDH key agreement to derive the per-message content encryption key for RFC 8291 payload encryption. Required when notificationUrl targets a known Web Push service origin; rejected with 400 Bad Request if supplied on a standard webhook subscription. For more information, see RFC 8291 Section 3.", + "type": [ + "string", + "null" + ] + }, + "webPushEncryptionSecret": { + "description": "Optional. The subscriber's auth secret, base64url-encoded (16 bytes pre-encoding). Obtained from the browser via PushSubscription.getKey('auth'). Used as the HMAC-SHA-256 salt for the HKDF combine step that derives key material for RFC 8291 payload encryption. Write-only: this value is never returned in GET responses (returned as null). Treat as a secret. Required when notificationUrl targets a known Web Push service origin; rejected with 400 Bad Request if supplied on a standard webhook subscription. For more information, see RFC 8291 Section 3.", + "type": [ + "string", + "null" + ] } }, "type": "object"
Changed 2026-10-05 14:48 UTC
12 descriptions rewritten, 64 schema or annotation changes with the description left byte-identical.
--- pinned/create-calendar-event +++ observed/create-calendar-event { "annotations": { "destructiveHint": true, - "description": "Create (schedule) a new calendar event — a meeting or appointment — on the user's calendar. Set subject, start/end times, time zone, location, body, and attendees; supports online meetings and recurrence.\n\n💡 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.", + "description": "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.\n\n💡 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.", "execution": { "taskSupport": "forbidden" },
--- pinned/create-onedrive-folder +++ observed/create-onedrive-folder { "annotations": { "destructiveHint": true, - "description": "[Note: Simplified from 137 properties to 25 most common ones]", + "description": "[Note: Simplified from 138 properties to 25 most common ones]", "properties": { "aboutMe": { "description": "A freeform text entry field for the user to describe themselves. Requires $select to retrieve.", - "description": "[Note: Simplified from 137 properties to 25 most common ones]", + "description": "[Note: Simplified from 138 properties to 25 most common ones]", "properties": { "aboutMe": { "description": "A freeform text entry field for the user to describe themselves. Requires $select to retrieve.",
--- pinned/create-specific-calendar-event +++ observed/create-specific-calendar-event { "annotations": { "destructiveHint": true, - "description": "Use this API to create a new event in a calendar. The calendar can be one for a user, or the default calendar of a Microsoft 365 group.\n\n💡 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.", + "description": "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.\n\n💡 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.", "execution": { "taskSupport": "forbidden" },
--- pinned/delete-specific-calendar-event +++ observed/delete-specific-calendar-event { "annotations": { "destructiveHint": true, - "description": "Delete a specific calendar event.\n\n💡 TIP: Deleting a seriesMaster deletes ALL occurrences. To cancel a single occurrence, use the specific instance ID.", + "description": "Delete a specific calendar event. Requires calendarId (the target calendar's ID) and eventId (the event's own ID).\n\n💡 TIP: Deleting a seriesMaster deletes ALL occurrences. To cancel a single occurrence, use the specific instance ID.", "execution": { "taskSupport": "forbidden" },
--- pinned/download-bytes-to-file +++ observed/download-bytes-to-file { "annotations": { "openWorldHint": true, - "description": "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 only: not available over HTTP. 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.", + "description": "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.", "execution": { "taskSupport": "forbidden" },
--- pinned/get-calendar-event +++ observed/get-calendar-event { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "expandExtendedProperties": { "description": "When true, expands singleValueExtendedProperties on each event. Use this to retrieve custom extended properties (e.g., sync metadata) stored on calendar events.", - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "timezone": { "description": "IANA timezone name (e.g., \"America/New_York\", \"Europe/London\", \"Asia/Tokyo\") for calendar event times. If not specified, times are returned in UTC.",
--- pinned/get-calendar-view +++ observed/get-calendar-view { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "expandExtendedProperties": { "description": "When true, expands singleValueExtendedProperties on each event. Use this to retrieve custom extended properties (e.g., sync metadata) stored on calendar events.", - "description": "Sort expression, e.g. receivedDateTime desc", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Sort expression, e.g. receivedDateTime desc" }, "search": { - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "select": { - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "skip": { "description": "Items to skip for pagination. Not supported with $search.", - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "startDateTime": { "description": "The start date and time of the time range, represented in ISO 8601 format. For example, 2019-11-08T19:00:00-08:00", "type": "string" - "type": "number" + "minimum": 0, + "type": "integer" } }, "required": [
--- pinned/get-current-user +++ observed/get-current-user { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" } }, "type": "object"
--- pinned/get-download-url +++ observed/get-download-url { "annotations": { "openWorldHint": true, - "description": "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? }. NOTE: mail file attachments (/messages/{id}/attachments/{id}/$value) and meeting recordings do NOT expose a pre-authenticated URL — Graph offers no such link for them; use download-bytes for small ones.", + "description": "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.", "execution": { "taskSupport": "forbidden" }, - "description": "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 not supported (Graph exposes no pre-authenticated URL for them).", + "description": "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.", "type": "string" } },
--- pinned/get-drive-delta +++ observed/get-drive-delta { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Sort expression, e.g. receivedDateTime desc", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Sort expression, e.g. receivedDateTime desc" }, "search": { - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "select": { - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "skip": { "description": "Items to skip for pagination. Not supported with $search.", - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "top": { "description": "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.", - "type": "number" + "minimum": 0, + "type": "integer" } }, "required": [
--- pinned/get-drive-item +++ observed/get-drive-item { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" } }, "required": [
--- pinned/get-drive-root-item +++ observed/get-drive-root-item { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" } }, "required": [
--- pinned/get-excel-range-format +++ observed/get-excel-range-format { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "workbookWorksheetId": { "description": "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.",
--- pinned/get-excel-table +++ observed/get-excel-table { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "workbookTableId": { "description": "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.",
--- pinned/get-mail-message +++ observed/get-mail-message { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" } }, "required": [
--- pinned/get-mail-message-mime +++ observed/get-mail-message-mime { "annotations": { "destructiveHint": false, - "description": "Download the raw MIME source (RFC 822 .eml content) of an Outlook email message by its message ID. Returns the complete original message including headers and encoded attachments.\n\n💡 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.", + "description": "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.\n\n💡 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.", "execution": { "taskSupport": "forbidden" },
--- pinned/get-mailbox-settings +++ observed/get-mailbox-settings { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" } }, "type": "object"
--- pinned/get-my-profile +++ observed/get-my-profile { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" } }, "type": "object"
--- pinned/get-outlook-contact +++ observed/get-outlook-contact { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" } }, "required": [
--- pinned/get-planner-bucket +++ observed/get-planner-bucket { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" } }, "required": [
--- pinned/get-planner-plan +++ observed/get-planner-plan { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" } }, "required": [
--- pinned/get-planner-task +++ observed/get-planner-task { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" } }, "required": [
--- pinned/get-planner-task-details +++ observed/get-planner-task-details { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" } }, "required": [
--- pinned/get-specific-calendar-event +++ observed/get-specific-calendar-event { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "expandExtendedProperties": { "description": "When true, expands singleValueExtendedProperties on each event. Use this to retrieve custom extended properties (e.g., sync metadata) stored on calendar events.", - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "timezone": { "description": "IANA timezone name (e.g., \"America/New_York\", \"Europe/London\", \"Asia/Tokyo\") for calendar event times. If not specified, times are returned in UTC.",
--- pinned/get-specific-calendar-view +++ observed/get-specific-calendar-view { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "expandExtendedProperties": { "description": "When true, expands singleValueExtendedProperties on each event. Use this to retrieve custom extended properties (e.g., sync metadata) stored on calendar events.", - "description": "Sort expression, e.g. receivedDateTime desc", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Sort expression, e.g. receivedDateTime desc" }, "search": { - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "select": { - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "skip": { "description": "Items to skip for pagination. Not supported with $search.", - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "startDateTime": { "description": "The start date and time of the time range, represented in ISO 8601 format. For example, 2019-11-08T19:00:00-08:00", "type": "string" - "type": "number" + "minimum": 0, + "type": "integer" } }, "required": [
--- pinned/get-subscription +++ observed/get-subscription { "annotations": { "destructiveHint": false, - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "subscriptionId": { "description": "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.",
--- pinned/get-todo-task +++ observed/get-todo-task { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "todoTaskId": { "description": "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.",
--- pinned/list-all-onenote-sections +++ observed/list-all-onenote-sections { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Sort expression, e.g. receivedDateTime desc", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Sort expression, e.g. receivedDateTime desc" }, "search": { - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "select": { - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "skip": { "description": "Items to skip for pagination. Not supported with $search.", - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "top": { "description": "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.", - "type": "number" + "minimum": 0, + "type": "integer" } }, "type": "object"
--- pinned/list-calendar-event-instances +++ observed/list-calendar-event-instances { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "expandExtendedProperties": { "description": "When true, expands singleValueExtendedProperties on each event. Use this to retrieve custom extended properties (e.g., sync metadata) stored on calendar events.", - "description": "Sort expression, e.g. receivedDateTime desc", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Sort expression, e.g. receivedDateTime desc" }, "search": { - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "select": { - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "skip": { "description": "Items to skip for pagination. Not supported with $search.", - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "startDateTime": { "description": "The start date and time of the time range, represented in ISO 8601 format. For example, 2019-11-08T19:00:00-08:00", "type": "string" - "type": "number" + "minimum": 0, + "type": "integer" } }, "required": [
--- pinned/list-calendar-events +++ observed/list-calendar-events { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "expandExtendedProperties": { "description": "When true, expands singleValueExtendedProperties on each event. Use this to retrieve custom extended properties (e.g., sync metadata) stored on calendar events.", - "description": "Sort expression, e.g. receivedDateTime desc", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Sort expression, e.g. receivedDateTime desc" }, "search": { - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "select": { - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "skip": { "description": "Items to skip for pagination. Not supported with $search.", - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "timezone": { "description": "IANA timezone name (e.g., \"America/New_York\", \"Europe/London\", \"Asia/Tokyo\") for calendar event times. If not specified, times are returned in UTC.", "type": "string" - "type": "number" + "minimum": 0, + "type": "integer" } }, "type": "object"
--- pinned/list-calendar-events-delta +++ observed/list-calendar-events-delta { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Sort expression, e.g. receivedDateTime desc", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Sort expression, e.g. receivedDateTime desc" }, "search": { - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "select": { - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "skip": { "description": "Items to skip for pagination. Not supported with $search.", - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "startDateTime": { "description": "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", "type": "string"
--- pinned/list-calendar-view-delta +++ observed/list-calendar-view-delta { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Sort expression, e.g. receivedDateTime desc", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Sort expression, e.g. receivedDateTime desc" }, "search": { - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "select": { - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "skip": { "description": "Items to skip for pagination. Not supported with $search.", - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "startDateTime": { "description": "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", "type": "string" + }, + "timezone": { + "description": "IANA timezone name (e.g., \"America/New_York\", \"Europe/London\", \"Asia/Tokyo\") for calendar event times. If not specified, times are returned in UTC.", + "type": "string" } }, "required": [
--- pinned/list-calendars +++ observed/list-calendars { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Sort expression, e.g. receivedDateTime desc", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Sort expression, e.g. receivedDateTime desc" }, "search": { - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "select": { - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "skip": { "description": "Items to skip for pagination. Not supported with $search.", - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "top": { "description": "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.", - "type": "number" + "minimum": 0, + "type": "integer" } }, "type": "object"
--- pinned/list-contact-folder-child-folders +++ observed/list-contact-folder-child-folders { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Sort expression, e.g. receivedDateTime desc", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Sort expression, e.g. receivedDateTime desc" }, "search": { - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "select": { - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "skip": { "description": "Items to skip for pagination. Not supported with $search.", - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "top": { "description": "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.", - "type": "number" + "minimum": 0, + "type": "integer" } }, "required": [
--- pinned/list-contact-folder-contacts +++ observed/list-contact-folder-contacts { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Sort expression, e.g. receivedDateTime desc", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Sort expression, e.g. receivedDateTime desc" }, "search": { - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "select": { - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "skip": { "description": "Items to skip for pagination. Not supported with $search.", - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "top": { "description": "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.", - "type": "number" + "minimum": 0, + "type": "integer" } }, "required": [
--- pinned/list-contact-folders +++ observed/list-contact-folders { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Sort expression, e.g. receivedDateTime desc", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Sort expression, e.g. receivedDateTime desc" }, "search": { - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "select": { - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "skip": { "description": "Items to skip for pagination. Not supported with $search.", - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "top": { "description": "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.", - "type": "number" + "minimum": 0, + "type": "integer" } }, "type": "object"
--- pinned/list-drive-item-permissions +++ observed/list-drive-item-permissions { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Sort expression, e.g. receivedDateTime desc", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Sort expression, e.g. receivedDateTime desc" }, "search": { - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "select": { - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "skip": { "description": "Items to skip for pagination. Not supported with $search.", - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "top": { "description": "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.", - "type": "number" + "minimum": 0, + "type": "integer" } }, "required": [
--- pinned/list-drive-item-thumbnails +++ observed/list-drive-item-thumbnails { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Sort expression, e.g. receivedDateTime desc", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Sort expression, e.g. receivedDateTime desc" }, "search": { - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "select": { - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "skip": { "description": "Items to skip for pagination. Not supported with $search.", - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "top": { "description": "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.", - "type": "number" + "minimum": 0, + "type": "integer" } }, "required": [
--- pinned/list-drive-item-versions +++ observed/list-drive-item-versions { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Sort expression, e.g. receivedDateTime desc", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Sort expression, e.g. receivedDateTime desc" }, "search": { - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "select": { - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "skip": { "description": "Items to skip for pagination. Not supported with $search.", - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "top": { "description": "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.", - "type": "number" + "minimum": 0, + "type": "integer" } }, "required": [
--- pinned/list-drives +++ observed/list-drives { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Sort expression, e.g. receivedDateTime desc", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Sort expression, e.g. receivedDateTime desc" }, "search": { - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "select": { - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "skip": { "description": "Items to skip for pagination. Not supported with $search.", - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "top": { "description": "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.", - "type": "number" + "minimum": 0, + "type": "integer" } }, "type": "object"
--- pinned/list-excel-table-rows +++ observed/list-excel-table-rows { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Sort expression, e.g. receivedDateTime desc", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Sort expression, e.g. receivedDateTime desc" }, "search": { - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "select": { - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "skip": { "description": "Items to skip for pagination. Not supported with $search.", - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "top": { "description": "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.", - "type": "number" + "minimum": 0, + "type": "integer" }, "workbookTableId": { "description": "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.",
--- pinned/list-excel-tables +++ observed/list-excel-tables { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Sort expression, e.g. receivedDateTime desc", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Sort expression, e.g. receivedDateTime desc" }, "search": { - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "select": { - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "skip": { "description": "Items to skip for pagination. Not supported with $search.", - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "top": { "description": "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.", - "type": "number" + "minimum": 0, + "type": "integer" } }, "required": [
--- pinned/list-excel-worksheets +++ observed/list-excel-worksheets { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Sort expression, e.g. receivedDateTime desc", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Sort expression, e.g. receivedDateTime desc" }, "search": { - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "select": { - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "skip": { "description": "Items to skip for pagination. Not supported with $search.", - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "top": { "description": "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.", - "type": "number" + "minimum": 0, + "type": "integer" } }, "required": [
--- pinned/list-focused-inbox-overrides +++ observed/list-focused-inbox-overrides { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Sort expression, e.g. receivedDateTime desc", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Sort expression, e.g. receivedDateTime desc" }, "search": { - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "select": { - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "skip": { "description": "Items to skip for pagination. Not supported with $search.", - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "top": { "description": "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.", - "type": "number" + "minimum": 0, + "type": "integer" } }, "type": "object"
--- pinned/list-folder-files +++ observed/list-folder-files { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Sort expression, e.g. receivedDateTime desc", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Sort expression, e.g. receivedDateTime desc" }, "search": { - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "select": { - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "skip": { "description": "Items to skip for pagination. Not supported with $search.", - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "top": { "description": "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.", - "type": "number" + "minimum": 0, + "type": "integer" } }, "required": [
--- pinned/list-mail-attachments +++ observed/list-mail-attachments { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Sort expression, e.g. receivedDateTime desc", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Sort expression, e.g. receivedDateTime desc" }, "search": { - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "select": { - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "skip": { "description": "Items to skip for pagination. Not supported with $search.", - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "top": { "description": "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.", - "type": "number" + "minimum": 0, + "type": "integer" } }, "required": [
--- pinned/list-mail-child-folders +++ observed/list-mail-child-folders { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Sort expression, e.g. receivedDateTime desc", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Sort expression, e.g. receivedDateTime desc" }, "search": { - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "select": { - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "skip": { "description": "Items to skip for pagination. Not supported with $search.", - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "top": { "description": "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.", - "type": "number" + "minimum": 0, + "type": "integer" } }, "required": [
--- pinned/list-mail-folder-messages +++ observed/list-mail-folder-messages { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Sort expression, e.g. receivedDateTime desc", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Sort expression, e.g. receivedDateTime desc" }, "search": { - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "select": { - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "skip": { "description": "Items to skip for pagination. Not supported with $search.", - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "top": { "description": "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.", - "type": "number" + "minimum": 0, + "type": "integer" } }, "required": [
--- pinned/list-mail-folder-messages-delta +++ observed/list-mail-folder-messages-delta { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Sort expression, e.g. receivedDateTime desc", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Sort expression, e.g. receivedDateTime desc" }, "search": { - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "select": { - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "skip": { "description": "Items to skip for pagination. Not supported with $search.", - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "top": { "description": "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.", - "type": "number" + "minimum": 0, + "type": "integer" } }, "required": [
--- pinned/list-mail-folders +++ observed/list-mail-folders { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Sort expression, e.g. receivedDateTime desc", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Sort expression, e.g. receivedDateTime desc" }, "search": { - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "select": { - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "skip": { "description": "Items to skip for pagination. Not supported with $search.", - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "top": { "description": "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.", - "type": "number" + "minimum": 0, + "type": "integer" } }, "type": "object"
--- pinned/list-mail-messages +++ observed/list-mail-messages { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Sort expression, e.g. receivedDateTime desc", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Sort expression, e.g. receivedDateTime desc" }, "search": { - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "select": { - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "skip": { "description": "Items to skip for pagination. Not supported with $search.", - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "top": { "description": "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.", - "type": "number" + "minimum": 0, + "type": "integer" } }, "type": "object"
--- pinned/list-mail-rules +++ observed/list-mail-rules { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Sort expression, e.g. receivedDateTime desc", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Sort expression, e.g. receivedDateTime desc" }, "search": { - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "select": { - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "skip": { "description": "Items to skip for pagination. Not supported with $search.", - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "top": { "description": "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.", - "type": "number" + "minimum": 0, + "type": "integer" } }, "required": [
--- pinned/list-my-calendar-permissions +++ observed/list-my-calendar-permissions { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Sort expression, e.g. receivedDateTime desc", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Sort expression, e.g. receivedDateTime desc" }, "search": { - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "select": { - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "skip": { "description": "Items to skip for pagination. Not supported with $search.", - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "top": { "description": "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.", - "type": "number" + "minimum": 0, + "type": "integer" } }, "type": "object"
--- pinned/list-onenote-notebook-sections +++ observed/list-onenote-notebook-sections { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Sort expression, e.g. receivedDateTime desc", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Sort expression, e.g. receivedDateTime desc" }, "search": { - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "select": { - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "skip": { "description": "Items to skip for pagination. Not supported with $search.", - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "top": { "description": "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.", - "type": "number" + "minimum": 0, + "type": "integer" } }, "required": [
--- pinned/list-onenote-notebooks +++ observed/list-onenote-notebooks { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Sort expression, e.g. receivedDateTime desc", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Sort expression, e.g. receivedDateTime desc" }, "search": { - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "select": { - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "skip": { "description": "Items to skip for pagination. Not supported with $search.", - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "top": { "description": "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.", - "type": "number" + "minimum": 0, + "type": "integer" } }, "type": "object"
--- pinned/list-onenote-pages +++ observed/list-onenote-pages { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Sort expression, e.g. receivedDateTime desc", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Sort expression, e.g. receivedDateTime desc" }, "search": { - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "select": { - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "skip": { "description": "Items to skip for pagination. Not supported with $search.", - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "top": { "description": "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.", - "type": "number" + "minimum": 0, + "type": "integer" } }, "type": "object"
--- pinned/list-onenote-section-groups +++ observed/list-onenote-section-groups { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Sort expression, e.g. receivedDateTime desc", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Sort expression, e.g. receivedDateTime desc" }, "search": { - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "select": { - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "skip": { "description": "Items to skip for pagination. Not supported with $search.", - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "top": { "description": "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.", - "type": "number" + "minimum": 0, + "type": "integer" } }, "type": "object"
--- pinned/list-onenote-section-pages +++ observed/list-onenote-section-pages { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Sort expression, e.g. receivedDateTime desc", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Sort expression, e.g. receivedDateTime desc" }, "search": { - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "select": { - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "skip": { "description": "Items to skip for pagination. Not supported with $search.", - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "top": { "description": "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.", - "type": "number" + "minimum": 0, + "type": "integer" } }, "required": [
--- pinned/list-outlook-categories +++ observed/list-outlook-categories { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Sort expression, e.g. receivedDateTime desc", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Sort expression, e.g. receivedDateTime desc" }, "search": { - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "select": { - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "skip": { "description": "Items to skip for pagination. Not supported with $search.", - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "top": { "description": "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.", - "type": "number" + "minimum": 0, + "type": "integer" } }, "type": "object"
--- pinned/list-outlook-contacts +++ observed/list-outlook-contacts { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Sort expression, e.g. receivedDateTime desc", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Sort expression, e.g. receivedDateTime desc" }, "search": { - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "select": { - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "skip": { "description": "Items to skip for pagination. Not supported with $search.", - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "top": { "description": "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.", - "type": "number" + "minimum": 0, + "type": "integer" } }, "type": "object"
--- pinned/list-plan-buckets +++ observed/list-plan-buckets { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Sort expression, e.g. receivedDateTime desc", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Sort expression, e.g. receivedDateTime desc" }, "plannerPlanId": { "description": "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.", - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "select": { - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "skip": { "description": "Items to skip for pagination. Not supported with $search.", - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "top": { "description": "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.", - "type": "number" + "minimum": 0, + "type": "integer" } }, "required": [
--- pinned/list-plan-tasks +++ observed/list-plan-tasks { "annotations": { "destructiveHint": false, - "description": "Retrieve a list of plannerTask objects associated with a plannerPlan object.\n\n💡 TIP: Priority values: 0=Urgent, 1=Important, 3=Medium, 5=Low, 9=unset.", + "description": "Retrieve a list of plannerTask objects associated with a plannerPlan object.\n\n💡 TIP: Priority is 0-10 (lower = higher priority); Planner's own UI presets are 1=Urgent, 3=Important, 5=Medium, 9=Low.", "execution": { "taskSupport": "forbidden" }, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Sort expression, e.g. receivedDateTime desc", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Sort expression, e.g. receivedDateTime desc" }, "plannerPlanId": { "description": "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.", - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "select": { - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "skip": { "description": "Items to skip for pagination. Not supported with $search.", - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "top": { "description": "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.", - "type": "number" + "minimum": 0, + "type": "integer" } }, "required": [
--- pinned/list-planner-task-messages +++ observed/list-planner-task-messages { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Sort expression, e.g. receivedDateTime desc", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Sort expression, e.g. receivedDateTime desc" }, "plannerTaskId": { "description": "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.", - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "select": { - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "skip": { "description": "Items to skip for pagination. Not supported with $search.", - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "top": { "description": "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.", - "type": "number" + "minimum": 0, + "type": "integer" } }, "required": [
--- pinned/list-planner-tasks +++ observed/list-planner-tasks { "annotations": { "destructiveHint": false, - "description": "Retrieve a list of plannertask objects assigned to a User.\n\n💡 TIP: Priority values: 0=Urgent, 1=Important, 3=Medium, 5=Low, 9=unset.", + "description": "Retrieve a list of plannertask objects assigned to a User.\n\n💡 TIP: Priority is 0-10 (lower = higher priority); Planner's own UI presets are 1=Urgent, 3=Important, 5=Medium, 9=Low.", "execution": { "taskSupport": "forbidden" }, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Sort expression, e.g. receivedDateTime desc", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Sort expression, e.g. receivedDateTime desc" }, "search": { - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "select": { - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "skip": { "description": "Items to skip for pagination. Not supported with $search.", - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "top": { "description": "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.", - "type": "number" + "minimum": 0, + "type": "integer" } }, "type": "object"
--- pinned/list-specific-calendar-events +++ observed/list-specific-calendar-events { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "expandExtendedProperties": { "description": "When true, expands singleValueExtendedProperties on each event. Use this to retrieve custom extended properties (e.g., sync metadata) stored on calendar events.", - "description": "Sort expression, e.g. receivedDateTime desc", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Sort expression, e.g. receivedDateTime desc" }, "search": { - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "select": { - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "skip": { "description": "Items to skip for pagination. Not supported with $search.", - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "timezone": { "description": "IANA timezone name (e.g., \"America/New_York\", \"Europe/London\", \"Asia/Tokyo\") for calendar event times. If not specified, times are returned in UTC.", "type": "string" - "type": "number" + "minimum": 0, + "type": "integer" } }, "required": [
--- pinned/list-subscriptions +++ observed/list-subscriptions { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Sort expression, e.g. receivedDateTime desc", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Sort expression, e.g. receivedDateTime desc" }, "search": { - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "select": { - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "skip": { "description": "Items to skip for pagination. Not supported with $search.", - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "top": { "description": "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.", - "type": "number" + "minimum": 0, + "type": "integer" } }, "type": "object"
--- pinned/list-supported-languages +++ observed/list-supported-languages { "annotations": { "destructiveHint": false, - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "skip": { - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "top": { "description": "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.", - "type": "number" + "minimum": 0, + "type": "integer" } }, "type": "object"
--- pinned/list-supported-time-zones +++ observed/list-supported-time-zones { "annotations": { "destructiveHint": false, - "description": "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\ngetting the user's mailbox settings.\n\n💡 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 — the format must match what the server expects.", + "description": "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\ngetting the user's mailbox settings.\n\n💡 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.", "execution": { "taskSupport": "forbidden" }, - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "skip": { - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "top": { "description": "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.", - "type": "number" + "minimum": 0, + "type": "integer" } }, "required": [
--- pinned/list-todo-linked-resources +++ observed/list-todo-linked-resources { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Sort expression, e.g. receivedDateTime desc", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Sort expression, e.g. receivedDateTime desc" }, "search": { - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "select": { - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "skip": { "description": "Items to skip for pagination. Not supported with $search.", - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "todoTaskId": { "description": "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.", "type": "string" - "type": "number" + "minimum": 0, + "type": "integer" } }, "required": [
--- pinned/list-todo-task-lists +++ observed/list-todo-task-lists { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Sort expression, e.g. receivedDateTime desc", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Sort expression, e.g. receivedDateTime desc" }, "search": { - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "select": { - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "skip": { "description": "Items to skip for pagination. Not supported with $search.", - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "top": { "description": "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.", - "type": "number" + "minimum": 0, + "type": "integer" } }, "type": "object"
--- pinned/list-todo-tasks +++ observed/list-todo-tasks { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Sort expression, e.g. receivedDateTime desc", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Sort expression, e.g. receivedDateTime desc" }, "search": { - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "select": { - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "skip": { "description": "Items to skip for pagination. Not supported with $search.", - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "todoTaskListId": { "description": "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.", "type": "string" - "type": "number" + "minimum": 0, + "type": "integer" } }, "required": [
--- pinned/move-rename-onedrive-item +++ observed/move-rename-onedrive-item { "annotations": { "destructiveHint": true, - "description": "[Note: Simplified from 137 properties to 25 most common ones]", + "description": "[Note: Simplified from 138 properties to 25 most common ones]", "properties": { "aboutMe": { "description": "A freeform text entry field for the user to describe themselves. Requires $select to retrieve.", - "description": "[Note: Simplified from 137 properties to 25 most common ones]", + "description": "[Note: Simplified from 138 properties to 25 most common ones]", "properties": { "aboutMe": { "description": "A freeform text entry field for the user to describe themselves. Requires $select to retrieve.",
--- pinned/search-onedrive-files +++ observed/search-onedrive-files { "annotations": { "destructiveHint": false, - "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead.", - "items": { - "type": "string" - }, - "type": "array" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "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\", and an unsupported value may be ignored rather than reported. Request ordinary fields with $select instead." }, "fetchAllPages": { "description": "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.", - "description": "Sort expression, e.g. receivedDateTime desc", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Sort expression, e.g. receivedDateTime desc" }, "q": { "description": "Value for the 'q' path segment.", - "description": "KQL search query — wrap value in double quotes. Cannot combine with $filter.", + "description": "KQL search query in one pair of double quotes; directory (users/groups) instead quotes each clause with no outer pair. Cannot combine with $filter.", "type": "string" }, "select": { - "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "Comma-separated fields to return, e.g. id,subject,from,receivedDateTime" }, "skip": { "description": "Items to skip for pagination. Not supported with $search.", - "type": "number" + "minimum": 0, + "type": "integer" }, + "skiptoken": { + "description": "Next page: the @odata.nextLink from the previous response. Keep the other arguments the same.", + "type": "string" + }, "top": { "description": "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.", - "type": "number" + "minimum": 0, + "type": "integer" } }, "required": [
--- pinned/update-calendar-event +++ observed/update-calendar-event { "annotations": { "destructiveHint": true, - "description": "Update the properties of the event object.\n\n💡 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.", + "description": "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.\n\n💡 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.", "execution": { "taskSupport": "forbidden" },
--- pinned/update-planner-task +++ observed/update-planner-task { "annotations": { "destructiveHint": true, - "description": "Update the properties of plannerTask object.\n\n💡 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 values: 0=Urgent, 1=Important, 3=Medium, 5=Low, 9=unset.", + "description": "Update the properties of plannerTask object.\n\n💡 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.", "execution": { "taskSupport": "forbidden" },
--- pinned/update-specific-calendar-event +++ observed/update-specific-calendar-event { "annotations": { "destructiveHint": true, - "description": "Update a specific calendar event.\n\n💡 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.", + "description": "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.\n\n💡 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.", "execution": { "taskSupport": "forbidden" },
Changed 2026-09-04 10:48 UTC
2 descriptions rewritten.
--- pinned/get-calendar-view +++ observed/get-calendar-view { "annotations": { "destructiveHint": false, - "description": "Get the occurrences, exceptions, and single instances of events in a calendar view defined by a time range, from the user's default calendar,\nor from some other calendar of the user.\n\n💡 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 $filter=isOnlineMeeting eq true. To search by subject, use $filter=contains(subject,'keyword'). Teams meetings expose their join link as onlineMeeting/joinUrl (select it with $select=onlineMeeting); the event resource has no joinWebUrl property. Pass that joinUrl to list-online-meetings as $filter=JoinWebUrl eq '{url}' to reach transcripts.", + "description": "Get the occurrences, exceptions, and single instances of events in a calendar view defined by a time range, from the user's default calendar,\nor from some other calendar of the user.\n\n💡 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.", "execution": { "taskSupport": "forbidden" },
--- pinned/get-specific-calendar-view +++ observed/get-specific-calendar-view { "annotations": { "destructiveHint": false, - "description": "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.\n\n💡 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 $filter=isOnlineMeeting eq true. Teams meetings expose their join link as onlineMeeting/joinUrl (select it with $select=onlineMeeting); the event resource has no joinWebUrl property. Pass that joinUrl to list-online-meetings as $filter=JoinWebUrl eq '{url}' to reach transcripts.", + "description": "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.\n\n💡 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.", "execution": { "taskSupport": "forbidden" },
Current tools
Show all 197 tool fingerprints
Watch this server yourself
If you run this server, put the proxy in front of it. It pins these exact fingerprints on first connect and stops the session if they move.
npx -y mcp-pin@0.2.3 -- <your @softeria/ms-365-mcp-server command>
Or subscribe to this page's RSS feed to be told when it changes.
Badge
The badge states one fact about time and nothing else. It never claims a server is safe.
[](https://mcp-pin.gautamkhosla.com/servers/6b2bed41fbea00f7.html)