@softeria/ms-365-mcp-server 0.130.0 → 0.131.1

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.
@@ -973,6 +973,78 @@
973
973
  "presets": ["onenote", "work"],
974
974
  "workScopes": ["Notes.Read"]
975
975
  },
976
+ {
977
+ "pathPattern": "/sites/{site-id}/onenote/notebooks",
978
+ "method": "post",
979
+ "toolName": "create-sharepoint-site-onenote-notebook",
980
+ "presets": ["onenote", "work"],
981
+ "workScopes": ["Notes.Create"]
982
+ },
983
+ {
984
+ "pathPattern": "/sites/{site-id}/onenote/notebooks/{notebook-id}/sections",
985
+ "method": "post",
986
+ "toolName": "create-sharepoint-site-onenote-section",
987
+ "presets": ["onenote", "work"],
988
+ "workScopes": ["Notes.Create"]
989
+ },
990
+ {
991
+ "pathPattern": "/sites/{site-id}/onenote/sectionGroups/{sectionGroup-id}/sections",
992
+ "method": "post",
993
+ "toolName": "create-sharepoint-site-onenote-section-group-section",
994
+ "presets": ["onenote", "work"],
995
+ "workScopes": ["Notes.Create"]
996
+ },
997
+ {
998
+ "pathPattern": "/sites/{site-id}/onenote/sections/{onenoteSection-id}/pages",
999
+ "method": "post",
1000
+ "toolName": "create-sharepoint-site-onenote-section-page",
1001
+ "presets": ["onenote", "work"],
1002
+ "workScopes": ["Notes.Create"],
1003
+ "contentType": "text/html",
1004
+ "llmTip": "Body must be a full HTML document (with <html><head><title>...</title></head><body>...</body></html>). Partial HTML fails silently."
1005
+ },
1006
+ {
1007
+ "pathPattern": "/sites/{site-id}/onenote/pages/{onenotePage-id}/content",
1008
+ "method": "patch",
1009
+ "toolName": "update-sharepoint-site-onenote-page-content",
1010
+ "presets": ["onenote", "work"],
1011
+ "workScopes": ["Notes.ReadWrite"],
1012
+ "requestBodySchema": {
1013
+ "type": "array",
1014
+ "description": "Array of patchContentCommand objects applied in order to the page's HTML.",
1015
+ "items": {
1016
+ "type": "object",
1017
+ "required": ["target", "action"],
1018
+ "properties": {
1019
+ "target": {
1020
+ "type": "string",
1021
+ "description": "Element to change: a data-id, the generated id, or a known name like 'body' or 'title'."
1022
+ },
1023
+ "action": {
1024
+ "type": "string",
1025
+ "enum": ["append", "insert", "prepend", "replace", "delete"],
1026
+ "description": "What to do at the target. 'delete' takes no content."
1027
+ },
1028
+ "position": {
1029
+ "type": "string",
1030
+ "enum": ["after", "before"],
1031
+ "description": "For 'insert'/'append', whether content goes after (default) or before the target's content."
1032
+ },
1033
+ "content": {
1034
+ "type": "string",
1035
+ "description": "HTML to add. Required for all actions except 'delete'."
1036
+ }
1037
+ }
1038
+ }
1039
+ }
1040
+ },
1041
+ {
1042
+ "pathPattern": "/sites/{site-id}/onenote/pages/{onenotePage-id}",
1043
+ "method": "delete",
1044
+ "toolName": "delete-sharepoint-site-onenote-page",
1045
+ "presets": ["onenote", "work"],
1046
+ "workScopes": ["Notes.ReadWrite"]
1047
+ },
976
1048
  {
977
1049
  "pathPattern": "/me/onenote/pages",
978
1050
  "method": "post",
@@ -1414,7 +1486,7 @@
1414
1486
  "toolName": "send-chat-message",
1415
1487
  "presets": ["teams", "work"],
1416
1488
  "workScopes": ["ChatMessage.Send"],
1417
- "llmTip": "Use contentType 'html' in the body — plain text contentType gets mangled by Graph API."
1489
+ "llmTip": "Use contentType 'html' in the body — plain text contentType gets mangled by Graph API. To @mention someone, put an <at id=\"0\">Name</at> tag in the html content and add a mentions array to the request body, as a sibling of the body property (not a separate top-level tool parameter): { body: { contentType: 'html', content: 'Hi <at id=\"0\">Name</at>' }, mentions: [{ id: 0, mentionText: 'Name', mentioned: { user: { id: '<aad-user-id>', displayName: 'Name', userIdentityType: 'aadUser' } } }] }. Each mention id must match its <at id> value; include userIdentityType: 'aadUser' or Graph returns 400 'value without a type name'."
1418
1490
  },
