@softeria/ms-365-mcp-server 0.63.2 → 0.64.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.
@@ -133,6 +133,13 @@
133
133
  "scopes": ["Mail.ReadWrite"],
134
134
  "llmTip": "Max 3MB. Body requires @odata.type: {\"@odata.type\": \"#microsoft.graph.fileAttachment\", \"name\": \"file.pdf\", \"contentBytes\": \"<base64>\"}."
135
135
  },
136
+ {
137
+ "pathPattern": "/me/messages/{message-id}/attachments/createUploadSession",
138
+ "method": "post",
139
+ "toolName": "create-mail-attachment-upload-session",
140
+ "scopes": ["Mail.ReadWrite"],
141
+ "llmTip": "For large attachments (3-150MB). Body: { AttachmentItem: { attachmentType: 'file', name: 'report.pdf', size: 5000000 } }. Returns a pre-authenticated uploadUrl for direct PUT of file bytes."
142
+ },
136
143
  {
137
144
  "pathPattern": "/me/messages/{message-id}/attachments",
138
145
  "method": "get",
@@ -428,6 +435,13 @@
428
435
  "scopes": ["Files.ReadWrite"],
429
436
  "llmTip": "Max 4MB. For new files use path format: /items/root:/path/to/file.txt:/content. Overwrites existing files without warning."
430
437
  },
