@softeria/ms-365-mcp-server 0.49.0 → 0.51.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.
@@ -236,6 +236,27 @@
236
236
  "scopes": ["Calendars.ReadWrite"],
237
237
  "llmTip": "Deleting a seriesMaster deletes ALL occurrences of the recurring event. To cancel a single occurrence, delete that specific instance ID from list-calendar-event-instances."
238
238
  },
239
+ {
240
+ "pathPattern": "/me/events/{event-id}/accept",
241
+ "method": "post",
242
+ "toolName": "accept-calendar-event",
243
+ "scopes": ["Calendars.ReadWrite"],
244
+ "llmTip": "Accepts a meeting invitation. Optional body: { sendResponse: true, comment: 'I will attend.' }. Set sendResponse to false to accept silently without notifying the organizer."
245
+ },
246
+ {
247
+ "pathPattern": "/me/events/{event-id}/decline",
248
+ "method": "post",
249
+ "toolName": "decline-calendar-event",
250
+ "scopes": ["Calendars.ReadWrite"],
251
+ "llmTip": "Declines a meeting invitation. Optional body: { sendResponse: true, comment: 'Cannot attend, conflict.' }. The event remains in the calendar as declined unless the user deletes it."
252
+ },
253
+ {
254
+ "pathPattern": "/me/events/{event-id}/tentativelyAccept",
255
+ "method": "post",
256
+ "toolName": "tentatively-accept-calendar-event",
257
+ "scopes": ["Calendars.ReadWrite"],
258
+ "llmTip": "Tentatively accepts a meeting invitation. Optional body: { sendResponse: true, comment: 'I might be able to attend.' }. Use proposedNewTime to suggest an alternative: { proposedNewTime: { start: { dateTime, timeZone }, end: { dateTime, timeZone } } }."
259
+ },
239
260
  {
240
261
  "pathPattern": "/me/calendars/{calendar-id}/events",
241
262
  "method": "get",
@@ -754,6 +775,27 @@
754
775
  "workScopes": ["Sites.Read.All"],
755
776
  "llmTip": "Add $expand=fields to include actual column values. Without it, only metadata is returned."
756
777
  },