1419
1491
  {
1420
1492
  "pathPattern": "/me/joinedTeams",
@@ -1500,7 +1572,7 @@
1500
1572
  "toolName": "send-channel-message",
1501
1573
  "presets": ["teams", "work"],
1502
1574
  "workScopes": ["ChannelMessage.Send"],
1503
- "llmTip": "Use contentType 'html' in the body — plain text contentType gets mangled by Graph API."
1575
+ "llmTip": "Use contentType 'html' in the body — plain text contentType gets mangled by Graph API. To @mention someone, put an <at id=\"0\">Name</at> tag in the html content and add a mentions array to the request body, as a sibling of the body property (not a separate top-level tool parameter): { body: { contentType: 'html', content: 'Hi <at id=\"0\">Name</at>' }, mentions: [{ id: 0, mentionText: 'Name', mentioned: { user: { id: '<aad-user-id>', displayName: 'Name', userIdentityType: 'aadUser' } } }] }. Each mention id must match its <at id> value; include userIdentityType: 'aadUser' or Graph returns 400 'value without a type name'."
1504
1576
  },
1505
1577
  {
1506
1578
  "pathPattern": "/teams/{team-id}/channels/{channel-id}/messages/{chatMessage-id}/replies",
@@ -1508,7 +1580,7 @@
1508
1580
  "toolName": "reply-to-channel-message",
1509
1581
  "presets": ["teams", "work"],
1510
1582
  "workScopes": ["ChannelMessage.Send"],
1511
- "llmTip": "Use contentType 'html' in the body — plain text contentType gets mangled by Graph API."
1583
+ "llmTip": "Use contentType 'html' in the body — plain text contentType gets mangled by Graph API. To @mention someone, put an <at id=\"0\">Name</at> tag in the html content and add a mentions array to the request body, as a sibling of the body property (not a separate top-level tool parameter): { body: { contentType: 'html', content: 'Hi <at id=\"0\">Name</at>' }, mentions: [{ id: 0, mentionText: 'Name', mentioned: { user: { id: '<aad-user-id>', displayName: 'Name', userIdentityType: 'aadUser' } } }] }. Each mention id must match its <at id> value; include userIdentityType: 'aadUser' or Graph returns 400 'value without a type name'."
1512
1584
  },
1513
1585
  {
1514
1586
  "pathPattern": "/teams/{team-id}/channels/{channel-id}/messages/{chatMessage-id}/replies",
@@ -1587,7 +1659,7 @@
1587
1659
  "toolName": "reply-to-chat-message",
1588
1660
  "presets": ["teams", "work"],
1589
1661
  "workScopes": ["ChatMessage.Send"],
1590
- "llmTip": "Use contentType 'html' in the body — plain text contentType gets mangled by Graph API."
1662
+ "llmTip": "Use contentType 'html' in the body — plain text contentType gets mangled by Graph API. To @mention someone, put an <at id=\"0\">Name</at> tag in the html content and add a mentions array to the request body, as a sibling of the body property (not a separate top-level tool parameter): { body: { contentType: 'html', content: 'Hi <at id=\"0\">Name</at>' }, mentions: [{ id: 0, mentionText: 'Name', mentioned: { user: { id: '<aad-user-id>', displayName: 'Name', userIdentityType: 'aadUser' } } }] }. Each mention id must match its <at id> value; include userIdentityType: 'aadUser' or Graph returns 400 'value without a type name'."
1591
1663
  },
