@softeria/ms-365-mcp-server 0.21.0 → 0.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -396,12 +396,35 @@ function findUsedSchemas(openApiSpec) {
396
396
  const schemasToProcess = [];
397
397
  const schemas = openApiSpec.components?.schemas || {};
398
398
  const responses = openApiSpec.components?.responses || {};
399
+ const requestBodies = openApiSpec.components?.requestBodies || {};
399
400
  const paths = openApiSpec.paths || {};
400
401
 
401
402
  Object.entries(paths).forEach(([, pathItem]) => {
402
403
  Object.entries(pathItem).forEach(([, operation]) => {
403
404
  if (typeof operation !== 'object') return;
404
405
 
406
+ if (operation.requestBody?.$ref) {
407
+ const requestBodyName = operation.requestBody.$ref.replace(
408
+ '#/components/requestBodies/',
409
+ ''
410
+ );
411
+ const requestBodyDefinition = requestBodies[requestBodyName];
412
+ if (requestBodyDefinition?.content) {
413
+ Object.values(requestBodyDefinition.content).forEach((content) => {
414
+ if (content.schema?.$ref) {
415
+ const schemaName = content.schema.$ref.replace('#/components/schemas/', '');
416
+ schemasToProcess.push(schemaName);
417
+ }
418
+ if (content.schema?.properties) {
419
+ findRefsInObject(content.schema.properties, (ref) => {
420
+ const schemaName = ref.replace('#/components/schemas/', '');
421
+ schemasToProcess.push(schemaName);
422
+ });
423
+ }
424
+ });
425
+ }
426
+ }
427
+
405
428
  if (operation.requestBody?.content) {
406
429
  Object.values(operation.requestBody.content).forEach((content) => {
407
430
  if (content.schema?.$ref) {
@@ -173,6 +173,12 @@
173
173
  "toolName": "list-calendars",
174
174
  "scopes": ["Calendars.Read"]
175
175
  },
176
+ {
177
+ "pathPattern": "/me/findMeetingTimes",
178
+ "method": "post",
179
+ "toolName": "find-meeting-times",
180
+ "workScopes": ["Calendars.Read.Shared"]
181
+ },
176
182
  {
177
183
  "pathPattern": "/me/drives",
178
184
  "method": "get",
@@ -198,7 +204,7 @@
198
204
  "scopes": ["Files.Read"]
199
205
  },
200
206
  {
201
- "pathPattern": "/drives/{drive-id}/items/{driveItem-id}/children/{driveItem-id1}/content",
207
+ "pathPattern": "/drives/{drive-id}/items/{driveItem-id}/content",
202
208
  "method": "get",
203
209
  "toolName": "download-onedrive-file-content",
204
210
  "scopes": ["Files.Read"]
@@ -660,8 +660,8 @@ const microsoft_graph_driveItem = z.object({
660
660
  webUrl: z.string().describe(
661
661
  "URL that either displays the resource in the browser (for Office file formats), or is a direct link to the file (for other formats). Read-only."
662
662
  ).nullish(),
663
- createdByUser: microsoft_graph_user.describe("[Note: Simplified from 132 properties to 25 most common ones]").optional(),
664
- lastModifiedByUser: microsoft_graph_user.describe("[Note: Simplified from 132 properties to 25 most common ones]").optional(),
663
+ createdByUser: microsoft_graph_user.describe("[Note: Simplified from 133 properties to 25 most common ones]").optional(),
664
+ lastModifiedByUser: microsoft_graph_user.describe("[Note: Simplified from 133 properties to 25 most common ones]").optional(),
665
665
  audio: microsoft_graph_audio.optional(),
666
666
  bundle: microsoft_graph_bundle.optional(),
667
667
  cTag: z.string().describe(
@@ -1757,8 +1757,8 @@ const microsoft_graph_listItem = z.object({
1757
1757
  webUrl: z.string().describe(
1758
1758
  "URL that either displays the resource in the browser (for Office file formats), or is a direct link to the file (for other formats). Read-only."
1759
1759
  ).nullish(),
1760
- createdByUser: microsoft_graph_user.describe("[Note: Simplified from 132 properties to 25 most common ones]").optional(),
1761
- lastModifiedByUser: microsoft_graph_user.describe("[Note: Simplified from 132 properties to 25 most common ones]").optional(),
1760
+ createdByUser: microsoft_graph_user.describe("[Note: Simplified from 133 properties to 25 most common ones]").optional(),
1761
+ lastModifiedByUser: microsoft_graph_user.describe("[Note: Simplified from 133 properties to 25 most common ones]").optional(),
1762
1762
  contentType: microsoft_graph_contentTypeInfo.optional(),
1763
1763
  sharepointIds: microsoft_graph_sharepointIds.optional(),
1764
1764
  analytics: microsoft_graph_itemAnalytics.optional(),
@@ -1877,8 +1877,8 @@ const microsoft_graph_list = z.lazy(
1877
1877
  webUrl: z.string().describe(
1878
1878
  "URL that either displays the resource in the browser (for Office file formats), or is a direct link to the file (for other formats). Read-only."
1879
1879
  ).nullish(),
1880
- createdByUser: microsoft_graph_user.describe("[Note: Simplified from 132 properties to 25 most common ones]").optional(),
1881
- lastModifiedByUser: microsoft_graph_user.describe("[Note: Simplified from 132 properties to 25 most common ones]").optional(),
1880
+ createdByUser: microsoft_graph_user.describe("[Note: Simplified from 133 properties to 25 most common ones]").optional(),
1881
+ lastModifiedByUser: microsoft_graph_user.describe("[Note: Simplified from 133 properties to 25 most common ones]").optional(),
1882
1882
  displayName: z.string().describe("The displayable title of the list.").nullish(),
1883
1883
  list: microsoft_graph_listInfo.optional(),
1884
1884
  sharepointIds: microsoft_graph_sharepointIds.optional(),
@@ -1909,8 +1909,8 @@ const microsoft_graph_drive = z.lazy(
1909
1909
  webUrl: z.string().describe(
1910
1910
  "URL that either displays the resource in the browser (for Office file formats), or is a direct link to the file (for other formats). Read-only."
1911
1911
  ).nullish(),
1912
- createdByUser: microsoft_graph_user.describe("[Note: Simplified from 132 properties to 25 most common ones]").optional(),
1913
- lastModifiedByUser: microsoft_graph_user.describe("[Note: Simplified from 132 properties to 25 most common ones]").optional(),
1912
+ createdByUser: microsoft_graph_user.describe("[Note: Simplified from 133 properties to 25 most common ones]").optional(),
1913
+ lastModifiedByUser: microsoft_graph_user.describe("[Note: Simplified from 133 properties to 25 most common ones]").optional(),
1914
1914
  driveType: z.string().describe(
1915
1915
  "Describes the type of drive represented by this resource. OneDrive personal drives return personal. OneDrive for Business returns business. SharePoint document libraries return documentLibrary. Read-only."
1916
1916
  ).nullish(),
@@ -2195,7 +2195,7 @@ const microsoft_graph_team = z.lazy(
2195
2195
  ).nullish(),
2196
2196
  allChannels: z.array(microsoft_graph_channel).describe("List of channels either hosted in or shared with the team (incoming channels).").optional(),
2197
2197
  channels: z.array(microsoft_graph_channel).describe("The collection of channels and messages associated with the team.").optional(),
2198
- group: microsoft_graph_group.describe("[Note: Simplified from 70 properties to 25 most common ones]").optional(),
2198
+ group: microsoft_graph_group.describe("[Note: Simplified from 71 properties to 25 most common ones]").optional(),
2199
2199
  incomingChannels: z.array(microsoft_graph_channel).describe("List of channels shared with the team.").optional(),
2200
2200
  installedApps: z.array(microsoft_graph_teamsAppInstallation).describe("The apps installed in this team.").optional(),
2201
2201
  members: z.array(microsoft_graph_conversationMember).describe("Members and owners of the team.").optional(),
@@ -2416,6 +2416,51 @@ const microsoft_graph_attachmentCollectionResponse = z.object({
2416
2416
  "@odata.nextLink": z.string().nullable(),
2417
2417
  value: z.array(microsoft_graph_attachment)
2418
2418
  }).partial().strict();
2419
+ const microsoft_graph_attendeeBase = z.object({
2420
+ emailAddress: microsoft_graph_emailAddress.optional(),
2421
+ type: microsoft_graph_attendeeType.optional()
2422
+ }).strict();
2423
+ const microsoft_graph_locationConstraintItem = z.object({
2424
+ address: microsoft_graph_physicalAddress.optional(),
2425
+ coordinates: microsoft_graph_outlookGeoCoordinates.optional(),
2426
+ displayName: z.string().describe("The name associated with the location.").nullish(),
2427
+ locationEmailAddress: z.string().describe("Optional email address of the location.").nullish(),
2428
+ locationType: microsoft_graph_locationType.optional(),
2429
+ locationUri: z.string().describe("Optional URI representing the location.").nullish(),
2430
+ uniqueId: z.string().describe("For internal use only.").nullish(),
2431
+ uniqueIdType: microsoft_graph_locationUniqueIdType.optional(),
2432
+ resolveAvailability: z.boolean().describe(
2433
+ "If set to true and the specified resource is busy, findMeetingTimes looks for another resource that is free. If set to false and the specified resource is busy, findMeetingTimes returns the resource best ranked in the user's cache without checking if it's free. Default is true."
2434
+ ).nullish()
2435
+ }).strict();
2436
+ const microsoft_graph_locationConstraint = z.object({
2437
+ isRequired: z.boolean().describe(
2438
+ "The client requests the service to include in the response a meeting location for the meeting. If this is true and all the resources are busy, findMeetingTimes won't return any meeting time suggestions. If this is false and all the resources are busy, findMeetingTimes would still look for meeting times without locations."
2439
+ ).nullish(),
2440
+ locations: z.array(microsoft_graph_locationConstraintItem).describe(
2441
+ "Constraint information for one or more locations that the client requests for the meeting."
2442
+ ).optional(),
2443
+ suggestLocation: z.boolean().describe("The client requests the service to suggest one or more meeting locations.").nullish()
2444
+ }).strict();
2445
+ const microsoft_graph_activityDomain = z.enum(["unknown", "work", "personal", "unrestricted"]);
2446
+ const microsoft_graph_timeConstraint = z.object({
2447
+ activityDomain: microsoft_graph_activityDomain.optional(),
2448
+ timeSlots: z.array(microsoft_graph_timeSlot).optional()
2449
+ }).strict();
2450
+ const ReferenceNumeric = z.enum(["-INF", "INF", "NaN"]);
2451
+ const find_meeting_times_Body = z.object({
2452
+ attendees: z.array(microsoft_graph_attendeeBase),
2453
+ locationConstraint: z.union([
2454
+ microsoft_graph_locationConstraint,
2455
+ z.object({}).partial().strict()
2456
+ ]),
2457
+ timeConstraint: z.union([microsoft_graph_timeConstraint, z.object({}).partial().strict()]),
2458
+ meetingDuration: z.string().regex(/^-?P([0-9]+D)?(T([0-9]+H)?([0-9]+M)?([0-9]+([.][0-9]+)?S)?)?$/).nullable(),
2459
+ maxCandidates: z.number().gte(-2147483648).lte(2147483647).nullable(),
2460
+ isOrganizerOptional: z.boolean().nullable().default(false),
2461
+ returnSuggestionReasons: z.boolean().nullable().default(false),
2462
+ minimumAttendeePercentage: z.union([z.number(), z.string(), ReferenceNumeric])
2463
+ }).partial().strict();
2419
2464
  const send_mail_Body = z.object({
2420
2465
  Message: microsoft_graph_message.describe(
2421
2466
  "[Note: Simplified from 35 properties to 25 most common ones]"
@@ -3119,8 +3164,8 @@ const microsoft_graph_baseItem = z.object({
3119
3164
  webUrl: z.string().describe(
3120
3165
  "URL that either displays the resource in the browser (for Office file formats), or is a direct link to the file (for other formats). Read-only."
3121
3166
  ).nullish(),
3122
- createdByUser: microsoft_graph_user.describe("[Note: Simplified from 132 properties to 25 most common ones]").optional(),
3123
- lastModifiedByUser: microsoft_graph_user.describe("[Note: Simplified from 132 properties to 25 most common ones]").optional()
3167
+ createdByUser: microsoft_graph_user.describe("[Note: Simplified from 133 properties to 25 most common ones]").optional(),
3168
+ lastModifiedByUser: microsoft_graph_user.describe("[Note: Simplified from 133 properties to 25 most common ones]").optional()
3124
3169
  }).strict();
3125
3170
  const microsoft_graph_site = z.object({
3126
3171
  id: z.string().describe("The unique identifier for an entity. Read-only.").optional(),
@@ -3141,8 +3186,8 @@ const microsoft_graph_site = z.object({
3141
3186
  webUrl: z.string().describe(
3142
3187
  "URL that either displays the resource in the browser (for Office file formats), or is a direct link to the file (for other formats). Read-only."
3143
3188
  ).nullish(),
3144
- createdByUser: microsoft_graph_user.describe("[Note: Simplified from 132 properties to 25 most common ones]").optional(),
3145
- lastModifiedByUser: microsoft_graph_user.describe("[Note: Simplified from 132 properties to 25 most common ones]").optional(),
3189
+ createdByUser: microsoft_graph_user.describe("[Note: Simplified from 133 properties to 25 most common ones]").optional(),
3190
+ lastModifiedByUser: microsoft_graph_user.describe("[Note: Simplified from 133 properties to 25 most common ones]").optional(),
3146
3191
  isPersonalSite: z.boolean().describe("Identifies whether the site is personal or not. Read-only.").nullish(),
3147
3192
  root: microsoft_graph_root.optional(),
3148
3193
  sharepointIds: microsoft_graph_sharepointIds.optional(),
@@ -3423,6 +3468,13 @@ const schemas = {
3423
3468
  microsoft_graph_mailFolderCollectionResponse,
3424
3469
  microsoft_graph_messageCollectionResponse,
3425
3470
  microsoft_graph_attachmentCollectionResponse,
3471
+ microsoft_graph_attendeeBase,
3472
+ microsoft_graph_locationConstraintItem,
3473
+ microsoft_graph_locationConstraint,
3474
+ microsoft_graph_activityDomain,
3475
+ microsoft_graph_timeConstraint,
3476
+ ReferenceNumeric,
3477
+ find_meeting_times_Body,
3426
3478
  send_mail_Body,
3427
3479
  microsoft_graph_externalLink,
3428
3480
  microsoft_graph_notebookLinks,
@@ -3622,7 +3674,7 @@ const endpoints = makeApi([
3622
3674
  method: "post",
3623
3675
  path: "/chats/:chatId/messages",
3624
3676
  alias: "send-chat-message",
3625
- description: `Send a new chatMessage in the specified channel or a chat.`,
3677
+ description: `Send a new chatMessage in the specified chat. This API can't create a new chat; you must use the list chats method to retrieve the ID of an existing chat before you can create a chat message.`,
3626
3678
  requestFormat: "json",
3627
3679
  parameters: [
3628
3680
  {
@@ -3884,7 +3936,7 @@ const endpoints = makeApi([
3884
3936
  },
3885
3937
  {
3886
3938
  method: "get",
3887
- path: "/drives/:driveId/items/:driveItemId/children/:driveItemId1/content",
3939
+ path: "/drives/:driveId/items/:driveItemId/content",
3888
3940
  alias: "download-onedrive-file-content",
3889
3941
  description: `The content stream, if the item represents a file.`,
3890
3942
  requestFormat: "json",
@@ -3951,8 +4003,8 @@ const endpoints = makeApi([
3951
4003
  webUrl: z.string().describe(
3952
4004
  "URL that either displays the resource in the browser (for Office file formats), or is a direct link to the file (for other formats). Read-only."
3953
4005
  ).nullish(),
3954
- createdByUser: microsoft_graph_user.describe("[Note: Simplified from 132 properties to 25 most common ones]").optional(),
3955
- lastModifiedByUser: microsoft_graph_user.describe("[Note: Simplified from 132 properties to 25 most common ones]").optional(),
4006
+ createdByUser: microsoft_graph_user.describe("[Note: Simplified from 133 properties to 25 most common ones]").optional(),
4007
+ lastModifiedByUser: microsoft_graph_user.describe("[Note: Simplified from 133 properties to 25 most common ones]").optional(),
3956
4008
  audio: microsoft_graph_audio.optional(),
3957
4009
  bundle: microsoft_graph_bundle.optional(),
3958
4010
  cTag: z.string().describe(
@@ -4217,8 +4269,8 @@ const endpoints = makeApi([
4217
4269
  webUrl: z.string().describe(
4218
4270
  "URL that either displays the resource in the browser (for Office file formats), or is a direct link to the file (for other formats). Read-only."
4219
4271
  ).nullish(),
4220
- createdByUser: microsoft_graph_user.describe("[Note: Simplified from 132 properties to 25 most common ones]").optional(),
4221
- lastModifiedByUser: microsoft_graph_user.describe("[Note: Simplified from 132 properties to 25 most common ones]").optional(),
4272
+ createdByUser: microsoft_graph_user.describe("[Note: Simplified from 133 properties to 25 most common ones]").optional(),
4273
+ lastModifiedByUser: microsoft_graph_user.describe("[Note: Simplified from 133 properties to 25 most common ones]").optional(),
4222
4274
  audio: microsoft_graph_audio.optional(),
4223
4275
  bundle: microsoft_graph_bundle.optional(),
4224
4276
  cTag: z.string().describe(
@@ -4251,7 +4303,7 @@ const endpoints = makeApi([
4251
4303
  method: "get",
4252
4304
  path: "/me",
4253
4305
  alias: "get-current-user",
4254
- description: `Returns the user or organizational contact assigned as the user's manager. Optionally, you can expand the manager's chain up to the root node.`,
4306
+ description: `Retrieve the properties and relationships of user object. This operation returns by default only a subset of the more commonly used properties for each user. These default properties are noted in the Properties section. To get properties that are not returned by default, do a GET operation for the user and specify the properties in a $select OData query option. Because the user resource supports extensions, you can also use the GET operation to get custom properties and extension data in a user instance. Customers through Microsoft Entra ID for customers can also use this API operation to retrieve their details.`,
4255
4307
  requestFormat: "json",
4256
4308
  parameters: [
4257
4309
  {
@@ -5611,13 +5663,8 @@ get the instances of an event. Currently, this operation returns event bodies in
5611
5663
  method: "post",
5612
5664
  path: "/me/events",
5613
5665
  alias: "create-calendar-event",
5614
- description: `Create an event in the user's default calendar or specified calendar. By default, the allowNewTimeProposals property is set to true when an event is created, which means invitees can propose a different date/time for the event. See Propose new meeting times for more information on how to propose a time, and how to receive and accept a new time proposal. You can specify the time zone for each of the start and end times of the event as part of their values, because the
5615
- start and end properties are of dateTimeTimeZone type. First find the supported time zones to make sure you set only time zones that have been configured for the user's mailbox server. When an event is sent, the server sends invitations to all the attendees. Setting the location in an event An Exchange administrator can set up a mailbox and an email address for a resource such as a meeting room, or equipment
5616
- like a projector. Users can then invite the resource as an attendee to a meeting. On behalf of the resource, the server accepts or rejects
5617
- the meeting request based on the free/busy schedule of the resource.
5618
- If the server accepts a meeting for the resource, it creates an event for the meeting in the resource's calendar. If the meeting is rescheduled,
5619
- the server automatically updates the event in the resource's calendar. Another advantage of setting up a mailbox for a resource is to control scheduling of the resource, for example, only executives
5620
- or their delegates can book a private meeting room. If you're organizing an event that involves a meeting location: Additionally, if the meeting location has been set up as a resource, or if the event involves some equipment that has been set up as a resource:`,
5666
+ description: `Create one or more multi-value extended properties in a new or existing instance of a resource. The following user resources are supported: The following group resources are supported: See Extended properties overview for more information about when to use
5667
+ open extensions or extended properties, and how to specify extended properties.`,
5621
5668
  requestFormat: "json",
5622
5669
  parameters: [
5623
5670
  {
@@ -6023,6 +6070,40 @@ or their delegates can book a private meeting room. If you're organizing an
6023
6070
  }
6024
6071
  ]
6025
6072
  },
6073
+ {
6074
+ method: "post",
6075
+ path: "/me/findMeetingTimes",
6076
+ alias: "find-meeting-times",
6077
+ description: `Suggest meeting times and locations based on organizer and attendee availability, and time or location constraints specified as parameters. If findMeetingTimes cannot return any meeting suggestions, the response would indicate a reason in the emptySuggestionsReason property.
6078
+ Based on this value, you can better adjust the parameters and call findMeetingTimes again. The algorithm used to suggest meeting times and locations undergoes fine-tuning from time to time. In scenarios like test environments where the input parameters and calendar data remain static, expect that the suggested results may differ over time.`,
6079
+ requestFormat: "json",
6080
+ parameters: [
6081
+ {
6082
+ name: "body",
6083
+ description: `Action parameters`,
6084
+ type: "Body",
6085
+ schema: find_meeting_times_Body
6086
+ }
6087
+ ],
6088
+ response: z.void(),
6089
+ errors: [
6090
+ {
6091
+ status: NaN,
6092
+ description: `Success`,
6093
+ schema: z.object({}).partial().strict()
6094
+ },
6095
+ {
6096
+ status: NaN,
6097
+ description: `error`,
6098
+ schema: microsoft_graph_ODataErrors_ODataError
6099
+ },
6100
+ {
6101
+ status: NaN,
6102
+ description: `error`,
6103
+ schema: microsoft_graph_ODataErrors_ODataError
6104
+ }
6105
+ ]
6106
+ },
6026
6107
  {
6027
6108
  method: "get",
6028
6109
  path: "/me/joinedTeams",
@@ -6233,7 +6314,7 @@ or their delegates can book a private meeting room. If you're organizing an
6233
6314
  method: "get",
6234
6315
  path: "/me/messages",
6235
6316
  alias: "list-mail-messages",
6236
- description: `Get the messages in the signed-in user's mailbox (including the Deleted Items and Clutter folders). Depending on the page size and mailbox data, getting messages from a mailbox can incur multiple requests. The default page size is 10 messages. Use $top to customize the page size, within the range of 1 and 1000. To improve the operation response time, use $select to specify the exact properties you need; see example 1 below. Fine-tune the values for $select and $top, especially when you must use a larger page size, as returning a page with hundreds of messages each with a full response payload may trigger the gateway timeout (HTTP 504). To get the next page of messages, simply apply the entire URL returned in @odata.nextLink to the next get-messages request. This URL includes any query parameters you may have specified in the initial request. Do not try to extract the $skip value from the @odata.nextLink URL to manipulate responses. This API uses the $skip value to keep count of all the items it has gone through in the user's mailbox to return a page of message-type items. It's therefore possible that even in the initial response, the $skip value is larger than the page size. For more information, see Paging Microsoft Graph data in your app. Currently, this operation returns message bodies in only HTML format. There are two scenarios where an app can get messages in another user's mail folder:`,
6317
+ description: `Get an open extension (openTypeExtension object) identified by name or fully qualified name. The table in the Permissions section lists the resources that support open extensions. The following table lists the three scenarios where you can get an open extension from a supported resource instance.`,
6237
6318
  requestFormat: "json",
6238
6319
  parameters: [
6239
6320
  {
@@ -6422,13 +6503,7 @@ or their delegates can book a private meeting room. If you're organizing an
6422
6503
  method: "get",
6423
6504
  path: "/me/messages/:messageId",
6424
6505
  alias: "get-mail-message",
6425
- description: `You can get a single resource instance expanded with a specific extended property, or a collection of resource instances
6426
- that include extended properties matching a filter. Using the query parameter $expand allows you to get the specified resource instance expanded with a specific extended
6427
- property. Use a $filter and eq operator on the id property to specify the extended property. This is currently the only way to get the singleValueLegacyExtendedProperty object that represents an extended property. To get resource instances that have certain extended properties, use the $filter query parameter and apply an eq operator
6428
- on the id property. In addition, for numeric extended properties, apply one of the following operators on the value property:
6429
- eq, ne,ge, gt, le, or lt. For string-typed extended properties, apply a contains, startswith, eq, or ne operator on value. The filter is applied to all instances of the resource in the signed-in user's mailbox. Filtering the string name (Name) in the id of an extended property is case-sensitive. Filtering the value property of an extended
6430
- property is case-insensitive. The following user resources are supported: As well as the following group resources: See Extended properties overview for more information about when to use
6431
- open extensions or extended properties, and how to specify extended properties.`,
6506
+ description: `Get the properties and relationships of the eventMessage object. Apply the $expand parameter on the event navigation property to get the associated event in an attendee's calendar. Currently, this operation returns event message bodies in only HTML format.`,
6432
6507
  requestFormat: "json",
6433
6508
  parameters: [
6434
6509
  {
@@ -8074,8 +8149,8 @@ A site resource represents a team site in SharePoint.`,
8074
8149
  webUrl: z.string().describe(
8075
8150
  "URL that either displays the resource in the browser (for Office file formats), or is a direct link to the file (for other formats). Read-only."
8076
8151
  ).nullish(),
8077
- createdByUser: microsoft_graph_user.describe("[Note: Simplified from 132 properties to 25 most common ones]").optional(),
8078
- lastModifiedByUser: microsoft_graph_user.describe("[Note: Simplified from 132 properties to 25 most common ones]").optional(),
8152
+ createdByUser: microsoft_graph_user.describe("[Note: Simplified from 133 properties to 25 most common ones]").optional(),
8153
+ lastModifiedByUser: microsoft_graph_user.describe("[Note: Simplified from 133 properties to 25 most common ones]").optional(),
8079
8154
  isPersonalSite: z.boolean().describe("Identifies whether the site is personal or not. Read-only.").nullish(),
8080
8155
  root: microsoft_graph_root.optional(),
8081
8156
  sharepointIds: microsoft_graph_sharepointIds.optional(),
@@ -8239,8 +8314,8 @@ A site resource represents a team site in SharePoint.`,
8239
8314
  webUrl: z.string().describe(
8240
8315
  "URL that either displays the resource in the browser (for Office file formats), or is a direct link to the file (for other formats). Read-only."
8241
8316
  ).nullish(),
8242
- createdByUser: microsoft_graph_user.describe("[Note: Simplified from 132 properties to 25 most common ones]").optional(),
8243
- lastModifiedByUser: microsoft_graph_user.describe("[Note: Simplified from 132 properties to 25 most common ones]").optional(),
8317
+ createdByUser: microsoft_graph_user.describe("[Note: Simplified from 133 properties to 25 most common ones]").optional(),
8318
+ lastModifiedByUser: microsoft_graph_user.describe("[Note: Simplified from 133 properties to 25 most common ones]").optional(),
8244
8319
  isPersonalSite: z.boolean().describe("Identifies whether the site is personal or not. Read-only.").nullish(),
8245
8320
  root: microsoft_graph_root.optional(),
8246
8321
  sharepointIds: microsoft_graph_sharepointIds.optional(),
@@ -8712,7 +8787,7 @@ To monitor future changes, call the delta API by using the @odata.deltaLink in t
8712
8787
  "List of channels either hosted in or shared with the team (incoming channels)."
8713
8788
  ).optional(),
8714
8789
  channels: z.array(microsoft_graph_channel).describe("The collection of channels and messages associated with the team.").optional(),
8715
- group: microsoft_graph_group.describe("[Note: Simplified from 70 properties to 25 most common ones]").optional(),
8790
+ group: microsoft_graph_group.describe("[Note: Simplified from 71 properties to 25 most common ones]").optional(),
8716
8791
  incomingChannels: z.array(microsoft_graph_channel).describe("List of channels shared with the team.").optional(),
8717
8792
  installedApps: z.array(microsoft_graph_teamsAppInstallation).describe("The apps installed in this team.").optional(),
8718
8793
  members: z.array(microsoft_graph_conversationMember).describe("Members and owners of the team.").optional(),
@@ -9044,7 +9119,7 @@ To monitor future changes, call the delta API by using the @odata.deltaLink in t
9044
9119
  method: "get",
9045
9120
  path: "/users",
9046
9121
  alias: "list-users",
9047
- description: `List properties and relationships of the user objects.`,
9122
+ description: `Retrieve a list of user objects.`,
9048
9123
  requestFormat: "json",
9049
9124
  parameters: [
9050
9125
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@softeria/ms-365-mcp-server",
3
- "version": "0.21.0",
3
+ "version": "0.22.0",
4
4
  "description": " A Model Context Protocol (MCP) server for interacting with Microsoft 365 and Office services through the Graph API",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -173,6 +173,12 @@
173
173
  "toolName": "list-calendars",
174
174
  "scopes": ["Calendars.Read"]
175
175
  },
176
+ {
177
+ "pathPattern": "/me/findMeetingTimes",
178
+ "method": "post",
179
+ "toolName": "find-meeting-times",
180
+ "workScopes": ["Calendars.Read.Shared"]
181
+ },
176
182
  {
177
183
  "pathPattern": "/me/drives",
178
184
  "method": "get",
@@ -198,7 +204,7 @@
198
204
  "scopes": ["Files.Read"]
199
205
  },
200
206
  {
201
- "pathPattern": "/drives/{drive-id}/items/{driveItem-id}/children/{driveItem-id1}/content",
207
+ "pathPattern": "/drives/{drive-id}/items/{driveItem-id}/content",
202
208
  "method": "get",
203
209
  "toolName": "download-onedrive-file-content",
204
210
  "scopes": ["Files.Read"]