@softeria/ms-365-mcp-server 0.104.0 → 0.105.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.
@@ -2010,5 +2010,27 @@
2010
2010
  "toolName": "delete-todo-task-list",
2011
2011
  "scopes": ["Tasks.ReadWrite"],
2012
2012
  "llmTip": "Deletes a Microsoft To Do task list and ALL of its tasks (cascades). Built-in lists cannot be deleted — the API returns an error for those. Get list ids via list-todo-task-lists. Operation is irreversible."
2013
+ },
2014
+ {
2015
+ "pathPattern": "/me/onenote/pages",
2016
+ "method": "get",
2017
+ "toolName": "list-onenote-pages",
2018
+ "scopes": ["Notes.Read"],
2019
+ "llmTip": "Lists all OneNote pages across every notebook and section the user has access to — transverse alternative to walking notebooks → sections → pages. Default returns top 20 ordered by lastModifiedTime desc. Supports $search='query' for full-text search across page titles and bodies, $filter (e.g. lastModifiedTime gt 2026-01-01), $top (max 100), $select, and $expand=parentNotebook,parentSection. Use $search before bouncing through list-onenote-notebooks / list-all-onenote-sections / list-onenote-section-pages when you only have a topic in mind."
2020
+ },
2021
+ {
2022
+ "pathPattern": "/me/onenote/sectionGroups",
2023
+ "method": "get",
2024
+ "toolName": "list-onenote-section-groups",
2025
+ "scopes": ["Notes.Read"],
2026
+ "llmTip": "Lists all OneNote section groups (subfolders inside notebooks that contain their own sections and nested section groups) for the user. A section group is a folder-like container — many notebooks use them to organize sections by theme. Default sort is name asc. Supports $expand=sections,sectionGroups,parentNotebook,parentSectionGroup to traverse the full hierarchy. Pair with list-onenote-notebooks for a complete picture of the user's notebook structure."
2027
+ },
2028
+ {
2029
+ "pathPattern": "/me/onenote/notebooks/getNotebookFromWebUrl",
2030
+ "method": "post",
2031
+ "toolName": "get-onenote-notebook-from-web-url",
2032
+ "workScopes": ["Notes.Read"],
2033
+ "contentType": "application/json",
2034
+ "llmTip": "Resolves a OneNote notebook from its web URL (the link a user copies from OneNote / SharePoint / Teams). Body: { webUrl: 'https://...' }. Returns a CopyNotebookModel with the notebook's id, displayName, sectionsUrl, sectionGroupsUrl, and isShared — you can then list its sections via list-onenote-notebook-sections. Accepts user notebooks, group notebooks, and SharePoint-hosted team notebooks. Personal Microsoft accounts are not supported."
2013
2035
  }
2014
2036
  ]
@@ -3341,11 +3341,37 @@ const microsoft_graph_onenoteSectionCollectionResponse = z.object({
3341
3341
  "@odata.nextLink": z.string().nullable(),
3342
3342
  value: z.array(microsoft_graph_onenoteSection)
3343
3343
  }).partial().passthrough();
3344
+ const microsoft_graph_CopyNotebookModel = z.object({
3345
+ createdBy: z.string().nullish(),
3346
+ createdByIdentity: microsoft_graph_identitySet.optional(),
3347
+ createdTime: z.string().regex(
3348
+ /^[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])$/
3349
+ ).datetime({ offset: true }).nullish(),
3350
+ id: z.string().nullish(),
3351
+ isDefault: z.boolean().nullish(),
3352
+ isShared: z.boolean().nullish(),
3353
+ lastModifiedBy: z.string().nullish(),
3354
+ lastModifiedByIdentity: microsoft_graph_identitySet.optional(),
3355
+ lastModifiedTime: z.string().regex(
3356
+ /^[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])$/
3357
+ ).datetime({ offset: true }).nullish(),
3358
+ links: microsoft_graph_notebookLinks.optional(),
3359
+ name: z.string().nullish(),
3360
+ sectionGroupsUrl: z.string().nullish(),
3361
+ sectionsUrl: z.string().nullish(),
3362
+ self: z.string().nullish(),
3363
+ userRole: microsoft_graph_onenoteUserRole.optional()
3364
+ }).passthrough();
3344
3365
  const microsoft_graph_onenotePageCollectionResponse = z.object({
3345
3366
  "@odata.count": z.number().int().nullable(),
3346
3367
  "@odata.nextLink": z.string().nullable(),
3347
3368
  value: z.array(microsoft_graph_onenotePage)
3348
3369
  }).partial().passthrough();
