@softeria/ms-365-mcp-server 0.139.2 → 0.141.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.
package/README.md CHANGED
@@ -201,7 +201,9 @@ account features (email, calendar, OneDrive, etc.) are available.
201
201
  To access shared mailboxes, you need:
202
202
 
203
203
  1. **Organization mode**: Shared mailbox tools require `--org-mode` flag (work/school accounts only)
204
- 2. **Delegated permissions**: `Mail.Read.Shared` or `Mail.Send.Shared` scopes
204
+ 2. **Delegated permissions**: `Mail.Read.Shared` to read, `Mail.ReadWrite.Shared` to create, update or move
205
+ messages, `Mail.Send.Shared` to send, reply or forward, and `Calendars.Read.Shared` for the shared calendar
206
+ tools
205
207
  3. **Exchange permissions**: The signed-in user must have been granted access to the shared mailbox
206
208
  4. **Usage**: Use the shared mailbox's email address as the `user-id` parameter in the shared mailbox tools
207
209
 
@@ -124,6 +124,23 @@
124
124
  "presets": ["work"],
125
125
  "workScopes": ["Mail.ReadWrite.Shared"]
126
126
  },
127
+ {
128
+ "pathPattern": "/users/{user-id}/messages/{message-id}/move",
129
+ "method": "post",
130
+ "toolName": "move-shared-mailbox-message",
131
+ "descriptionOverride": "Move a message in another user's mailbox or a shared mailbox to a different folder. The user-id is the mailbox owner's ID or email address, and delegated access to that mailbox is required.",
132
+ "presets": ["work"],
133
+ "workScopes": ["Mail.ReadWrite.Shared"],
134
+ "llmTip": "destinationId accepts folder ID or well-known name (inbox, drafts, sentitems, deleteditems, junkemail, archive)."
135
+ },
136
+ {
137
+ "pathPattern": "/users/{user-id}/messages/{message-id}",
138
+ "method": "patch",
139
+ "toolName": "update-shared-mailbox-message",
140
+ "descriptionOverride": "Update a message in another user's mailbox or a shared mailbox — for example mark it read or unread (isRead), flag it (flag), change its categories or importance, or edit a draft's subject, body, or recipients. The user-id is the mailbox owner's ID or email address, and delegated access to that mailbox is required.",
141
+ "presets": ["work"],
142
+ "workScopes": ["Mail.ReadWrite.Shared"]
143
+ },
127
144
  {
128
145
  "pathPattern": "/users/{user-id}/messages/{message-id}/reply",
129
146
  "method": "post",
@@ -1543,14 +1560,14 @@
1543
1560
  "method": "get",
1544
1561
  "toolName": "list-chats",
1545
1562
  "presets": ["teams", "work"],
1546
- "workScopes": ["Chat.Read"]
1563
+ "workScopes": [["Chat.Read"], ["Chat.ReadBasic"]]
1547
1564
  },
1548
1565
  {
1549
1566
  "pathPattern": "/chats/{chat-id}",
1550
1567
  "method": "get",
1551
1568
  "toolName": "get-chat",
1552
1569
  "presets": ["teams", "work"],
1553
- "workScopes": ["Chat.Read"]
1570
+ "workScopes": [["Chat.Read"], ["Chat.ReadBasic"]]
1554
1571
  },
1555
1572
  {
1556
1573
  "pathPattern": "/chats/{chat-id}/members",
@@ -15188,6 +15188,68 @@ Only the policyViolation property of a chatMessage can be updated in application
15188
15188
  ],
15189
15189
  response: z.void()
15190
15190
  },
15191
+ {
15192
+ method: "patch",
15193
+ path: "/users/:userId/messages/:messageId",
15194
+ alias: "update-shared-mailbox-message",
15195
+ description: `Update a shared mailbox message.`,
15196
+ requestFormat: "json",
15197
+ parameters: [
15198
+ {
15199
+ name: "body",
15200
+ description: `New navigation property values`,
15201
+ type: "Body",
15202
+ schema: z.object({
15203
+ id: z.string().describe("The unique identifier for an entity. Read-only.").optional(),
15204
+ createdDateTime: z.string().regex(
15205
+ /^[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])$/
15206
+ ).datetime({ offset: true }).describe(
15207
+ "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"
15208
+ ).nullish(),
15209
+ lastModifiedDateTime: z.string().regex(
15210
+ /^[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])$/
15211
+ ).datetime({ offset: true }).describe(
15212
+ "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"
15213
+ ).nullish(),
15214
+ body: microsoft_graph_itemBody.optional(),
15215
+ subject: z.string().describe("The subject of the message.").nullish(),
15216
+ attachments: z.array(microsoft_graph_attachment).describe("The fileAttachment and itemAttachment attachments for the message.").optional(),
15217
+ singleValueExtendedProperties: z.array(microsoft_graph_singleValueLegacyExtendedProperty).describe(
15218
+ "The collection of single-value extended properties defined for the message. Nullable."
15219
+ ).optional(),
15220
+ multiValueExtendedProperties: z.array(microsoft_graph_multiValueLegacyExtendedProperty).describe(
15221
+ "The collection of multi-value extended properties defined for the message. Nullable."
15222
+ ).optional(),
15223
+ importance: microsoft_graph_importance.optional(),
15224
+ from: microsoft_graph_recipient.optional(),
15225
+ toRecipients: z.array(microsoft_graph_recipient).describe("The To: recipients for the message.").optional(),
15226
+ categories: z.array(z.string().nullable()).describe("The categories associated with the item").optional(),
15227
+ changeKey: z.string().describe(
15228
+ "Identifies the version of the item. Every time the item is changed, changeKey changes as well. This allows Exchange to apply changes to the correct version of the object. Read-only."
15229
+ ).nullish(),
15230
+ bccRecipients: z.array(microsoft_graph_recipient).describe("The Bcc: recipients for the message.").optional(),
15231
+ bodyPreview: z.string().describe("The first 255 characters of the message body. It is in text format.").nullish(),
15232
+ ccRecipients: z.array(microsoft_graph_recipient).describe("The Cc: recipients for the message.").optional(),
15233
+ conversationId: z.string().describe("The ID of the conversation the email belongs to.").nullish(),
15234
+ conversationIndex: z.string().describe("Indicates the position of the message within the conversation.").nullish(),
15235
+ flag: microsoft_graph_followupFlag.optional(),
15236
+ hasAttachments: z.boolean().describe(
15237
+ "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'>."
15238
+ ).nullish(),
15239
+ inferenceClassification: microsoft_graph_inferenceClassificationType.optional(),
15240
+ internetMessageHeaders: z.array(microsoft_graph_internetMessageHeader).describe(
15241
+ "A collection of message headers defined by RFC5322. The set includes message headers indicating the network path taken by a message from the sender to the recipient. It can also contain custom message headers that hold app data for the message. Requires $select to retrieve. Read-only."
15242
+ ).optional(),
15243
+ internetMessageId: z.string().describe("The message ID in the format specified by RFC2822.").nullish(),
15244
+ isDeliveryReceiptRequested: z.boolean().describe("Indicates whether a read receipt is requested for the message.").nullish(),
15245
+ isDraft: z.boolean().describe(
15246
+ "Indicates whether the message is a draft. A message is a draft if it hasn't been sent yet."
15247
+ ).nullish()
15248
+ }).passthrough().passthrough()
15249
+ }
15250
+ ],
15251
+ response: z.void()
15252
+ },
15191
15253
  {
15192
15254
  method: "post",
15193
15255
  path: "/users/:userId/messages/:messageId/forward",
@@ -15208,6 +15270,22 @@ Only the policyViolation property of a chatMessage can be updated in application
15208
15270
  ],