778
+ {
779
+ "pathPattern": "/sites/{site-id}/lists/{list-id}/items",
780
+ "method": "post",
781
+ "toolName": "create-sharepoint-list-item",
782
+ "workScopes": ["Sites.ReadWrite.All"],
783
+ "llmTip": "Creates a new item in a SharePoint list. Body: { fields: { Title: 'Item name', ColumnName: 'value', ... } }. Use list-sharepoint-site-lists to find the list ID and get-sharepoint-site-list to discover available columns."
784
+ },
785
+ {
786
+ "pathPattern": "/sites/{site-id}/lists/{list-id}/items/{listItem-id}",
787
+ "method": "patch",
788
+ "toolName": "update-sharepoint-list-item",
789
+ "workScopes": ["Sites.ReadWrite.All"],
790
+ "llmTip": "Updates fields on an existing list item. Body: { fields: { ColumnName: 'new value' } }. Send only the fields you want to change. Use $expand=fields on get-sharepoint-site-list-item to see current values first."
791
+ },
792
+ {
793
+ "pathPattern": "/sites/{site-id}/lists/{list-id}/items/{listItem-id}",
794
+ "method": "delete",
795
+ "toolName": "delete-sharepoint-list-item",
796
+ "workScopes": ["Sites.ReadWrite.All"],
797
+ "llmTip": "Deletes a list item permanently. This cannot be undone — the item is moved to the site recycle bin."
798
+ },
757
799
  {
758
800
  "pathPattern": "/sites/{site-id}/getByPath(path='{path}')",
759
801
  "method": "get",
@@ -2103,6 +2103,12 @@ const microsoft_graph_driveCollectionResponse = z.object({
2103
2103
  "@odata.nextLink": z.string().nullable(),
2104
2104
  value: z.array(microsoft_graph_drive)
2105
2105
  }).partial().passthrough();
2106
+ const accept_calendar_event_Body = z.object({ SendResponse: z.boolean().nullable().default(false), Comment: z.string().nullable() }).partial().passthrough();
2107
+ const decline_calendar_event_Body = z.object({
2108
+ ProposedNewTime: z.union([microsoft_graph_timeSlot, z.object({}).partial().passthrough()]),
2109
+ SendResponse: z.boolean().nullable().default(false),
2110
+ Comment: z.string().nullable()
2111
+ }).partial().passthrough();
2106
2112
  const microsoft_graph_giphyRatingType = z.enum(["strict", "moderate", "unknownFutureValue"]);
2107
2113
  const microsoft_graph_teamFunSettings = z.object({
2108
2114
  allowCustomMemes: z.boolean().describe("If set to true, enables users to include custom memes.").nullish(),
@@ -3834,6 +3840,8 @@ const schemas = {
3834
3840
  microsoft_graph_list,
3835
3841
  microsoft_graph_drive,
3836
3842
  microsoft_graph_driveCollectionResponse,
3843
+ accept_calendar_event_Body,
3844
+ decline_calendar_event_Body,
3837
3845
  microsoft_graph_giphyRatingType,
3838
3846
  microsoft_graph_teamFunSettings,
3839
3847
  microsoft_graph_teamGuestSettings,
@@ -5575,6 +5583,54 @@ open extensions or extended properties, and how to specify extended properties.`
5575
5583
  ],
5576
5584
  response: z.void()
5577
5585
  },
5586
+ {
5587
+ method: "post",
5588
+ path: "/me/events/:eventId/accept",
5589
+ alias: "accept-calendar-event",
5590
+ description: `Accept the specified event in a user calendar.`,
5591
+ requestFormat: "json",
5592
+ parameters: [
5593
+ {
5594
+ name: "body",
5595
+ description: `Action parameters`,
5596
+ type: "Body",
5597
+ schema: accept_calendar_event_Body
5598
+ }
5599
+ ],
5600
+ response: z.void()
5601
+ },
5602
+ {
5603
+ method: "post",
5604
+ path: "/me/events/:eventId/decline",
5605
+ alias: "decline-calendar-event",
5606
+ description: `Decline invitation to the specified event in a user calendar. If the event allows proposals for new times, on declining the event, an invitee can choose to suggest an alternative time by including the proposedNewTime parameter. For more information on how to propose a time, and how to receive and accept a new time proposal, see Propose new meeting times.`,
5607
+ requestFormat: "json",
5608
+ parameters: [
5609
+ {
5610
+ name: "body",
5611
+ description: `Action parameters`,
5612
+ type: "Body",
5613
+ schema: decline_calendar_event_Body
5614
+ }
5615
+ ],
5616
+ response: z.void()
5617
+ },
5618
+ {
5619
+ method: "post",
5620
+ path: "/me/events/:eventId/tentativelyAccept",
5621
+ alias: "tentatively-accept-calendar-event",
5622
+ description: `Tentatively accept the specified event in a user calendar. If the event allows proposals for new times, on responding tentative to the event, an invitee can choose to suggest an alternative time by including the proposedNewTime parameter. For more information on how to propose a time, and how to receive and accept a new time proposal, see Propose new meeting times.`,
5623
+ requestFormat: "json",
5624
+ parameters: [
5625
+ {
5626
+ name: "body",
5627
+ description: `Action parameters`,
5628
+ type: "Body",
5629
+ schema: decline_calendar_event_Body
5630
+ }
5631
+ ],
5632
+ response: z.void()
5633
+ },
5578
5634
  {
5579
5635
  method: "post",
5580
5636
  path: "/me/findMeetingTimes",
@@ -7710,6 +7766,22 @@ To list them, include system in your $select statement.`,
7710
7766
  ],
7711
7767
  response: z.void()
7712
7768
  },
7769
+ {
7770
+ method: "post",
7771
+ path: "/sites/:siteId/lists/:listId/items",
7772
+ alias: "create-sharepoint-list-item",
7773
+ description: `Create a new listItem in a list.`,
7774
+ requestFormat: "json",
7775
+ parameters: [
7776
+ {
7777
+ name: "body",
7778
+ description: `New navigation property`,
7779
+ type: "Body",
7780
+ schema: microsoft_graph_listItem
7781
+ }
7782
+ ],
7783
+ response: z.void()
7784
+ },
7713
7785
  {
7714
7786
  method: "get",
7715
7787
  path: "/sites/:siteId/lists/:listId/items/:listItemId",
@@ -7730,6 +7802,37 @@ To list them, include system in your $select statement.`,
7730
7802
  ],
7731
7803
  response: z.void()
7732
7804
  },
7805
+ {
7806
+ method: "patch",
7807
+ path: "/sites/:siteId/lists/:listId/items/:listItemId",
7808
+ alias: "update-sharepoint-list-item",
7809
+ description: `Update the navigation property items in sites`,
7810
+ requestFormat: "json",
7811
+ parameters: [
7812
+ {
7813
+ name: "body",
7814
+ description: `New navigation property values`,
7815
+ type: "Body",
7816
+ schema: microsoft_graph_listItem
7817
+ }
7818
+ ],
7819
+ response: z.void()
7820
+ },
7821
+ {
7822
+ method: "delete",
7823
+ path: "/sites/:siteId/lists/:listId/items/:listItemId",
7824
+ alias: "delete-sharepoint-list-item",
7825
+ description: `Removes an item from a list.`,
7826
+ requestFormat: "json",
7827
+ parameters: [
7828
+ {
7829
+ name: "If-Match",
7830
+ type: "Header",
7831
+ schema: z.string().describe("ETag").optional()
7832
+ }
7833
+ ],
7834
+ response: z.void()
7835
+ },
7733
7836
  {
7734
7837
  method: "get",
7735
7838
  path: "/sites/delta()",
@@ -1,10 +1,10 @@
1
- 2026-03-31 08:27:22 INFO: [GRAPH CLIENT] Final URL being sent to Microsoft: https://graph.microsoft.com/v1.0/me
2
- 2026-03-31 08:27:22 INFO: [GRAPH CLIENT] Final URL being sent to Microsoft: https://graph.microsoft.com/v1.0/me
3
- 2026-03-31 08:27:22 INFO: [GRAPH CLIENT] Final URL being sent to Microsoft: https://graph.microsoft.com/v1.0/me
4
- 2026-03-31 08:27:22 INFO: [GRAPH CLIENT] Final URL being sent to Microsoft: https://graph.microsoft.com/v1.0/me/messages
5
- 2026-03-31 08:27:22 INFO: [GRAPH CLIENT] Final URL being sent to Microsoft: https://graph.microsoft.com/v1.0/me/calendar
6
- 2026-03-31 08:27:23 INFO: Using environment variables for secrets
7
- 2026-03-31 08:27:23 INFO: Using environment variables for secrets
8
- 2026-03-31 08:27:23 INFO: Using environment variables for secrets
9
- 2026-03-31 08:27:23 INFO: Using environment variables for secrets
10
- 2026-03-31 08:27:23 INFO: Using environment variables for secrets
1
+ 2026-03-31 08:32:57 INFO: [GRAPH CLIENT] Final URL being sent to Microsoft: https://graph.microsoft.com/v1.0/me
2
+ 2026-03-31 08:32:57 INFO: [GRAPH CLIENT] Final URL being sent to Microsoft: https://graph.microsoft.com/v1.0/me
3
+ 2026-03-31 08:32:57 INFO: [GRAPH CLIENT] Final URL being sent to Microsoft: https://graph.microsoft.com/v1.0/me
4
+ 2026-03-31 08:32:57 INFO: [GRAPH CLIENT] Final URL being sent to Microsoft: https://graph.microsoft.com/v1.0/me/messages
5
+ 2026-03-31 08:32:57 INFO: [GRAPH CLIENT] Final URL being sent to Microsoft: https://graph.microsoft.com/v1.0/me/calendar
6
+ 2026-03-31 08:32:59 INFO: Using environment variables for secrets
7
+ 2026-03-31 08:32:59 INFO: Using environment variables for secrets
8
+ 2026-03-31 08:32:59 INFO: Using environment variables for secrets
9
+ 2026-03-31 08:32:59 INFO: Using environment variables for secrets
10
+ 2026-03-31 08:32:59 INFO: Using environment variables for secrets
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@softeria/ms-365-mcp-server",
3
- "version": "0.49.0",
3
+ "version": "0.51.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",
@@ -236,6 +236,27 @@
236
236
  "scopes": ["Calendars.ReadWrite"],
237
237
  "llmTip": "Deleting a seriesMaster deletes ALL occurrences of the recurring event. To cancel a single occurrence, delete that specific instance ID from list-calendar-event-instances."
238
238
  },
239
+ {
240
+ "pathPattern": "/me/events/{event-id}/accept",
241
+ "method": "post",
242
+ "toolName": "accept-calendar-event",
243
+ "scopes": ["Calendars.ReadWrite"],
244
+ "llmTip": "Accepts a meeting invitation. Optional body: { sendResponse: true, comment: 'I will attend.' }. Set sendResponse to false to accept silently without notifying the organizer."
245
+ },
246
+ {
247
+ "pathPattern": "/me/events/{event-id}/decline",
248
+ "method": "post",
249
+ "toolName": "decline-calendar-event",
250
+ "scopes": ["Calendars.ReadWrite"],
251
+ "llmTip": "Declines a meeting invitation. Optional body: { sendResponse: true, comment: 'Cannot attend, conflict.' }. The event remains in the calendar as declined unless the user deletes it."
252
+ },
253
+ {
254
+ "pathPattern": "/me/events/{event-id}/tentativelyAccept",
255
+ "method": "post",
256
+ "toolName": "tentatively-accept-calendar-event",
257
+ "scopes": ["Calendars.ReadWrite"],
258
+ "llmTip": "Tentatively accepts a meeting invitation. Optional body: { sendResponse: true, comment: 'I might be able to attend.' }. Use proposedNewTime to suggest an alternative: { proposedNewTime: { start: { dateTime, timeZone }, end: { dateTime, timeZone } } }."
259
+ },
239
260
  {
240
261
  "pathPattern": "/me/calendars/{calendar-id}/events",
241
262
  "method": "get",
@@ -754,6 +775,27 @@
754
775
  "workScopes": ["Sites.Read.All"],
755
776
  "llmTip": "Add $expand=fields to include actual column values. Without it, only metadata is returned."
756
777
  },
778
+ {
779
+ "pathPattern": "/sites/{site-id}/lists/{list-id}/items",
780
+ "method": "post",
781
+ "toolName": "create-sharepoint-list-item",
782
+ "workScopes": ["Sites.ReadWrite.All"],
783
+ "llmTip": "Creates a new item in a SharePoint list. Body: { fields: { Title: 'Item name', ColumnName: 'value', ... } }. Use list-sharepoint-site-lists to find the list ID and get-sharepoint-site-list to discover available columns."
784
+ },
785
+ {
786
+ "pathPattern": "/sites/{site-id}/lists/{list-id}/items/{listItem-id}",
787
+ "method": "patch",
788
+ "toolName": "update-sharepoint-list-item",
789
+ "workScopes": ["Sites.ReadWrite.All"],
790
+ "llmTip": "Updates fields on an existing list item. Body: { fields: { ColumnName: 'new value' } }. Send only the fields you want to change. Use $expand=fields on get-sharepoint-site-list-item to see current values first."
791
+ },
792
+ {
793
+ "pathPattern": "/sites/{site-id}/lists/{list-id}/items/{listItem-id}",
794
+ "method": "delete",
795
+ "toolName": "delete-sharepoint-list-item",
796
+ "workScopes": ["Sites.ReadWrite.All"],
797
+ "llmTip": "Deletes a list item permanently. This cannot be undone — the item is moved to the site recycle bin."
798
+ },
757
799
  {
758
800
  "pathPattern": "/sites/{site-id}/getByPath(path='{path}')",
759
801
  "method": "get",