1592
1664
  {
1593
1665
  "pathPattern": "/chats/{chat-id}/messages/{chatMessage-id}/setReaction",
@@ -4608,6 +4608,18 @@ const microsoft_graph_listItemCollectionResponse = z.object({
4608
4608
  "@odata.nextLink": z.string().nullable(),
4609
4609
  value: z.array(microsoft_graph_listItem)
4610
4610
  }).partial().passthrough();
4611
+ const update_sharepoint_site_onenote_page_content_Body = z.array(
4612
+ z.object({
4613
+ target: z.string().describe(
4614
+ "Element to change: a data-id, the generated id, or a known name like 'body' or 'title'."
4615
+ ),
4616
+ action: z.enum(["append", "insert", "prepend", "replace", "delete"]).describe("What to do at the target. 'delete' takes no content."),
4617
+ position: z.enum(["after", "before"]).describe(
4618
+ "For 'insert'/'append', whether content goes after (default) or before the target's content."
4619
+ ).optional(),
4620
+ content: z.string().describe("HTML to add. Required for all actions except 'delete'.").optional()
4621
+ }).passthrough()
4622
+ );
4611
4623
  const microsoft_graph_endpointType = z.enum([
4612
4624
  "default",
4613
4625
  "voicemail",
@@ -5287,6 +5299,7 @@ const schemas = {
5287
5299
  microsoft_graph_listCollectionResponse,
5288
5300
  microsoft_graph_columnDefinitionCollectionResponse,
5289
5301
  microsoft_graph_listItemCollectionResponse,
5302
+ update_sharepoint_site_onenote_page_content_Body,
5290
5303
  microsoft_graph_endpointType,
5291
5304
  microsoft_graph_communicationsIdentitySet,
5292
5305
  microsoft_graph_virtualEventSettings,
@@ -13377,6 +13390,22 @@ To list them, include system in your $select statement.`,
13377
13390
  ],
13378
13391
  response: z.void()
13379
13392
  },
13393
+ {
13394
+ method: "post",
13395
+ path: "/sites/:siteId/onenote/notebooks",
13396
+ alias: "create-sharepoint-site-onenote-notebook",
13397
+ description: `Create new navigation property to notebooks for sites`,
13398
+ requestFormat: "json",
13399
+ parameters: [
13400
+ {
13401
+ name: "body",
13402
+ description: `New navigation property`,
13403
+ type: "Body",
13404
+ schema: microsoft_graph_notebook
13405
+ }
13406
+ ],
13407
+ response: z.void()
13408
+ },
13380
13409
  {
13381
13410
  method: "get",
13382
13411
  path: "/sites/:siteId/onenote/notebooks/:notebookId/sectionGroups",
@@ -13477,6 +13506,37 @@ To list them, include system in your $select statement.`,
13477
13506
  ],
13478
13507
  response: z.void()
13479
13508
  },
13509
+ {
13510
+ method: "post",
13511
+ path: "/sites/:siteId/onenote/notebooks/:notebookId/sections",
13512
+ alias: "create-sharepoint-site-onenote-section",
13513
+ description: `Create new navigation property to sections for sites`,
13514
+ requestFormat: "json",
13515
+ parameters: [
13516
+ {
13517
+ name: "body",
13518
+ description: `New navigation property`,
13519
+ type: "Body",
13520
+ schema: microsoft_graph_onenoteSection
13521
+ }
13522
+ ],
13523
+ response: z.void()
13524
+ },
13525
+ {
13526
+ method: "delete",
13527
+ path: "/sites/:siteId/onenote/pages/:onenotePageId",
13528
+ alias: "delete-sharepoint-site-onenote-page",
13529
+ description: `Delete navigation property pages for sites`,
13530
+ requestFormat: "json",
13531
+ parameters: [
13532
+ {
13533
+ name: "If-Match",
13534
+ type: "Header",
13535
+ schema: z.string().describe("ETag").optional()
13536
+ }
13537
+ ],
13538
+ response: z.void()
13539
+ },
13480
13540
  {
13481
13541
  method: "get",
13482
13542
  path: "/sites/:siteId/onenote/pages/:onenotePageId/content",
@@ -13485,6 +13545,32 @@ To list them, include system in your $select statement.`,
13485
13545
  requestFormat: "json",
13486
13546
  response: z.void()
13487
13547
  },
13548
+ {
13549
+ method: "patch",
13550
+ path: "/sites/:siteId/onenote/pages/:onenotePageId/content",
13551
+ alias: "update-sharepoint-site-onenote-page-content",
13552
+ description: `update-sharepoint-site-onenote-page-content (synthesized)`,
13553
+ requestFormat: "json",
13554
+ parameters: [
13555
+ {
13556
+ name: "body",
13557
+ description: `Operation payload`,
13558
+ type: "Body",
13559
+ schema: update_sharepoint_site_onenote_page_content_Body
13560
+ },
13561
+ {
13562
+ name: "siteId",
13563
+ type: "Path",
13564
+ schema: z.string().describe("Path parameter: site-id")
13565
+ },
13566
+ {
13567
+ name: "onenotePageId",
13568
+ type: "Path",
13569
+ schema: z.string().describe("Path parameter: onenotePage-id")
13570
+ }
13571
+ ],
13572
+ response: z.void()
13573
+ },
13488
13574
  {
13489
13575
  method: "get",
13490
13576
  path: "/sites/:siteId/onenote/sectionGroups/:sectionGroupId/sectionGroups",
@@ -13585,6 +13671,22 @@ To list them, include system in your $select statement.`,
13585
13671
  ],
13586
13672
  response: z.void()
13587
13673
  },
13674
+ {
13675
+ method: "post",
13676
+ path: "/sites/:siteId/onenote/sectionGroups/:sectionGroupId/sections",
13677
+ alias: "create-sharepoint-site-onenote-section-group-section",
13678
+ description: `Create new navigation property to sections for sites`,
13679
+ requestFormat: "json",
13680
+ parameters: [
13681
+ {
13682
+ name: "body",
13683
+ description: `New navigation property`,
13684
+ type: "Body",
13685
+ schema: microsoft_graph_onenoteSection
13686
+ }
13687
+ ],
13688
+ response: z.void()
13689
+ },
13588
13690
  {
13589
13691
  method: "get",
13590
13692
  path: "/sites/:siteId/onenote/sections/:onenoteSectionId/pages",
@@ -13635,6 +13737,22 @@ To list them, include system in your $select statement.`,
13635
13737
  ],
13636
13738
  response: z.void()
13637
13739
  },
13740
+ {
13741
+ method: "post",
13742
+ path: "/sites/:siteId/onenote/sections/:onenoteSectionId/pages",
13743
+ alias: "create-sharepoint-site-onenote-section-page",
13744
+ description: `Create new navigation property to pages for sites`,
13745
+ requestFormat: "json",
13746
+ parameters: [
13747
+ {
13748
+ name: "body",
13749
+ description: `New navigation property`,
13750
+ type: "Body",
13751
+ schema: microsoft_graph_onenotePage
13752
+ }
13753
+ ],
13754
+ response: z.void()
13755
+ },
13638
13756
  {
13639
13757
  method: "get",
13640
13758
  path: "/sites/delta()",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@softeria/ms-365-mcp-server",
3
- "version": "0.130.0",
3
+ "version": "0.131.1",
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",
@@ -973,6 +973,78 @@
973
973
  "presets": ["onenote", "work"],
974
974
  "workScopes": ["Notes.Read"]
975
975
  },
976
+ {
977
+ "pathPattern": "/sites/{site-id}/onenote/notebooks",
978
+ "method": "post",
979
+ "toolName": "create-sharepoint-site-onenote-notebook",
980
+ "presets": ["onenote", "work"],
981
+ "workScopes": ["Notes.Create"]
982
+ },
983
+ {
984
+ "pathPattern": "/sites/{site-id}/onenote/notebooks/{notebook-id}/sections",
985
+ "method": "post",
986
+ "toolName": "create-sharepoint-site-onenote-section",
987
+ "presets": ["onenote", "work"],
988
+ "workScopes": ["Notes.Create"]
989
+ },
990
+ {
991
+ "pathPattern": "/sites/{site-id}/onenote/sectionGroups/{sectionGroup-id}/sections",
992
+ "method": "post",
993
+ "toolName": "create-sharepoint-site-onenote-section-group-section",
994
+ "presets": ["onenote", "work"],
995
+ "workScopes": ["Notes.Create"]
996
+ },
997
+ {
998
+ "pathPattern": "/sites/{site-id}/onenote/sections/{onenoteSection-id}/pages",
999
+ "method": "post",
1000
+ "toolName": "create-sharepoint-site-onenote-section-page",
1001
+ "presets": ["onenote", "work"],
1002
+ "workScopes": ["Notes.Create"],
1003
+ "contentType": "text/html",
1004
+ "llmTip": "Body must be a full HTML document (with <html><head><title>...</title></head><body>...</body></html>). Partial HTML fails silently."
1005
+ },
1006
+ {
1007
+ "pathPattern": "/sites/{site-id}/onenote/pages/{onenotePage-id}/content",
1008
+ "method": "patch",
1009
+ "toolName": "update-sharepoint-site-onenote-page-content",
1010
+ "presets": ["onenote", "work"],
1011
+ "workScopes": ["Notes.ReadWrite"],
1012
+ "requestBodySchema": {
1013
+ "type": "array",
1014
+ "description": "Array of patchContentCommand objects applied in order to the page's HTML.",
1015
+ "items": {
1016
+ "type": "object",
1017
+ "required": ["target", "action"],
1018
+ "properties": {
1019
+ "target": {
1020
+ "type": "string",
1021
+ "description": "Element to change: a data-id, the generated id, or a known name like 'body' or 'title'."
1022
+ },
1023
+ "action": {
1024
+ "type": "string",
1025
+ "enum": ["append", "insert", "prepend", "replace", "delete"],
1026
+ "description": "What to do at the target. 'delete' takes no content."
1027
+ },
1028
+ "position": {
1029
+ "type": "string",
1030
+ "enum": ["after", "before"],
1031
+ "description": "For 'insert'/'append', whether content goes after (default) or before the target's content."
1032
+ },
1033
+ "content": {
1034
+ "type": "string",
1035
+ "description": "HTML to add. Required for all actions except 'delete'."
1036
+ }
1037
+ }
1038
+ }
1039
+ }
1040
+ },
1041
+ {
1042
+ "pathPattern": "/sites/{site-id}/onenote/pages/{onenotePage-id}",
1043
+ "method": "delete",
1044
+ "toolName": "delete-sharepoint-site-onenote-page",
1045
+ "presets": ["onenote", "work"],
1046
+ "workScopes": ["Notes.ReadWrite"]
1047
+ },
976
1048
  {
977
1049
  "pathPattern": "/me/onenote/pages",
978
1050
  "method": "post",
@@ -1414,7 +1486,7 @@
1414
1486
  "toolName": "send-chat-message",
1415
1487
  "presets": ["teams", "work"],
1416
1488
  "workScopes": ["ChatMessage.Send"],
1417
- "llmTip": "Use contentType 'html' in the body — plain text contentType gets mangled by Graph API."
1489
+ "llmTip": "Use contentType 'html' in the body — plain text contentType gets mangled by Graph API. To @mention someone, put an <at id=\"0\">Name</at> tag in the html content and add a mentions array to the request body, as a sibling of the body property (not a separate top-level tool parameter): { body: { contentType: 'html', content: 'Hi <at id=\"0\">Name</at>' }, mentions: [{ id: 0, mentionText: 'Name', mentioned: { user: { id: '<aad-user-id>', displayName: 'Name', userIdentityType: 'aadUser' } } }] }. Each mention id must match its <at id> value; include userIdentityType: 'aadUser' or Graph returns 400 'value without a type name'."
1418
1490
  },
1419
1491
  {
1420
1492
  "pathPattern": "/me/joinedTeams",
@@ -1500,7 +1572,7 @@
1500
1572
  "toolName": "send-channel-message",
1501
1573
  "presets": ["teams", "work"],
1502
1574
  "workScopes": ["ChannelMessage.Send"],
1503
- "llmTip": "Use contentType 'html' in the body — plain text contentType gets mangled by Graph API."
1575
+ "llmTip": "Use contentType 'html' in the body — plain text contentType gets mangled by Graph API. To @mention someone, put an <at id=\"0\">Name</at> tag in the html content and add a mentions array to the request body, as a sibling of the body property (not a separate top-level tool parameter): { body: { contentType: 'html', content: 'Hi <at id=\"0\">Name</at>' }, mentions: [{ id: 0, mentionText: 'Name', mentioned: { user: { id: '<aad-user-id>', displayName: 'Name', userIdentityType: 'aadUser' } } }] }. Each mention id must match its <at id> value; include userIdentityType: 'aadUser' or Graph returns 400 'value without a type name'."
1504
1576
  },
1505
1577
  {
1506
1578
  "pathPattern": "/teams/{team-id}/channels/{channel-id}/messages/{chatMessage-id}/replies",
@@ -1508,7 +1580,7 @@
1508
1580
  "toolName": "reply-to-channel-message",
1509
1581
  "presets": ["teams", "work"],
1510
1582
  "workScopes": ["ChannelMessage.Send"],
1511
- "llmTip": "Use contentType 'html' in the body — plain text contentType gets mangled by Graph API."
1583
+ "llmTip": "Use contentType 'html' in the body — plain text contentType gets mangled by Graph API. To @mention someone, put an <at id=\"0\">Name</at> tag in the html content and add a mentions array to the request body, as a sibling of the body property (not a separate top-level tool parameter): { body: { contentType: 'html', content: 'Hi <at id=\"0\">Name</at>' }, mentions: [{ id: 0, mentionText: 'Name', mentioned: { user: { id: '<aad-user-id>', displayName: 'Name', userIdentityType: 'aadUser' } } }] }. Each mention id must match its <at id> value; include userIdentityType: 'aadUser' or Graph returns 400 'value without a type name'."
1512
1584
  },
1513
1585
  {
1514
1586
  "pathPattern": "/teams/{team-id}/channels/{channel-id}/messages/{chatMessage-id}/replies",
@@ -1587,7 +1659,7 @@
1587
1659
  "toolName": "reply-to-chat-message",
1588
1660
  "presets": ["teams", "work"],
1589
1661
  "workScopes": ["ChatMessage.Send"],
1590
- "llmTip": "Use contentType 'html' in the body — plain text contentType gets mangled by Graph API."
1662
+ "llmTip": "Use contentType 'html' in the body — plain text contentType gets mangled by Graph API. To @mention someone, put an <at id=\"0\">Name</at> tag in the html content and add a mentions array to the request body, as a sibling of the body property (not a separate top-level tool parameter): { body: { contentType: 'html', content: 'Hi <at id=\"0\">Name</at>' }, mentions: [{ id: 0, mentionText: 'Name', mentioned: { user: { id: '<aad-user-id>', displayName: 'Name', userIdentityType: 'aadUser' } } }] }. Each mention id must match its <at id> value; include userIdentityType: 'aadUser' or Graph returns 400 'value without a type name'."
1591
1663
  },
1592
1664
  {
1593
1665
  "pathPattern": "/chats/{chat-id}/messages/{chatMessage-id}/setReaction",