@softeria/ms-365-mcp-server 0.101.0 → 0.102.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.
@@ -1925,5 +1925,19 @@
1925
1925
  "toolName": "delete-my-calendar-permission",
1926
1926
  "scopes": ["Calendars.ReadWrite"],
1927
1927
  "llmTip": "Revokes a calendar share or delegate access. Get the permission id via list-my-calendar-permissions. Permissions where isRemovable=false (e.g. the implicit 'My Organization' default) cannot be deleted — Graph returns an error."
1928
+ },
1929
+ {
1930
+ "pathPattern": "/me/contactFolders/{contactFolder-id}/childFolders",
1931
+ "method": "get",
1932
+ "toolName": "list-contact-folder-child-folders",
1933
+ "scopes": ["Contacts.Read"],
1934
+ "llmTip": "Lists immediate sub-folders under a given contact folder. Returns id, displayName, parentFolderId. Use list-contact-folders to discover top-level folders, then this tool to traverse one level deeper. Supports $filter, $top, $orderby. Note: contact folders are typically a flat list in Outlook clients, but Graph allows nesting via this endpoint."
1935
+ },
1936
+ {
1937
+ "pathPattern": "/me/contactFolders/{contactFolder-id}/childFolders",
1938
+ "method": "post",
1939
+ "toolName": "create-contact-child-folder",
1940
+ "scopes": ["Contacts.ReadWrite"],
1941
+ "llmTip": "Creates a sub-folder under an existing contact folder. Body: { displayName: 'Sub-folder name' }. Names must be unique among siblings under the same parent. Use list-contact-folders to discover the parent id. The returned contactFolder has its own id usable with update-contact-folder, delete-contact-folder, list-contact-folder-contacts, and create-contact-in-folder — contactFolder ids are mailbox-unique regardless of nesting depth."
1928
1942
  }
1929
1943
  ]
@@ -2040,6 +2040,28 @@ const microsoft_graph_contact = z.object({
2040
2040
  imAddresses: z.array(z.string().nullable()).describe("The contact's instant messaging (IM) addresses.").optional(),
2041
2041
  initials: z.string().describe("The contact's initials.").nullish()
2042
2042
  }).passthrough().passthrough();