3370
+ const microsoft_graph_sectionGroupCollectionResponse = z.object({
3371
+ "@odata.count": z.number().int().nullable(),
3372
+ "@odata.nextLink": z.string().nullable(),
3373
+ value: z.array(microsoft_graph_sectionGroup)
3374
+ }).partial().passthrough();
3349
3375
  const microsoft_graph_allowedLobbyAdmitterRoles = z.enum([
3350
3376
  "organizerAndCoOrganizersAndPresenters",
3351
3377
  "organizerAndCoOrganizers",
@@ -4883,7 +4909,9 @@ const schemas = {
4883
4909
  microsoft_graph_notebook,
4884
4910
  microsoft_graph_notebookCollectionResponse,
4885
4911
  microsoft_graph_onenoteSectionCollectionResponse,
4912
+ microsoft_graph_CopyNotebookModel,
4886
4913
  microsoft_graph_onenotePageCollectionResponse,
4914
+ microsoft_graph_sectionGroupCollectionResponse,
4887
4915
  microsoft_graph_allowedLobbyAdmitterRoles,
4888
4916
  microsoft_graph_onlineMeetingPresenters,
4889
4917
  microsoft_graph_meetingLiveShareOptions,
@@ -10333,6 +10361,72 @@ resource.`,
10333
10361
  ],
10334
10362
  response: z.void()
10335
10363
  },
10364
+ {
10365
+ method: "post",
10366
+ path: "/me/onenote/notebooks/getNotebookFromWebUrl",
10367
+ alias: "get-onenote-notebook-from-web-url",
10368
+ description: `Retrieve the properties and relationships of a notebook object by using its URL path. The location can be user notebooks on Microsoft 365, group notebooks, or SharePoint site-hosted team notebooks on Microsoft 365.`,
10369
+ requestFormat: "json",
10370
+ parameters: [
10371
+ {
10372
+ name: "body",
10373
+ description: `Action parameters`,
10374
+ type: "Body",
10375
+ schema: z.object({ webUrl: z.string().nullable() }).partial().passthrough()
10376
+ }
10377
+ ],
10378
+ response: z.void()
10379
+ },
10380
+ {
10381
+ method: "get",
10382
+ path: "/me/onenote/pages",
10383
+ alias: "list-onenote-pages",
10384
+ description: `Retrieve a list of page objects.`,
10385
+ requestFormat: "json",
10386
+ parameters: [
10387
+ {
10388
+ name: "$top",
10389
+ type: "Query",
10390
+ schema: z.number().int().gte(0).describe("Show only the first n items").optional()
10391
+ },
10392
+ {
10393
+ name: "$skip",
10394
+ type: "Query",
10395
+ schema: z.number().int().gte(0).describe("Skip the first n items").optional()
10396
+ },
10397
+ {
10398
+ name: "$search",
10399
+ type: "Query",
10400
+ schema: z.string().describe("Search items by search phrases").optional()
10401
+ },
10402
+ {
10403
+ name: "$filter",
10404
+ type: "Query",
10405
+ schema: z.string().describe("Filter items by property values").optional()
10406
+ },
10407
+ {
10408
+ name: "$count",
10409
+ type: "Query",
10410
+ schema: z.boolean().describe("Include count of items").optional()
10411
+ },
10412
+ {
10413
+ name: "$orderby",
10414
+ type: "Query",
10415
+ schema: z.array(z.string()).describe("Order items by property values").optional()
10416
+ },
10417
+ {
10418
+ name: "$select",
10419
+ type: "Query",
10420
+ schema: z.array(z.string()).describe("Select properties to be returned").optional()
10421
+ },
10422
+ {
10423
+ name: "$expand",
10424
+ type: "Query",
10425
+ schema: z.array(z.string()).describe("Expand related entities").optional()
10426
+ }
10427
+ ],
10428
+ response: z.void()
10429
+ },
10336
10430
  {
10337
10431
  method: "post",
10338
10432
  path: "/me/onenote/pages",
@@ -10372,6 +10466,56 @@ resource.`,
10372
10466
  requestFormat: "json",
10373
10467
  response: z.void()
10374
10468
  },
10469
+ {
10470
+ method: "get",
10471
+ path: "/me/onenote/sectionGroups",
10472
+ alias: "list-onenote-section-groups",
10473
+ description: `Retrieve a list of sectionGroup objects.`,
10474
+ requestFormat: "json",
10475
+ parameters: [
10476
+ {
10477
+ name: "$top",
10478
+ type: "Query",
10479
+ schema: z.number().int().gte(0).describe("Show only the first n items").optional()
10480
+ },
10481
+ {
10482
+ name: "$skip",
10483
+ type: "Query",
10484
+ schema: z.number().int().gte(0).describe("Skip the first n items").optional()
10485
+ },
10486
+ {
10487
+ name: "$search",
10488
+ type: "Query",
10489
+ schema: z.string().describe("Search items by search phrases").optional()
10490
+ },
10491
+ {
10492
+ name: "$filter",
10493
+ type: "Query",
10494
+ schema: z.string().describe("Filter items by property values").optional()
10495
+ },
10496
+ {
10497
+ name: "$count",
10498
+ type: "Query",
10499
+ schema: z.boolean().describe("Include count of items").optional()
10500
+ },
10501
+ {
10502
+ name: "$orderby",
10503
+ type: "Query",
10504
+ schema: z.array(z.string()).describe("Order items by property values").optional()
10505
+ },
10506
+ {
10507
+ name: "$select",
10508
+ type: "Query",
10509
+ schema: z.array(z.string()).describe("Select properties to be returned").optional()
10510
+ },
10511
+ {
10512
+ name: "$expand",
10513
+ type: "Query",
10514
+ schema: z.array(z.string()).describe("Expand related entities").optional()
10515
+ }
10516
+ ],
10517
+ response: z.void()
10518
+ },
10375
10519
  {
10376
10520
  method: "get",
10377
10521
  path: "/me/onenote/sections",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@softeria/ms-365-mcp-server",
3
- "version": "0.104.0",
3
+ "version": "0.105.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",
@@ -2010,5 +2010,27 @@
2010
2010
  "toolName": "delete-todo-task-list",
2011
2011
  "scopes": ["Tasks.ReadWrite"],
2012
2012
  "llmTip": "Deletes a Microsoft To Do task list and ALL of its tasks (cascades). Built-in lists cannot be deleted — the API returns an error for those. Get list ids via list-todo-task-lists. Operation is irreversible."
2013
+ },
2014
+ {
2015
+ "pathPattern": "/me/onenote/pages",
2016
+ "method": "get",
2017
+ "toolName": "list-onenote-pages",
2018
+ "scopes": ["Notes.Read"],
2019
+ "llmTip": "Lists all OneNote pages across every notebook and section the user has access to — transverse alternative to walking notebooks → sections → pages. Default returns top 20 ordered by lastModifiedTime desc. Supports $search='query' for full-text search across page titles and bodies, $filter (e.g. lastModifiedTime gt 2026-01-01), $top (max 100), $select, and $expand=parentNotebook,parentSection. Use $search before bouncing through list-onenote-notebooks / list-all-onenote-sections / list-onenote-section-pages when you only have a topic in mind."
2020
+ },
2021
+ {
2022
+ "pathPattern": "/me/onenote/sectionGroups",
2023
+ "method": "get",
2024
+ "toolName": "list-onenote-section-groups",
2025
+ "scopes": ["Notes.Read"],
2026
+ "llmTip": "Lists all OneNote section groups (subfolders inside notebooks that contain their own sections and nested section groups) for the user. A section group is a folder-like container — many notebooks use them to organize sections by theme. Default sort is name asc. Supports $expand=sections,sectionGroups,parentNotebook,parentSectionGroup to traverse the full hierarchy. Pair with list-onenote-notebooks for a complete picture of the user's notebook structure."
2027
+ },
2028
+ {
2029
+ "pathPattern": "/me/onenote/notebooks/getNotebookFromWebUrl",
2030
+ "method": "post",
2031
+ "toolName": "get-onenote-notebook-from-web-url",
2032
+ "workScopes": ["Notes.Read"],
2033
+ "contentType": "application/json",
2034
+ "llmTip": "Resolves a OneNote notebook from its web URL (the link a user copies from OneNote / SharePoint / Teams). Body: { webUrl: 'https://...' }. Returns a CopyNotebookModel with the notebook's id, displayName, sectionsUrl, sectionGroupsUrl, and isShared — you can then list its sections via list-onenote-notebook-sections. Accepts user notebooks, group notebooks, and SharePoint-hosted team notebooks. Personal Microsoft accounts are not supported."
2013
2035
  }
2014
2036
  ]