438
+ {
439
+ "pathPattern": "/drives/{drive-id}/items/{driveItem-id}/createUploadSession",
440
+ "method": "post",
441
+ "toolName": "create-upload-session",
442
+ "scopes": ["Files.ReadWrite"],
443
+ "llmTip": "For large file uploads (no size limit). Returns a pre-authenticated uploadUrl for direct PUT of file bytes. For new files use path: /items/{parentId}:/{fileName}:/createUploadSession. Body (optional): { item: { '@microsoft.graph.conflictBehavior': 'rename' } }."
444
+ },
431
445
  {
432
446
  "pathPattern": "/drives/{drive-id}/items/{driveItem-id}",
433
447
  "method": "patch",
@@ -748,6 +748,18 @@ const microsoft_graph_driveItemCollectionResponse = z.object({
748
748
  "@odata.nextLink": z.string().nullable(),
749
749
  value: z.array(microsoft_graph_driveItem)
750
750
  }).partial().passthrough();
751
+ const create_upload_session_Body = z.object({ item: z.object({}).partial().passthrough() }).partial().passthrough();
752
+ const microsoft_graph_uploadSession = z.object({
753
+ expirationDateTime: z.string().regex(
754
+ /^[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])$/
755
+ ).datetime({ offset: true }).describe(
756
+ "The date and time in UTC that the upload session expires. The complete file must be uploaded before this expiration time is reached. Each fragment uploaded during the session extends the expiration time."
757
+ ).nullish(),
758
+ nextExpectedRanges: z.array(z.string().nullable()).describe(
759
+ "A collection of byte ranges that the server is missing for the file. These ranges are zero indexed and of the format 'start-end' (for example '0-26' to indicate the first 27 bytes of the file). When uploading files as Outlook attachments, instead of a collection of ranges, this property always indicates a single value '{start}', the location in the file where the next upload should begin."
760
+ ).optional(),
761
+ uploadUrl: z.string().describe("The URL endpoint that accepts PUT requests for byte ranges of the file.").nullish()
762
+ }).passthrough();
751
763
  const microsoft_graph_workbookIcon = z.object({
752
764
  index: z.number().gte(-2147483648).lte(2147483647).describe("The index of the icon in the given set.").optional(),
753
765
  set: z.string().describe(
@@ -3865,6 +3877,8 @@ const schemas = {
3865
3877
  microsoft_graph_pendingOperations,
3866
3878
  microsoft_graph_driveItem,
3867
3879
  microsoft_graph_driveItemCollectionResponse,
3880
+ create_upload_session_Body,
3881
+ microsoft_graph_uploadSession,
3868
3882
  microsoft_graph_workbookIcon,
3869
3883
  microsoft_graph_workbookFilterCriteria,
3870
3884
  microsoft_graph_workbookFilter,
@@ -4604,6 +4618,22 @@ const endpoints = makeApi([
4604
4618
  ],
4605
4619
  response: z.void()
4606
4620
  },
4621
+ {
4622
+ method: "post",
4623
+ path: "/drives/:driveId/items/:driveItemId/createUploadSession",
4624
+ alias: "create-upload-session",
4625
+ description: `Invoke action createUploadSession`,
4626
+ requestFormat: "json",
4627
+ parameters: [
4628
+ {
4629
+ name: "body",
4630
+ description: `Action parameters`,
4631
+ type: "Body",
4632
+ schema: create_upload_session_Body
4633
+ }
4634
+ ],
4635
+ response: z.void()
4636
+ },
4607
4637
  {
4608
4638
  method: "get",
4609
4639
  path: "/drives/:driveId/items/:driveItemId/workbook/tables",
@@ -6927,6 +6957,22 @@ resource.`,
6927
6957
  ],
6928
6958
  response: z.void()
6929
6959
  },
6960
+ {
6961
+ method: "post",
6962
+ path: "/me/messages/:messageId/attachments/createUploadSession",
6963
+ alias: "create-mail-attachment-upload-session",
6964
+ description: `Create an upload session that allows an app to iteratively upload ranges of a file, so as to attach the file to the specified Outlook item. The item can be a message or event. Use this approach to attach a file if the file size is between 3 MB and 150 MB. To attach a file that's smaller than 3 MB, do a POST operation on the attachments navigation property of the Outlook item; see how to do this for a message or for an event. As part of the response, this action returns an upload URL that you can use in subsequent sequential PUT queries. Request headers for each PUT operation let you specify the exact range of bytes to be uploaded. This allows transfer to be resumed, in case the network connection is dropped during upload. The following are the steps to attach a file to an Outlook item using an upload session: See attach large files to Outlook messages or events for an example.`,
6965
+ requestFormat: "json",
6966
+ parameters: [
6967
+ {
6968
+ name: "body",
6969
+ description: `Action parameters`,
6970
+ type: "Body",
6971
+ schema: z.object({ AttachmentItem: z.object({}).partial().passthrough() }).partial().passthrough()
6972
+ }
6973
+ ],
6974
+ response: z.void()
6975
+ },
6930
6976
  {
6931
6977
  method: "post",
6932
6978
  path: "/me/messages/:messageId/createForward",
@@ -1,10 +1,10 @@
1
- 2026-04-05 08:47:40 INFO: [GRAPH CLIENT] Final URL being sent to Microsoft: https://graph.microsoft.com/v1.0/me
2
- 2026-04-05 08:47:40 INFO: [GRAPH CLIENT] Final URL being sent to Microsoft: https://graph.microsoft.com/v1.0/me
3
- 2026-04-05 08:47:40 INFO: [GRAPH CLIENT] Final URL being sent to Microsoft: https://graph.microsoft.com/v1.0/me
4
- 2026-04-05 08:47:40 INFO: [GRAPH CLIENT] Final URL being sent to Microsoft: https://graph.microsoft.com/v1.0/me/messages
5
- 2026-04-05 08:47:40 INFO: [GRAPH CLIENT] Final URL being sent to Microsoft: https://graph.microsoft.com/v1.0/me/calendar
6
- 2026-04-05 08:47:42 INFO: Using environment variables for secrets
7
- 2026-04-05 08:47:42 INFO: Using environment variables for secrets
8
- 2026-04-05 08:47:42 INFO: Using environment variables for secrets
9
- 2026-04-05 08:47:42 INFO: Using environment variables for secrets
10
- 2026-04-05 08:47:42 INFO: Using environment variables for secrets
1
+ 2026-04-05 09:28:30 INFO: [GRAPH CLIENT] Final URL being sent to Microsoft: https://graph.microsoft.com/v1.0/me
2
+ 2026-04-05 09:28:30 INFO: [GRAPH CLIENT] Final URL being sent to Microsoft: https://graph.microsoft.com/v1.0/me
3
+ 2026-04-05 09:28:30 INFO: [GRAPH CLIENT] Final URL being sent to Microsoft: https://graph.microsoft.com/v1.0/me
4
+ 2026-04-05 09:28:30 INFO: [GRAPH CLIENT] Final URL being sent to Microsoft: https://graph.microsoft.com/v1.0/me/messages
5
+ 2026-04-05 09:28:30 INFO: [GRAPH CLIENT] Final URL being sent to Microsoft: https://graph.microsoft.com/v1.0/me/calendar
6
+ 2026-04-05 09:28:32 INFO: Using environment variables for secrets
7
+ 2026-04-05 09:28:32 INFO: Using environment variables for secrets
8
+ 2026-04-05 09:28:32 INFO: Using environment variables for secrets
9
+ 2026-04-05 09:28:32 INFO: Using environment variables for secrets
10
+ 2026-04-05 09:28:32 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.63.2",
3
+ "version": "0.64.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",
@@ -133,6 +133,13 @@
133
133
  "scopes": ["Mail.ReadWrite"],
134
134
  "llmTip": "Max 3MB. Body requires @odata.type: {\"@odata.type\": \"#microsoft.graph.fileAttachment\", \"name\": \"file.pdf\", \"contentBytes\": \"<base64>\"}."
135
135
  },
136
+ {
137
+ "pathPattern": "/me/messages/{message-id}/attachments/createUploadSession",
138
+ "method": "post",
139
+ "toolName": "create-mail-attachment-upload-session",
140
+ "scopes": ["Mail.ReadWrite"],
141
+ "llmTip": "For large attachments (3-150MB). Body: { AttachmentItem: { attachmentType: 'file', name: 'report.pdf', size: 5000000 } }. Returns a pre-authenticated uploadUrl for direct PUT of file bytes."
142
+ },
136
143
  {
137
144
  "pathPattern": "/me/messages/{message-id}/attachments",
138
145
  "method": "get",
@@ -428,6 +435,13 @@
428
435
  "scopes": ["Files.ReadWrite"],
429
436
  "llmTip": "Max 4MB. For new files use path format: /items/root:/path/to/file.txt:/content. Overwrites existing files without warning."
430
437
  },
438
+ {
439
+ "pathPattern": "/drives/{drive-id}/items/{driveItem-id}/createUploadSession",
440
+ "method": "post",
441
+ "toolName": "create-upload-session",
442
+ "scopes": ["Files.ReadWrite"],
443
+ "llmTip": "For large file uploads (no size limit). Returns a pre-authenticated uploadUrl for direct PUT of file bytes. For new files use path: /items/{parentId}:/{fileName}:/createUploadSession. Body (optional): { item: { '@microsoft.graph.conflictBehavior': 'rename' } }."
444
+ },
431
445
  {
432
446
  "pathPattern": "/drives/{drive-id}/items/{driveItem-id}",
433
447
  "method": "patch",