@softeria/ms-365-mcp-server 0.81.0 → 0.82.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.
@@ -1449,5 +1449,47 @@
1449
1449
  "toolName": "list-trending-insights",
1450
1450
  "workScopes": ["Sites.Read.All"],
1451
1451
  "llmTip": "Lists documents trending around the current user. Each item has resourceVisualization (title, type, previewImageUrl, containerDisplayName), resourceReference (webUrl, id, type), and weight (relevance score). Use $filter=resourceVisualization/type eq 'PowerPoint' to filter by file type. Use $orderby=weight/value desc to sort by relevance."
1452
+ },
1453
+ {
1454
+ "pathPattern": "/me/events/{event-id}/cancel",
1455
+ "method": "post",
1456
+ "toolName": "cancel-calendar-event",
1457
+ "scopes": ["Calendars.ReadWrite"],
1458
+ "llmTip": "Cancels a meeting (organizer only) and sends a cancellation message to all attendees. Body: { Comment (optional string, custom message) }. Use this instead of delete-calendar-event when you want attendees to see 'Canceled' in their calendar. Attendees calling this get HTTP 400 — they should use decline-calendar-event instead."
1459
+ },
1460
+ {
1461
+ "pathPattern": "/me/events/{event-id}/forward",
1462
+ "method": "post",
1463
+ "toolName": "forward-calendar-event",
1464
+ "scopes": ["Calendars.ReadWrite"],
1465
+ "llmTip": "Forwards a meeting invitation to additional recipients. Body: { ToRecipients: [{ emailAddress: { address, name } }], Comment (optional) }. If the forwarder is an attendee (not organizer), the organizer is also notified and the new recipient is added to the organizer's attendee list."
1466
+ },
1467
+ {
1468
+ "pathPattern": "/me/events/{event-id}/snoozeReminder",
1469
+ "method": "post",
1470
+ "toolName": "snooze-calendar-event-reminder",
1471
+ "scopes": ["Calendars.ReadWrite"],
1472
+ "llmTip": "Postpones a triggered event reminder. Body: { NewReminderTime: { dateTime (ISO 8601), timeZone (IANA or Windows, e.g. 'Pacific Standard Time') } }. The reminder will re-fire at the new time."
1473
+ },
1474
+ {
1475
+ "pathPattern": "/me/events/{event-id}/dismissReminder",
1476
+ "method": "post",
1477
+ "toolName": "dismiss-calendar-event-reminder",
1478
+ "scopes": ["Calendars.ReadWrite"],
1479
+ "llmTip": "Dismisses a triggered event reminder so it won't re-fire. No request body required. Pair with list-calendar-events or get-schedule to find active reminders."
1480
+ },
1481
+ {
1482
+ "pathPattern": "/me/events/delta()",
1483
+ "method": "get",
1484
+ "toolName": "list-calendar-events-delta",
1485
+ "scopes": ["Calendars.Read"],
1486
+ "llmTip": "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."
1487
+ },
1488
+ {
1489
+ "pathPattern": "/me/calendarView/delta()",
1490
+ "method": "get",
1491
+ "toolName": "list-calendar-view-delta",
1492
+ "scopes": ["Calendars.Read"],
1493
+ "llmTip": "Incremental sync of events within a time window. Required query params on first call: startDateTime, endDateTime (ISO 8601). Returns events in the window plus @odata.deltaLink; subsequent calls with that link return only changes. Expands recurring events to individual occurrences (unlike list-calendar-events-delta which returns the series master). Use this for calendar UIs showing a week/month view."
1452
1494
  }
1453
1495
  ]
@@ -2455,6 +2455,8 @@ const decline_calendar_event_Body = z.object({
2455
2455
  SendResponse: z.boolean().nullable().default(false),
2456
2456
  Comment: z.string().nullable()
2457
2457
  }).partial().passthrough();
