@softeria/ms-365-mcp-server 0.90.0 → 0.91.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.
@@ -1757,5 +1757,33 @@
1757
1757
  "toolName": "get-sensitivity-label",
1758
1758
  "workScopes": ["SensitivityLabel.Read"],
1759
1759
  "llmTip": "Gets a single MIP sensitivity label by id. Use list-sensitivity-labels to find ids. Not supported for personal Microsoft accounts."
1760
+ },
1761
+ {
1762
+ "pathPattern": "/me/messages/{message-id}/copy",
1763
+ "method": "post",
1764
+ "toolName": "copy-mail-message",
1765
+ "scopes": ["Mail.ReadWrite"],
1766
+ "llmTip": "Copies a message to another mail folder. Body: { DestinationId: '<mailFolder-id or well-known name like inbox, archive, junkemail>' }. Returns the newly created message (with a new id) in the destination folder. For moving instead of copying, use move-mail-message."
1767
+ },
1768
+ {
1769
+ "pathPattern": "/me/mailFolders/{mailFolder-id}/messages/delta()",
1770
+ "method": "get",
1771
+ "toolName": "list-mail-folder-messages-delta",
1772
+ "scopes": ["Mail.Read"],
1773
+ "llmTip": "Incremental sync of messages within a mail folder. Graph only supports delta scoped to a folder — use mailFolder-id = 'inbox' for the well-known inbox, or another folder id from list-mail-folders. First call returns all messages plus @odata.deltaLink; subsequent calls with that link return only changes (created/updated/deleted). @odata.nextLink paginates within a single delta window. Deltas expire after ~30 days of inactivity — start over if the server returns 410. Prefer this over full re-list for polling."
1774
+ },
1775
+ {
1776
+ "pathPattern": "/me/outlook/masterCategories",
1777
+ "method": "get",
1778
+ "toolName": "list-outlook-categories",
1779
+ "scopes": ["MailboxSettings.Read"],
1780
+ "llmTip": "Lists the user's Outlook categories (colored labels) used to tag messages, events, contacts, and tasks. Each category has displayName and color (preset0 through preset24, or 'none'). Use this to show available tags before applying via update-mail-message or update-calendar-event with body { categories: ['Category Name'] }."
1781
+ },
1782
+ {
1783
+ "pathPattern": "/me/outlook/masterCategories",
1784
+ "method": "post",
1785
+ "toolName": "create-outlook-category",
1786
+ "scopes": ["MailboxSettings.ReadWrite"],
1787
+ "llmTip": "Creates a new Outlook category. Body: { displayName (unique), color (one of: none, preset0 … preset24 — maps to red, orange, yellow, green, teal, olive, blue, purple, cranberry, steel, dark-steel, gray, dark-gray, black, dark-red, dark-orange, dark-yellow, dark-green, dark-teal, dark-olive, dark-blue, dark-purple, dark-cranberry) }. Category names are case-sensitive when applied to messages/events."
1760
1788
  }
1761
1789
  ]
@@ -3476,6 +3476,46 @@ const microsoft_graph_callTranscriptCollectionResponse = z.object({
3476
3476
  "@odata.nextLink": z.string().nullable(),
3477
3477
  value: z.array(microsoft_graph_callTranscript)
3478
3478
  }).partial().passthrough();