15209
15271
  response: z.void()
15210
15272
  },
15273
+ {
15274
+ method: "post",
15275
+ path: "/users/:userId/messages/:messageId/move",
15276
+ alias: "move-shared-mailbox-message",
15277
+ description: `Move a message to another folder within the specified user's mailbox. This creates a new copy of the message in the destination folder and removes the original message.`,
15278
+ requestFormat: "json",
15279
+ parameters: [
15280
+ {
15281
+ name: "body",
15282
+ description: `Action parameters`,
15283
+ type: "Body",
15284
+ schema: z.object({ DestinationId: z.string() }).partial().passthrough()
15285
+ }
15286
+ ],
15287
+ response: z.void()
15288
+ },
15211
15289
  {
15212
15290
  method: "post",
15213
15291
  path: "/users/:userId/messages/:messageId/reply",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@softeria/ms-365-mcp-server",
3
3
  "mcpName": "io.github.Softeria/ms-365-mcp-server",
4
- "version": "0.139.2",
4
+ "version": "0.141.0",
5
5
  "description": " A Model Context Protocol (MCP) server for interacting with Microsoft 365 and Office services through the Graph API",
6
6
  "type": "module",
7
7
  "main": "dist/index.js",
@@ -124,6 +124,23 @@
124
124
  "presets": ["work"],
125
125
  "workScopes": ["Mail.ReadWrite.Shared"]
126
126
  },
127
+ {
128
+ "pathPattern": "/users/{user-id}/messages/{message-id}/move",
129
+ "method": "post",
130
+ "toolName": "move-shared-mailbox-message",
131
+ "descriptionOverride": "Move a message in another user's mailbox or a shared mailbox to a different folder. The user-id is the mailbox owner's ID or email address, and delegated access to that mailbox is required.",
132
+ "presets": ["work"],
133
+ "workScopes": ["Mail.ReadWrite.Shared"],
134
+ "llmTip": "destinationId accepts folder ID or well-known name (inbox, drafts, sentitems, deleteditems, junkemail, archive)."
135
+ },
136
+ {
137
+ "pathPattern": "/users/{user-id}/messages/{message-id}",
138
+ "method": "patch",
139
+ "toolName": "update-shared-mailbox-message",
140
+ "descriptionOverride": "Update a message in another user's mailbox or a shared mailbox — for example mark it read or unread (isRead), flag it (flag), change its categories or importance, or edit a draft's subject, body, or recipients. The user-id is the mailbox owner's ID or email address, and delegated access to that mailbox is required.",
141
+ "presets": ["work"],
142
+ "workScopes": ["Mail.ReadWrite.Shared"]
143
+ },
127
144
  {
128
145
  "pathPattern": "/users/{user-id}/messages/{message-id}/reply",
129
146
  "method": "post",
@@ -1543,14 +1560,14 @@
1543
1560
  "method": "get",
1544
1561
  "toolName": "list-chats",
1545
1562
  "presets": ["teams", "work"],
1546
- "workScopes": ["Chat.Read"]
1563
+ "workScopes": [["Chat.Read"], ["Chat.ReadBasic"]]
1547
1564
  },
1548
1565
  {
1549
1566
  "pathPattern": "/chats/{chat-id}",
1550
1567
  "method": "get",
1551
1568
  "toolName": "get-chat",
1552
1569
  "presets": ["teams", "work"],
1553
- "workScopes": ["Chat.Read"]
1570
+ "workScopes": [["Chat.Read"], ["Chat.ReadBasic"]]
1554
1571
  },
1555
1572
  {
1556
1573
  "pathPattern": "/chats/{chat-id}/members",