2043
+ const microsoft_graph_contactFolder = z.lazy(
2044
+ () => z.object({
2045
+ id: z.string().describe("The unique identifier for an entity. Read-only.").optional(),
2046
+ displayName: z.string().describe("The folder's display name.").nullish(),
2047
+ parentFolderId: z.string().describe("The ID of the folder's parent folder.").nullish(),
2048
+ childFolders: z.array(microsoft_graph_contactFolder).describe(
2049
+ "The collection of child folders in the folder. Navigation property. Read-only. Nullable."
2050
+ ).optional(),
2051
+ contacts: z.array(microsoft_graph_contact).describe("The contacts in the folder. Navigation property. Read-only. Nullable.").optional(),
2052
+ multiValueExtendedProperties: z.array(microsoft_graph_multiValueLegacyExtendedProperty).describe(
2053
+ "The collection of multi-value extended properties defined for the contactFolder. Read-only. Nullable."
2054
+ ).optional(),
2055
+ singleValueExtendedProperties: z.array(microsoft_graph_singleValueLegacyExtendedProperty).describe(
2056
+ "The collection of single-value extended properties defined for the contactFolder. Read-only. Nullable."
2057
+ ).optional()
2058
+ }).passthrough()
2059
+ );
2060
+ const microsoft_graph_contactFolderCollectionResponse = z.object({
2061
+ "@odata.count": z.number().int().nullable(),
2062
+ "@odata.nextLink": z.string().nullable(),
2063
+ value: z.array(microsoft_graph_contactFolder)
2064
+ }).partial().passthrough();
2043
2065
  const microsoft_graph_contactCollectionResponse = z.object({
2044
2066
  "@odata.count": z.number().int().nullable(),
2045
2067
  "@odata.nextLink": z.string().nullable(),
@@ -4736,6 +4758,8 @@ const schemas = {
4736
4758
  microsoft_graph_calendarCollectionResponse,
4737
4759
  microsoft_graph_chatCollectionResponse,
4738
4760
  microsoft_graph_contact,
4761
+ microsoft_graph_contactFolder,
4762
+ microsoft_graph_contactFolderCollectionResponse,
4739
4763
  microsoft_graph_contactCollectionResponse,
4740
4764
  microsoft_graph_labelActionSource,
4741
4765
  microsoft_graph_usageRights,
@@ -7899,6 +7923,72 @@ or from some other calendar of the user.`,
7899
7923
  ],
7900
7924
  response: z.void()
7901
7925
  },
7926
+ {
7927
+ method: "get",
7928
+ path: "/me/contactFolders/:contactFolderId/childFolders",
7929
+ alias: "list-contact-folder-child-folders",
7930
+ description: `Get a collection of child folders under the specified contact folder.`,
7931
+ requestFormat: "json",
7932
+ parameters: [
7933
+ {
7934
+ name: "$top",
7935
+ type: "Query",
7936
+ schema: z.number().int().gte(0).describe("Show only the first n items").optional()
7937
+ },
7938
+ {
7939
+ name: "$skip",
7940
+ type: "Query",
7941
+ schema: z.number().int().gte(0).describe("Skip the first n items").optional()
7942
+ },
7943
+ {
7944
+ name: "$search",
7945
+ type: "Query",
7946
+ schema: z.string().describe("Search items by search phrases").optional()
7947
+ },
7948
+ {
7949
+ name: "$filter",
7950
+ type: "Query",
7951
+ schema: z.string().describe("Filter items by property values").optional()
7952
+ },
7953
+ {
7954
+ name: "$count",
7955
+ type: "Query",
7956
+ schema: z.boolean().describe("Include count of items").optional()
7957
+ },
7958
+ {
7959
+ name: "$orderby",
7960
+ type: "Query",
7961
+ schema: z.array(z.string()).describe("Order items by property values").optional()
7962
+ },
7963
+ {
7964
+ name: "$select",
7965
+ type: "Query",
7966
+ schema: z.array(z.string()).describe("Select properties to be returned").optional()
7967
+ },
7968
+ {
7969
+ name: "$expand",
7970
+ type: "Query",
7971
+ schema: z.array(z.string()).describe("Expand related entities").optional()
7972
+ }
7973
+ ],
7974
+ response: z.void()
7975
+ },
7976
+ {
7977
+ method: "post",
7978
+ path: "/me/contactFolders/:contactFolderId/childFolders",
7979
+ alias: "create-contact-child-folder",
7980
+ description: `Create a new contactFolder as a child of a specified folder. You can also create a new contactFolder under the user's default contact folder.`,
7981
+ requestFormat: "json",
7982
+ parameters: [
7983
+ {
7984
+ name: "body",
7985
+ description: `New navigation property`,
7986
+ type: "Body",
7987
+ schema: microsoft_graph_contactFolder
7988
+ }
7989
+ ],
7990
+ response: z.void()
7991
+ },
7902
7992
  {
7903
7993
  method: "get",
7904
7994
  path: "/me/contacts",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@softeria/ms-365-mcp-server",
3
- "version": "0.101.0",
3
+ "version": "0.102.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",
@@ -1925,5 +1925,19 @@
1925
1925
  "toolName": "delete-my-calendar-permission",
1926
1926
  "scopes": ["Calendars.ReadWrite"],
1927
1927
  "llmTip": "Revokes a calendar share or delegate access. Get the permission id via list-my-calendar-permissions. Permissions where isRemovable=false (e.g. the implicit 'My Organization' default) cannot be deleted — Graph returns an error."
1928
+ },
1929
+ {
1930
+ "pathPattern": "/me/contactFolders/{contactFolder-id}/childFolders",
1931
+ "method": "get",
1932
+ "toolName": "list-contact-folder-child-folders",
1933
+ "scopes": ["Contacts.Read"],
1934
+ "llmTip": "Lists immediate sub-folders under a given contact folder. Returns id, displayName, parentFolderId. Use list-contact-folders to discover top-level folders, then this tool to traverse one level deeper. Supports $filter, $top, $orderby. Note: contact folders are typically a flat list in Outlook clients, but Graph allows nesting via this endpoint."
1935
+ },
1936
+ {
1937
+ "pathPattern": "/me/contactFolders/{contactFolder-id}/childFolders",
1938
+ "method": "post",
1939
+ "toolName": "create-contact-child-folder",
1940
+ "scopes": ["Contacts.ReadWrite"],
1941
+ "llmTip": "Creates a sub-folder under an existing contact folder. Body: { displayName: 'Sub-folder name' }. Names must be unique among siblings under the same parent. Use list-contact-folders to discover the parent id. The returned contactFolder has its own id usable with update-contact-folder, delete-contact-folder, list-contact-folder-contacts, and create-contact-in-folder — contactFolder ids are mailbox-unique regardless of nesting depth."
1928
1942
  }
1929
1943
  ]