2458
+ const forward_calendar_event_Body = z.object({ ToRecipients: z.array(microsoft_graph_recipient), Comment: z.string().nullable() }).partial().passthrough();
2459
+ const snooze_calendar_event_reminder_Body = z.object({ NewReminderTime: microsoft_graph_dateTimeTimeZone }).partial().passthrough();
2458
2460
  const microsoft_graph_resourceReference = z.object({
2459
2461
  id: z.string().describe("The item's unique identifier.").nullish(),
2460
2462
  type: z.string().describe(
@@ -4548,6 +4550,8 @@ const schemas = {
4548
4550
  microsoft_graph_driveCollectionResponse,
4549
4551
  accept_calendar_event_Body,
4550
4552
  decline_calendar_event_Body,
4553
+ forward_calendar_event_Body,
4554
+ snooze_calendar_event_reminder_Body,
4551
4555
  microsoft_graph_resourceReference,
4552
4556
  microsoft_graph_resourceVisualization,
4553
4557
  microsoft_graph_entity,
@@ -6740,6 +6744,70 @@ or from some other calendar of the user.`,
6740
6744
  ],
6741
6745
  response: z.void()
6742
6746
  },
6747
+ {
6748
+ method: "get",
6749
+ path: "/me/calendarView/delta()",
6750
+ alias: "list-calendar-view-delta",
6751
+ 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.`,
6752
+ requestFormat: "json",
6753
+ parameters: [
6754
+ {
6755
+ name: "startDateTime",
6756
+ type: "Query",
6757
+ schema: z.string().describe(
6758
+ "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"
6759
+ )
6760
+ },
6761
+ {
6762
+ name: "endDateTime",
6763
+ type: "Query",
6764
+ schema: z.string().describe(
6765
+ "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"
6766
+ )
6767
+ },
6768
+ {
6769
+ name: "$top",
6770
+ type: "Query",
6771
+ schema: z.number().int().gte(0).describe("Show only the first n items").optional()
6772
+ },
6773
+ {
6774
+ name: "$skip",
6775
+ type: "Query",
6776
+ schema: z.number().int().gte(0).describe("Skip the first n items").optional()
6777
+ },
6778
+ {
6779
+ name: "$search",
6780
+ type: "Query",
6781
+ schema: z.string().describe("Search items by search phrases").optional()
6782
+ },
6783
+ {
6784
+ name: "$filter",
6785
+ type: "Query",
6786
+ schema: z.string().describe("Filter items by property values").optional()
6787
+ },
6788
+ {
6789
+ name: "$count",
6790
+ type: "Query",
6791
+ schema: z.boolean().describe("Include count of items").optional()
6792
+ },
6793
+ {
6794
+ name: "$select",
6795
+ type: "Query",
6796
+ schema: z.array(z.string()).describe("Select properties to be returned").optional()
6797
+ },
6798
+ {
6799
+ name: "$orderby",
6800
+ type: "Query",
6801
+ schema: z.array(z.string()).describe("Order items by property values").optional()
6802
+ },
6803
+ {
6804
+ name: "$expand",
6805
+ type: "Query",
6806
+ schema: z.array(z.string()).describe("Expand related entities").optional()
6807
+ }
6808
+ ],
6809
+ response: z.void()
6810
+ },
6743
6811
  {
6744
6812
  method: "get",
6745
6813
  path: "/me/chats",
@@ -7346,6 +7414,25 @@ open extensions or extended properties, and how to specify extended properties.`
7346
7414
  ],
7347
7415
  response: z.void()
7348
7416
  },
7417
+ {
7418
+ method: "post",
7419
+ path: "/me/events/:eventId/cancel",
7420
+ alias: "cancel-calendar-event",
7421
+ description: `This action allows the organizer of a meeting to send a cancellation message and cancel the event. The action moves the event to the Deleted Items folder. The organizer can also cancel an occurrence of a recurring meeting
7422
+ by providing the occurrence event ID. An attendee calling this action gets an error (HTTP 400 Bad Request), with the following
7423
+ error message: 'Your request can't be completed. You need to be an organizer to cancel a meeting.' This action differs from Delete in that Cancel is available to only the organizer, and lets
7424
+ the organizer send a custom message to the attendees about the cancellation.`,
7425
+ requestFormat: "json",
7426
+ parameters: [
7427
+ {
7428
+ name: "body",
7429
+ description: `Action parameters`,
7430
+ type: "Body",
7431
+ schema: z.object({ Comment: z.string().nullable() }).partial().passthrough()
7432
+ }
7433
+ ],
7434
+ response: z.void()
7435
+ },
7349
7436
  {
7350
7437
  method: "post",
7351
7438
  path: "/me/events/:eventId/decline",
@@ -7362,6 +7449,49 @@ open extensions or extended properties, and how to specify extended properties.`
7362
7449
  ],
7363
7450
  response: z.void()
7364
7451
  },
7452
+ {
7453
+ method: "post",
7454
+ path: "/me/events/:eventId/dismissReminder",
7455
+ alias: "dismiss-calendar-event-reminder",
7456
+ description: `Dismiss a reminder that has been triggered for an event in a user calendar.`,
7457
+ requestFormat: "json",
7458
+ response: z.void()
7459
+ },
7460
+ {
7461
+ method: "post",
7462
+ path: "/me/events/:eventId/forward",
7463
+ alias: "forward-calendar-event",
7464
+ description: `This action allows the organizer or attendee of a meeting event to forward the
7465
+ meeting request to a new recipient. If the meeting event is forwarded from an attendee's Microsoft 365 mailbox to another recipient, this action
7466
+ also sends a message to notify the organizer of the forwarding, and adds the recipient to the organizer's
7467
+ copy of the meeting event. This convenience is not available when forwarding from an Outlook.com account.`,
7468
+ requestFormat: "json",
7469
+ parameters: [
7470
+ {
7471
+ name: "body",
7472
+ description: `Action parameters`,
7473
+ type: "Body",
7474
+ schema: forward_calendar_event_Body
7475
+ }
7476
+ ],
7477
+ response: z.void()
7478
+ },
7479
+ {
7480
+ method: "post",
7481
+ path: "/me/events/:eventId/snoozeReminder",
7482
+ alias: "snooze-calendar-event-reminder",
7483
+ description: `Postpone a reminder for an event in a user calendar until a new time.`,
7484
+ requestFormat: "json",
7485
+ parameters: [
7486
+ {
7487
+ name: "body",
7488
+ description: `Action parameters`,
7489
+ type: "Body",
7490
+ schema: snooze_calendar_event_reminder_Body
7491
+ }
7492
+ ],
7493
+ response: z.void()
7494
+ },
7365
7495
  {
7366
7496
  method: "post",
7367
7497
  path: "/me/events/:eventId/tentativelyAccept",
@@ -7378,6 +7508,70 @@ open extensions or extended properties, and how to specify extended properties.`
7378
7508
  ],
7379
7509
  response: z.void()
7380
7510
  },
7511
+ {
7512
+ method: "get",
7513
+ path: "/me/events/delta()",
7514
+ alias: "list-calendar-events-delta",
7515
+ 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.`,
7516
+ requestFormat: "json",
7517
+ parameters: [
7518
+ {
7519
+ name: "startDateTime",
7520
+ type: "Query",
7521
+ schema: z.string().describe(
7522
+ "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"
7523
+ )
7524
+ },
7525
+ {
7526
+ name: "endDateTime",
7527
+ type: "Query",
7528
+ schema: z.string().describe(
7529
+ "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"
7530
+ )
7531
+ },
7532
+ {
7533
+ name: "$top",
7534
+ type: "Query",
7535
+ schema: z.number().int().gte(0).describe("Show only the first n items").optional()
7536
+ },
7537
+ {
7538
+ name: "$skip",
7539
+ type: "Query",
7540
+ schema: z.number().int().gte(0).describe("Skip the first n items").optional()
7541
+ },
7542
+ {
7543
+ name: "$search",
7544
+ type: "Query",
7545
+ schema: z.string().describe("Search items by search phrases").optional()
7546
+ },
7547
+ {
7548
+ name: "$filter",
7549
+ type: "Query",
7550
+ schema: z.string().describe("Filter items by property values").optional()
7551
+ },
7552
+ {
7553
+ name: "$count",
7554
+ type: "Query",
7555
+ schema: z.boolean().describe("Include count of items").optional()
7556
+ },
7557
+ {
7558
+ name: "$select",
7559
+ type: "Query",
7560
+ schema: z.array(z.string()).describe("Select properties to be returned").optional()
7561
+ },
7562
+ {
7563
+ name: "$orderby",
7564
+ type: "Query",
7565
+ schema: z.array(z.string()).describe("Order items by property values").optional()
7566
+ },
7567
+ {
7568
+ name: "$expand",
7569
+ type: "Query",
7570
+ schema: z.array(z.string()).describe("Expand related entities").optional()
7571
+ }
7572
+ ],
7573
+ response: z.void()
7574
+ },
7381
7575
  {
7382
7576
  method: "post",
7383
7577
  path: "/me/findMeetingTimes",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@softeria/ms-365-mcp-server",
3
- "version": "0.81.0",
3
+ "version": "0.82.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",
@@ -1449,5 +1449,47 @@
1449
1449
  "toolName": "list-trending-insights",
1450
1450
  "workScopes": ["Sites.Read.All"],
1451
1451
  "llmTip": "Lists documents trending around the current user. Each item has resourceVisualization (title, type, previewImageUrl, containerDisplayName), resourceReference (webUrl, id, type), and weight (relevance score). Use $filter=resourceVisualization/type eq 'PowerPoint' to filter by file type. Use $orderby=weight/value desc to sort by relevance."
1452
+ },
1453
+ {
1454
+ "pathPattern": "/me/events/{event-id}/cancel",
1455
+ "method": "post",
1456
+ "toolName": "cancel-calendar-event",
1457
+ "scopes": ["Calendars.ReadWrite"],
1458
+ "llmTip": "Cancels a meeting (organizer only) and sends a cancellation message to all attendees. Body: { Comment (optional string, custom message) }. Use this instead of delete-calendar-event when you want attendees to see 'Canceled' in their calendar. Attendees calling this get HTTP 400 — they should use decline-calendar-event instead."
1459
+ },
1460
+ {
1461
+ "pathPattern": "/me/events/{event-id}/forward",
1462
+ "method": "post",
1463
+ "toolName": "forward-calendar-event",
1464
+ "scopes": ["Calendars.ReadWrite"],
1465
+ "llmTip": "Forwards a meeting invitation to additional recipients. Body: { ToRecipients: [{ emailAddress: { address, name } }], Comment (optional) }. If the forwarder is an attendee (not organizer), the organizer is also notified and the new recipient is added to the organizer's attendee list."
1466
+ },
1467
+ {
1468
+ "pathPattern": "/me/events/{event-id}/snoozeReminder",
1469
+ "method": "post",
1470
+ "toolName": "snooze-calendar-event-reminder",
1471
+ "scopes": ["Calendars.ReadWrite"],
1472
+ "llmTip": "Postpones a triggered event reminder. Body: { NewReminderTime: { dateTime (ISO 8601), timeZone (IANA or Windows, e.g. 'Pacific Standard Time') } }. The reminder will re-fire at the new time."
1473
+ },
1474
+ {
1475
+ "pathPattern": "/me/events/{event-id}/dismissReminder",
1476
+ "method": "post",
1477
+ "toolName": "dismiss-calendar-event-reminder",
1478
+ "scopes": ["Calendars.ReadWrite"],
1479
+ "llmTip": "Dismisses a triggered event reminder so it won't re-fire. No request body required. Pair with list-calendar-events or get-schedule to find active reminders."
1480
+ },
1481
+ {
1482
+ "pathPattern": "/me/events/delta()",
1483
+ "method": "get",
1484
+ "toolName": "list-calendar-events-delta",
1485
+ "scopes": ["Calendars.Read"],
1486
+ "llmTip": "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."
1487
+ },
1488
+ {
1489
+ "pathPattern": "/me/calendarView/delta()",
1490
+ "method": "get",
1491
+ "toolName": "list-calendar-view-delta",
1492
+ "scopes": ["Calendars.Read"],
1493
+ "llmTip": "Incremental sync of events within a time window. Required query params on first call: startDateTime, endDateTime (ISO 8601). Returns events in the window plus @odata.deltaLink; subsequent calls with that link return only changes. Expands recurring events to individual occurrences (unlike list-calendar-events-delta which returns the series master). Use this for calendar UIs showing a week/month view."
1452
1494
  }
1453
1495
  ]