@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 b32b8b84f172b40836643b03 · repository · RSS
What changed
Changed 2026-10-30 13:06 UTC
49 schema or annotation changes with the description left byte-identical.
--- pinned/add-calendar-event-attachment +++ observed/add-calendar-event-attachment { "annotations": { "destructiveHint": true, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "name": { "description": "The attachment's file name.",
--- pinned/add-mail-attachment +++ observed/add-mail-attachment { "annotations": { "destructiveHint": true, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "name": { "description": "The attachment's file name.",
--- pinned/create-calendar +++ observed/create-calendar { "annotations": { "destructiveHint": true, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "name": { "description": "The attachment's file name.", - ], - "description": "The date and time when the response was returned. It uses ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] } }, "type": "object" - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "end": { "additionalProperties": true, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "location": { "additionalProperties": true, - ], - "description": "The date to stop applying the recurrence pattern. Depending on the recurrence pattern of the event, the last occurrence of the meeting may not be this date. Required if type is endDate." + ] }, "numberOfOccurrences": { "description": "The number of times to repeat the event. Required and must be positive if type is numbered.", - ], - "description": "The date to start applying the recurrence pattern. The first occurrence of the meeting may be this date or later, depending on the recurrence pattern of the event. Must be the same value as the start property of the recurring event. Required." + ] }, "type": { "enum": [ - ], - "description": "The number of minutes before the event start time that the reminder alert occurs." + ] }, "responseRequested": { "description": "Default is true, which represents the organizer would like an invitee to send a response to the event.", - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "name": { "description": "The attachment's file name.", - ], - "description": "The date and time when the response was returned. It uses ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] } }, "type": "object" - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "end": { "additionalProperties": true, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "location": { "additionalProperties": true, - ], - "description": "The date to stop applying the recurrence pattern. Depending on the recurrence pattern of the event, the last occurrence of the meeting may not be this date. Required if type is endDate." + ] }, "numberOfOccurrences": { "description": "The number of times to repeat the event. Required and must be positive if type is numbered.", - ], - "description": "The date to start applying the recurrence pattern. The first occurrence of the meeting may be this date or later, depending on the recurrence pattern of the event. Must be the same value as the start property of the recurring event. Required." + ] }, "type": { "enum": [ - ], - "description": "The number of minutes before the event start time that the reminder alert occurs." + ] }, "responseRequested": { "description": "Default is true, which represents the organizer would like an invitee to send a response to the event.",
--- pinned/create-calendar-event +++ observed/create-calendar-event { "annotations": { "destructiveHint": true, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "name": { "description": "The attachment's file name.", - ], - "description": "The date and time when the response was returned. It uses ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] } }, "type": "object" - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "end": { "additionalProperties": true, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "location": { "additionalProperties": true, - ], - "description": "The date to stop applying the recurrence pattern. Depending on the recurrence pattern of the event, the last occurrence of the meeting may not be this date. Required if type is endDate." + ] }, "numberOfOccurrences": { "description": "The number of times to repeat the event. Required and must be positive if type is numbered.", - ], - "description": "The date to start applying the recurrence pattern. The first occurrence of the meeting may be this date or later, depending on the recurrence pattern of the event. Must be the same value as the start property of the recurring event. Required." + ] }, "type": { "enum": [ - ], - "description": "The number of minutes before the event start time that the reminder alert occurs." + ] }, "responseRequested": { "description": "Default is true, which represents the organizer would like an invitee to send a response to the event.",
--- pinned/create-contact-child-folder +++ observed/create-contact-child-folder { "annotations": { "destructiveHint": true, - "$ref": "#/$defs/def3" + "$ref": "#/$defs/def5" }, "type": "array" }, - ], - "description": "The contact's birthday. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "businessAddress": { - "$ref": "#/$defs/def2" + "$ref": "#/$defs/def8" }, "businessHomePage": { "description": "The business home page of the contact.", - "type": [ - "string", - "null" - ] + "$ref": "#/$defs/def9" }, "type": "array" }, - "type": [ - "string", - "null" - ] + "$ref": "#/$defs/def7" }, "type": "array" }, - "type": [ - "string", - "null" - ] + "$ref": "#/$defs/def10" }, "type": "array" }, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "department": { "description": "The contact's department.", - "additionalProperties": true, - "properties": { - "address": { - "description": "The email address of the person or entity.", - "type": [ - "string", - "null" - ] - }, - "name": { - "description": "The display name of the person or entity.", - "type": [ - "string", - "null" - ] - } - }, - "type": "object" + "$ref": "#/$defs/def11" }, "type": "array" }, - "$ref": "#/$defs/def2" + "$ref": "#/$defs/def8" }, "homePhones": { "description": "The contact's home phone numbers.", - "type": [ - "string", - "null" - ] + "$ref": "#/$defs/def2" }, "type": "array" }, - "type": [ - "string", - "null" - ] + "$ref": "#/$defs/def3" }, "type": "array" }, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "multiValueExtendedProperties": { "description": "The collection of multi-value extended properties defined for the contact. Read-only. Nullable.", - "$ref": "#/$defs/def3" + "$ref": "#/$defs/def5" }, "type": "array" }, - "def2": { + "def10": { + "type": [ + "string", + "null" + ] + }, + "def11": { "additionalProperties": true, "properties": { - "city": { - "description": "The city.", - "type": [ - "string", - "null" - ] - }, - "countryOrRegion": { - "description": "The country or region. It's a free-format string value, for example, 'United States'.", - "type": [ - "string", - "null" - ] - }, - "postalCode": { - "description": "The postal code.", + "address": { + "description": "The email address of the person or entity.", "type": [ "string", "null" - "state": { - "description": "The state.", + "name": { + "description": "The display name of the person or entity.", "type": [ "string", "null" + } + }, + "type": "object" + }, + "def12": { + "type": "boolean" + }, + "def13": { + "type": "boolean" + }, + "def14": { + "type": "boolean" + }, + "def2": { + "type": [ + "string", + "null" + ] + }, + "def3": { + "type": [ + "string", + "null" + ] + }, + "def4": { + "additionalProperties": true, + "properties": { + "id": { + "description": "The unique identifier for an entity. Read-only.", + "type": "string" }, - "street": { - "description": "The street.", + "value": { + "description": "A property value.", "type": [ "string", "null" - "def3": { + "def5": { "additionalProperties": true, "properties": { "id": { - "type": [ - "string", - "null" - ] + "$ref": "#/$defs/def6" }, "type": "array" } - "def4": { + "def6": { + "type": [ + "string", + "null" + ] + }, + "def7": { + "type": [ + "string", + "null" + ] + }, + "def8": { "additionalProperties": true, "properties": { - "id": { - "description": "The unique identifier for an entity. Read-only.", - "type": "string" + "city": { + "description": "The city.", + "type": [ + "string", + "null" + ] }, - "value": { - "description": "A property value.", + "countryOrRegion": { + "description": "The country or region. It's a free-format string value, for example, 'United States'.", "type": [ "string", "null" + }, + "postalCode": { + "description": "The postal code.", + "type": [ + "string", + "null" + ] + }, + "state": { + "description": "The state.", + "type": [ + "string", + "null" + ] + }, + "street": { + "description": "The street.", + "type": [ + "string", + "null" + ] } }, "type": "object" + }, + "def9": { + "type": [ + "string", + "null" + ] } }, "$schema": "http://json-schema.org/draft-07/schema#", - "$ref": "#/$defs/def3" + "$ref": "#/$defs/def5" }, "type": "array" }, - "description": "For destructive operations when the confirm gate is enabled (MS365_MCP_REQUIRE_CONFIRM=true; off by default). Set to true only after the user has explicitly approved this action. When the gate is on, calls without confirm: true return { error: \"confirmation_required\" } without touching user data.", - "type": "boolean" + "allOf": [ + { + "$ref": "#/$defs/def12" + } + ], + "description": "For destructive operations when the confirm gate is enabled (MS365_MCP_REQUIRE_CONFIRM=true; off by default). Set to true only after the user has explicitly approved this action. When the gate is on, calls without confirm: true return { error: \"confirmation_required\" } without touching user data." }, "contactFolderId": { "description": "Value for the 'contactFolderId' path segment. Pass it under the name 'contactFolderId', not as 'id'. Use the 'id' field of the contact folder object as returned by Microsoft Graph.", - "description": "Exclude the full response body and only return success or failure indication", - "type": "boolean" + "allOf": [ + { + "$ref": "#/$defs/def13" + } + ], + "description": "Exclude the full response body and only return success or failure indication" }, "includeHeaders": { - "description": "Include response headers (including ETag) in the response metadata", - "type": "boolean" + "allOf": [ + { + "$ref": "#/$defs/def14" + } + ], + "description": "Include response headers (including ETag) in the response metadata" } }, "required": [
--- pinned/create-contact-folder +++ observed/create-contact-folder { "annotations": { "destructiveHint": true, - "$ref": "#/$defs/def3" + "$ref": "#/$defs/def5" }, "type": "array" }, - ], - "description": "The contact's birthday. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "businessAddress": { - "$ref": "#/$defs/def2" + "$ref": "#/$defs/def8" }, "businessHomePage": { "description": "The business home page of the contact.", - "type": [ - "string", - "null" - ] + "$ref": "#/$defs/def9" }, "type": "array" }, - "type": [ - "string", - "null" - ] + "$ref": "#/$defs/def7" }, "type": "array" }, - "type": [ - "string", - "null" - ] + "$ref": "#/$defs/def10" }, "type": "array" }, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "department": { "description": "The contact's department.", - "additionalProperties": true, - "properties": { - "address": { - "description": "The email address of the person or entity.", - "type": [ - "string", - "null" - ] - }, - "name": { - "description": "The display name of the person or entity.", - "type": [ - "string", - "null" - ] - } - }, - "type": "object" + "$ref": "#/$defs/def11" }, "type": "array" }, - "$ref": "#/$defs/def2" + "$ref": "#/$defs/def8" }, "homePhones": { "description": "The contact's home phone numbers.", - "type": [ - "string", - "null" - ] + "$ref": "#/$defs/def2" }, "type": "array" }, - "type": [ - "string", - "null" - ] + "$ref": "#/$defs/def3" }, "type": "array" }, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "multiValueExtendedProperties": { "description": "The collection of multi-value extended properties defined for the contact. Read-only. Nullable.", - "$ref": "#/$defs/def3" + "$ref": "#/$defs/def5" }, "type": "array" }, - "def2": { + "def10": { + "type": [ + "string", + "null" + ] + }, + "def11": { "additionalProperties": true, "properties": { - "city": { - "description": "The city.", - "type": [ - "string", - "null" - ] - }, - "countryOrRegion": { - "description": "The country or region. It's a free-format string value, for example, 'United States'.", - "type": [ - "string", - "null" - ] - }, - "postalCode": { - "description": "The postal code.", + "address": { + "description": "The email address of the person or entity.", "type": [ "string", "null" - "state": { - "description": "The state.", + "name": { + "description": "The display name of the person or entity.", "type": [ "string", "null" + } + }, + "type": "object" + }, + "def12": { + "type": "boolean" + }, + "def13": { + "type": "boolean" + }, + "def14": { + "type": "boolean" + }, + "def2": { + "type": [ + "string", + "null" + ] + }, + "def3": { + "type": [ + "string", + "null" + ] + }, + "def4": { + "additionalProperties": true, + "properties": { + "id": { + "description": "The unique identifier for an entity. Read-only.", + "type": "string" }, - "street": { - "description": "The street.", + "value": { + "description": "A property value.", "type": [ "string", "null" - "def3": { + "def5": { "additionalProperties": true, "properties": { "id": { - "type": [ - "string", - "null" - ] + "$ref": "#/$defs/def6" }, "type": "array" } - "def4": { + "def6": { + "type": [ + "string", + "null" + ] + }, + "def7": { + "type": [ + "string", + "null" + ] + }, + "def8": { "additionalProperties": true, "properties": { - "id": { - "description": "The unique identifier for an entity. Read-only.", - "type": "string" + "city": { + "description": "The city.", + "type": [ + "string", + "null" + ] }, - "value": { - "description": "A property value.", + "countryOrRegion": { + "description": "The country or region. It's a free-format string value, for example, 'United States'.", "type": [ "string", "null" + }, + "postalCode": { + "description": "The postal code.", + "type": [ + "string", + "null" + ] + }, + "state": { + "description": "The state.", + "type": [ + "string", + "null" + ] + }, + "street": { + "description": "The street.", + "type": [ + "string", + "null" + ] } }, "type": "object" + }, + "def9": { + "type": [ + "string", + "null" + ] } }, "$schema": "http://json-schema.org/draft-07/schema#", - "$ref": "#/$defs/def3" + "$ref": "#/$defs/def5" }, "type": "array" }, - "description": "For destructive operations when the confirm gate is enabled (MS365_MCP_REQUIRE_CONFIRM=true; off by default). Set to true only after the user has explicitly approved this action. When the gate is on, calls without confirm: true return { error: \"confirmation_required\" } without touching user data.", - "type": "boolean" + "allOf": [ + { + "$ref": "#/$defs/def12" + } + ], + "description": "For destructive operations when the confirm gate is enabled (MS365_MCP_REQUIRE_CONFIRM=true; off by default). Set to true only after the user has explicitly approved this action. When the gate is on, calls without confirm: true return { error: \"confirmation_required\" } without touching user data." }, "excludeResponse": { - "description": "Exclude the full response body and only return success or failure indication", - "type": "boolean" + "allOf": [ + { + "$ref": "#/$defs/def13" + } + ], + "description": "Exclude the full response body and only return success or failure indication" }, "includeHeaders": { - "description": "Include response headers (including ETag) in the response metadata", - "type": "boolean" + "allOf": [ + { + "$ref": "#/$defs/def14" + } + ], + "description": "Include response headers (including ETag) in the response metadata" } }, "required": [
--- pinned/create-contact-in-folder +++ observed/create-contact-in-folder { "annotations": { "destructiveHint": true, - ], - "description": "The contact's birthday. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "businessAddress": { "additionalProperties": true, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "department": { "description": "The contact's department.", - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "multiValueExtendedProperties": { "description": "The collection of multi-value extended properties defined for the contact. Read-only. Nullable.",
--- pinned/create-draft-email +++ observed/create-draft-email { "annotations": { "destructiveHint": true, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "name": { "description": "The attachment's file name.", - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "flag": { "additionalProperties": true, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "multiValueExtendedProperties": { "description": "The collection of multi-value extended properties defined for the message. Nullable.",
--- pinned/create-forward-draft +++ observed/create-forward-draft { "annotations": { "destructiveHint": true, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "name": { "description": "The attachment's file name.", - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "flag": { "additionalProperties": true, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "multiValueExtendedProperties": { "description": "The collection of multi-value extended properties defined for the message. Nullable.",
--- pinned/create-mail-child-folder +++ observed/create-mail-child-folder { "annotations": { "destructiveHint": true, - ], - "description": "The number of immediate child mailFolders in the current mailFolder." + ] }, "childFolders": { "description": "The collection of child folders in the mailFolder.", - "$ref": "#/$defs/def29" + "$ref": "#/$defs/def32" }, "type": "array" }, - "$ref": "#/$defs/def31" + "$ref": "#/$defs/def36" }, "type": "array" }, - "$ref": "#/$defs/def32" + "$ref": "#/$defs/def35" }, "type": "array" }, - ], - "description": "The number of items in the mailFolder." + ] }, "unreadItemCount": { "anyOf": [ - ], - "description": "The number of items in the mailFolder marked as unread." + ] } }, "type": "object" - "type": [ - "string", - "null" - ] + "$ref": "#/$defs/def12" }, "type": "array" }, - "$ref": "#/$defs/def2" + "$ref": "#/$defs/def23" }, "type": "array" }, - "$ref": "#/$defs/def2" + "$ref": "#/$defs/def23" }, "type": "array" }, - "$ref": "#/$defs/def3" + "$ref": "#/$defs/def34" }, "moveToFolder": { "description": "The ID of the folder that a message will be moved to.", - "$ref": "#/$defs/def2" + "$ref": "#/$defs/def23" }, "type": "array" }, - "additionalProperties": true, - "description": "[Note: Simplified from 30 properties to 25 most common ones]", - "properties": { - "bodyContains": { - "$ref": "#/$defs/def4" - }, - "bodyOrSubjectContains": { - "$ref": "#/$defs/def5" - }, - "categories": { - "$ref": "#/$defs/def6" - }, - "fromAddresses": { - "$ref": "#/$defs/def7" - }, - "hasAttachments": { - "$ref": "#/$defs/def8" - }, - "headerContains": { - "$ref": "#/$defs/def9" - }, - "importance": { - "$ref": "#/$defs/def10" - }, - "isApprovalRequest": { - "$ref": "#/$defs/def11" - }, - "isAutomaticForward": { - "$ref": "#/$defs/def12" - }, - "isAutomaticReply": { - "$ref": "#/$defs/def13" - }, - "isEncrypted": { - "$ref": "#/$defs/def14" - }, - "isMeetingRequest": { - "$ref": "#/$defs/def15" - }, - "isMeetingResponse": { - "$ref": "#/$defs/def16" - }, - "isNonDeliveryReport": { - "$ref": "#/$defs/def17" - }, - "isPermissionControlled": { - "$ref": "#/$defs/def18" - }, - "isReadReceipt": { - "$ref": "#/$defs/def19" - }, - "isSigned": { - "$ref": "#/$defs/def20" - }, - "isVoicemail": { - "$ref": "#/$defs/def21" - }, - "messageActionFlag": { - "$ref": "#/$defs/def22" - }, - "notSentToMe": { - "$ref": "#/$defs/def23" - }, - "recipientContains": { - "$ref": "#/$defs/def24" - }, - "senderContains": { - "$ref": "#/$defs/def25" - }, - "sensitivity": { - "$ref": "#/$defs/def26" - }, - "sentCcMe": { - "$ref": "#/$defs/def27" - }, - "sentOnlyToMe": { - "$ref": "#/$defs/def28" + "allOf": [ + { + "$ref": "#/$defs/def31" } - }, - "type": "object" + ], + "description": "[Note: Simplified from 30 properties to 25 most common ones]" }, "displayName": { "description": "The display name of the rule.", - "additionalProperties": true, - "description": "[Note: Simplified from 30 properties to 25 most common ones]", - "properties": { - "bodyContains": { - "$ref": "#/$defs/def4" - }, - "bodyOrSubjectContains": { - "$ref": "#/$defs/def5" - }, - "categories": { - "$ref": "#/$defs/def6" - }, - "fromAddresses": { - "$ref": "#/$defs/def7" - }, - "hasAttachments": { - "$ref": "#/$defs/def8" - }, - "headerContains": { - "$ref": "#/$defs/def9" - }, - "importance": { - "$ref": "#/$defs/def10" - }, - "isApprovalRequest": { - "$ref": "#/$defs/def11" - }, - "isAutomaticForward": { - "$ref": "#/$defs/def12" - }, - "isAutomaticReply": { - "$ref": "#/$defs/def13" - }, - "isEncrypted": { - "$ref": "#/$defs/def14" - }, - "isMeetingRequest": { - "$ref": "#/$defs/def15" - }, - "isMeetingResponse": { - "$ref": "#/$defs/def16" - }, - "isNonDeliveryReport": { - "$ref": "#/$defs/def17" - }, - "isPermissionControlled": { - "$ref": "#/$defs/def18" - }, - "isReadReceipt": { - "$ref": "#/$defs/def19" - }, - "isSigned": { - "$ref": "#/$defs/def20" - }, - "isVoicemail": { - "$ref": "#/$defs/def21" - }, - "messageActionFlag": { - "$ref": "#/$defs/def22" - }, - "notSentToMe": { - "$ref": "#/$defs/def23" - }, - "recipientContains": { - "$ref": "#/$defs/def24" - }, - "senderContains": { - "$ref": "#/$defs/def25" - }, - "sensitivity": { - "$ref": "#/$defs/def26" - }, - "sentCcMe": { - "$ref": "#/$defs/def27" - }, - "sentOnlyToMe": { - "$ref": "#/$defs/def28" + "allOf": [ + { + "$ref": "#/$defs/def31" } - }, - "type": "object" + ], + "description": "[Note: Simplified from 30 properties to 25 most common ones]" }, "hasError": { "description": "Indicates whether the rule is in an error condition. Read-only.", - ], - "description": "Indicates the order in which the rule is executed, among other rules." + ] } }, "type": "object" - "$ref": "#/$defs/def3" + "description": "Indicates whether an incoming message must be automatically forwarded in order for the condition or exception to apply.", + "type": [ + "boolean", + "null" + ] }, "def11": { - "description": "Indicates whether an incoming message must be an approval request in order for the condition or exception to apply.", + "description": "Indicates whether an incoming message must be an auto reply in order for the condition or exception to apply.", "type": [ "boolean", "null" - "description": "Indicates whether an incoming message must be automatically forwarded in order for the condition or exception to apply.", "type": [ - "boolean", + "string", "null" ] }, - "description": "Indicates whether an incoming message must be an auto reply in order for the condition or exception to apply.", + "description": "Indicates whether an incoming message must be encrypted in order for the condition or exception to apply.", "type": [ "boolean", "null" - "description": "Indicates whether an incoming message must be encrypted in order for the condition or exception to apply.", + "description": "Indicates whether an incoming message must be a meeting request in order for the condition or exception to apply.", "type": [ "boolean", "null" - "description": "Indicates whether an incoming message must be a meeting request in order for the condition or exception to apply.", + "description": "Indicates whether an incoming message must be a meeting response in order for the condition or exception to apply.", "type": [ "boolean", "null" - "description": "Indicates whether an incoming message must be a meeting response in order for the condition or exception to apply.", + "description": "Indicates whether an incoming message must be a non-delivery report in order for the condition or exception to apply.", "type": [ "boolean", "null" - "description": "Indicates whether an incoming message must be a non-delivery report in order for the condition or exception to apply.", + "description": "Indicates whether an incoming message must be permission controlled (RMS-protected) in order for the condition or exception to apply.", "type": [ "boolean", "null" - "description": "Indicates whether an incoming message must be permission controlled (RMS-protected) in order for the condition or exception to apply.", + "description": "Indicates whether an incoming message must be a read receipt in order for the condition or exception to apply.", "type": [ "boolean", "null" - "description": "Indicates whether an incoming message must be a read receipt in order for the condition or exception to apply.", + "description": "Indicates whether an incoming message must be S/MIME-signed in order for the condition or exception to apply.", "type": [ "boolean", "null" - "additionalProperties": true, - "properties": { - "emailAddress": { - "additionalProperties": true, - "properties": { - "address": { - "description": "The email address of the person or entity.", - "type": [ - "string", - "null" - ] - }, - "name": { - "description": "The display name of the person or entity.", - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "type": "object" - }, - "def20": { - "description": "Indicates whether an incoming message must be S/MIME-signed in order for the condition or exception to apply.", "type": [ - "boolean", + "string", "null" ] }, - "def21": { + "def20": { "description": "Indicates whether an incoming message must be a voice mail in order for the condition or exception to apply.", "type": [ "boolean", - "def22": { + "def21": { "enum": [ "any", "call", - "def23": { + "def22": { "description": "Indicates whether the owner of the mailbox must not be a recipient of an incoming message in order for the condition or exception to apply.", "type": [ "boolean", + "def23": { + "additionalProperties": true, + "properties": { + "emailAddress": { + "additionalProperties": true, + "properties": { + "address": { + "description": "The email address of the person or entity.", + "type": [ + "string", + "null" + ] + }, + "name": { + "description": "The display name of the person or entity.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } + }, + "type": "object" + }, "def24": { "description": "Represents the strings that appear in either the toRecipients or ccRecipients properties of an incoming message in order for the condition or exception to apply.", "items": { - "type": [ - "string", - "null" - ] + "$ref": "#/$defs/def25" }, "type": "array" }, + "type": [ + "string", + "null" + ] + }, + "def26": { "description": "Represents the strings that appear in the from property of an incoming message in order for the condition or exception to apply.", "items": { - "type": [ - "string", - "null" - ] + "$ref": "#/$defs/def27" }, "type": "array" }, - "def26": { - "enum": [ - "normal", - "personal", - "private", - "confidential" - ], - "type": "string" - }, "def27": { + "type": [ + "string", + "null" + ] + }, + "def28": { "description": "Indicates whether the owner of the mailbox must be in the ccRecipients property of an incoming message in order for the condition or exception to apply.", "type": [ "boolean", - "def28": { + "def29": { "description": "Indicates whether the owner of the mailbox must be the only recipient in an incoming message in order for the condition or exception to apply.", "type": [ "boolean", - "def29": { + "def3": { + "description": "Represents the categories that an incoming message should be labeled with in order for the condition or exception to apply.", + "items": { + "$ref": "#/$defs/def4" + }, + "type": "array" + }, + "def30": {}, + "def31": { + "additionalProperties": { + "$ref": "#/$defs/def30" + }, + "properties": { + "bodyContains": { + "$ref": "#/$defs/def43" + }, + "bodyOrSubjectContains": { + "$ref": "#/$defs/def45" + }, + "categories": { + "$ref": "#/$defs/def3" + }, + "fromAddresses": { + "$ref": "#/$defs/def5" + }, + "hasAttachments": { + "$ref": "#/$defs/def6" + }, + "headerContains": { + "$ref": "#/$defs/def7" + }, + "importance": { + "$ref": "#/$defs/def42" + }, + "isApprovalRequest": { + "$ref": "#/$defs/def9" + }, + "isAutomaticForward": { + "$ref": "#/$defs/def10" + }, + "isAutomaticReply": { + "$ref": "#/$defs/def11" + }, + "isEncrypted": { + "$ref": "#/$defs/def13" + }, + "isMeetingRequest": { + "$ref": "#/$defs/def14" + }, + "isMeetingResponse": { + "$ref": "#/$defs/def15" + }, + "isNonDeliveryReport": { + "$ref": "#/$defs/def16" + }, + "isPermissionControlled": { + "$ref": "#/$defs/def17" + }, + "isReadReceipt": { + "$ref": "#/$defs/def18" + }, + "isSigned": { + "$ref": "#/$defs/def19" + }, + "isVoicemail": { + "$ref": "#/$defs/def20" + }, + "messageActionFlag": { + "$ref": "#/$defs/def21" + }, + "notSentToMe": { + "$ref": "#/$defs/def22" + }, + "recipientContains": { + "$ref": "#/$defs/def24" + }, + "senderContains": { + "$ref": "#/$defs/def26" + }, + "sensitivity": { + "$ref": "#/$defs/def41" + }, + "sentCcMe": { + "$ref": "#/$defs/def28" + }, + "sentOnlyToMe": { + "$ref": "#/$defs/def29" + } + }, + "type": "object" + }, + "def32": { "additionalProperties": true, "properties": { "attachments": { - "additionalProperties": true, - "properties": { - "contentType": { - "description": "The MIME type.", - "type": [ - "string", - "null" - ] - }, - "id": { - "description": "The unique identifier for an entity. Read-only.", - "type": "string" - }, - "isInline": { - "description": "true if the attachment is an inline attachment; otherwise, false.", - "type": "boolean" - }, - "lastModifiedDateTime": { - "anyOf": [ - { - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z", - "format": "date-time", - "pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" - }, - "name": { - "description": "The attachment's file name.", - "type": [ - "string", - "null" - ] - }, - "size": { - "description": "The length of the attachment in bytes.", - "maximum": 2147483647, - "minimum": -2147483648, - "type": "number" - } - }, - "type": "object" + "$ref": "#/$defs/def33" }, "type": "array" }, - "$ref": "#/$defs/def2" + "$ref": "#/$defs/def23" }, "type": "array" }, - "type": [ - "string", - "null" - ] + "$ref": "#/$defs/def38" }, "type": "array" }, - "$ref": "#/$defs/def2" + "$ref": "#/$defs/def23" }, "type": "array" }, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "flag": { "additionalProperties": true, - "$ref": "#/$defs/def30" + "$ref": "#/$defs/def39" }, "dueDateTime": { - "$ref": "#/$defs/def30" + "$ref": "#/$defs/def39" }, "flagStatus": { "enum": [ - "$ref": "#/$defs/def30" + "$ref": "#/$defs/def39" } }, "type": "object" - "$ref": "#/$defs/def2" + "$ref": "#/$defs/def23" }, "hasAttachments": { "description": "Indicates whether the message has attachments. This property doesn't include inline attachments, so if a message contains only inline attachments, this property is false. To verify the existence of inline attachments, parse the body property to look for a src attribute, such as <IMG src='cid:image001.jpg@01D26CD8.6C05F070'>.", - "$ref": "#/$defs/def3" + "$ref": "#/$defs/def34" }, "inferenceClassification": { "enum": [ - "additionalProperties": true, - "properties": { - "name": { - "description": "Represents the key in a key-value pair.", - "type": [ - "string", - "null" - ] - }, - "value": { - "description": "The value in a key-value pair.", - "type": [ - "string", - "null" - ] - } - }, - "type": "object" + "$ref": "#/$defs/def40" }, "type": "array" }, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "multiValueExtendedProperties": { "description": "The collection of multi-value extended properties defined for the message. Nullable.", - "$ref": "#/$defs/def31" + "$ref": "#/$defs/def36" }, "type": "array" }, - "$ref": "#/$defs/def32" + "$ref": "#/$defs/def35" }, "type": "array" }, - "$ref": "#/$defs/def2" + "$ref": "#/$defs/def23" }, "type": "array" } - "def3": { + "def33": { + "additionalProperties": true, + "properties": { + "contentType": { + "description": "The MIME type.", + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "The unique identifier for an entity. Read-only.", + "type": "string" + }, + "isInline": { + "description": "true if the attachment is an inline attachment; otherwise, false.", + "type": "boolean" + }, + "lastModifiedDateTime": { + "anyOf": [ + { + "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z", + "format": "date-time", + "pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "name": { + "description": "The attachment's file name.", + "type": [ + "string", + "null" + ] + }, + "size": { + "description": "The length of the attachment in bytes.", + "maximum": 2147483647, + "minimum": -2147483648, + "type": "number" + } + }, + "type": "object" + }, + "def34": { "enum": [ "low", "normal", - "def30": { + "def35": { "additionalProperties": true, "properties": { - "dateTime": { - "description": "A single point of time in a combined date and time representation ({date}T{time}; for example, 2017-08-29T04:00:00.0000000).", + "id": { + "description": "The unique identifier for an entity. Read-only.", "type": "string" }, - "timeZone": { - "description": "Represents a time zone, for example, 'Pacific Standard Time'. See below for more possible values.", + "value": { + "description": "A property value.", "type": [ "string", "null" - "def31": { + "def36": { "additionalProperties": true, "properties": { "id": { - "type": [ - "string", - "null" - ] + "$ref": "#/$defs/def37" }, "type": "array" } - "def32": { + "def37": { + "type": [ + "string", + "null" + ] + }, + "def38": { + "type": [ + "string", + "null" + ] + }, + "def39": { "additionalProperties": true, "properties": { - "id": { - "description": "The unique identifier for an entity. Read-only.", + "dateTime": { + "description": "A single point of time in a combined date and time representation ({date}T{time}; for example, 2017-08-29T04:00:00.0000000).", "type": "string" }, - "value": { - "description": "A property value.", + "timeZone": { + "description": "Represents a time zone, for example, 'Pacific Standard Time'. See below for more possible values.", "type": [ "string", "null" + "type": [ + "string", + "null" + ] + }, + "def40": { + "additionalProperties": true, + "properties": { + "name": { + "description": "Represents the key in a key-value pair.", + "type": [ + "string", + "null" + ] + }, + "value": { + "description": "The value in a key-value pair.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "def41": { + "enum": [ + "normal", + "personal", + "private", + "confidential" + ], + "type": "string" + }, + "def42": { + "$ref": "#/$defs/def34" + }, + "def43": { "description": "Represents the strings that should appear in the body of an incoming message in order for the condition or exception to apply.", "items": { - "type": [ - "string", - "null" - ] + "$ref": "#/$defs/def44" }, "type": "array" }, - "def5": { + "def44": { + "type": [ + "string", + "null" + ] + }, + "def45": { "description": "Represents the strings that should appear in the body or subject of an incoming message in order for the condition or exception to apply.", "items": { - "type": [ - "string", - "null" - ] + "$ref": "#/$defs/def2" }, "type": "array" }, - "def6": { - "description": "Represents the categories that an incoming message should be labeled with in order for the condition or exception to apply.", - "items": { - "type": [ - "string", - "null" - ] - }, - "type": "array" + "def46": { + "type": "boolean" }, - "def7": { + "def47": { + "type": "boolean" + }, + "def48": { + "type": "boolean" + }, + "def5": { "description": "Represents the specific sender email addresses of an incoming message in order for the condition or exception to apply.", "items": { - "$ref": "#/$defs/def2" + "$ref": "#/$defs/def23" }, "type": "array" }, - "def8": { + "def6": { "description": "Indicates whether an incoming message must have attachments in order for the condition or exception to apply.", "type": [ "boolean", - "def9": { + "def7": { "description": "Represents the strings that appear in the headers of an incoming message in order for the condition or exception to apply.", "items": { - "type": [ - "string", - "null" - ] + "$ref": "#/$defs/def8" }, "type": "array" + }, + "def8": { + "type": [ + "string", + "null" + ] + }, + "def9": { + "description": "Indicates whether an incoming message must be an approval request in order for the condition or exception to apply.", + "type": [ + "boolean", + "null" + ] } }, "$schema": "http://json-schema.org/draft-07/schema#", - ], - "description": "The number of immediate child mailFolders in the current mailFolder." + ] }, "childFolders": { "description": "The collection of child folders in the mailFolder.", - "$ref": "#/$defs/def29" + "$ref": "#/$defs/def32" }, "type": "array" }, - "$ref": "#/$defs/def31" + "$ref": "#/$defs/def36" }, "type": "array" }, - "$ref": "#/$defs/def32" + "$ref": "#/$defs/def35" }, "type": "array" }, - ], - "description": "The number of items in the mailFolder." + ] }, "unreadItemCount": { "anyOf": [ - ], - "description": "The number of items in the mailFolder marked as unread." + ] } }, "type": "object" - "description": "For destructive operations when the confirm gate is enabled (MS365_MCP_REQUIRE_CONFIRM=true; off by default). Set to true only after the user has explicitly approved this action. When the gate is on, calls without confirm: true return { error: \"confirmation_required\" } without touching user data.", - "type": "boolean" + "allOf": [ + { + "$ref": "#/$defs/def46" + } + ], + "description": "For destructive operations when the confirm gate is enabled (MS365_MCP_REQUIRE_CONFIRM=true; off by default). Set to true only after the user has explicitly approved this action. When the gate is on, calls without confirm: true return { error: \"confirmation_required\" } without touching user data." }, "excludeResponse": { - "description": "Exclude the full response body and only return success or failure indication", - "type": "boolean" + "allOf": [ + { + "$ref": "#/$defs/def47" + } + ], + "description": "Exclude the full response body and only return success or failure indication" }, "includeHeaders": { - "description": "Include response headers (including ETag) in the response metadata", - "type": "boolean" + "allOf": [ + { + "$ref": "#/$defs/def48" + } + ], + "description": "Include response headers (including ETag) in the response metadata" }, "mailFolderId": { "description": "Value for the 'mailFolderId' path segment. Pass it under the name 'mailFolderId', not as 'id'. Use the 'id' field of the mail folder object as returned by Microsoft Graph.",
--- pinned/create-mail-folder +++ observed/create-mail-folder { "annotations": { "destructiveHint": true, - ], - "description": "The number of immediate child mailFolders in the current mailFolder." + ] }, "childFolders": { "description": "The collection of child folders in the mailFolder.", - "$ref": "#/$defs/def29" + "$ref": "#/$defs/def32" }, "type": "array" }, - "$ref": "#/$defs/def31" + "$ref": "#/$defs/def36" }, "type": "array" }, - "$ref": "#/$defs/def32" + "$ref": "#/$defs/def35" }, "type": "array" }, - ], - "description": "The number of items in the mailFolder." + ] }, "unreadItemCount": { "anyOf": [ - ], - "description": "The number of items in the mailFolder marked as unread." + ] } }, "type": "object" - "type": [ - "string", - "null" - ] + "$ref": "#/$defs/def12" }, "type": "array" }, - "$ref": "#/$defs/def2" + "$ref": "#/$defs/def23" }, "type": "array" }, - "$ref": "#/$defs/def2" + "$ref": "#/$defs/def23" }, "type": "array" }, - "$ref": "#/$defs/def3" + "$ref": "#/$defs/def34" }, "moveToFolder": { "description": "The ID of the folder that a message will be moved to.", - "$ref": "#/$defs/def2" + "$ref": "#/$defs/def23" }, "type": "array" }, - "additionalProperties": true, - "description": "[Note: Simplified from 30 properties to 25 most common ones]", - "properties": { - "bodyContains": { - "$ref": "#/$defs/def4" - }, - "bodyOrSubjectContains": { - "$ref": "#/$defs/def5" - }, - "categories": { - "$ref": "#/$defs/def6" - }, - "fromAddresses": { - "$ref": "#/$defs/def7" - }, - "hasAttachments": { - "$ref": "#/$defs/def8" - }, - "headerContains": { - "$ref": "#/$defs/def9" - }, - "importance": { - "$ref": "#/$defs/def10" - }, - "isApprovalRequest": { - "$ref": "#/$defs/def11" - }, - "isAutomaticForward": { - "$ref": "#/$defs/def12" - }, - "isAutomaticReply": { - "$ref": "#/$defs/def13" - }, - "isEncrypted": { - "$ref": "#/$defs/def14" - }, - "isMeetingRequest": { - "$ref": "#/$defs/def15" - }, - "isMeetingResponse": { - "$ref": "#/$defs/def16" - }, - "isNonDeliveryReport": { - "$ref": "#/$defs/def17" - }, - "isPermissionControlled": { - "$ref": "#/$defs/def18" - }, - "isReadReceipt": { - "$ref": "#/$defs/def19" - }, - "isSigned": { - "$ref": "#/$defs/def20" - }, - "isVoicemail": { - "$ref": "#/$defs/def21" - }, - "messageActionFlag": { - "$ref": "#/$defs/def22" - }, - "notSentToMe": { - "$ref": "#/$defs/def23" - }, - "recipientContains": { - "$ref": "#/$defs/def24" - }, - "senderContains": { - "$ref": "#/$defs/def25" - }, - "sensitivity": { - "$ref": "#/$defs/def26" - }, - "sentCcMe": { - "$ref": "#/$defs/def27" - }, - "sentOnlyToMe": { - "$ref": "#/$defs/def28" + "allOf": [ + { + "$ref": "#/$defs/def31" } - }, - "type": "object" + ], + "description": "[Note: Simplified from 30 properties to 25 most common ones]" }, "displayName": { "description": "The display name of the rule.", - "additionalProperties": true, - "description": "[Note: Simplified from 30 properties to 25 most common ones]", - "properties": { - "bodyContains": { - "$ref": "#/$defs/def4" - }, - "bodyOrSubjectContains": { - "$ref": "#/$defs/def5" - }, - "categories": { - "$ref": "#/$defs/def6" - }, - "fromAddresses": { - "$ref": "#/$defs/def7" - }, - "hasAttachments": { - "$ref": "#/$defs/def8" - }, - "headerContains": { - "$ref": "#/$defs/def9" - }, - "importance": { - "$ref": "#/$defs/def10" - }, - "isApprovalRequest": { - "$ref": "#/$defs/def11" - }, - "isAutomaticForward": { - "$ref": "#/$defs/def12" - }, - "isAutomaticReply": { - "$ref": "#/$defs/def13" - }, - "isEncrypted": { - "$ref": "#/$defs/def14" - }, - "isMeetingRequest": { - "$ref": "#/$defs/def15" - }, - "isMeetingResponse": { - "$ref": "#/$defs/def16" - }, - "isNonDeliveryReport": { - "$ref": "#/$defs/def17" - }, - "isPermissionControlled": { - "$ref": "#/$defs/def18" - }, - "isReadReceipt": { - "$ref": "#/$defs/def19" - }, - "isSigned": { - "$ref": "#/$defs/def20" - }, - "isVoicemail": { - "$ref": "#/$defs/def21" - }, - "messageActionFlag": { - "$ref": "#/$defs/def22" - }, - "notSentToMe": { - "$ref": "#/$defs/def23" - }, - "recipientContains": { - "$ref": "#/$defs/def24" - }, - "senderContains": { - "$ref": "#/$defs/def25" - }, - "sensitivity": { - "$ref": "#/$defs/def26" - }, - "sentCcMe": { - "$ref": "#/$defs/def27" - }, - "sentOnlyToMe": { - "$ref": "#/$defs/def28" + "allOf": [ + { + "$ref": "#/$defs/def31" } - }, - "type": "object" + ], + "description": "[Note: Simplified from 30 properties to 25 most common ones]" }, "hasError": { "description": "Indicates whether the rule is in an error condition. Read-only.", - ], - "description": "Indicates the order in which the rule is executed, among other rules." + ] } }, "type": "object" - "$ref": "#/$defs/def3" + "description": "Indicates whether an incoming message must be automatically forwarded in order for the condition or exception to apply.", + "type": [ + "boolean", + "null" + ] }, "def11": { - "description": "Indicates whether an incoming message must be an approval request in order for the condition or exception to apply.", + "description": "Indicates whether an incoming message must be an auto reply in order for the condition or exception to apply.", "type": [ "boolean", "null" - "description": "Indicates whether an incoming message must be automatically forwarded in order for the condition or exception to apply.", "type": [ - "boolean", + "string", "null" ] }, - "description": "Indicates whether an incoming message must be an auto reply in order for the condition or exception to apply.", + "description": "Indicates whether an incoming message must be encrypted in order for the condition or exception to apply.", "type": [ "boolean", "null" - "description": "Indicates whether an incoming message must be encrypted in order for the condition or exception to apply.", + "description": "Indicates whether an incoming message must be a meeting request in order for the condition or exception to apply.", "type": [ "boolean", "null" - "description": "Indicates whether an incoming message must be a meeting request in order for the condition or exception to apply.", + "description": "Indicates whether an incoming message must be a meeting response in order for the condition or exception to apply.", "type": [ "boolean", "null" - "description": "Indicates whether an incoming message must be a meeting response in order for the condition or exception to apply.", + "description": "Indicates whether an incoming message must be a non-delivery report in order for the condition or exception to apply.", "type": [ "boolean", "null" - "description": "Indicates whether an incoming message must be a non-delivery report in order for the condition or exception to apply.", + "description": "Indicates whether an incoming message must be permission controlled (RMS-protected) in order for the condition or exception to apply.", "type": [ "boolean", "null" - "description": "Indicates whether an incoming message must be permission controlled (RMS-protected) in order for the condition or exception to apply.", + "description": "Indicates whether an incoming message must be a read receipt in order for the condition or exception to apply.", "type": [ "boolean", "null" - "description": "Indicates whether an incoming message must be a read receipt in order for the condition or exception to apply.", + "description": "Indicates whether an incoming message must be S/MIME-signed in order for the condition or exception to apply.", "type": [ "boolean", "null" - "additionalProperties": true, - "properties": { - "emailAddress": { - "additionalProperties": true, - "properties": { - "address": { - "description": "The email address of the person or entity.", - "type": [ - "string", - "null" - ] - }, - "name": { - "description": "The display name of the person or entity.", - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "type": "object" - }, - "def20": { - "description": "Indicates whether an incoming message must be S/MIME-signed in order for the condition or exception to apply.", "type": [ - "boolean", + "string", "null" ] }, - "def21": { + "def20": { "description": "Indicates whether an incoming message must be a voice mail in order for the condition or exception to apply.", "type": [ "boolean", - "def22": { + "def21": { "enum": [ "any", "call", - "def23": { + "def22": { "description": "Indicates whether the owner of the mailbox must not be a recipient of an incoming message in order for the condition or exception to apply.", "type": [ "boolean", + "def23": { + "additionalProperties": true, + "properties": { + "emailAddress": { + "additionalProperties": true, + "properties": { + "address": { + "description": "The email address of the person or entity.", + "type": [ + "string", + "null" + ] + }, + "name": { + "description": "The display name of the person or entity.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } + }, + "type": "object" + }, "def24": { "description": "Represents the strings that appear in either the toRecipients or ccRecipients properties of an incoming message in order for the condition or exception to apply.", "items": { - "type": [ - "string", - "null" - ] + "$ref": "#/$defs/def25" }, "type": "array" }, + "type": [ + "string", + "null" + ] + }, + "def26": { "description": "Represents the strings that appear in the from property of an incoming message in order for the condition or exception to apply.", "items": { - "type": [ - "string", - "null" - ] + "$ref": "#/$defs/def27" }, "type": "array" }, - "def26": { - "enum": [ - "normal", - "personal", - "private", - "confidential" - ], - "type": "string" - }, "def27": { + "type": [ + "string", + "null" + ] + }, + "def28": { "description": "Indicates whether the owner of the mailbox must be in the ccRecipients property of an incoming message in order for the condition or exception to apply.", "type": [ "boolean", - "def28": { + "def29": { "description": "Indicates whether the owner of the mailbox must be the only recipient in an incoming message in order for the condition or exception to apply.", "type": [ "boolean", - "def29": { + "def3": { + "description": "Represents the categories that an incoming message should be labeled with in order for the condition or exception to apply.", + "items": { + "$ref": "#/$defs/def4" + }, + "type": "array" + }, + "def30": {}, + "def31": { + "additionalProperties": { + "$ref": "#/$defs/def30" + }, + "properties": { + "bodyContains": { + "$ref": "#/$defs/def43" + }, + "bodyOrSubjectContains": { + "$ref": "#/$defs/def45" + }, + "categories": { + "$ref": "#/$defs/def3" + }, + "fromAddresses": { + "$ref": "#/$defs/def5" + }, + "hasAttachments": { + "$ref": "#/$defs/def6" + }, + "headerContains": { + "$ref": "#/$defs/def7" + }, + "importance": { + "$ref": "#/$defs/def42" + }, + "isApprovalRequest": { + "$ref": "#/$defs/def9" + }, + "isAutomaticForward": { + "$ref": "#/$defs/def10" + }, + "isAutomaticReply": { + "$ref": "#/$defs/def11" + }, + "isEncrypted": { + "$ref": "#/$defs/def13" + }, + "isMeetingRequest": { + "$ref": "#/$defs/def14" + }, + "isMeetingResponse": { + "$ref": "#/$defs/def15" + }, + "isNonDeliveryReport": { + "$ref": "#/$defs/def16" + }, + "isPermissionControlled": { + "$ref": "#/$defs/def17" + }, + "isReadReceipt": { + "$ref": "#/$defs/def18" + }, + "isSigned": { + "$ref": "#/$defs/def19" + }, + "isVoicemail": { + "$ref": "#/$defs/def20" + }, + "messageActionFlag": { + "$ref": "#/$defs/def21" + }, + "notSentToMe": { + "$ref": "#/$defs/def22" + }, + "recipientContains": { + "$ref": "#/$defs/def24" + }, + "senderContains": { + "$ref": "#/$defs/def26" + }, + "sensitivity": { + "$ref": "#/$defs/def41" + }, + "sentCcMe": { + "$ref": "#/$defs/def28" + }, + "sentOnlyToMe": { + "$ref": "#/$defs/def29" + } + }, + "type": "object" + }, + "def32": { "additionalProperties": true, "properties": { "attachments": { - "additionalProperties": true, - "properties": { - "contentType": { - "description": "The MIME type.", - "type": [ - "string", - "null" - ] - }, - "id": { - "description": "The unique identifier for an entity. Read-only.", - "type": "string" - }, - "isInline": { - "description": "true if the attachment is an inline attachment; otherwise, false.", - "type": "boolean" - }, - "lastModifiedDateTime": { - "anyOf": [ - { - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z", - "format": "date-time", - "pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" - }, - "name": { - "description": "The attachment's file name.", - "type": [ - "string", - "null" - ] - }, - "size": { - "description": "The length of the attachment in bytes.", - "maximum": 2147483647, - "minimum": -2147483648, - "type": "number" - } - }, - "type": "object" + "$ref": "#/$defs/def33" }, "type": "array" }, - "$ref": "#/$defs/def2" + "$ref": "#/$defs/def23" }, "type": "array" }, - "type": [ - "string", - "null" - ] + "$ref": "#/$defs/def38" }, "type": "array" }, - "$ref": "#/$defs/def2" + "$ref": "#/$defs/def23" }, "type": "array" }, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "flag": { "additionalProperties": true, - "$ref": "#/$defs/def30" + "$ref": "#/$defs/def39" }, "dueDateTime": { - "$ref": "#/$defs/def30" + "$ref": "#/$defs/def39" }, "flagStatus": { "enum": [ - "$ref": "#/$defs/def30" + "$ref": "#/$defs/def39" } }, "type": "object" - "$ref": "#/$defs/def2" + "$ref": "#/$defs/def23" }, "hasAttachments": { "description": "Indicates whether the message has attachments. This property doesn't include inline attachments, so if a message contains only inline attachments, this property is false. To verify the existence of inline attachments, parse the body property to look for a src attribute, such as <IMG src='cid:image001.jpg@01D26CD8.6C05F070'>.", - "$ref": "#/$defs/def3" + "$ref": "#/$defs/def34" }, "inferenceClassification": { "enum": [ - "additionalProperties": true, - "properties": { - "name": { - "description": "Represents the key in a key-value pair.", - "type": [ - "string", - "null" - ] - }, - "value": { - "description": "The value in a key-value pair.", - "type": [ - "string", - "null" - ] - } - }, - "type": "object" + "$ref": "#/$defs/def40" }, "type": "array" }, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "multiValueExtendedProperties": { "description": "The collection of multi-value extended properties defined for the message. Nullable.", - "$ref": "#/$defs/def31" + "$ref": "#/$defs/def36" }, "type": "array" }, - "$ref": "#/$defs/def32" + "$ref": "#/$defs/def35" }, "type": "array" }, - "$ref": "#/$defs/def2" + "$ref": "#/$defs/def23" }, "type": "array" } - "def3": { + "def33": { + "additionalProperties": true, + "properties": { + "contentType": { + "description": "The MIME type.", + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "The unique identifier for an entity. Read-only.", + "type": "string" + }, + "isInline": { + "description": "true if the attachment is an inline attachment; otherwise, false.", + "type": "boolean" + }, + "lastModifiedDateTime": { + "anyOf": [ + { + "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z", + "format": "date-time", + "pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "name": { + "description": "The attachment's file name.", + "type": [ + "string", + "null" + ] + }, + "size": { + "description": "The length of the attachment in bytes.", + "maximum": 2147483647, + "minimum": -2147483648, + "type": "number" + } + }, + "type": "object" + }, + "def34": { "enum": [ "low", "normal", - "def30": { + "def35": { "additionalProperties": true, "properties": { - "dateTime": { - "description": "A single point of time in a combined date and time representation ({date}T{time}; for example, 2017-08-29T04:00:00.0000000).", + "id": { + "description": "The unique identifier for an entity. Read-only.", "type": "string" }, - "timeZone": { - "description": "Represents a time zone, for example, 'Pacific Standard Time'. See below for more possible values.", + "value": { + "description": "A property value.", "type": [ "string", "null" - "def31": { + "def36": { "additionalProperties": true, "properties": { "id": { - "type": [ - "string", - "null" - ] + "$ref": "#/$defs/def37" }, "type": "array" } - "def32": { + "def37": { + "type": [ + "string", + "null" + ] + }, + "def38": { + "type": [ + "string", + "null" + ] + }, + "def39": { "additionalProperties": true, "properties": { - "id": { - "description": "The unique identifier for an entity. Read-only.", + "dateTime": { + "description": "A single point of time in a combined date and time representation ({date}T{time}; for example, 2017-08-29T04:00:00.0000000).", "type": "string" }, - "value": { - "description": "A property value.", + "timeZone": { + "description": "Represents a time zone, for example, 'Pacific Standard Time'. See below for more possible values.", "type": [ "string", "null" + "type": [ + "string", + "null" + ] + }, + "def40": { + "additionalProperties": true, + "properties": { + "name": { + "description": "Represents the key in a key-value pair.", + "type": [ + "string", + "null" + ] + }, + "value": { + "description": "The value in a key-value pair.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "def41": { + "enum": [ + "normal", + "personal", + "private", + "confidential" + ], + "type": "string" + }, + "def42": { + "$ref": "#/$defs/def34" + }, + "def43": { "description": "Represents the strings that should appear in the body of an incoming message in order for the condition or exception to apply.", "items": { - "type": [ - "string", - "null" - ] + "$ref": "#/$defs/def44" }, "type": "array" }, - "def5": { + "def44": { + "type": [ + "string", + "null" + ] + }, + "def45": { "description": "Represents the strings that should appear in the body or subject of an incoming message in order for the condition or exception to apply.", "items": { - "type": [ - "string", - "null" - ] + "$ref": "#/$defs/def2" }, "type": "array" }, - "def6": { - "description": "Represents the categories that an incoming message should be labeled with in order for the condition or exception to apply.", - "items": { - "type": [ - "string", - "null" - ] - }, - "type": "array" + "def46": { + "type": "boolean" }, - "def7": { + "def47": { + "type": "boolean" + }, + "def48": { + "type": "boolean" + }, + "def5": { "description": "Represents the specific sender email addresses of an incoming message in order for the condition or exception to apply.", "items": { - "$ref": "#/$defs/def2" + "$ref": "#/$defs/def23" }, "type": "array" }, - "def8": { + "def6": { "description": "Indicates whether an incoming message must have attachments in order for the condition or exception to apply.", "type": [ "boolean", - "def9": { + "def7": { "description": "Represents the strings that appear in the headers of an incoming message in order for the condition or exception to apply.", "items": { - "type": [ - "string", - "null" - ] + "$ref": "#/$defs/def8" }, "type": "array" + }, + "def8": { + "type": [ + "string", + "null" + ] + }, + "def9": { + "description": "Indicates whether an incoming message must be an approval request in order for the condition or exception to apply.", + "type": [ + "boolean", + "null" + ] } }, "$schema": "http://json-schema.org/draft-07/schema#", - ], - "description": "The number of immediate child mailFolders in the current mailFolder." + ] }, "childFolders": { "description": "The collection of child folders in the mailFolder.", - "$ref": "#/$defs/def29" + "$ref": "#/$defs/def32" }, "type": "array" }, - "$ref": "#/$defs/def31" + "$ref": "#/$defs/def36" }, "type": "array" }, - "$ref": "#/$defs/def32" + "$ref": "#/$defs/def35" }, "type": "array" }, - ], - "description": "The number of items in the mailFolder." + ] }, "unreadItemCount": { "anyOf": [ - ], - "description": "The number of items in the mailFolder marked as unread." + ] } }, "type": "object" - "description": "For destructive operations when the confirm gate is enabled (MS365_MCP_REQUIRE_CONFIRM=true; off by default). Set to true only after the user has explicitly approved this action. When the gate is on, calls without confirm: true return { error: \"confirmation_required\" } without touching user data.", - "type": "boolean" + "allOf": [ + { + "$ref": "#/$defs/def46" + } + ], + "description": "For destructive operations when the confirm gate is enabled (MS365_MCP_REQUIRE_CONFIRM=true; off by default). Set to true only after the user has explicitly approved this action. When the gate is on, calls without confirm: true return { error: \"confirmation_required\" } without touching user data." }, "excludeResponse": { - "description": "Exclude the full response body and only return success or failure indication", - "type": "boolean" + "allOf": [ + { + "$ref": "#/$defs/def47" + } + ], + "description": "Exclude the full response body and only return success or failure indication" }, "includeHeaders": { - "description": "Include response headers (including ETag) in the response metadata", - "type": "boolean" + "allOf": [ + { + "$ref": "#/$defs/def48" + } + ], + "description": "Include response headers (including ETag) in the response metadata" } }, "required": [
--- pinned/create-mail-rule +++ observed/create-mail-rule { "annotations": { "destructiveHint": true, - ], - "description": "Indicates the order in which the rule is executed, among other rules." + ] } }, "type": "object"
--- pinned/create-onedrive-folder +++ observed/create-onedrive-folder { "annotations": { "destructiveHint": true, - ], - "description": "The number of the disc this audio file came from." + ] }, "discCount": { "anyOf": [ - ], - "description": "The total number of discs in this album." + ] }, "duration": { "description": "Duration of the audio file, expressed in milliseconds", - ], - "description": "The number of the track on the original disc for this audio file." + ] }, "trackCount": { "anyOf": [ - ], - "description": "The total number of tracks on the original disc for this audio file." + ] }, "year": { "anyOf": [ - ], - "description": "The year the audio file was recorded." + ] } }, "type": "object" - ], - "description": "Number of children contained immediately within this container." + ] } }, "type": "object" - ], - "description": "The unique identifier for the SKU. Corresponds to the skuId from subscribedSkus or companySubscription." + ] } }, "type": "object" - ], - "description": "The date and time at which the plan was assigned. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z." + ] }, "capabilityStatus": { "description": "Condition of the capability assignment. The possible values are Enabled, Warning, Suspended, Deleted, LockedOut. See a detailed description of each value.", - ], - "description": "A GUID that identifies the service plan. For a complete list of GUIDs and their equivalent friendly service names, see Product names and service plan identifiers for licensing." + ] } }, "type": "object" - ], - "description": "The date and time the user was created, in ISO 8601 format and UTC. The value can't be modified and is automatically populated when the entity is created. Nullable. For on-premises users, the value represents when they were first created in Microsoft Entra ID. Property is null for some users created before June 2018 and on-premises users that were synced to Microsoft Entra ID before June 2018. Read-only. Requires $select to retrieve. Supports $filter (eq, ne, not , ge, le, in)." + ] }, "creationType": { "description": "Indicates whether the user account was created through one of the following methods: As a regular school or work account (null). As an external account (Invitation). As a local account for an Azure Active Directory B2C tenant (LocalAccount). Through self-service sign-up by an internal user using email verification (EmailVerified). Through self-service sign-up by a guest signing up through a link that is part of a user flow (SelfServiceSignUp). Read-only.Requires $select to retrieve. Supports $filter (eq, ne, not, in).", - ], - "description": "Date and time when this object was deleted. Always null when the object hasn't been deleted." + ] }, "department": { "description": "The name of the department in which the user works. Maximum length is 64 characters. Requires $select to retrieve. Supports $filter (eq, ne, not , ge, le, in, and eq on null values).", - ], - "description": "The date and time when the user was hired or will start work in a future hire. Requires $select to retrieve. Supports $filter (eq, ne, not , ge, le, in)." + ] }, "employeeId": { "description": "The employee identifier assigned to the user by the organization. The maximum length is 16 characters. Requires $select to retrieve. Supports $filter (eq, ne, not , ge, le, in, startsWith, and eq on null values).", - ], - "description": "The date and time when the user left or will leave the organization. To read this property, the calling app must be assigned the User-LifeCycleInfo.Read.All permission. To write this property, the calling app must be assigned the User.Read.All and User-LifeCycleInfo.ReadWrite.All permissions. To read this property in delegated scenarios, the admin needs at least one of the following Microsoft Entra roles: Lifecycle Workflows Administrator (least privilege), Global Reader. To write this property in delegated scenarios, the admin needs the Global Administrator role. Supports $filter (eq, ne, not , ge, le, in). For more information, see Configure the employeeLeaveDateTime property for a user." + ] }, "id": { "description": "The unique identifier for an entity. Read-only.", - ], - "description": "The UTC date and time the file was created on a client." + ] }, "lastAccessedDateTime": { "anyOf": [ - ], - "description": "The UTC date and time the file was last accessed. Available for the recent file list only." + ] }, "lastModifiedDateTime": { "anyOf": [ - ], - "description": "The UTC date and time the file was last modified on a client." + ] } }, "type": "object" - ], - "description": "Number of children contained immediately within this container." + ] }, "view": { "additionalProperties": true, - ], - "description": "Optional. Height of the image, in pixels. Read-only." + ] }, "width": { "anyOf": [ - ], - "description": "Optional. Width of the image, in pixels. Read-only." + ] } }, "type": "object" - ], - "description": "The unique identifier for the SKU. Corresponds to the skuId from subscribedSkus or companySubscription." + ] } }, "type": "object" - ], - "description": "The date and time at which the plan was assigned. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z." + ] }, "capabilityStatus": { "description": "Condition of the capability assignment. The possible values are Enabled, Warning, Suspended, Deleted, LockedOut. See a detailed description of each value.", - ], - "description": "A GUID that identifies the service plan. For a complete list of GUIDs and their equivalent friendly service names, see Product names and service plan identifiers for licensing." + ] } }, "type": "object" - ], - "description": "The date and time the user was created, in ISO 8601 format and UTC. The value can't be modified and is automatically populated when the entity is created. Nullable. For on-premises users, the value represents when they were first created in Microsoft Entra ID. Property is null for some users created before June 2018 and on-premises users that were synced to Microsoft Entra ID before June 2018. Read-only. Requires $select to retrieve. Supports $filter (eq, ne, not , ge, le, in)." + ] }, "creationType": { "description": "Indicates whether the user account was created through one of the following methods: As a regular school or work account (null). As an external account (Invitation). As a local account for an Azure Active Directory B2C tenant (LocalAccount). Through self-service sign-up by an internal user using email verification (EmailVerified). Through self-service sign-up by a guest signing up through a link that is part of a user flow (SelfServiceSignUp). Read-only.Requires $select to retrieve. Supports $filter (eq, ne, not, in).", - ], - "description": "Date and time when this object was deleted. Always null when the object hasn't been deleted." + ] }, "department": { "description": "The name of the department in which the user works. Maximum length is 64 characters. Requires $select to retrieve. Supports $filter (eq, ne, not , ge, le, in, and eq on null values).", - ], - "description": "The date and time when the user was hired or will start work in a future hire. Requires $select to retrieve. Supports $filter (eq, ne, not , ge, le, in)." + ] }, "employeeId": { "description": "The employee identifier assigned to the user by the organization. The maximum length is 16 characters. Requires $select to retrieve. Supports $filter (eq, ne, not , ge, le, in, startsWith, and eq on null values).", - ], - "description": "The date and time when the user left or will leave the organization. To read this property, the calling app must be assigned the User-LifeCycleInfo.Read.All permission. To write this property, the calling app must be assigned the User.Read.All and User-LifeCycleInfo.ReadWrite.All permissions. To read this property in delegated scenarios, the admin needs at least one of the following Microsoft Entra roles: Lifecycle Workflows Administrator (least privilege), Global Reader. To write this property in delegated scenarios, the admin needs the Global Administrator role. Supports $filter (eq, ne, not , ge, le, in). For more information, see Configure the employeeLeaveDateTime property for a user." + ] }, "id": { "description": "The unique identifier for an entity. Read-only.", - ], - "description": "Date and time the pending binary operation was queued in UTC time. Read-only." + ] } }, "type": "object"
--- pinned/create-onenote-notebook +++ observed/create-onenote-notebook { "annotations": { "destructiveHint": true, + "def10": { + "type": "boolean" + }, + "def11": { + "type": "boolean" + }, "def2": { "additionalProperties": true, "properties": { + "enum": [ + "None", + "Owner", + "Contributor", + "Reader" + ], + "type": "string" + }, + "def5": { "additionalProperties": true, "properties": { "createdBy": { - ], - "description": "The date and time when the page was created. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only." + ] }, "displayName": { "description": "The name of the notebook.", - ], - "description": "The date and time when the notebook was last modified. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only." + ] }, "parentNotebook": { - "$ref": "#/$defs/def5" + "$ref": "#/$defs/def6" }, "parentSectionGroup": { - "$ref": "#/$defs/def4" + "$ref": "#/$defs/def5" }, "sectionGroups": { "description": "The section groups in the section. Read-only. Nullable.", - "$ref": "#/$defs/def4" + "$ref": "#/$defs/def5" }, "type": "array" }, - "$ref": "#/$defs/def6" + "$ref": "#/$defs/def7" }, "type": "array" }, - "def5": { + "def6": { "additionalProperties": true, "properties": { "createdBy": { - ], - "description": "The date and time when the page was created. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only." + ] }, "displayName": { "description": "The name of the notebook.", - ], - "description": "The date and time when the notebook was last modified. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only." + ] }, "links": { "$ref": "#/$defs/def2" - "$ref": "#/$defs/def4" + "$ref": "#/$defs/def5" }, "type": "array" }, - "$ref": "#/$defs/def6" + "$ref": "#/$defs/def7" }, "type": "array" }, - "$ref": "#/$defs/def7" + "$ref": "#/$defs/def4" } }, "type": "object" - "def6": { + "def7": { "additionalProperties": true, "properties": { "createdBy": { - ], - "description": "The date and time when the page was created. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only." + ] }, "displayName": { "description": "The name of the notebook.", - ], - "description": "The date and time when the notebook was last modified. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only." + ] }, "links": { "additionalProperties": true, - "additionalProperties": true, - "properties": { - "content": { - "description": "The page's HTML content.", - "type": [ - "string", - "null" - ] - }, - "contentUrl": { - "description": "The URL for the page's HTML content. Read-only.", - "type": [ - "string", - "null" - ] - }, - "createdByAppId": { - "description": "The unique identifier of the application that created the page. Read-only.", - "type": [ - "string", - "null" - ] - }, - "createdDateTime": { - "anyOf": [ - { - "description": "The date and time when the page was created. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only.", - "format": "date-time", - "pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "The date and time when the page was created. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only." - }, - "id": { - "description": "The unique identifier for an entity. Read-only.", - "type": "string" - }, - "lastModifiedDateTime": { - "anyOf": [ - { - "description": "The date and time when the page was last modified. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only.", - "format": "date-time", - "pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "The date and time when the page was last modified. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only." - }, - "level": { - "anyOf": [ - { - "description": "The indentation level of the page. Read-only.", - "maximum": 2147483647, - "minimum": -2147483648, - "type": "number" - }, - { - "type": "null" - } - ], - "description": "The indentation level of the page. Read-only." - }, - "links": { - "additionalProperties": true, - "properties": { - "oneNoteClientUrl": { - "$ref": "#/$defs/def3" - }, - "oneNoteWebUrl": { - "$ref": "#/$defs/def3" - } - }, - "type": "object" - }, - "order": { - "anyOf": [ - { - "description": "The order of the page within its parent section. Read-only.", - "maximum": 2147483647, - "minimum": -2147483648, - "type": "number" - }, - { - "type": "null" - } - ], - "description": "The order of the page within its parent section. Read-only." - }, - "parentNotebook": { - "$ref": "#/$defs/def5" - }, - "parentSection": { - "$ref": "#/$defs/def6" - }, - "self": { - "description": "The endpoint where you can get details about the page. Read-only.", - "type": [ - "string", - "null" - ] - }, - "title": { - "description": "The title of the page.", - "type": [ - "string", - "null" - ] - }, - "userTags": { - "items": { - "type": [ - "string", - "null" - ] - }, - "type": "array" - } - }, - "type": "object" + "$ref": "#/$defs/def8" }, "type": "array" }, - "$ref": "#/$defs/def5" + "$ref": "#/$defs/def6" }, "parentSectionGroup": { - "$ref": "#/$defs/def4" + "$ref": "#/$defs/def5" }, "self": { "description": "The endpoint where you can get details about the page. Read-only.", - "def7": { - "enum": [ - "None", - "Owner", - "Contributor", - "Reader" - ], - "type": "string" + "def8": { + "additionalProperties": true, + "properties": { + "content": { + "description": "The page's HTML content.", + "type": [ + "string", + "null" + ] + }, + "contentUrl": { + "description": "The URL for the page's HTML content. Read-only.", + "type": [ + "string", + "null" + ] + }, + "createdByAppId": { + "description": "The unique identifier of the application that created the page. Read-only.", + "type": [ + "string", + "null" + ] + }, + "createdDateTime": { + "anyOf": [ + { + "description": "The date and time when the page was created. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only.", + "format": "date-time", + "pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "id": { + "description": "The unique identifier for an entity. Read-only.", + "type": "string" + }, + "lastModifiedDateTime": { + "anyOf": [ + { + "description": "The date and time when the page was last modified. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only.", + "format": "date-time", + "pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "level": { + "anyOf": [ + { + "description": "The indentation level of the page. Read-only.", + "maximum": 2147483647, + "minimum": -2147483648, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "links": { + "additionalProperties": true, + "properties": { + "oneNoteClientUrl": { + "$ref": "#/$defs/def3" + }, + "oneNoteWebUrl": { + "$ref": "#/$defs/def3" + } + }, + "type": "object" + }, + "order": { + "anyOf": [ + { + "description": "The order of the page within its parent section. Read-only.", + "maximum": 2147483647, + "minimum": -2147483648, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "parentNotebook": { + "$ref": "#/$defs/def6" + }, + "parentSection": { + "$ref": "#/$defs/def7" + }, + "self": { + "description": "The endpoint where you can get details about the page. Read-only.", + "type": [ + "string", + "null" + ] + }, + "title": { + "description": "The title of the page.", + "type": [ + "string", + "null" + ] + }, + "userTags": { + "items": { + "type": [ + "string", + "null" + ] + }, + "type": "array" + } + }, + "type": "object" + }, + "def9": { + "type": "boolean" } }, "$schema": "http://json-schema.org/draft-07/schema#", - ], - "description": "The date and time when the page was created. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only." + ] }, "displayName": { "description": "The name of the notebook.", - ], - "description": "The date and time when the notebook was last modified. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only." + ] }, "links": { "$ref": "#/$defs/def2" - "$ref": "#/$defs/def4" + "$ref": "#/$defs/def5" }, "type": "array" }, - "$ref": "#/$defs/def6" + "$ref": "#/$defs/def7" }, "type": "array" }, - "$ref": "#/$defs/def7" + "$ref": "#/$defs/def4" } }, "type": "object" - "description": "For destructive operations when the confirm gate is enabled (MS365_MCP_REQUIRE_CONFIRM=true; off by default). Set to true only after the user has explicitly approved this action. When the gate is on, calls without confirm: true return { error: \"confirmation_required\" } without touching user data.", - "type": "boolean" + "allOf": [ + { + "$ref": "#/$defs/def9" + } + ], + "description": "For destructive operations when the confirm gate is enabled (MS365_MCP_REQUIRE_CONFIRM=true; off by default). Set to true only after the user has explicitly approved this action. When the gate is on, calls without confirm: true return { error: \"confirmation_required\" } without touching user data." }, "excludeResponse": { - "description": "Exclude the full response body and only return success or failure indication", - "type": "boolean" + "allOf": [ + { + "$ref": "#/$defs/def10" + } + ], + "description": "Exclude the full response body and only return success or failure indication" }, "includeHeaders": { - "description": "Include response headers (including ETag) in the response metadata", - "type": "boolean" + "allOf": [ + { + "$ref": "#/$defs/def11" + } + ], + "description": "Include response headers (including ETag) in the response metadata" } }, "required": [
--- pinned/create-onenote-page +++ observed/create-onenote-page { "annotations": { "destructiveHint": true, + "def10": { + "type": "boolean" + }, "def2": { "additionalProperties": true, "properties": { - ], - "description": "The date and time when the page was created. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only." + ] }, "displayName": { "description": "The name of the notebook.", - ], - "description": "The date and time when the notebook was last modified. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only." + ] }, "links": { "additionalProperties": true, - ], - "description": "The date and time when the page was created. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only." + ] }, "displayName": { "description": "The name of the notebook.", - ], - "description": "The date and time when the notebook was last modified. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only." + ] }, "parentNotebook": { "$ref": "#/$defs/def2" - ], - "description": "The date and time when the page was created. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only." + ] }, "displayName": { "description": "The name of the notebook.", - ], - "description": "The date and time when the notebook was last modified. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only." + ] }, "links": { "additionalProperties": true, - "additionalProperties": true, - "properties": { - "content": { - "description": "The page's HTML content.", - "type": [ - "string", - "null" - ] - }, - "contentUrl": { - "description": "The URL for the page's HTML content. Read-only.", - "type": [ - "string", - "null" - ] - }, - "createdByAppId": { - "description": "The unique identifier of the application that created the page. Read-only.", - "type": [ - "string", - "null" - ] - }, - "createdDateTime": { - "anyOf": [ - { - "description": "The date and time when the page was created. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only.", - "format": "date-time", - "pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "The date and time when the page was created. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only." - }, - "id": { - "description": "The unique identifier for an entity. Read-only.", - "type": "string" - }, - "lastModifiedDateTime": { - "anyOf": [ - { - "description": "The date and time when the page was last modified. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only.", - "format": "date-time", - "pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "The date and time when the page was last modified. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only." - }, - "level": { - "anyOf": [ - { - "description": "The indentation level of the page. Read-only.", - "maximum": 2147483647, - "minimum": -2147483648, - "type": "number" - }, - { - "type": "null" - } - ], - "description": "The indentation level of the page. Read-only." - }, - "links": { - "$ref": "#/$defs/def0" - }, - "order": { - "anyOf": [ - { - "description": "The order of the page within its parent section. Read-only.", - "maximum": 2147483647, - "minimum": -2147483648, - "type": "number" - }, - { - "type": "null" - } - ], - "description": "The order of the page within its parent section. Read-only." - }, - "parentNotebook": { - "$ref": "#/$defs/def2" - }, - "parentSection": { - "$ref": "#/$defs/def6" - }, - "self": { - "description": "The endpoint where you can get details about the page. Read-only.", - "type": [ - "string", - "null" - ] - }, - "title": { - "description": "The title of the page.", - "type": [ - "string", - "null" - ] - }, - "userTags": { - "items": { - "type": [ - "string", - "null" - ] - }, - "type": "array" - } - }, - "type": "object" + "$ref": "#/$defs/def7" }, "type": "array" }, + }, + "def7": { + "additionalProperties": true, + "properties": { + "content": { + "description": "The page's HTML content.", + "type": [ + "string", + "null" + ] + }, + "contentUrl": { + "description": "The URL for the page's HTML content. Read-only.", + "type": [ + "string", + "null" + ] + }, + "createdByAppId": { + "description": "The unique identifier of the application that created the page. Read-only.", + "type": [ + "string", + "null" + ] + }, + "createdDateTime": { + "anyOf": [ + { + "description": "The date and time when the page was created. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only.", + "format": "date-time", + "pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "id": { + "description": "The unique identifier for an entity. Read-only.", + "type": "string" + }, + "lastModifiedDateTime": { + "anyOf": [ + { + "description": "The date and time when the page was last modified. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only.", + "format": "date-time", + "pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "level": { + "anyOf": [ + { + "description": "The indentation level of the page. Read-only.", + "maximum": 2147483647, + "minimum": -2147483648, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "links": { + "$ref": "#/$defs/def0" + }, + "order": { + "anyOf": [ + { + "description": "The order of the page within its parent section. Read-only.", + "maximum": 2147483647, + "minimum": -2147483648, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "parentNotebook": { + "$ref": "#/$defs/def2" + }, + "parentSection": { + "$ref": "#/$defs/def6" + }, + "self": { + "description": "The endpoint where you can get details about the page. Read-only.", + "type": [ + "string", + "null" + ] + }, + "title": { + "description": "The title of the page.", + "type": [ + "string", + "null" + ] + }, + "userTags": { + "items": { + "type": [ + "string", + "null" + ] + }, + "type": "array" + } + }, + "type": "object" + }, + "def8": { + "type": "boolean" + }, + "def9": { + "type": "boolean" } }, "$schema": "http://json-schema.org/draft-07/schema#", - ], - "description": "The date and time when the page was created. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only." + ] }, "id": { "description": "The unique identifier for an entity. Read-only.", - ], - "description": "The date and time when the page was last modified. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only." + ] }, "level": { "anyOf": [ - ], - "description": "The indentation level of the page. Read-only." + ] }, "links": { "$ref": "#/$defs/def0" - ], - "description": "The order of the page within its parent section. Read-only." + ] }, "parentNotebook": { "$ref": "#/$defs/def2" - "description": "For destructive operations when the confirm gate is enabled (MS365_MCP_REQUIRE_CONFIRM=true; off by default). Set to true only after the user has explicitly approved this action. When the gate is on, calls without confirm: true return { error: \"confirmation_required\" } without touching user data.", - "type": "boolean" + "allOf": [ + { + "$ref": "#/$defs/def8" + } + ], + "description": "For destructive operations when the confirm gate is enabled (MS365_MCP_REQUIRE_CONFIRM=true; off by default). Set to true only after the user has explicitly approved this action. When the gate is on, calls without confirm: true return { error: \"confirmation_required\" } without touching user data." }, "excludeResponse": { - "description": "Exclude the full response body and only return success or failure indication", - "type": "boolean" + "allOf": [ + { + "$ref": "#/$defs/def9" + } + ], + "description": "Exclude the full response body and only return success or failure indication" }, "includeHeaders": { - "description": "Include response headers (including ETag) in the response metadata", - "type": "boolean" + "allOf": [ + { + "$ref": "#/$defs/def10" + } + ], + "description": "Include response headers (including ETag) in the response metadata" } }, "required": [
--- pinned/create-onenote-section +++ observed/create-onenote-section { "annotations": { "destructiveHint": true, + "def10": { + "type": "boolean" + }, "def2": { "additionalProperties": true, "properties": { - ], - "description": "The date and time when the page was created. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only." + ] }, "id": { "description": "The unique identifier for an entity. Read-only.", - ], - "description": "The date and time when the page was last modified. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only." + ] }, "level": { "anyOf": [ - ], - "description": "The indentation level of the page. Read-only." + ] }, "links": { "additionalProperties": true, - ], - "description": "The order of the page within its parent section. Read-only." + ] }, "parentNotebook": { "$ref": "#/$defs/def5" - ], - "description": "The date and time when the page was created. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only." + ] }, "displayName": { "description": "The name of the notebook.", - ], - "description": "The date and time when the notebook was last modified. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only." + ] }, "links": { "additionalProperties": true, - ], - "description": "The date and time when the page was created. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only." + ] }, "displayName": { "description": "The name of the notebook.", - ], - "description": "The date and time when the notebook was last modified. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only." + ] }, "parentNotebook": { "$ref": "#/$defs/def5" - ], - "description": "The date and time when the page was created. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only." + ] }, "displayName": { "description": "The name of the notebook.", - ], - "description": "The date and time when the notebook was last modified. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only." + ] }, "links": { "$ref": "#/$defs/def2" + }, + "def8": { + "type": "boolean" + }, + "def9": { + "type": "boolean" } }, "$schema": "http://json-schema.org/draft-07/schema#", - ], - "description": "The date and time when the page was created. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only." + ] }, "displayName": { "description": "The name of the notebook.", - ], - "description": "The date and time when the notebook was last modified. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only." + ] }, "links": { "$ref": "#/$defs/def2" - "description": "For destructive operations when the confirm gate is enabled (MS365_MCP_REQUIRE_CONFIRM=true; off by default). Set to true only after the user has explicitly approved this action. When the gate is on, calls without confirm: true return { error: \"confirmation_required\" } without touching user data.", - "type": "boolean" + "allOf": [ + { + "$ref": "#/$defs/def8" + } + ], + "description": "For destructive operations when the confirm gate is enabled (MS365_MCP_REQUIRE_CONFIRM=true; off by default). Set to true only after the user has explicitly approved this action. When the gate is on, calls without confirm: true return { error: \"confirmation_required\" } without touching user data." }, "excludeResponse": { - "description": "Exclude the full response body and only return success or failure indication", - "type": "boolean" + "allOf": [ + { + "$ref": "#/$defs/def9" + } + ], + "description": "Exclude the full response body and only return success or failure indication" }, "includeHeaders": { - "description": "Include response headers (including ETag) in the response metadata", - "type": "boolean" + "allOf": [ + { + "$ref": "#/$defs/def10" + } + ], + "description": "Include response headers (including ETag) in the response metadata" }, "notebookId": { "description": "Value for the 'notebookId' path segment. Pass it under the name 'notebookId', not as 'id'. Use the 'id' field of the notebook object as returned by Microsoft Graph.",
--- pinned/create-onenote-section-page +++ observed/create-onenote-section-page { "annotations": { "destructiveHint": true, + "def10": { + "type": "boolean" + }, "def2": { "additionalProperties": true, "properties": { - ], - "description": "The date and time when the page was created. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only." + ] }, "displayName": { "description": "The name of the notebook.", - ], - "description": "The date and time when the notebook was last modified. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only." + ] }, "links": { "additionalProperties": true, - ], - "description": "The date and time when the page was created. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only." + ] }, "displayName": { "description": "The name of the notebook.", - ], - "description": "The date and time when the notebook was last modified. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only." + ] }, "parentNotebook": { "$ref": "#/$defs/def2" - ], - "description": "The date and time when the page was created. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only." + ] }, "displayName": { "description": "The name of the notebook.", - ], - "description": "The date and time when the notebook was last modified. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only." + ] }, "links": { "additionalProperties": true, - "additionalProperties": true, - "properties": { - "content": { - "description": "The page's HTML content.", - "type": [ - "string", - "null" - ] - }, - "contentUrl": { - "description": "The URL for the page's HTML content. Read-only.", - "type": [ - "string", - "null" - ] - }, - "createdByAppId": { - "description": "The unique identifier of the application that created the page. Read-only.", - "type": [ - "string", - "null" - ] - }, - "createdDateTime": { - "anyOf": [ - { - "description": "The date and time when the page was created. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only.", - "format": "date-time", - "pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "The date and time when the page was created. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only." - }, - "id": { - "description": "The unique identifier for an entity. Read-only.", - "type": "string" - }, - "lastModifiedDateTime": { - "anyOf": [ - { - "description": "The date and time when the page was last modified. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only.", - "format": "date-time", - "pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "The date and time when the page was last modified. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only." - }, - "level": { - "anyOf": [ - { - "description": "The indentation level of the page. Read-only.", - "maximum": 2147483647, - "minimum": -2147483648, - "type": "number" - }, - { - "type": "null" - } - ], - "description": "The indentation level of the page. Read-only." - }, - "links": { - "$ref": "#/$defs/def0" - }, - "order": { - "anyOf": [ - { - "description": "The order of the page within its parent section. Read-only.", - "maximum": 2147483647, - "minimum": -2147483648, - "type": "number" - }, - { - "type": "null" - } - ], - "description": "The order of the page within its parent section. Read-only." - }, - "parentNotebook": { - "$ref": "#/$defs/def2" - }, - "parentSection": { - "$ref": "#/$defs/def6" - }, - "self": { - "description": "The endpoint where you can get details about the page. Read-only.", - "type": [ - "string", - "null" - ] - }, - "title": { - "description": "The title of the page.", - "type": [ - "string", - "null" - ] - }, - "userTags": { - "items": { - "type": [ - "string", - "null" - ] - }, - "type": "array" - } - }, - "type": "object" + "$ref": "#/$defs/def7" }, "type": "array" }, + }, + "def7": { + "additionalProperties": true, + "properties": { + "content": { + "description": "The page's HTML content.", + "type": [ + "string", + "null" + ] + }, + "contentUrl": { + "description": "The URL for the page's HTML content. Read-only.", + "type": [ + "string", + "null" + ] + }, + "createdByAppId": { + "description": "The unique identifier of the application that created the page. Read-only.", + "type": [ + "string", + "null" + ] + }, + "createdDateTime": { + "anyOf": [ + { + "description": "The date and time when the page was created. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only.", + "format": "date-time", + "pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "id": { + "description": "The unique identifier for an entity. Read-only.", + "type": "string" + }, + "lastModifiedDateTime": { + "anyOf": [ + { + "description": "The date and time when the page was last modified. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only.", + "format": "date-time", + "pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "level": { + "anyOf": [ + { + "description": "The indentation level of the page. Read-only.", + "maximum": 2147483647, + "minimum": -2147483648, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "links": { + "$ref": "#/$defs/def0" + }, + "order": { + "anyOf": [ + { + "description": "The order of the page within its parent section. Read-only.", + "maximum": 2147483647, + "minimum": -2147483648, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "parentNotebook": { + "$ref": "#/$defs/def2" + }, + "parentSection": { + "$ref": "#/$defs/def6" + }, + "self": { + "description": "The endpoint where you can get details about the page. Read-only.", + "type": [ + "string", + "null" + ] + }, + "title": { + "description": "The title of the page.", + "type": [ + "string", + "null" + ] + }, + "userTags": { + "items": { + "type": [ + "string", + "null" + ] + }, + "type": "array" + } + }, + "type": "object" + }, + "def8": { + "type": "boolean" + }, + "def9": { + "type": "boolean" } }, "$schema": "http://json-schema.org/draft-07/schema#", - ], - "description": "The date and time when the page was created. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only." + ] }, "id": { "description": "The unique identifier for an entity. Read-only.", - ], - "description": "The date and time when the page was last modified. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only." + ] }, "level": { "anyOf": [ - ], - "description": "The indentation level of the page. Read-only." + ] }, "links": { "$ref": "#/$defs/def0" - ], - "description": "The order of the page within its parent section. Read-only." + ] }, "parentNotebook": { "$ref": "#/$defs/def2" - "description": "For destructive operations when the confirm gate is enabled (MS365_MCP_REQUIRE_CONFIRM=true; off by default). Set to true only after the user has explicitly approved this action. When the gate is on, calls without confirm: true return { error: \"confirmation_required\" } without touching user data.", - "type": "boolean" + "allOf": [ + { + "$ref": "#/$defs/def8" + } + ], + "description": "For destructive operations when the confirm gate is enabled (MS365_MCP_REQUIRE_CONFIRM=true; off by default). Set to true only after the user has explicitly approved this action. When the gate is on, calls without confirm: true return { error: \"confirmation_required\" } without touching user data." }, "excludeResponse": { - "description": "Exclude the full response body and only return success or failure indication", - "type": "boolean" + "allOf": [ + { + "$ref": "#/$defs/def9" + } + ], + "description": "Exclude the full response body and only return success or failure indication" }, "includeHeaders": { - "description": "Include response headers (including ETag) in the response metadata", - "type": "boolean" + "allOf": [ + { + "$ref": "#/$defs/def10" + } + ], + "description": "Include response headers (including ETag) in the response metadata" }, "onenoteSectionId": { "description": "Value for the 'onenoteSectionId' path segment. Pass it under the name 'onenoteSectionId', not as 'id'. Use the 'id' field of the onenote section object as returned by Microsoft Graph.",
--- pinned/create-outlook-contact +++ observed/create-outlook-contact { "annotations": { "destructiveHint": true, - ], - "description": "The contact's birthday. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "businessAddress": { "additionalProperties": true, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "department": { "description": "The contact's department.", - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "multiValueExtendedProperties": { "description": "The collection of multi-value extended properties defined for the contact. Read-only. Nullable.",
--- pinned/create-planner-bucket +++ observed/create-planner-bucket { "annotations": { "destructiveHint": true, - ], - "description": "Number of checklist items with value set to false, representing incomplete items." + ] }, "appliedCategories": { "additionalProperties": true, - ], - "description": "Number of checklist items that are present on the task." + ] }, "completedBy": { "additionalProperties": true, - ], - "description": "Read-only. Date and time at which the 'percentComplete' of the task is set to '100'. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "conversationThreadId": { "description": "Thread ID of the conversation on the task. This is the ID of the conversation thread object created in the group.", - ], - "description": "Read-only. Date and time at which the task is created. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "details": { "additionalProperties": true, - ], - "description": "Date and time at which the task is due. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "hasDescription": { "description": "Read-only. Value is true if the details object of the task has a nonempty description and false otherwise.", - ], - "description": "Percentage of task completion. When set to 100, the task is considered completed." + ] }, "planId": { "description": "Plan ID to which the task belongs.", - ], - "description": "Priority of the task. The valid range of values is between 0 and 10, with the increasing value being lower priority (0 has the highest priority and 10 has the lowest priority). Currently, Planner interprets values 0 and 1 as 'urgent', 2, 3 and 4 as 'important', 5, 6, and 7 as 'medium', and 8, 9, and 10 as 'low'. Additionally, Planner sets the value 1 for 'urgent', 3 for 'important', 5 for 'medium', and 9 for 'low'." + ] }, "referenceCount": { "anyOf": [ - ], - "description": "Number of external references that exist on the task." + ] }, "startDateTime": { "anyOf": [ - ], - "description": "Date and time at which the task starts. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "title": { "description": "Title of the task.",
--- pinned/create-planner-plan +++ observed/create-planner-plan { "annotations": { "destructiveHint": true, + "application": { + "$ref": "#/$defs/def1" + }, + "device": { + "$ref": "#/$defs/def1" + }, + "user": { + "$ref": "#/$defs/def1" + } + }, + "type": "object" + }, + "def1": { + "additionalProperties": true, + "properties": { + "displayName": { + "description": "The display name of the identity.For drive items, the display name might not always be available or up to date. For example, if a user changes their display name the API might show the new value in a future response, but the items associated with the user don't show up as changed when using delta.", + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "Unique identifier for the identity or actor. For example, in the access reviews decisions API, this property might record the id of the principal, that is, the group, user, or application that's subject to review.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "def2": { + "additionalProperties": true, + "properties": { + "id": { + "description": "The unique identifier for an entity. Read-only.", + "type": "string" + }, + "name": { + "description": "Name of the bucket.", + "type": "string" + }, + "orderHint": { + "description": "Hint used to order items of this type in a list view. For details about the supported format, see Using order hints in Planner.", + "type": [ + "string", + "null" + ] + }, + "planId": { + "description": "Plan ID to which the bucket belongs.", + "type": [ + "string", + "null" + ] + }, + "tasks": { + "description": "Read-only. Nullable. The collection of tasks in the bucket.", + "items": { + "$ref": "#/$defs/def3" + }, + "type": "array" + } + }, + "type": "object" + }, + "def3": { + "additionalProperties": true, + "properties": { "activeChecklistItemCount": { "anyOf": [ { - ], - "description": "Number of checklist items with value set to false, representing incomplete items." + ] }, "appliedCategories": { "additionalProperties": true, - ], - "description": "Number of checklist items that are present on the task." + ] }, "completedBy": { - "$ref": "#/$defs/def2" + "$ref": "#/$defs/def0" }, "completedDateTime": { "anyOf": [ - ], - "description": "Read-only. Date and time at which the 'percentComplete' of the task is set to '100'. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "conversationThreadId": { "description": "Thread ID of the conversation on the task. This is the ID of the conversation thread object created in the group.", - "$ref": "#/$defs/def2" + "$ref": "#/$defs/def0" }, "createdDateTime": { "anyOf": [ - ], - "description": "Read-only. Date and time at which the task is created. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "details": { "additionalProperties": true, - "$ref": "#/$defs/def1" + "$ref": "#/$defs/def4" }, "references": { "additionalProperties": true, - ], - "description": "Date and time at which the task is due. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "hasDescription": { "description": "Read-only. Value is true if the details object of the task has a nonempty description and false otherwise.", - ], - "description": "Percentage of task completion. When set to 100, the task is considered completed." + ] }, "planId": { "description": "Plan ID to which the task belongs.", - "$ref": "#/$defs/def1" + "$ref": "#/$defs/def4" }, "priority": { "anyOf": [ - ], - "description": "Priority of the task. The valid range of values is between 0 and 10, with the increasing value being lower priority (0 has the highest priority and 10 has the lowest priority). Currently, Planner interprets values 0 and 1 as 'urgent', 2, 3 and 4 as 'important', 5, 6, and 7 as 'medium', and 8, 9, and 10 as 'low'. Additionally, Planner sets the value 1 for 'urgent', 3 for 'important', 5 for 'medium', and 9 for 'low'." + ] }, "referenceCount": { "anyOf": [ - ], - "description": "Number of external references that exist on the task." + ] }, "startDateTime": { "anyOf": [ - ], - "description": "Date and time at which the task starts. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "title": { "description": "Title of the task.", - "def1": { + "def4": { "enum": [ "automatic", "noPreview", - "def2": { - "additionalProperties": true, - "properties": { - "application": { - "$ref": "#/$defs/def3" - }, - "device": { - "$ref": "#/$defs/def3" - }, - "user": { - "$ref": "#/$defs/def3" - } - }, - "type": "object" + "def5": { + "type": "boolean" }, - "def3": { - "additionalProperties": true, - "properties": { - "displayName": { - "description": "The display name of the identity.For drive items, the display name might not always be available or up to date. For example, if a user changes their display name the API might show the new value in a future response, but the items associated with the user don't show up as changed when using delta.", - "type": [ - "string", - "null" - ] - }, - "id": { - "description": "Unique identifier for the identity or actor. For example, in the access reviews decisions API, this property might record the id of the principal, that is, the group, user, or application that's subject to review.", - "type": [ - "string", - "null" - ] - } - }, - "type": "object" + "def6": { + "type": "boolean" + }, + "def7": { + "type": "boolean" } }, "$schema": "http://json-schema.org/draft-07/schema#", - "additionalProperties": true, - "properties": { - "id": { - "description": "The unique identifier for an entity. Read-only.", - "type": "string" - }, - "name": { - "description": "Name of the bucket.", - "type": "string" - }, - "orderHint": { - "description": "Hint used to order items of this type in a list view. For details about the supported format, see Using order hints in Planner.", - "type": [ - "string", - "null" - ] - }, - "planId": { - "description": "Plan ID to which the bucket belongs.", - "type": [ - "string", - "null" - ] - }, - "tasks": { - "description": "Read-only. Nullable. The collection of tasks in the bucket.", - "items": { - "$ref": "#/$defs/def0" - }, - "type": "array" - } - }, - "type": "object" + "$ref": "#/$defs/def2" }, "type": "array" }, - "$ref": "#/$defs/def2" + "$ref": "#/$defs/def0" }, "createdDateTime": { "anyOf": [ - ], - "description": "Read-only. Date and time at which the plan is created. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "details": { "additionalProperties": true, - "$ref": "#/$defs/def0" + "$ref": "#/$defs/def3" }, "type": "array" }, - "description": "For destructive operations when the confirm gate is enabled (MS365_MCP_REQUIRE_CONFIRM=true; off by default). Set to true only after the user has explicitly approved this action. When the gate is on, calls without confirm: true return { error: \"confirmation_required\" } without touching user data.", - "type": "boolean" + "allOf": [ + { + "$ref": "#/$defs/def5" + } + ], + "description": "For destructive operations when the confirm gate is enabled (MS365_MCP_REQUIRE_CONFIRM=true; off by default). Set to true only after the user has explicitly approved this action. When the gate is on, calls without confirm: true return { error: \"confirmation_required\" } without touching user data." }, "excludeResponse": { - "description": "Exclude the full response body and only return success or failure indication", - "type": "boolean" + "allOf": [ + { + "$ref": "#/$defs/def6" + } + ], + "description": "Exclude the full response body and only return success or failure indication" }, "includeHeaders": { - "description": "Include response headers (including ETag) in the response metadata", - "type": "boolean" + "allOf": [ + { + "$ref": "#/$defs/def7" + } + ], + "description": "Include response headers (including ETag) in the response metadata" } }, "required": [
--- pinned/create-planner-task +++ observed/create-planner-task { "annotations": { "destructiveHint": true, - ], - "description": "Number of checklist items with value set to false, representing incomplete items." + ] }, "appliedCategories": { "additionalProperties": true, - ], - "description": "Number of checklist items that are present on the task." + ] }, "completedBy": { "additionalProperties": true, - ], - "description": "Read-only. Date and time at which the 'percentComplete' of the task is set to '100'. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "conversationThreadId": { "description": "Thread ID of the conversation on the task. This is the ID of the conversation thread object created in the group.", - ], - "description": "Read-only. Date and time at which the task is created. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "details": { "additionalProperties": true, - ], - "description": "Date and time at which the task is due. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "hasDescription": { "description": "Read-only. Value is true if the details object of the task has a nonempty description and false otherwise.", - ], - "description": "Percentage of task completion. When set to 100, the task is considered completed." + ] }, "planId": { "description": "Plan ID to which the task belongs.", - ], - "description": "Priority of the task. The valid range of values is between 0 and 10, with the increasing value being lower priority (0 has the highest priority and 10 has the lowest priority). Currently, Planner interprets values 0 and 1 as 'urgent', 2, 3 and 4 as 'important', 5, 6, and 7 as 'medium', and 8, 9, and 10 as 'low'. Additionally, Planner sets the value 1 for 'urgent', 3 for 'important', 5 for 'medium', and 9 for 'low'." + ] }, "referenceCount": { "anyOf": [ - ], - "description": "Number of external references that exist on the task." + ] }, "startDateTime": { "anyOf": [ - ], - "description": "Date and time at which the task starts. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "title": { "description": "Title of the task.",
--- pinned/create-reply-all-draft +++ observed/create-reply-all-draft { "annotations": { "destructiveHint": true, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "name": { "description": "The attachment's file name.", - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "flag": { "additionalProperties": true, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "multiValueExtendedProperties": { "description": "The collection of multi-value extended properties defined for the message. Nullable.",
--- pinned/create-reply-draft +++ observed/create-reply-draft { "annotations": { "destructiveHint": true, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "name": { "description": "The attachment's file name.", - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "flag": { "additionalProperties": true, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "multiValueExtendedProperties": { "description": "The collection of multi-value extended properties defined for the message. Nullable.",
--- pinned/create-specific-calendar-event +++ observed/create-specific-calendar-event { "annotations": { "destructiveHint": true, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "name": { "description": "The attachment's file name.", - ], - "description": "The date and time when the response was returned. It uses ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] } }, "type": "object" - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "end": { "additionalProperties": true, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "location": { "additionalProperties": true, - ], - "description": "The date to stop applying the recurrence pattern. Depending on the recurrence pattern of the event, the last occurrence of the meeting may not be this date. Required if type is endDate." + ] }, "numberOfOccurrences": { "description": "The number of times to repeat the event. Required and must be positive if type is numbered.", - ], - "description": "The date to start applying the recurrence pattern. The first occurrence of the meeting may be this date or later, depending on the recurrence pattern of the event. Must be the same value as the start property of the recurring event. Required." + ] }, "type": { "enum": [ - ], - "description": "The number of minutes before the event start time that the reminder alert occurs." + ] }, "responseRequested": { "description": "Default is true, which represents the organizer would like an invitee to send a response to the event.",
--- pinned/create-todo-checklist-item +++ observed/create-todo-checklist-item { "annotations": { "destructiveHint": true, - ], - "description": "The date and time when the checklistItem was finished." + ] }, "createdDateTime": { "description": "The date and time when the checklistItem was created.",
--- pinned/create-todo-task +++ observed/create-todo-task { "annotations": { "destructiveHint": true, - ], - "description": "The date and time in UTC when the upload session will expire. The complete file must be uploaded before this expiration time is reached." + ] }, "id": { "description": "The unique identifier for an entity. Read-only.", - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z." + ] }, "name": { "description": "The display name of the attachment. This doesn't need to be the actual file name.", - ], - "description": "The date and time when the checklistItem was finished." + ] }, "createdDateTime": { "description": "The date and time when the checklistItem was created.", - ], - "description": "The date to stop applying the recurrence pattern. Depending on the recurrence pattern of the event, the last occurrence of the meeting may not be this date. Required if type is endDate." + ] }, "numberOfOccurrences": { "description": "The number of times to repeat the event. Required and must be positive if type is numbered.", - ], - "description": "The date to start applying the recurrence pattern. The first occurrence of the meeting may be this date or later, depending on the recurrence pattern of the event. Must be the same value as the start property of the recurring event. Required." + ] }, "type": { "enum": [
--- pinned/create-todo-task-list +++ observed/create-todo-task-list { "annotations": { "destructiveHint": true, - ], - "description": "The date and time in UTC when the upload session will expire. The complete file must be uploaded before this expiration time is reached." + ] }, "id": { "description": "The unique identifier for an entity. Read-only.", - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z." + ] }, "name": { "description": "The display name of the attachment. This doesn't need to be the actual file name.", - ], - "description": "The date and time when the checklistItem was finished." + ] }, "createdDateTime": { "description": "The date and time when the checklistItem was created.", - ], - "description": "The date to stop applying the recurrence pattern. Depending on the recurrence pattern of the event, the last occurrence of the meeting may not be this date. Required if type is endDate." + ] }, "numberOfOccurrences": { "description": "The number of times to repeat the event. Required and must be positive if type is numbered.", - ], - "description": "The date to start applying the recurrence pattern. The first occurrence of the meeting may be this date or later, depending on the recurrence pattern of the event. Must be the same value as the start property of the recurring event. Required." + ] }, "type": { "enum": [
--- pinned/create-upload-session +++ observed/create-upload-session { "annotations": { "destructiveHint": true, - ], - "description": "The UTC date and time the file was created on a client." + ] }, "lastAccessedDateTime": { "anyOf": [ - ], - "description": "The UTC date and time the file was last accessed. Available for the recent file list only." + ] }, "lastModifiedDateTime": { "anyOf": [ - ], - "description": "The UTC date and time the file was last modified on a client." + ] } }, "type": "object"
--- pinned/forward-mail-message +++ observed/forward-mail-message { "annotations": { "destructiveHint": true, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "name": { "description": "The attachment's file name.", - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "flag": { "additionalProperties": true, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "multiValueExtendedProperties": { "description": "The collection of multi-value extended properties defined for the message. Nullable.",
--- pinned/get-upload-url +++ observed/get-upload-url { "annotations": { "openWorldHint": true, - "description": "Attachments collection of a draft message or an event, e.g. /me/messages/{message-id}/attachments or /me/events/{event-id}/attachments.", + "description": "Attachments collection of a draft message or an event, e.g. /me/messages/{message-id}/attachments, /me/events/{event-id}/attachments, or /users/{user-id}/messages/{message-id}/attachments for another mailbox.", "type": "string" } },
--- pinned/move-rename-onedrive-item +++ observed/move-rename-onedrive-item { "annotations": { "destructiveHint": true, - ], - "description": "The number of the disc this audio file came from." + ] }, "discCount": { "anyOf": [ - ], - "description": "The total number of discs in this album." + ] }, "duration": { "description": "Duration of the audio file, expressed in milliseconds", - ], - "description": "The number of the track on the original disc for this audio file." + ] }, "trackCount": { "anyOf": [ - ], - "description": "The total number of tracks on the original disc for this audio file." + ] }, "year": { "anyOf": [ - ], - "description": "The year the audio file was recorded." + ] } }, "type": "object" - ], - "description": "Number of children contained immediately within this container." + ] } }, "type": "object" - ], - "description": "The unique identifier for the SKU. Corresponds to the skuId from subscribedSkus or companySubscription." + ] } }, "type": "object" - ], - "description": "The date and time at which the plan was assigned. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z." + ] }, "capabilityStatus": { "description": "Condition of the capability assignment. The possible values are Enabled, Warning, Suspended, Deleted, LockedOut. See a detailed description of each value.", - ], - "description": "A GUID that identifies the service plan. For a complete list of GUIDs and their equivalent friendly service names, see Product names and service plan identifiers for licensing." + ] } }, "type": "object" - ], - "description": "The date and time the user was created, in ISO 8601 format and UTC. The value can't be modified and is automatically populated when the entity is created. Nullable. For on-premises users, the value represents when they were first created in Microsoft Entra ID. Property is null for some users created before June 2018 and on-premises users that were synced to Microsoft Entra ID before June 2018. Read-only. Requires $select to retrieve. Supports $filter (eq, ne, not , ge, le, in)." + ] }, "creationType": { "description": "Indicates whether the user account was created through one of the following methods: As a regular school or work account (null). As an external account (Invitation). As a local account for an Azure Active Directory B2C tenant (LocalAccount). Through self-service sign-up by an internal user using email verification (EmailVerified). Through self-service sign-up by a guest signing up through a link that is part of a user flow (SelfServiceSignUp). Read-only.Requires $select to retrieve. Supports $filter (eq, ne, not, in).", - ], - "description": "Date and time when this object was deleted. Always null when the object hasn't been deleted." + ] }, "department": { "description": "The name of the department in which the user works. Maximum length is 64 characters. Requires $select to retrieve. Supports $filter (eq, ne, not , ge, le, in, and eq on null values).", - ], - "description": "The date and time when the user was hired or will start work in a future hire. Requires $select to retrieve. Supports $filter (eq, ne, not , ge, le, in)." + ] }, "employeeId": { "description": "The employee identifier assigned to the user by the organization. The maximum length is 16 characters. Requires $select to retrieve. Supports $filter (eq, ne, not , ge, le, in, startsWith, and eq on null values).", - ], - "description": "The date and time when the user left or will leave the organization. To read this property, the calling app must be assigned the User-LifeCycleInfo.Read.All permission. To write this property, the calling app must be assigned the User.Read.All and User-LifeCycleInfo.ReadWrite.All permissions. To read this property in delegated scenarios, the admin needs at least one of the following Microsoft Entra roles: Lifecycle Workflows Administrator (least privilege), Global Reader. To write this property in delegated scenarios, the admin needs the Global Administrator role. Supports $filter (eq, ne, not , ge, le, in). For more information, see Configure the employeeLeaveDateTime property for a user." + ] }, "id": { "description": "The unique identifier for an entity. Read-only.", - ], - "description": "The UTC date and time the file was created on a client." + ] }, "lastAccessedDateTime": { "anyOf": [ - ], - "description": "The UTC date and time the file was last accessed. Available for the recent file list only." + ] }, "lastModifiedDateTime": { "anyOf": [ - ], - "description": "The UTC date and time the file was last modified on a client." + ] } }, "type": "object" - ], - "description": "Number of children contained immediately within this container." + ] }, "view": { "additionalProperties": true, - ], - "description": "Optional. Height of the image, in pixels. Read-only." + ] }, "width": { "anyOf": [ - ], - "description": "Optional. Width of the image, in pixels. Read-only." + ] } }, "type": "object" - ], - "description": "The unique identifier for the SKU. Corresponds to the skuId from subscribedSkus or companySubscription." + ] } }, "type": "object" - ], - "description": "The date and time at which the plan was assigned. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z." + ] }, "capabilityStatus": { "description": "Condition of the capability assignment. The possible values are Enabled, Warning, Suspended, Deleted, LockedOut. See a detailed description of each value.", - ], - "description": "A GUID that identifies the service plan. For a complete list of GUIDs and their equivalent friendly service names, see Product names and service plan identifiers for licensing." + ] } }, "type": "object" - ], - "description": "The date and time the user was created, in ISO 8601 format and UTC. The value can't be modified and is automatically populated when the entity is created. Nullable. For on-premises users, the value represents when they were first created in Microsoft Entra ID. Property is null for some users created before June 2018 and on-premises users that were synced to Microsoft Entra ID before June 2018. Read-only. Requires $select to retrieve. Supports $filter (eq, ne, not , ge, le, in)." + ] }, "creationType": { "description": "Indicates whether the user account was created through one of the following methods: As a regular school or work account (null). As an external account (Invitation). As a local account for an Azure Active Directory B2C tenant (LocalAccount). Through self-service sign-up by an internal user using email verification (EmailVerified). Through self-service sign-up by a guest signing up through a link that is part of a user flow (SelfServiceSignUp). Read-only.Requires $select to retrieve. Supports $filter (eq, ne, not, in).", - ], - "description": "Date and time when this object was deleted. Always null when the object hasn't been deleted." + ] }, "department": { "description": "The name of the department in which the user works. Maximum length is 64 characters. Requires $select to retrieve. Supports $filter (eq, ne, not , ge, le, in, and eq on null values).", - ], - "description": "The date and time when the user was hired or will start work in a future hire. Requires $select to retrieve. Supports $filter (eq, ne, not , ge, le, in)." + ] }, "employeeId": { "description": "The employee identifier assigned to the user by the organization. The maximum length is 16 characters. Requires $select to retrieve. Supports $filter (eq, ne, not , ge, le, in, startsWith, and eq on null values).", - ], - "description": "The date and time when the user left or will leave the organization. To read this property, the calling app must be assigned the User-LifeCycleInfo.Read.All permission. To write this property, the calling app must be assigned the User.Read.All and User-LifeCycleInfo.ReadWrite.All permissions. To read this property in delegated scenarios, the admin needs at least one of the following Microsoft Entra roles: Lifecycle Workflows Administrator (least privilege), Global Reader. To write this property in delegated scenarios, the admin needs the Global Administrator role. Supports $filter (eq, ne, not , ge, le, in). For more information, see Configure the employeeLeaveDateTime property for a user." + ] }, "id": { "description": "The unique identifier for an entity. Read-only.", - ], - "description": "Date and time the pending binary operation was queued in UTC time. Read-only." + ] } }, "type": "object"
--- pinned/reply-all-mail-message +++ observed/reply-all-mail-message { "annotations": { "destructiveHint": true, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "name": { "description": "The attachment's file name.", - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "flag": { "additionalProperties": true, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "multiValueExtendedProperties": { "description": "The collection of multi-value extended properties defined for the message. Nullable.",
--- pinned/reply-mail-message +++ observed/reply-mail-message { "annotations": { "destructiveHint": true, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "name": { "description": "The attachment's file name.", - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "flag": { "additionalProperties": true, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "multiValueExtendedProperties": { "description": "The collection of multi-value extended properties defined for the message. Nullable.",
--- pinned/send-mail +++ observed/send-mail { "annotations": { "destructiveHint": true, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "name": { "description": "The attachment's file name.", - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "flag": { "additionalProperties": true, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "multiValueExtendedProperties": { "description": "The collection of multi-value extended properties defined for the message. Nullable.",
--- pinned/update-calendar +++ observed/update-calendar { "annotations": { "destructiveHint": true, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "name": { "description": "The attachment's file name.", - ], - "description": "The date and time when the response was returned. It uses ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] } }, "type": "object" - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "end": { "additionalProperties": true, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "location": { "additionalProperties": true, - ], - "description": "The date to stop applying the recurrence pattern. Depending on the recurrence pattern of the event, the last occurrence of the meeting may not be this date. Required if type is endDate." + ] }, "numberOfOccurrences": { "description": "The number of times to repeat the event. Required and must be positive if type is numbered.", - ], - "description": "The date to start applying the recurrence pattern. The first occurrence of the meeting may be this date or later, depending on the recurrence pattern of the event. Must be the same value as the start property of the recurring event. Required." + ] }, "type": { "enum": [ - ], - "description": "The number of minutes before the event start time that the reminder alert occurs." + ] }, "responseRequested": { "description": "Default is true, which represents the organizer would like an invitee to send a response to the event.", - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "name": { "description": "The attachment's file name.", - ], - "description": "The date and time when the response was returned. It uses ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] } }, "type": "object" - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "end": { "additionalProperties": true, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "location": { "additionalProperties": true, - ], - "description": "The date to stop applying the recurrence pattern. Depending on the recurrence pattern of the event, the last occurrence of the meeting may not be this date. Required if type is endDate." + ] }, "numberOfOccurrences": { "description": "The number of times to repeat the event. Required and must be positive if type is numbered.", - ], - "description": "The date to start applying the recurrence pattern. The first occurrence of the meeting may be this date or later, depending on the recurrence pattern of the event. Must be the same value as the start property of the recurring event. Required." + ] }, "type": { "enum": [ - ], - "description": "The number of minutes before the event start time that the reminder alert occurs." + ] }, "responseRequested": { "description": "Default is true, which represents the organizer would like an invitee to send a response to the event.",
--- pinned/update-calendar-event +++ observed/update-calendar-event { "annotations": { "destructiveHint": true, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "name": { "description": "The attachment's file name.", - ], - "description": "The date and time when the response was returned. It uses ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] } }, "type": "object" - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "end": { "additionalProperties": true, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "location": { "additionalProperties": true, - ], - "description": "The date to stop applying the recurrence pattern. Depending on the recurrence pattern of the event, the last occurrence of the meeting may not be this date. Required if type is endDate." + ] }, "numberOfOccurrences": { "description": "The number of times to repeat the event. Required and must be positive if type is numbered.", - ], - "description": "The date to start applying the recurrence pattern. The first occurrence of the meeting may be this date or later, depending on the recurrence pattern of the event. Must be the same value as the start property of the recurring event. Required." + ] }, "type": { "enum": [ - ], - "description": "The number of minutes before the event start time that the reminder alert occurs." + ] }, "responseRequested": { "description": "Default is true, which represents the organizer would like an invitee to send a response to the event.",
--- pinned/update-contact-folder +++ observed/update-contact-folder { "annotations": { "destructiveHint": true, - "$ref": "#/$defs/def3" + "$ref": "#/$defs/def5" }, "type": "array" }, - ], - "description": "The contact's birthday. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "businessAddress": { - "$ref": "#/$defs/def2" + "$ref": "#/$defs/def8" }, "businessHomePage": { "description": "The business home page of the contact.", - "type": [ - "string", - "null" - ] + "$ref": "#/$defs/def9" }, "type": "array" }, - "type": [ - "string", - "null" - ] + "$ref": "#/$defs/def7" }, "type": "array" }, - "type": [ - "string", - "null" - ] + "$ref": "#/$defs/def10" }, "type": "array" }, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "department": { "description": "The contact's department.", - "additionalProperties": true, - "properties": { - "address": { - "description": "The email address of the person or entity.", - "type": [ - "string", - "null" - ] - }, - "name": { - "description": "The display name of the person or entity.", - "type": [ - "string", - "null" - ] - } - }, - "type": "object" + "$ref": "#/$defs/def11" }, "type": "array" }, - "$ref": "#/$defs/def2" + "$ref": "#/$defs/def8" }, "homePhones": { "description": "The contact's home phone numbers.", - "type": [ - "string", - "null" - ] + "$ref": "#/$defs/def2" }, "type": "array" }, - "type": [ - "string", - "null" - ] + "$ref": "#/$defs/def3" }, "type": "array" }, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "multiValueExtendedProperties": { "description": "The collection of multi-value extended properties defined for the contact. Read-only. Nullable.", - "$ref": "#/$defs/def3" + "$ref": "#/$defs/def5" }, "type": "array" }, - "def2": { + "def10": { + "type": [ + "string", + "null" + ] + }, + "def11": { "additionalProperties": true, "properties": { - "city": { - "description": "The city.", - "type": [ - "string", - "null" - ] - }, - "countryOrRegion": { - "description": "The country or region. It's a free-format string value, for example, 'United States'.", - "type": [ - "string", - "null" - ] - }, - "postalCode": { - "description": "The postal code.", + "address": { + "description": "The email address of the person or entity.", "type": [ "string", "null" - "state": { - "description": "The state.", + "name": { + "description": "The display name of the person or entity.", "type": [ "string", "null" + } + }, + "type": "object" + }, + "def12": { + "type": "boolean" + }, + "def13": { + "type": "boolean" + }, + "def14": { + "type": "boolean" + }, + "def2": { + "type": [ + "string", + "null" + ] + }, + "def3": { + "type": [ + "string", + "null" + ] + }, + "def4": { + "additionalProperties": true, + "properties": { + "id": { + "description": "The unique identifier for an entity. Read-only.", + "type": "string" }, - "street": { - "description": "The street.", + "value": { + "description": "A property value.", "type": [ "string", "null" - "def3": { + "def5": { "additionalProperties": true, "properties": { "id": { - "type": [ - "string", - "null" - ] + "$ref": "#/$defs/def6" }, "type": "array" } - "def4": { + "def6": { + "type": [ + "string", + "null" + ] + }, + "def7": { + "type": [ + "string", + "null" + ] + }, + "def8": { "additionalProperties": true, "properties": { - "id": { - "description": "The unique identifier for an entity. Read-only.", - "type": "string" + "city": { + "description": "The city.", + "type": [ + "string", + "null" + ] }, - "value": { - "description": "A property value.", + "countryOrRegion": { + "description": "The country or region. It's a free-format string value, for example, 'United States'.", "type": [ "string", "null" + }, + "postalCode": { + "description": "The postal code.", + "type": [ + "string", + "null" + ] + }, + "state": { + "description": "The state.", + "type": [ + "string", + "null" + ] + }, + "street": { + "description": "The street.", + "type": [ + "string", + "null" + ] } }, "type": "object" + }, + "def9": { + "type": [ + "string", + "null" + ] } }, "$schema": "http://json-schema.org/draft-07/schema#", - "$ref": "#/$defs/def3" + "$ref": "#/$defs/def5" }, "type": "array" }, - "description": "For destructive operations when the confirm gate is enabled (MS365_MCP_REQUIRE_CONFIRM=true; off by default). Set to true only after the user has explicitly approved this action. When the gate is on, calls without confirm: true return { error: \"confirmation_required\" } without touching user data.", - "type": "boolean" + "allOf": [ + { + "$ref": "#/$defs/def12" + } + ], + "description": "For destructive operations when the confirm gate is enabled (MS365_MCP_REQUIRE_CONFIRM=true; off by default). Set to true only after the user has explicitly approved this action. When the gate is on, calls without confirm: true return { error: \"confirmation_required\" } without touching user data." }, "contactFolderId": { "description": "Value for the 'contactFolderId' path segment. Pass it under the name 'contactFolderId', not as 'id'. Use the 'id' field of the contact folder object as returned by Microsoft Graph.", - "description": "Exclude the full response body and only return success or failure indication", - "type": "boolean" + "allOf": [ + { + "$ref": "#/$defs/def13" + } + ], + "description": "Exclude the full response body and only return success or failure indication" }, "includeHeaders": { - "description": "Include response headers (including ETag) in the response metadata", - "type": "boolean" + "allOf": [ + { + "$ref": "#/$defs/def14" + } + ], + "description": "Include response headers (including ETag) in the response metadata" } }, "required": [
--- pinned/update-mail-folder +++ observed/update-mail-folder { "annotations": { "destructiveHint": true, - ], - "description": "The number of immediate child mailFolders in the current mailFolder." + ] }, "childFolders": { "description": "The collection of child folders in the mailFolder.", - "$ref": "#/$defs/def29" + "$ref": "#/$defs/def32" }, "type": "array" }, - "$ref": "#/$defs/def31" + "$ref": "#/$defs/def36" }, "type": "array" }, - "$ref": "#/$defs/def32" + "$ref": "#/$defs/def35" }, "type": "array" }, - ], - "description": "The number of items in the mailFolder." + ] }, "unreadItemCount": { "anyOf": [ - ], - "description": "The number of items in the mailFolder marked as unread." + ] } }, "type": "object" - "type": [ - "string", - "null" - ] + "$ref": "#/$defs/def12" }, "type": "array" }, - "$ref": "#/$defs/def2" + "$ref": "#/$defs/def23" }, "type": "array" }, - "$ref": "#/$defs/def2" + "$ref": "#/$defs/def23" }, "type": "array" }, - "$ref": "#/$defs/def3" + "$ref": "#/$defs/def34" }, "moveToFolder": { "description": "The ID of the folder that a message will be moved to.", - "$ref": "#/$defs/def2" + "$ref": "#/$defs/def23" }, "type": "array" }, - "additionalProperties": true, - "description": "[Note: Simplified from 30 properties to 25 most common ones]", - "properties": { - "bodyContains": { - "$ref": "#/$defs/def4" - }, - "bodyOrSubjectContains": { - "$ref": "#/$defs/def5" - }, - "categories": { - "$ref": "#/$defs/def6" - }, - "fromAddresses": { - "$ref": "#/$defs/def7" - }, - "hasAttachments": { - "$ref": "#/$defs/def8" - }, - "headerContains": { - "$ref": "#/$defs/def9" - }, - "importance": { - "$ref": "#/$defs/def10" - }, - "isApprovalRequest": { - "$ref": "#/$defs/def11" - }, - "isAutomaticForward": { - "$ref": "#/$defs/def12" - }, - "isAutomaticReply": { - "$ref": "#/$defs/def13" - }, - "isEncrypted": { - "$ref": "#/$defs/def14" - }, - "isMeetingRequest": { - "$ref": "#/$defs/def15" - }, - "isMeetingResponse": { - "$ref": "#/$defs/def16" - }, - "isNonDeliveryReport": { - "$ref": "#/$defs/def17" - }, - "isPermissionControlled": { - "$ref": "#/$defs/def18" - }, - "isReadReceipt": { - "$ref": "#/$defs/def19" - }, - "isSigned": { - "$ref": "#/$defs/def20" - }, - "isVoicemail": { - "$ref": "#/$defs/def21" - }, - "messageActionFlag": { - "$ref": "#/$defs/def22" - }, - "notSentToMe": { - "$ref": "#/$defs/def23" - }, - "recipientContains": { - "$ref": "#/$defs/def24" - }, - "senderContains": { - "$ref": "#/$defs/def25" - }, - "sensitivity": { - "$ref": "#/$defs/def26" - }, - "sentCcMe": { - "$ref": "#/$defs/def27" - }, - "sentOnlyToMe": { - "$ref": "#/$defs/def28" + "allOf": [ + { + "$ref": "#/$defs/def31" } - }, - "type": "object" + ], + "description": "[Note: Simplified from 30 properties to 25 most common ones]" }, "displayName": { "description": "The display name of the rule.", - "additionalProperties": true, - "description": "[Note: Simplified from 30 properties to 25 most common ones]", - "properties": { - "bodyContains": { - "$ref": "#/$defs/def4" - }, - "bodyOrSubjectContains": { - "$ref": "#/$defs/def5" - }, - "categories": { - "$ref": "#/$defs/def6" - }, - "fromAddresses": { - "$ref": "#/$defs/def7" - }, - "hasAttachments": { - "$ref": "#/$defs/def8" - }, - "headerContains": { - "$ref": "#/$defs/def9" - }, - "importance": { - "$ref": "#/$defs/def10" - }, - "isApprovalRequest": { - "$ref": "#/$defs/def11" - }, - "isAutomaticForward": { - "$ref": "#/$defs/def12" - }, - "isAutomaticReply": { - "$ref": "#/$defs/def13" - }, - "isEncrypted": { - "$ref": "#/$defs/def14" - }, - "isMeetingRequest": { - "$ref": "#/$defs/def15" - }, - "isMeetingResponse": { - "$ref": "#/$defs/def16" - }, - "isNonDeliveryReport": { - "$ref": "#/$defs/def17" - }, - "isPermissionControlled": { - "$ref": "#/$defs/def18" - }, - "isReadReceipt": { - "$ref": "#/$defs/def19" - }, - "isSigned": { - "$ref": "#/$defs/def20" - }, - "isVoicemail": { - "$ref": "#/$defs/def21" - }, - "messageActionFlag": { - "$ref": "#/$defs/def22" - }, - "notSentToMe": { - "$ref": "#/$defs/def23" - }, - "recipientContains": { - "$ref": "#/$defs/def24" - }, - "senderContains": { - "$ref": "#/$defs/def25" - }, - "sensitivity": { - "$ref": "#/$defs/def26" - }, - "sentCcMe": { - "$ref": "#/$defs/def27" - }, - "sentOnlyToMe": { - "$ref": "#/$defs/def28" + "allOf": [ + { + "$ref": "#/$defs/def31" } - }, - "type": "object" + ], + "description": "[Note: Simplified from 30 properties to 25 most common ones]" }, "hasError": { "description": "Indicates whether the rule is in an error condition. Read-only.", - ], - "description": "Indicates the order in which the rule is executed, among other rules." + ] } }, "type": "object" - "$ref": "#/$defs/def3" + "description": "Indicates whether an incoming message must be automatically forwarded in order for the condition or exception to apply.", + "type": [ + "boolean", + "null" + ] }, "def11": { - "description": "Indicates whether an incoming message must be an approval request in order for the condition or exception to apply.", + "description": "Indicates whether an incoming message must be an auto reply in order for the condition or exception to apply.", "type": [ "boolean", "null" - "description": "Indicates whether an incoming message must be automatically forwarded in order for the condition or exception to apply.", "type": [ - "boolean", + "string", "null" ] }, - "description": "Indicates whether an incoming message must be an auto reply in order for the condition or exception to apply.", + "description": "Indicates whether an incoming message must be encrypted in order for the condition or exception to apply.", "type": [ "boolean", "null" - "description": "Indicates whether an incoming message must be encrypted in order for the condition or exception to apply.", + "description": "Indicates whether an incoming message must be a meeting request in order for the condition or exception to apply.", "type": [ "boolean", "null" - "description": "Indicates whether an incoming message must be a meeting request in order for the condition or exception to apply.", + "description": "Indicates whether an incoming message must be a meeting response in order for the condition or exception to apply.", "type": [ "boolean", "null" - "description": "Indicates whether an incoming message must be a meeting response in order for the condition or exception to apply.", + "description": "Indicates whether an incoming message must be a non-delivery report in order for the condition or exception to apply.", "type": [ "boolean", "null" - "description": "Indicates whether an incoming message must be a non-delivery report in order for the condition or exception to apply.", + "description": "Indicates whether an incoming message must be permission controlled (RMS-protected) in order for the condition or exception to apply.", "type": [ "boolean", "null" - "description": "Indicates whether an incoming message must be permission controlled (RMS-protected) in order for the condition or exception to apply.", + "description": "Indicates whether an incoming message must be a read receipt in order for the condition or exception to apply.", "type": [ "boolean", "null" - "description": "Indicates whether an incoming message must be a read receipt in order for the condition or exception to apply.", + "description": "Indicates whether an incoming message must be S/MIME-signed in order for the condition or exception to apply.", "type": [ "boolean", "null" - "additionalProperties": true, - "properties": { - "emailAddress": { - "additionalProperties": true, - "properties": { - "address": { - "description": "The email address of the person or entity.", - "type": [ - "string", - "null" - ] - }, - "name": { - "description": "The display name of the person or entity.", - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "type": "object" - }, - "def20": { - "description": "Indicates whether an incoming message must be S/MIME-signed in order for the condition or exception to apply.", "type": [ - "boolean", + "string", "null" ] }, - "def21": { + "def20": { "description": "Indicates whether an incoming message must be a voice mail in order for the condition or exception to apply.", "type": [ "boolean", - "def22": { + "def21": { "enum": [ "any", "call", - "def23": { + "def22": { "description": "Indicates whether the owner of the mailbox must not be a recipient of an incoming message in order for the condition or exception to apply.", "type": [ "boolean", + "def23": { + "additionalProperties": true, + "properties": { + "emailAddress": { + "additionalProperties": true, + "properties": { + "address": { + "description": "The email address of the person or entity.", + "type": [ + "string", + "null" + ] + }, + "name": { + "description": "The display name of the person or entity.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } + }, + "type": "object" + }, "def24": { "description": "Represents the strings that appear in either the toRecipients or ccRecipients properties of an incoming message in order for the condition or exception to apply.", "items": { - "type": [ - "string", - "null" - ] + "$ref": "#/$defs/def25" }, "type": "array" }, + "type": [ + "string", + "null" + ] + }, + "def26": { "description": "Represents the strings that appear in the from property of an incoming message in order for the condition or exception to apply.", "items": { - "type": [ - "string", - "null" - ] + "$ref": "#/$defs/def27" }, "type": "array" }, - "def26": { - "enum": [ - "normal", - "personal", - "private", - "confidential" - ], - "type": "string" - }, "def27": { + "type": [ + "string", + "null" + ] + }, + "def28": { "description": "Indicates whether the owner of the mailbox must be in the ccRecipients property of an incoming message in order for the condition or exception to apply.", "type": [ "boolean", - "def28": { + "def29": { "description": "Indicates whether the owner of the mailbox must be the only recipient in an incoming message in order for the condition or exception to apply.", "type": [ "boolean", - "def29": { + "def3": { + "description": "Represents the categories that an incoming message should be labeled with in order for the condition or exception to apply.", + "items": { + "$ref": "#/$defs/def4" + }, + "type": "array" + }, + "def30": {}, + "def31": { + "additionalProperties": { + "$ref": "#/$defs/def30" + }, + "properties": { + "bodyContains": { + "$ref": "#/$defs/def43" + }, + "bodyOrSubjectContains": { + "$ref": "#/$defs/def45" + }, + "categories": { + "$ref": "#/$defs/def3" + }, + "fromAddresses": { + "$ref": "#/$defs/def5" + }, + "hasAttachments": { + "$ref": "#/$defs/def6" + }, + "headerContains": { + "$ref": "#/$defs/def7" + }, + "importance": { + "$ref": "#/$defs/def42" + }, + "isApprovalRequest": { + "$ref": "#/$defs/def9" + }, + "isAutomaticForward": { + "$ref": "#/$defs/def10" + }, + "isAutomaticReply": { + "$ref": "#/$defs/def11" + }, + "isEncrypted": { + "$ref": "#/$defs/def13" + }, + "isMeetingRequest": { + "$ref": "#/$defs/def14" + }, + "isMeetingResponse": { + "$ref": "#/$defs/def15" + }, + "isNonDeliveryReport": { + "$ref": "#/$defs/def16" + }, + "isPermissionControlled": { + "$ref": "#/$defs/def17" + }, + "isReadReceipt": { + "$ref": "#/$defs/def18" + }, + "isSigned": { + "$ref": "#/$defs/def19" + }, + "isVoicemail": { + "$ref": "#/$defs/def20" + }, + "messageActionFlag": { + "$ref": "#/$defs/def21" + }, + "notSentToMe": { + "$ref": "#/$defs/def22" + }, + "recipientContains": { + "$ref": "#/$defs/def24" + }, + "senderContains": { + "$ref": "#/$defs/def26" + }, + "sensitivity": { + "$ref": "#/$defs/def41" + }, + "sentCcMe": { + "$ref": "#/$defs/def28" + }, + "sentOnlyToMe": { + "$ref": "#/$defs/def29" + } + }, + "type": "object" + }, + "def32": { "additionalProperties": true, "properties": { "attachments": { - "additionalProperties": true, - "properties": { - "contentType": { - "description": "The MIME type.", - "type": [ - "string", - "null" - ] - }, - "id": { - "description": "The unique identifier for an entity. Read-only.", - "type": "string" - }, - "isInline": { - "description": "true if the attachment is an inline attachment; otherwise, false.", - "type": "boolean" - }, - "lastModifiedDateTime": { - "anyOf": [ - { - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z", - "format": "date-time", - "pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" - }, - "name": { - "description": "The attachment's file name.", - "type": [ - "string", - "null" - ] - }, - "size": { - "description": "The length of the attachment in bytes.", - "maximum": 2147483647, - "minimum": -2147483648, - "type": "number" - } - }, - "type": "object" + "$ref": "#/$defs/def33" }, "type": "array" }, - "$ref": "#/$defs/def2" + "$ref": "#/$defs/def23" }, "type": "array" }, - "type": [ - "string", - "null" - ] + "$ref": "#/$defs/def38" }, "type": "array" }, - "$ref": "#/$defs/def2" + "$ref": "#/$defs/def23" }, "type": "array" }, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "flag": { "additionalProperties": true, - "$ref": "#/$defs/def30" + "$ref": "#/$defs/def39" }, "dueDateTime": { - "$ref": "#/$defs/def30" + "$ref": "#/$defs/def39" }, "flagStatus": { "enum": [ - "$ref": "#/$defs/def30" + "$ref": "#/$defs/def39" } }, "type": "object" - "$ref": "#/$defs/def2" + "$ref": "#/$defs/def23" }, "hasAttachments": { "description": "Indicates whether the message has attachments. This property doesn't include inline attachments, so if a message contains only inline attachments, this property is false. To verify the existence of inline attachments, parse the body property to look for a src attribute, such as <IMG src='cid:image001.jpg@01D26CD8.6C05F070'>.", - "$ref": "#/$defs/def3" + "$ref": "#/$defs/def34" }, "inferenceClassification": { "enum": [ - "additionalProperties": true, - "properties": { - "name": { - "description": "Represents the key in a key-value pair.", - "type": [ - "string", - "null" - ] - }, - "value": { - "description": "The value in a key-value pair.", - "type": [ - "string", - "null" - ] - } - }, - "type": "object" + "$ref": "#/$defs/def40" }, "type": "array" }, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "multiValueExtendedProperties": { "description": "The collection of multi-value extended properties defined for the message. Nullable.", - "$ref": "#/$defs/def31" + "$ref": "#/$defs/def36" }, "type": "array" }, - "$ref": "#/$defs/def32" + "$ref": "#/$defs/def35" }, "type": "array" }, - "$ref": "#/$defs/def2" + "$ref": "#/$defs/def23" }, "type": "array" } - "def3": { + "def33": { + "additionalProperties": true, + "properties": { + "contentType": { + "description": "The MIME type.", + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "The unique identifier for an entity. Read-only.", + "type": "string" + }, + "isInline": { + "description": "true if the attachment is an inline attachment; otherwise, false.", + "type": "boolean" + }, + "lastModifiedDateTime": { + "anyOf": [ + { + "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z", + "format": "date-time", + "pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "name": { + "description": "The attachment's file name.", + "type": [ + "string", + "null" + ] + }, + "size": { + "description": "The length of the attachment in bytes.", + "maximum": 2147483647, + "minimum": -2147483648, + "type": "number" + } + }, + "type": "object" + }, + "def34": { "enum": [ "low", "normal", - "def30": { + "def35": { "additionalProperties": true, "properties": { - "dateTime": { - "description": "A single point of time in a combined date and time representation ({date}T{time}; for example, 2017-08-29T04:00:00.0000000).", + "id": { + "description": "The unique identifier for an entity. Read-only.", "type": "string" }, - "timeZone": { - "description": "Represents a time zone, for example, 'Pacific Standard Time'. See below for more possible values.", + "value": { + "description": "A property value.", "type": [ "string", "null" - "def31": { + "def36": { "additionalProperties": true, "properties": { "id": { - "type": [ - "string", - "null" - ] + "$ref": "#/$defs/def37" }, "type": "array" } - "def32": { + "def37": { + "type": [ + "string", + "null" + ] + }, + "def38": { + "type": [ + "string", + "null" + ] + }, + "def39": { "additionalProperties": true, "properties": { - "id": { - "description": "The unique identifier for an entity. Read-only.", + "dateTime": { + "description": "A single point of time in a combined date and time representation ({date}T{time}; for example, 2017-08-29T04:00:00.0000000).", "type": "string" }, - "value": { - "description": "A property value.", + "timeZone": { + "description": "Represents a time zone, for example, 'Pacific Standard Time'. See below for more possible values.", "type": [ "string", "null" + "type": [ + "string", + "null" + ] + }, + "def40": { + "additionalProperties": true, + "properties": { + "name": { + "description": "Represents the key in a key-value pair.", + "type": [ + "string", + "null" + ] + }, + "value": { + "description": "The value in a key-value pair.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "def41": { + "enum": [ + "normal", + "personal", + "private", + "confidential" + ], + "type": "string" + }, + "def42": { + "$ref": "#/$defs/def34" + }, + "def43": { "description": "Represents the strings that should appear in the body of an incoming message in order for the condition or exception to apply.", "items": { - "type": [ - "string", - "null" - ] + "$ref": "#/$defs/def44" }, "type": "array" }, - "def5": { + "def44": { + "type": [ + "string", + "null" + ] + }, + "def45": { "description": "Represents the strings that should appear in the body or subject of an incoming message in order for the condition or exception to apply.", "items": { - "type": [ - "string", - "null" - ] + "$ref": "#/$defs/def2" }, "type": "array" }, - "def6": { - "description": "Represents the categories that an incoming message should be labeled with in order for the condition or exception to apply.", - "items": { - "type": [ - "string", - "null" - ] - }, - "type": "array" + "def46": { + "type": "boolean" }, - "def7": { + "def47": { + "type": "boolean" + }, + "def48": { + "type": "boolean" + }, + "def5": { "description": "Represents the specific sender email addresses of an incoming message in order for the condition or exception to apply.", "items": { - "$ref": "#/$defs/def2" + "$ref": "#/$defs/def23" }, "type": "array" }, - "def8": { + "def6": { "description": "Indicates whether an incoming message must have attachments in order for the condition or exception to apply.", "type": [ "boolean", - "def9": { + "def7": { "description": "Represents the strings that appear in the headers of an incoming message in order for the condition or exception to apply.", "items": { - "type": [ - "string", - "null" - ] + "$ref": "#/$defs/def8" }, "type": "array" + }, + "def8": { + "type": [ + "string", + "null" + ] + }, + "def9": { + "description": "Indicates whether an incoming message must be an approval request in order for the condition or exception to apply.", + "type": [ + "boolean", + "null" + ] } }, "$schema": "http://json-schema.org/draft-07/schema#", - ], - "description": "The number of immediate child mailFolders in the current mailFolder." + ] }, "childFolders": { "description": "The collection of child folders in the mailFolder.", - "$ref": "#/$defs/def29" + "$ref": "#/$defs/def32" }, "type": "array" }, - "$ref": "#/$defs/def31" + "$ref": "#/$defs/def36" }, "type": "array" }, - "$ref": "#/$defs/def32" + "$ref": "#/$defs/def35" }, "type": "array" }, - ], - "description": "The number of items in the mailFolder." + ] }, "unreadItemCount": { "anyOf": [ - ], - "description": "The number of items in the mailFolder marked as unread." + ] } }, "type": "object" - "description": "For destructive operations when the confirm gate is enabled (MS365_MCP_REQUIRE_CONFIRM=true; off by default). Set to true only after the user has explicitly approved this action. When the gate is on, calls without confirm: true return { error: \"confirmation_required\" } without touching user data.", - "type": "boolean" + "allOf": [ + { + "$ref": "#/$defs/def46" + } + ], + "description": "For destructive operations when the confirm gate is enabled (MS365_MCP_REQUIRE_CONFIRM=true; off by default). Set to true only after the user has explicitly approved this action. When the gate is on, calls without confirm: true return { error: \"confirmation_required\" } without touching user data." }, "excludeResponse": { - "description": "Exclude the full response body and only return success or failure indication", - "type": "boolean" + "allOf": [ + { + "$ref": "#/$defs/def47" + } + ], + "description": "Exclude the full response body and only return success or failure indication" }, "includeHeaders": { - "description": "Include response headers (including ETag) in the response metadata", - "type": "boolean" + "allOf": [ + { + "$ref": "#/$defs/def48" + } + ], + "description": "Include response headers (including ETag) in the response metadata" }, "mailFolderId": { "description": "Value for the 'mailFolderId' path segment. Pass it under the name 'mailFolderId', not as 'id'. Use the 'id' field of the mail folder object as returned by Microsoft Graph.",
--- pinned/update-mail-message +++ observed/update-mail-message { "annotations": { "destructiveHint": true, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "name": { "description": "The attachment's file name.", - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "flag": { "additionalProperties": true, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "multiValueExtendedProperties": { "description": "The collection of multi-value extended properties defined for the message. Nullable.",
--- pinned/update-mail-rule +++ observed/update-mail-rule { "annotations": { "destructiveHint": true, - ], - "description": "Indicates the order in which the rule is executed, among other rules." + ] } }, "type": "object"
--- pinned/update-mailbox-settings +++ observed/update-mailbox-settings { "annotations": { "destructiveHint": true, - ], - "description": "The time of the day that the user stops working." + ] }, "startTime": { "anyOf": [ - ], - "description": "The time of the day that the user starts working." + ] }, "timeZone": { "additionalProperties": true,
--- pinned/update-outlook-contact +++ observed/update-outlook-contact { "annotations": { "destructiveHint": true, - ], - "description": "The contact's birthday. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "businessAddress": { "additionalProperties": true, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "department": { "description": "The contact's department.", - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "multiValueExtendedProperties": { "description": "The collection of multi-value extended properties defined for the contact. Read-only. Nullable.",
--- pinned/update-planner-bucket +++ observed/update-planner-bucket { "annotations": { "destructiveHint": true, - ], - "description": "Number of checklist items with value set to false, representing incomplete items." + ] }, "appliedCategories": { "additionalProperties": true, - ], - "description": "Number of checklist items that are present on the task." + ] }, "completedBy": { "additionalProperties": true, - ], - "description": "Read-only. Date and time at which the 'percentComplete' of the task is set to '100'. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "conversationThreadId": { "description": "Thread ID of the conversation on the task. This is the ID of the conversation thread object created in the group.", - ], - "description": "Read-only. Date and time at which the task is created. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "details": { "additionalProperties": true, - ], - "description": "Date and time at which the task is due. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "hasDescription": { "description": "Read-only. Value is true if the details object of the task has a nonempty description and false otherwise.", - ], - "description": "Percentage of task completion. When set to 100, the task is considered completed." + ] }, "planId": { "description": "Plan ID to which the task belongs.", - ], - "description": "Priority of the task. The valid range of values is between 0 and 10, with the increasing value being lower priority (0 has the highest priority and 10 has the lowest priority). Currently, Planner interprets values 0 and 1 as 'urgent', 2, 3 and 4 as 'important', 5, 6, and 7 as 'medium', and 8, 9, and 10 as 'low'. Additionally, Planner sets the value 1 for 'urgent', 3 for 'important', 5 for 'medium', and 9 for 'low'." + ] }, "referenceCount": { "anyOf": [ - ], - "description": "Number of external references that exist on the task." + ] }, "startDateTime": { "anyOf": [ - ], - "description": "Date and time at which the task starts. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "title": { "description": "Title of the task.",
--- pinned/update-planner-plan +++ observed/update-planner-plan { "annotations": { "destructiveHint": true, + "application": { + "$ref": "#/$defs/def1" + }, + "device": { + "$ref": "#/$defs/def1" + }, + "user": { + "$ref": "#/$defs/def1" + } + }, + "type": "object" + }, + "def1": { + "additionalProperties": true, + "properties": { + "displayName": { + "description": "The display name of the identity.For drive items, the display name might not always be available or up to date. For example, if a user changes their display name the API might show the new value in a future response, but the items associated with the user don't show up as changed when using delta.", + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "Unique identifier for the identity or actor. For example, in the access reviews decisions API, this property might record the id of the principal, that is, the group, user, or application that's subject to review.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "def2": { + "additionalProperties": true, + "properties": { + "id": { + "description": "The unique identifier for an entity. Read-only.", + "type": "string" + }, + "name": { + "description": "Name of the bucket.", + "type": "string" + }, + "orderHint": { + "description": "Hint used to order items of this type in a list view. For details about the supported format, see Using order hints in Planner.", + "type": [ + "string", + "null" + ] + }, + "planId": { + "description": "Plan ID to which the bucket belongs.", + "type": [ + "string", + "null" + ] + }, + "tasks": { + "description": "Read-only. Nullable. The collection of tasks in the bucket.", + "items": { + "$ref": "#/$defs/def3" + }, + "type": "array" + } + }, + "type": "object" + }, + "def3": { + "additionalProperties": true, + "properties": { "activeChecklistItemCount": { "anyOf": [ { - ], - "description": "Number of checklist items with value set to false, representing incomplete items." + ] }, "appliedCategories": { "additionalProperties": true, - ], - "description": "Number of checklist items that are present on the task." + ] }, "completedBy": { - "$ref": "#/$defs/def2" + "$ref": "#/$defs/def0" }, "completedDateTime": { "anyOf": [ - ], - "description": "Read-only. Date and time at which the 'percentComplete' of the task is set to '100'. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "conversationThreadId": { "description": "Thread ID of the conversation on the task. This is the ID of the conversation thread object created in the group.", - "$ref": "#/$defs/def2" + "$ref": "#/$defs/def0" }, "createdDateTime": { "anyOf": [ - ], - "description": "Read-only. Date and time at which the task is created. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "details": { "additionalProperties": true, - "$ref": "#/$defs/def1" + "$ref": "#/$defs/def4" }, "references": { "additionalProperties": true, - ], - "description": "Date and time at which the task is due. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "hasDescription": { "description": "Read-only. Value is true if the details object of the task has a nonempty description and false otherwise.", - ], - "description": "Percentage of task completion. When set to 100, the task is considered completed." + ] }, "planId": { "description": "Plan ID to which the task belongs.", - "$ref": "#/$defs/def1" + "$ref": "#/$defs/def4" }, "priority": { "anyOf": [ - ], - "description": "Priority of the task. The valid range of values is between 0 and 10, with the increasing value being lower priority (0 has the highest priority and 10 has the lowest priority). Currently, Planner interprets values 0 and 1 as 'urgent', 2, 3 and 4 as 'important', 5, 6, and 7 as 'medium', and 8, 9, and 10 as 'low'. Additionally, Planner sets the value 1 for 'urgent', 3 for 'important', 5 for 'medium', and 9 for 'low'." + ] }, "referenceCount": { "anyOf": [ - ], - "description": "Number of external references that exist on the task." + ] }, "startDateTime": { "anyOf": [ - ], - "description": "Date and time at which the task starts. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "title": { "description": "Title of the task.", - "def1": { + "def4": { "enum": [ "automatic", "noPreview", - "def2": { - "additionalProperties": true, - "properties": { - "application": { - "$ref": "#/$defs/def3" - }, - "device": { - "$ref": "#/$defs/def3" - }, - "user": { - "$ref": "#/$defs/def3" - } - }, - "type": "object" + "def5": { + "type": "boolean" }, - "def3": { - "additionalProperties": true, - "properties": { - "displayName": { - "description": "The display name of the identity.For drive items, the display name might not always be available or up to date. For example, if a user changes their display name the API might show the new value in a future response, but the items associated with the user don't show up as changed when using delta.", - "type": [ - "string", - "null" - ] - }, - "id": { - "description": "Unique identifier for the identity or actor. For example, in the access reviews decisions API, this property might record the id of the principal, that is, the group, user, or application that's subject to review.", - "type": [ - "string", - "null" - ] - } - }, - "type": "object" + "def6": { + "type": "boolean" + }, + "def7": { + "type": "boolean" } }, "$schema": "http://json-schema.org/draft-07/schema#", - "additionalProperties": true, - "properties": { - "id": { - "description": "The unique identifier for an entity. Read-only.", - "type": "string" - }, - "name": { - "description": "Name of the bucket.", - "type": "string" - }, - "orderHint": { - "description": "Hint used to order items of this type in a list view. For details about the supported format, see Using order hints in Planner.", - "type": [ - "string", - "null" - ] - }, - "planId": { - "description": "Plan ID to which the bucket belongs.", - "type": [ - "string", - "null" - ] - }, - "tasks": { - "description": "Read-only. Nullable. The collection of tasks in the bucket.", - "items": { - "$ref": "#/$defs/def0" - }, - "type": "array" - } - }, - "type": "object" + "$ref": "#/$defs/def2" }, "type": "array" }, - "$ref": "#/$defs/def2" + "$ref": "#/$defs/def0" }, "createdDateTime": { "anyOf": [ - ], - "description": "Read-only. Date and time at which the plan is created. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "details": { "additionalProperties": true, - "$ref": "#/$defs/def0" + "$ref": "#/$defs/def3" }, "type": "array" }, - "description": "For destructive operations when the confirm gate is enabled (MS365_MCP_REQUIRE_CONFIRM=true; off by default). Set to true only after the user has explicitly approved this action. When the gate is on, calls without confirm: true return { error: \"confirmation_required\" } without touching user data.", - "type": "boolean" + "allOf": [ + { + "$ref": "#/$defs/def5" + } + ], + "description": "For destructive operations when the confirm gate is enabled (MS365_MCP_REQUIRE_CONFIRM=true; off by default). Set to true only after the user has explicitly approved this action. When the gate is on, calls without confirm: true return { error: \"confirmation_required\" } without touching user data." }, "excludeResponse": { - "description": "Exclude the full response body and only return success or failure indication", - "type": "boolean" + "allOf": [ + { + "$ref": "#/$defs/def6" + } + ], + "description": "Exclude the full response body and only return success or failure indication" }, "includeHeaders": { - "description": "Include response headers (including ETag) in the response metadata", - "type": "boolean" + "allOf": [ + { + "$ref": "#/$defs/def7" + } + ], + "description": "Include response headers (including ETag) in the response metadata" }, "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.",
--- pinned/update-planner-task +++ observed/update-planner-task { "annotations": { "destructiveHint": true, - ], - "description": "Number of checklist items with value set to false, representing incomplete items." + ] }, "appliedCategories": { "additionalProperties": true, - ], - "description": "Number of checklist items that are present on the task." + ] }, "completedBy": { "additionalProperties": true, - ], - "description": "Read-only. Date and time at which the 'percentComplete' of the task is set to '100'. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "conversationThreadId": { "description": "Thread ID of the conversation on the task. This is the ID of the conversation thread object created in the group.", - ], - "description": "Read-only. Date and time at which the task is created. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "details": { "additionalProperties": true, - ], - "description": "Date and time at which the task is due. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "hasDescription": { "description": "Read-only. Value is true if the details object of the task has a nonempty description and false otherwise.", - ], - "description": "Percentage of task completion. When set to 100, the task is considered completed." + ] }, "planId": { "description": "Plan ID to which the task belongs.", - ], - "description": "Priority of the task. The valid range of values is between 0 and 10, with the increasing value being lower priority (0 has the highest priority and 10 has the lowest priority). Currently, Planner interprets values 0 and 1 as 'urgent', 2, 3 and 4 as 'important', 5, 6, and 7 as 'medium', and 8, 9, and 10 as 'low'. Additionally, Planner sets the value 1 for 'urgent', 3 for 'important', 5 for 'medium', and 9 for 'low'." + ] }, "referenceCount": { "anyOf": [ - ], - "description": "Number of external references that exist on the task." + ] }, "startDateTime": { "anyOf": [ - ], - "description": "Date and time at which the task starts. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "title": { "description": "Title of the task.",
--- pinned/update-specific-calendar-event +++ observed/update-specific-calendar-event { "annotations": { "destructiveHint": true, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "name": { "description": "The attachment's file name.", - ], - "description": "The date and time when the response was returned. It uses ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] } }, "type": "object" - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "end": { "additionalProperties": true, - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z" + ] }, "location": { "additionalProperties": true, - ], - "description": "The date to stop applying the recurrence pattern. Depending on the recurrence pattern of the event, the last occurrence of the meeting may not be this date. Required if type is endDate." + ] }, "numberOfOccurrences": { "description": "The number of times to repeat the event. Required and must be positive if type is numbered.", - ], - "description": "The date to start applying the recurrence pattern. The first occurrence of the meeting may be this date or later, depending on the recurrence pattern of the event. Must be the same value as the start property of the recurring event. Required." + ] }, "type": { "enum": [ - ], - "description": "The number of minutes before the event start time that the reminder alert occurs." + ] }, "responseRequested": { "description": "Default is true, which represents the organizer would like an invitee to send a response to the event.",
--- pinned/update-todo-checklist-item +++ observed/update-todo-checklist-item { "annotations": { "destructiveHint": true, - ], - "description": "The date and time when the checklistItem was finished." + ] }, "createdDateTime": { "description": "The date and time when the checklistItem was created.",
--- pinned/update-todo-task +++ observed/update-todo-task { "annotations": { "destructiveHint": true, - ], - "description": "The date and time in UTC when the upload session will expire. The complete file must be uploaded before this expiration time is reached." + ] }, "id": { "description": "The unique identifier for an entity. Read-only.", - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z." + ] }, "name": { "description": "The display name of the attachment. This doesn't need to be the actual file name.", - ], - "description": "The date and time when the checklistItem was finished." + ] }, "createdDateTime": { "description": "The date and time when the checklistItem was created.", - ], - "description": "The date to stop applying the recurrence pattern. Depending on the recurrence pattern of the event, the last occurrence of the meeting may not be this date. Required if type is endDate." + ] }, "numberOfOccurrences": { "description": "The number of times to repeat the event. Required and must be positive if type is numbered.", - ], - "description": "The date to start applying the recurrence pattern. The first occurrence of the meeting may be this date or later, depending on the recurrence pattern of the event. Must be the same value as the start property of the recurring event. Required." + ] }, "type": { "enum": [
--- pinned/update-todo-task-list +++ observed/update-todo-task-list { "annotations": { "destructiveHint": true, - ], - "description": "The date and time in UTC when the upload session will expire. The complete file must be uploaded before this expiration time is reached." + ] }, "id": { "description": "The unique identifier for an entity. Read-only.", - ], - "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z." + ] }, "name": { "description": "The display name of the attachment. This doesn't need to be the actual file name.", - ], - "description": "The date and time when the checklistItem was finished." + ] }, "createdDateTime": { "description": "The date and time when the checklistItem was created.", - ], - "description": "The date to stop applying the recurrence pattern. Depending on the recurrence pattern of the event, the last occurrence of the meeting may not be this date. Required if type is endDate." + ] }, "numberOfOccurrences": { "description": "The number of times to repeat the event. Required and must be positive if type is numbered.", - ], - "description": "The date to start applying the recurrence pattern. The first occurrence of the meeting may be this date or later, depending on the recurrence pattern of the event. Must be the same value as the start property of the recurring event. Required." + ] }, "type": { "enum": [
Changed 2026-10-28 13:13 UTC
1 description rewritten, 2 tools added.
--- 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'.", + "description": "Get a list of the todoTaskList objects and their properties.\n\n💡 TIP: If it returns only 'Flagged Emails', use list-todo-task-lists-delta instead.", "execution": { "taskSupport": "forbidden" },
+ tool added: list-todo-task-lists-delta
+ tool added: update-onenote-page-content
Changed 2026-10-26 13:14 UTC
1 description rewritten.
--- pinned/get-upload-url +++ observed/get-upload-url { "annotations": { "openWorldHint": true, - "description": "Mint a short-lived, single-use URL that this server serves for uploading a file as an attachment to a draft message or an event, so the bytes go straight from the caller to Microsoft Graph instead of passing as base64 through the agent context. target is the attachments collection of the item: /me/messages/{message-id}/attachments (a draft; create it first) or /me/events/{event-id}/attachments. PUT the raw file bytes to the returned uploadUrl with a Content-Length (e.g. curl -T file \"<uploadUrl>\"); the response confirms the attachment. Files under 3 MB are attached directly, larger ones (up to 150 MB) through a Graph upload session. Requires --enable-attachment-urls. Returns { uploadUrl, method, expiresAt, singleUse, maxBytes }.", + "description": "Mint a short-lived, single-use URL that this server serves for uploading a file as an attachment to a draft message or an event, so the bytes go straight from the caller to Microsoft Graph instead of passing as base64 through the agent context. target is the attachments collection of the item: /me/messages/{message-id}/attachments (a draft; create it first) or /me/events/{event-id}/attachments. PUT the raw file bytes to the returned uploadUrl with a Content-Length (e.g. curl -T file \"<uploadUrl>\"); the response confirms the attachment. Files under 3 MB are attached directly, larger ones (up to 150 MB) through a Graph upload session. Pass contentId to attach inline, e.g. a signature picture the HTML body shows with <img src=\"cid:<contentId>\">. Requires --enable-attachment-urls. Returns { uploadUrl, method, expiresAt, singleUse, maxBytes }.", "execution": { "taskSupport": "forbidden" }, + "contentId": { + "description": "Attach inline under this Content-ID instead of as a regular attachment, so the HTML body can show the file with <img src=\"cid:<contentId>\">, e.g. a picture in an email signature. Letters, digits, \".\", \"_\", \"@\", \"-\".", + "type": "string" + }, "contentType": { "description": "MIME type of the file, e.g. application/pdf. Defaults to application/octet-stream.", "type": "string"
Changed 2026-10-23 11:57 UTC
3 tools added.
+ tool added: create-planner-plan
+ tool added: list-group-planner-plans
+ tool added: update-planner-plan
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 202 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)