3479
+ const microsoft_graph_categoryColor = z.enum([
3480
+ "none",
3481
+ "preset0",
3482
+ "preset1",
3483
+ "preset2",
3484
+ "preset3",
3485
+ "preset4",
3486
+ "preset5",
3487
+ "preset6",
3488
+ "preset7",
3489
+ "preset8",
3490
+ "preset9",
3491
+ "preset10",
3492
+ "preset11",
3493
+ "preset12",
3494
+ "preset13",
3495
+ "preset14",
3496
+ "preset15",
3497
+ "preset16",
3498
+ "preset17",
3499
+ "preset18",
3500
+ "preset19",
3501
+ "preset20",
3502
+ "preset21",
3503
+ "preset22",
3504
+ "preset23",
3505
+ "preset24"
3506
+ ]);
3507
+ const microsoft_graph_outlookCategory = z.object({
3508
+ id: z.string().describe("The unique identifier for an entity. Read-only.").optional(),
3509
+ color: microsoft_graph_categoryColor.optional(),
3510
+ displayName: z.string().describe(
3511
+ "A unique name that identifies a category in the user's mailbox. After a category is created, the name cannot be changed. Read-only."
3512
+ ).nullish()
3513
+ }).passthrough();
3514
+ const microsoft_graph_outlookCategoryCollectionResponse = z.object({
3515
+ "@odata.count": z.number().int().nullable(),
3516
+ "@odata.nextLink": z.string().nullable(),
3517
+ value: z.array(microsoft_graph_outlookCategory)
3518
+ }).partial().passthrough();
3479
3519
  const microsoft_graph_personType = z.object({
3480
3520
  class: z.string().describe("The type of data source, such as Person.").nullish(),
3481
3521
  subclass: z.string().describe("The secondary type of data source, such as OrganizationUser.").nullish()
@@ -4772,6 +4812,9 @@ const schemas = {
4772
4812
  microsoft_graph_callRecordingCollectionResponse,
4773
4813
  microsoft_graph_callTranscript,
4774
4814
  microsoft_graph_callTranscriptCollectionResponse,
4815
+ microsoft_graph_categoryColor,
4816
+ microsoft_graph_outlookCategory,
4817
+ microsoft_graph_outlookCategoryCollectionResponse,
4775
4818
  microsoft_graph_personType,
4776
4819
  microsoft_graph_phoneType,
4777
4820
  microsoft_graph_phone,
@@ -8793,6 +8836,66 @@ folder collection and navigate to another folder. By default, this operation doe
8793
8836
  ],
8794
8837
  response: z.void()
8795
8838
  },
8839
+ {
8840
+ method: "get",
8841
+ path: "/me/mailFolders/:mailFolderId/messages/delta()",
8842
+ alias: "list-mail-folder-messages-delta",
8843
+ description: `Get a set of messages added, deleted, or updated in a specified folder. A delta function call for messages in a folder is similar to a GET request, except that by appropriately
8844
+ applying state tokens in one or more of these calls, you can [query for incremental changes in the messages in
8845
+ that folder](/graph/delta-query-messages). It allows you to maintain and synchronize a local store of a user's messages without
8846
+ having to fetch the entire set of messages from the server every time.`,
8847
+ requestFormat: "json",
8848
+ parameters: [
8849
+ {
8850
+ name: "changeType",
8851
+ type: "Query",
8852
+ schema: z.string().describe(
8853
+ "A custom query option to filter the delta response based on the type of change. Supported values are created, updated or deleted."
8854
+ ).optional()
8855
+ },
8856
+ {
8857
+ name: "$top",
8858
+ type: "Query",
8859
+ schema: z.number().int().gte(0).describe("Show only the first n items").optional()
8860
+ },
8861
+ {
8862
+ name: "$skip",
8863
+ type: "Query",
8864
+ schema: z.number().int().gte(0).describe("Skip the first n items").optional()
8865
+ },
8866
+ {
8867
+ name: "$search",
8868
+ type: "Query",
8869
+ schema: z.string().describe("Search items by search phrases").optional()
8870
+ },
8871
+ {
8872
+ name: "$filter",
8873
+ type: "Query",
8874
+ schema: z.string().describe("Filter items by property values").optional()
8875
+ },
8876
+ {
8877
+ name: "$count",
8878
+ type: "Query",
8879
+ schema: z.boolean().describe("Include count of items").optional()
8880
+ },
8881
+ {
8882
+ name: "$select",
8883
+ type: "Query",
8884
+ schema: z.array(z.string()).describe("Select properties to be returned").optional()
8885
+ },
8886
+ {
8887
+ name: "$orderby",
8888
+ type: "Query",
8889
+ schema: z.array(z.string()).describe("Order items by property values").optional()
8890
+ },
8891
+ {
8892
+ name: "$expand",
8893
+ type: "Query",
8894
+ schema: z.array(z.string()).describe("Expand related entities").optional()
8895
+ }
8896
+ ],
8897
+ response: z.void()
8898
+ },
8796
8899
  {
8797
8900
  method: "get",
8798
8901
  path: "/me/manager",
@@ -9209,6 +9312,22 @@ resource.`,
9209
9312
  ],
9210
9313
  response: z.void()
9211
9314
  },
9315
+ {
9316
+ method: "post",
9317
+ path: "/me/messages/:messageId/copy",
9318
+ alias: "copy-mail-message",
9319
+ description: `Copy a message to a folder within the user's mailbox.`,
9320
+ requestFormat: "json",
9321
+ parameters: [
9322
+ {
9323
+ name: "body",
9324
+ description: `Action parameters`,
9325
+ type: "Body",
9326
+ schema: z.object({ DestinationId: z.string() }).partial().passthrough()
9327
+ }
9328
+ ],
9329
+ response: z.void()
9330
+ },
9212
9331
  {
9213
9332
  method: "post",
9214
9333
  path: "/me/messages/:messageId/createForward",
@@ -10103,6 +10222,72 @@ resource.`,
10103
10222
  requestFormat: "json",
10104
10223
  response: z.void()
10105
10224
  },
10225
+ {
10226
+ method: "get",
10227
+ path: "/me/outlook/masterCategories",
10228
+ alias: "list-outlook-categories",
10229
+ description: `Get all the categories that have been defined for a user.`,
10230
+ requestFormat: "json",
10231
+ parameters: [
10232
+ {
10233
+ name: "$top",
10234
+ type: "Query",
10235
+ schema: z.number().int().gte(0).describe("Show only the first n items").optional()
10236
+ },
10237
+ {
10238
+ name: "$skip",
10239
+ type: "Query",
10240
+ schema: z.number().int().gte(0).describe("Skip the first n items").optional()
10241
+ },
10242
+ {
10243
+ name: "$search",
10244
+ type: "Query",
10245
+ schema: z.string().describe("Search items by search phrases").optional()
10246
+ },
10247
+ {
10248
+ name: "$filter",
10249
+ type: "Query",
10250
+ schema: z.string().describe("Filter items by property values").optional()
10251
+ },
10252
+ {
10253
+ name: "$count",
10254
+ type: "Query",
10255
+ schema: z.boolean().describe("Include count of items").optional()
10256
+ },
10257
+ {
10258
+ name: "$orderby",
10259
+ type: "Query",
10260
+ schema: z.array(z.string()).describe("Order items by property values").optional()
10261
+ },
10262
+ {
10263
+ name: "$select",
10264
+ type: "Query",
10265
+ schema: z.array(z.string()).describe("Select properties to be returned").optional()
10266
+ },
10267
+ {
10268
+ name: "$expand",
10269
+ type: "Query",
10270
+ schema: z.array(z.string()).describe("Expand related entities").optional()
10271
+ }
10272
+ ],
10273
+ response: z.void()
10274
+ },
10275
+ {
10276
+ method: "post",
10277
+ path: "/me/outlook/masterCategories",
10278
+ alias: "create-outlook-category",
10279
+ description: `Create an outlookCategory object in the user's master list of categories.`,
10280
+ requestFormat: "json",
10281
+ parameters: [
10282
+ {
10283
+ name: "body",
10284
+ description: `New navigation property`,
10285
+ type: "Body",
10286
+ schema: microsoft_graph_outlookCategory
10287
+ }
10288
+ ],
10289
+ response: z.void()
10290
+ },
10106
10291
  {
10107
10292
  method: "get",
10108
10293
  path: "/me/people",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@softeria/ms-365-mcp-server",
3
- "version": "0.90.0",
3
+ "version": "0.91.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",
@@ -1757,5 +1757,33 @@
1757
1757
  "toolName": "get-sensitivity-label",
1758
1758
  "workScopes": ["SensitivityLabel.Read"],
1759
1759
  "llmTip": "Gets a single MIP sensitivity label by id. Use list-sensitivity-labels to find ids. Not supported for personal Microsoft accounts."
1760
+ },
1761
+ {
1762
+ "pathPattern": "/me/messages/{message-id}/copy",
1763
+ "method": "post",
1764
+ "toolName": "copy-mail-message",
1765
+ "scopes": ["Mail.ReadWrite"],
1766
+ "llmTip": "Copies a message to another mail folder. Body: { DestinationId: '<mailFolder-id or well-known name like inbox, archive, junkemail>' }. Returns the newly created message (with a new id) in the destination folder. For moving instead of copying, use move-mail-message."
1767
+ },
1768
+ {
1769
+ "pathPattern": "/me/mailFolders/{mailFolder-id}/messages/delta()",
1770
+ "method": "get",
1771
+ "toolName": "list-mail-folder-messages-delta",
1772
+ "scopes": ["Mail.Read"],
1773
+ "llmTip": "Incremental sync of messages within a mail folder. Graph only supports delta scoped to a folder — use mailFolder-id = 'inbox' for the well-known inbox, or another folder id from list-mail-folders. First call returns all messages plus @odata.deltaLink; subsequent calls with that link return only changes (created/updated/deleted). @odata.nextLink paginates within a single delta window. Deltas expire after ~30 days of inactivity — start over if the server returns 410. Prefer this over full re-list for polling."
1774
+ },
1775
+ {
1776
+ "pathPattern": "/me/outlook/masterCategories",
1777
+ "method": "get",
1778
+ "toolName": "list-outlook-categories",
1779
+ "scopes": ["MailboxSettings.Read"],
1780
+ "llmTip": "Lists the user's Outlook categories (colored labels) used to tag messages, events, contacts, and tasks. Each category has displayName and color (preset0 through preset24, or 'none'). Use this to show available tags before applying via update-mail-message or update-calendar-event with body { categories: ['Category Name'] }."
1781
+ },
1782
+ {
1783
+ "pathPattern": "/me/outlook/masterCategories",
1784
+ "method": "post",
1785
+ "toolName": "create-outlook-category",
1786
+ "scopes": ["MailboxSettings.ReadWrite"],
1787
+ "llmTip": "Creates a new Outlook category. Body: { displayName (unique), color (one of: none, preset0 … preset24 — maps to red, orange, yellow, green, teal, olive, blue, purple, cranberry, steel, dark-steel, gray, dark-gray, black, dark-red, dark-orange, dark-yellow, dark-green, dark-teal, dark-olive, dark-blue, dark-purple, dark-cranberry) }. Category names are case-sensitive when applied to messages/events."
1760
1788
  }
1761
1789
  ]