@softeria/ms-365-mcp-server 0.83.0 → 0.85.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.
- package/dist/endpoints.json +56 -0
- package/dist/generated/client.js +284 -0
- package/package.json +1 -1
- package/src/endpoints.json +56 -0
package/dist/endpoints.json
CHANGED
|
@@ -1491,5 +1491,61 @@
|
|
|
1491
1491
|
"toolName": "list-calendar-view-delta",
|
|
1492
1492
|
"scopes": ["Calendars.Read"],
|
|
1493
1493
|
"llmTip": "Incremental sync of events within a time window. Required query params on first call: startDateTime, endDateTime (ISO 8601). Returns events in the window plus @odata.deltaLink; subsequent calls with that link return only changes. Expands recurring events to individual occurrences (unlike list-calendar-events-delta which returns the series master). Use this for calendar UIs showing a week/month view."
|
|
1494
|
+
},
|
|
1495
|
+
{
|
|
1496
|
+
"pathPattern": "/groups",
|
|
1497
|
+
"method": "post",
|
|
1498
|
+
"toolName": "create-group",
|
|
1499
|
+
"workScopes": ["Group.ReadWrite.All"],
|
|
1500
|
+
"llmTip": "Creates a new group. Required body: { displayName, mailEnabled (bool), mailNickname (no spaces), securityEnabled (bool) }. For Microsoft 365 group: mailEnabled=true, securityEnabled=false, groupTypes=['Unified']. For security group: mailEnabled=false, securityEnabled=true, groupTypes=[]. Optional: description, visibility ('Public' or 'Private'), owners@odata.bind and members@odata.bind arrays with user directoryObject URLs."
|
|
1501
|
+
},
|
|
1502
|
+
{
|
|
1503
|
+
"pathPattern": "/groups/{group-id}",
|
|
1504
|
+
"method": "patch",
|
|
1505
|
+
"toolName": "update-group",
|
|
1506
|
+
"workScopes": ["Group.ReadWrite.All"],
|
|
1507
|
+
"llmTip": "Updates group properties. Body can include: displayName, description, visibility ('Public' or 'Private'), mailNickname. Use get-group to verify current values before updating."
|
|
1508
|
+
},
|
|
1509
|
+
{
|
|
1510
|
+
"pathPattern": "/groups/{group-id}",
|
|
1511
|
+
"method": "delete",
|
|
1512
|
+
"toolName": "delete-group",
|
|
1513
|
+
"workScopes": ["Group.ReadWrite.All"],
|
|
1514
|
+
"llmTip": "Permanently deletes a group and all its associated resources (conversations, files, calendar, planner). This action is irreversible. Use get-group to verify the group before deleting."
|
|
1515
|
+
},
|
|
1516
|
+
{
|
|
1517
|
+
"pathPattern": "/groups/{group-id}/members/$ref",
|
|
1518
|
+
"method": "post",
|
|
1519
|
+
"toolName": "add-group-member",
|
|
1520
|
+
"workScopes": ["GroupMember.ReadWrite.All"],
|
|
1521
|
+
"llmTip": "Adds a member to a group. Body: { '@odata.id': 'https://graph.microsoft.com/v1.0/directoryObjects/{user-id}' }. Use list-users to find the user ID first. The user must not already be a member."
|
|
1522
|
+
},
|
|
1523
|
+
{
|
|
1524
|
+
"pathPattern": "/groups/{group-id}/members/{directoryObject-id}/$ref",
|
|
1525
|
+
"method": "delete",
|
|
1526
|
+
"toolName": "remove-group-member",
|
|
1527
|
+
"workScopes": ["GroupMember.ReadWrite.All"],
|
|
1528
|
+
"llmTip": "Removes a member from a group. Use list-group-members to find the member's directory object ID first. Cannot remove the last owner of a group."
|
|
1529
|
+
},
|
|
1530
|
+
{
|
|
1531
|
+
"pathPattern": "/groups/{group-id}/owners/$ref",
|
|
1532
|
+
"method": "post",
|
|
1533
|
+
"toolName": "add-group-owner",
|
|
1534
|
+
"workScopes": ["Group.ReadWrite.All"],
|
|
1535
|
+
"llmTip": "Adds an owner to a group. Body: { '@odata.id': 'https://graph.microsoft.com/v1.0/users/{user-id}' }. Use list-users to find the user ID. A group can have a maximum of 100 owners."
|
|
1536
|
+
},
|
|
1537
|
+
{
|
|
1538
|
+
"pathPattern": "/groups/{group-id}/owners/{directoryObject-id}/$ref",
|
|
1539
|
+
"method": "delete",
|
|
1540
|
+
"toolName": "remove-group-owner",
|
|
1541
|
+
"workScopes": ["Group.ReadWrite.All"],
|
|
1542
|
+
"llmTip": "Removes an owner from a group. A group must have at least one owner — this call fails if you try to remove the last owner. Use list-group-owners to find the owner's ID."
|
|
1543
|
+
},
|
|
1544
|
+
{
|
|
1545
|
+
"pathPattern": "/chats",
|
|
1546
|
+
"method": "post",
|
|
1547
|
+
"toolName": "create-chat",
|
|
1548
|
+
"workScopes": ["Chat.Create", "Chat.ReadWrite"],
|
|
1549
|
+
"llmTip": "Creates a new 1:1 or group Teams chat. Body: { chatType ('oneOnOne' or 'group'), topic (optional, group only), members: [{ '@odata.type': '#microsoft.graph.aadUserConversationMember', roles: ['owner' | 'guest'], 'user@odata.bind': 'https://graph.microsoft.com/v1.0/users({id})' }] }. A oneOnOne chat requires exactly 2 members (self + other), both with role 'owner'. For group chats, include all participants. The signed-in user must be one of the members. Returns the created chat with its id — use that id with send-chat-message, list-chat-members, etc."
|
|
1494
1550
|
}
|
|
1495
1551
|
]
|
package/dist/generated/client.js
CHANGED
|
@@ -1578,6 +1578,7 @@ const microsoft_graph_directoryObjectCollectionResponse = z.object({
|
|
|
1578
1578
|
"@odata.nextLink": z.string().nullable(),
|
|
1579
1579
|
value: z.array(microsoft_graph_directoryObject)
|
|
1580
1580
|
}).partial().passthrough();
|
|
1581
|
+
const ReferenceCreate = z.record(z.object({}).partial().passthrough());
|
|
1581
1582
|
const microsoft_graph_conversationThreadCollectionResponse = z.object({
|
|
1582
1583
|
"@odata.count": z.number().int().nullable(),
|
|
1583
1584
|
"@odata.nextLink": z.string().nullable(),
|
|
@@ -4464,6 +4465,7 @@ const schemas = {
|
|
|
4464
4465
|
microsoft_graph_conversationCollectionResponse,
|
|
4465
4466
|
microsoft_graph_directoryObject,
|
|
4466
4467
|
microsoft_graph_directoryObjectCollectionResponse,
|
|
4468
|
+
ReferenceCreate,
|
|
4467
4469
|
microsoft_graph_conversationThreadCollectionResponse,
|
|
4468
4470
|
reply_to_group_thread_Body,
|
|
4469
4471
|
get_schedule_Body,
|
|
@@ -4742,6 +4744,22 @@ const schemas = {
|
|
|
4742
4744
|
microsoft_graph_userCollectionResponse
|
|
4743
4745
|
};
|
|
4744
4746
|
const endpoints = makeApi([
|
|
4747
|
+
{
|
|
4748
|
+
method: "post",
|
|
4749
|
+
path: "/chats",
|
|
4750
|
+
alias: "create-chat",
|
|
4751
|
+
description: `Create a new chat object.`,
|
|
4752
|
+
requestFormat: "json",
|
|
4753
|
+
parameters: [
|
|
4754
|
+
{
|
|
4755
|
+
name: "body",
|
|
4756
|
+
description: `New entity`,
|
|
4757
|
+
type: "Body",
|
|
4758
|
+
schema: microsoft_graph_chat
|
|
4759
|
+
}
|
|
4760
|
+
],
|
|
4761
|
+
response: z.void()
|
|
4762
|
+
},
|
|
4745
4763
|
{
|
|
4746
4764
|
method: "get",
|
|
4747
4765
|
path: "/chats/:chatId",
|
|
@@ -5940,6 +5958,100 @@ You can search within a folder hierarchy, a whole drive, or files shared with th
|
|
|
5940
5958
|
],
|
|
5941
5959
|
response: z.void()
|
|
5942
5960
|
},
|
|
5961
|
+
{
|
|
5962
|
+
method: "post",
|
|
5963
|
+
path: "/groups",
|
|
5964
|
+
alias: "create-group",
|
|
5965
|
+
description: `Create a new group as specified in the request body. You can create the following types of groups: This operation returns by default only a subset of the properties for each group. These default properties are noted in the Properties section. To get properties that are not returned by default, do a GET operation and specify the properties in a $select OData query option.`,
|
|
5966
|
+
requestFormat: "json",
|
|
5967
|
+
parameters: [
|
|
5968
|
+
{
|
|
5969
|
+
name: "body",
|
|
5970
|
+
description: `New entity`,
|
|
5971
|
+
type: "Body",
|
|
5972
|
+
schema: z.object({
|
|
5973
|
+
id: z.string().describe("The unique identifier for an entity. Read-only.").optional(),
|
|
5974
|
+
displayName: z.string().describe(
|
|
5975
|
+
"The display name for the group. This property is required when a group is created and can't be cleared during updates. Maximum length is 256 characters. Returned by default. Supports $filter (eq, ne, not, ge, le, in, startsWith, and eq on null values), $search, and $orderby."
|
|
5976
|
+
).nullish(),
|
|
5977
|
+
description: z.string().describe(
|
|
5978
|
+
"An optional description for the group. Returned by default. Supports $filter (eq, ne, not, ge, le, startsWith) and $search."
|
|
5979
|
+
).nullish(),
|
|
5980
|
+
createdDateTime: z.string().regex(
|
|
5981
|
+
/^[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])$/
|
|
5982
|
+
).datetime({ offset: true }).describe(
|
|
5983
|
+
"Timestamp of when the group was created. The value can't be modified and is automatically populated when the group is created. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on January 1, 2014 is 2014-01-01T00:00:00Z. Returned by default. Read-only."
|
|
5984
|
+
).nullish(),
|
|
5985
|
+
deletedDateTime: z.string().regex(
|
|
5986
|
+
/^[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])$/
|
|
5987
|
+
).datetime({ offset: true }).describe(
|
|
5988
|
+
"Date and time when this object was deleted. Always null when the object hasn't been deleted."
|
|
5989
|
+
).nullish(),
|
|
5990
|
+
allowExternalSenders: z.boolean().describe(
|
|
5991
|
+
"Indicates if people external to the organization can send messages to the group. The default value is false. Returned only on $select. Supported only on the Get group API (GET /groups/{ID})."
|
|
5992
|
+
).nullish(),
|
|
5993
|
+
assignedLabels: z.array(microsoft_graph_assignedLabel).describe(
|
|
5994
|
+
"The list of sensitivity label pairs (label ID, label name) associated with a Microsoft 365 group. Returned only on $select. This property can be updated only in delegated scenarios where the caller requires both the Microsoft Graph permission and a supported administrator role."
|
|
5995
|
+
).optional(),
|
|
5996
|
+
assignedLicenses: z.array(microsoft_graph_assignedLicense).describe(
|
|
5997
|
+
"The licenses that are assigned to the group. Returned only on $select. Supports $filter (eq). Read-only."
|
|
5998
|
+
).optional(),
|
|
5999
|
+
autoSubscribeNewMembers: z.boolean().describe(
|
|
6000
|
+
"Indicates if new members added to the group are autosubscribed to receive email notifications. You can set this property in a PATCH request for the group; don't set it in the initial POST request that creates the group. Default value is false. Returned only on $select. Supported only on the Get group API (GET /groups/{ID})."
|
|
6001
|
+
).nullish(),
|
|
6002
|
+
classification: z.string().describe(
|
|
6003
|
+
"Describes a classification for the group (such as low, medium, or high business impact). Valid values for this property are defined by creating a ClassificationList setting value, based on the template definition.Returned by default. Supports $filter (eq, ne, not, ge, le, startsWith)."
|
|
6004
|
+
).nullish(),
|
|
6005
|
+
expirationDateTime: z.string().regex(
|
|
6006
|
+
/^[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])$/
|
|
6007
|
+
).datetime({ offset: true }).describe(
|
|
6008
|
+
"Timestamp of when the group is set to expire. It's null for security groups, but for Microsoft 365 groups, it represents when the group is set to expire as defined in the groupLifecyclePolicy. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC. For example, midnight UTC on January 1, 2014 is 2014-01-01T00:00:00Z. Returned by default. Supports $filter (eq, ne, not, ge, le, in). Read-only."
|
|
6009
|
+
).nullish(),
|
|
6010
|
+
groupTypes: z.array(z.string()).describe(
|
|
6011
|
+
"Specifies the group type and its membership. If the collection contains Unified, the group is a Microsoft 365 group; otherwise, it's either a security group or a distribution group. For details, see groups overview.If the collection includes DynamicMembership, the group has dynamic membership; otherwise, membership is static. Returned by default. Supports $filter (eq, not)."
|
|
6012
|
+
).optional(),
|
|
6013
|
+
hasMembersWithLicenseErrors: z.boolean().describe(
|
|
6014
|
+
"Indicates whether there are members in this group that have license errors from its group-based license assignment. This property is never returned on a GET operation. You can use it as a $filter argument to get groups that have members with license errors (that is, filter for this property being true). See an example. Supports $filter (eq)."
|
|
6015
|
+
).nullish(),
|
|
6016
|
+
hideFromAddressLists: z.boolean().describe(
|
|
6017
|
+
"True if the group isn't displayed in certain parts of the Outlook UI: the Address Book, address lists for selecting message recipients, and the Browse Groups dialog for searching groups; otherwise, false. The default value is false. Returned only on $select. Supported only on the Get group API (GET /groups/{ID})."
|
|
6018
|
+
).nullish(),
|
|
6019
|
+
hideFromOutlookClients: z.boolean().describe(
|
|
6020
|
+
"True if the group isn't displayed in Outlook clients, such as Outlook for Windows and Outlook on the web; otherwise, false. The default value is false. Returned only on $select. Supported only on the Get group API (GET /groups/{ID})."
|
|
6021
|
+
).nullish(),
|
|
6022
|
+
isArchived: z.boolean().describe(
|
|
6023
|
+
"When a group is associated with a team, this property determines whether the team is in read-only mode.To read this property, use the /group/{groupId}/team endpoint or the Get team API. To update this property, use the archiveTeam and unarchiveTeam APIs."
|
|
6024
|
+
).nullish(),
|
|
6025
|
+
isAssignableToRole: z.boolean().describe(
|
|
6026
|
+
"Indicates whether this group can be assigned to a Microsoft Entra role. Optional. This property can only be set while creating the group and is immutable. If set to true, the securityEnabled property must also be set to true, visibility must be Hidden, and the group can't be a dynamic group (that is, groupTypes can't contain DynamicMembership). Only callers with at least the Privileged Role Administrator role can set this property. The caller must also be assigned the RoleManagement.ReadWrite.Directory permission to set this property or update the membership of such groups. For more, see Using a group to manage Microsoft Entra role assignmentsUsing this feature requires a Microsoft Entra ID P1 license. Returned by default. Supports $filter (eq, ne, not)."
|
|
6027
|
+
).nullish(),
|
|
6028
|
+
isManagementRestricted: z.boolean().describe(
|
|
6029
|
+
"Indicates whether the group is a member of a restricted management administrative unit. If not set, the default value is null and the default behavior is false. Read-only. To manage a group member of a restricted management administrative unit, the administrator or calling app must be assigned a Microsoft Entra role at the scope of the restricted management administrative unit. Returned only on $select."
|
|
6030
|
+
).nullish(),
|
|
6031
|
+
isSubscribedByMail: z.boolean().describe(
|
|
6032
|
+
"Indicates whether the signed-in user is subscribed to receive email conversations. The default value is true. Returned only on $select. Supported only on the Get group API (GET /groups/{ID})."
|
|
6033
|
+
).nullish(),
|
|
6034
|
+
licenseProcessingState: microsoft_graph_licenseProcessingState.optional(),
|
|
6035
|
+
mail: z.string().describe(
|
|
6036
|
+
"The SMTP address for the group, for example, 'serviceadmins@contoso.com'. Returned by default. Read-only. Supports $filter (eq, ne, not, ge, le, in, startsWith, and eq on null values)."
|
|
6037
|
+
).nullish(),
|
|
6038
|
+
mailEnabled: z.boolean().describe(
|
|
6039
|
+
"Specifies whether the group is mail-enabled. Required. Returned by default. Supports $filter (eq, ne, not)."
|
|
6040
|
+
).nullish(),
|
|
6041
|
+
mailNickname: z.string().describe(
|
|
6042
|
+
"The mail alias for the group, unique for Microsoft 365 groups in the organization. Maximum length is 64 characters. This property can contain only characters in the ASCII character set 0 - 127 except the following characters: @ () / [] ' ; : <> , SPACE. Required. Returned by default. Supports $filter (eq, ne, not, ge, le, in, startsWith, and eq on null values)."
|
|
6043
|
+
).nullish(),
|
|
6044
|
+
membershipRule: z.string().describe(
|
|
6045
|
+
"The rule that determines members for this group if the group is a dynamic group (groupTypes contains DynamicMembership). For more information about the syntax of the membership rule, see Membership Rules syntax. Returned by default. Supports $filter (eq, ne, not, ge, le, startsWith)."
|
|
6046
|
+
).nullish(),
|
|
6047
|
+
membershipRuleProcessingState: z.string().describe(
|
|
6048
|
+
"Indicates whether the dynamic membership processing is on or paused. Possible values are On or Paused. Returned by default. Supports $filter (eq, ne, not, in)."
|
|
6049
|
+
).nullish()
|
|
6050
|
+
}).passthrough().passthrough()
|
|
6051
|
+
}
|
|
6052
|
+
],
|
|
6053
|
+
response: z.void()
|
|
6054
|
+
},
|
|
5943
6055
|
{
|
|
5944
6056
|
method: "get",
|
|
5945
6057
|
path: "/groups/:groupId",
|
|
@@ -5960,6 +6072,116 @@ You can search within a folder hierarchy, a whole drive, or files shared with th
|
|
|
5960
6072
|
],
|
|
5961
6073
|
response: z.void()
|
|
5962
6074
|
},
|
|
6075
|
+
{
|
|
6076
|
+
method: "patch",
|
|
6077
|
+
path: "/groups/:groupId",
|
|
6078
|
+
alias: "update-group",
|
|
6079
|
+
description: `Create a new group object if it doesn't exist, or update the properties of an existing group object.
|
|
6080
|
+
You can create or update the following types of group: By default, this operation returns only a subset of the properties for each group. For a list of properties that are returned by default, see the Properties section of the group resource. To get properties that are not returned by default, do a GET operation and specify the properties in a $select OData query option.`,
|
|
6081
|
+
requestFormat: "json",
|
|
6082
|
+
parameters: [
|
|
6083
|
+
{
|
|
6084
|
+
name: "body",
|
|
6085
|
+
description: `New property values`,
|
|
6086
|
+
type: "Body",
|
|
6087
|
+
schema: z.object({
|
|
6088
|
+
id: z.string().describe("The unique identifier for an entity. Read-only.").optional(),
|
|
6089
|
+
displayName: z.string().describe(
|
|
6090
|
+
"The display name for the group. This property is required when a group is created and can't be cleared during updates. Maximum length is 256 characters. Returned by default. Supports $filter (eq, ne, not, ge, le, in, startsWith, and eq on null values), $search, and $orderby."
|
|
6091
|
+
).nullish(),
|
|
6092
|
+
description: z.string().describe(
|
|
6093
|
+
"An optional description for the group. Returned by default. Supports $filter (eq, ne, not, ge, le, startsWith) and $search."
|
|
6094
|
+
).nullish(),
|
|
6095
|
+
createdDateTime: z.string().regex(
|
|
6096
|
+
/^[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])$/
|
|
6097
|
+
).datetime({ offset: true }).describe(
|
|
6098
|
+
"Timestamp of when the group was created. The value can't be modified and is automatically populated when the group is created. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on January 1, 2014 is 2014-01-01T00:00:00Z. Returned by default. Read-only."
|
|
6099
|
+
).nullish(),
|
|
6100
|
+
deletedDateTime: z.string().regex(
|
|
6101
|
+
/^[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])$/
|
|
6102
|
+
).datetime({ offset: true }).describe(
|
|
6103
|
+
"Date and time when this object was deleted. Always null when the object hasn't been deleted."
|
|
6104
|
+
).nullish(),
|
|
6105
|
+
allowExternalSenders: z.boolean().describe(
|
|
6106
|
+
"Indicates if people external to the organization can send messages to the group. The default value is false. Returned only on $select. Supported only on the Get group API (GET /groups/{ID})."
|
|
6107
|
+
).nullish(),
|
|
6108
|
+
assignedLabels: z.array(microsoft_graph_assignedLabel).describe(
|
|
6109
|
+
"The list of sensitivity label pairs (label ID, label name) associated with a Microsoft 365 group. Returned only on $select. This property can be updated only in delegated scenarios where the caller requires both the Microsoft Graph permission and a supported administrator role."
|
|
6110
|
+
).optional(),
|
|
6111
|
+
assignedLicenses: z.array(microsoft_graph_assignedLicense).describe(
|
|
6112
|
+
"The licenses that are assigned to the group. Returned only on $select. Supports $filter (eq). Read-only."
|
|
6113
|
+
).optional(),
|
|
6114
|
+
autoSubscribeNewMembers: z.boolean().describe(
|
|
6115
|
+
"Indicates if new members added to the group are autosubscribed to receive email notifications. You can set this property in a PATCH request for the group; don't set it in the initial POST request that creates the group. Default value is false. Returned only on $select. Supported only on the Get group API (GET /groups/{ID})."
|
|
6116
|
+
).nullish(),
|
|
6117
|
+
classification: z.string().describe(
|
|
6118
|
+
"Describes a classification for the group (such as low, medium, or high business impact). Valid values for this property are defined by creating a ClassificationList setting value, based on the template definition.Returned by default. Supports $filter (eq, ne, not, ge, le, startsWith)."
|
|
6119
|
+
).nullish(),
|
|
6120
|
+
expirationDateTime: z.string().regex(
|
|
6121
|
+
/^[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])$/
|
|
6122
|
+
).datetime({ offset: true }).describe(
|
|
6123
|
+
"Timestamp of when the group is set to expire. It's null for security groups, but for Microsoft 365 groups, it represents when the group is set to expire as defined in the groupLifecyclePolicy. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC. For example, midnight UTC on January 1, 2014 is 2014-01-01T00:00:00Z. Returned by default. Supports $filter (eq, ne, not, ge, le, in). Read-only."
|
|
6124
|
+
).nullish(),
|
|
6125
|
+
groupTypes: z.array(z.string()).describe(
|
|
6126
|
+
"Specifies the group type and its membership. If the collection contains Unified, the group is a Microsoft 365 group; otherwise, it's either a security group or a distribution group. For details, see groups overview.If the collection includes DynamicMembership, the group has dynamic membership; otherwise, membership is static. Returned by default. Supports $filter (eq, not)."
|
|
6127
|
+
).optional(),
|
|
6128
|
+
hasMembersWithLicenseErrors: z.boolean().describe(
|
|
6129
|
+
"Indicates whether there are members in this group that have license errors from its group-based license assignment. This property is never returned on a GET operation. You can use it as a $filter argument to get groups that have members with license errors (that is, filter for this property being true). See an example. Supports $filter (eq)."
|
|
6130
|
+
).nullish(),
|
|
6131
|
+
hideFromAddressLists: z.boolean().describe(
|
|
6132
|
+
"True if the group isn't displayed in certain parts of the Outlook UI: the Address Book, address lists for selecting message recipients, and the Browse Groups dialog for searching groups; otherwise, false. The default value is false. Returned only on $select. Supported only on the Get group API (GET /groups/{ID})."
|
|
6133
|
+
).nullish(),
|
|
6134
|
+
hideFromOutlookClients: z.boolean().describe(
|
|
6135
|
+
"True if the group isn't displayed in Outlook clients, such as Outlook for Windows and Outlook on the web; otherwise, false. The default value is false. Returned only on $select. Supported only on the Get group API (GET /groups/{ID})."
|
|
6136
|
+
).nullish(),
|
|
6137
|
+
isArchived: z.boolean().describe(
|
|
6138
|
+
"When a group is associated with a team, this property determines whether the team is in read-only mode.To read this property, use the /group/{groupId}/team endpoint or the Get team API. To update this property, use the archiveTeam and unarchiveTeam APIs."
|
|
6139
|
+
).nullish(),
|
|
6140
|
+
isAssignableToRole: z.boolean().describe(
|
|
6141
|
+
"Indicates whether this group can be assigned to a Microsoft Entra role. Optional. This property can only be set while creating the group and is immutable. If set to true, the securityEnabled property must also be set to true, visibility must be Hidden, and the group can't be a dynamic group (that is, groupTypes can't contain DynamicMembership). Only callers with at least the Privileged Role Administrator role can set this property. The caller must also be assigned the RoleManagement.ReadWrite.Directory permission to set this property or update the membership of such groups. For more, see Using a group to manage Microsoft Entra role assignmentsUsing this feature requires a Microsoft Entra ID P1 license. Returned by default. Supports $filter (eq, ne, not)."
|
|
6142
|
+
).nullish(),
|
|
6143
|
+
isManagementRestricted: z.boolean().describe(
|
|
6144
|
+
"Indicates whether the group is a member of a restricted management administrative unit. If not set, the default value is null and the default behavior is false. Read-only. To manage a group member of a restricted management administrative unit, the administrator or calling app must be assigned a Microsoft Entra role at the scope of the restricted management administrative unit. Returned only on $select."
|
|
6145
|
+
).nullish(),
|
|
6146
|
+
isSubscribedByMail: z.boolean().describe(
|
|
6147
|
+
"Indicates whether the signed-in user is subscribed to receive email conversations. The default value is true. Returned only on $select. Supported only on the Get group API (GET /groups/{ID})."
|
|
6148
|
+
).nullish(),
|
|
6149
|
+
licenseProcessingState: microsoft_graph_licenseProcessingState.optional(),
|
|
6150
|
+
mail: z.string().describe(
|
|
6151
|
+
"The SMTP address for the group, for example, 'serviceadmins@contoso.com'. Returned by default. Read-only. Supports $filter (eq, ne, not, ge, le, in, startsWith, and eq on null values)."
|
|
6152
|
+
).nullish(),
|
|
6153
|
+
mailEnabled: z.boolean().describe(
|
|
6154
|
+
"Specifies whether the group is mail-enabled. Required. Returned by default. Supports $filter (eq, ne, not)."
|
|
6155
|
+
).nullish(),
|
|
6156
|
+
mailNickname: z.string().describe(
|
|
6157
|
+
"The mail alias for the group, unique for Microsoft 365 groups in the organization. Maximum length is 64 characters. This property can contain only characters in the ASCII character set 0 - 127 except the following characters: @ () / [] ' ; : <> , SPACE. Required. Returned by default. Supports $filter (eq, ne, not, ge, le, in, startsWith, and eq on null values)."
|
|
6158
|
+
).nullish(),
|
|
6159
|
+
membershipRule: z.string().describe(
|
|
6160
|
+
"The rule that determines members for this group if the group is a dynamic group (groupTypes contains DynamicMembership). For more information about the syntax of the membership rule, see Membership Rules syntax. Returned by default. Supports $filter (eq, ne, not, ge, le, startsWith)."
|
|
6161
|
+
).nullish(),
|
|
6162
|
+
membershipRuleProcessingState: z.string().describe(
|
|
6163
|
+
"Indicates whether the dynamic membership processing is on or paused. Possible values are On or Paused. Returned by default. Supports $filter (eq, ne, not, in)."
|
|
6164
|
+
).nullish()
|
|
6165
|
+
}).passthrough().passthrough()
|
|
6166
|
+
}
|
|
6167
|
+
],
|
|
6168
|
+
response: z.void()
|
|
6169
|
+
},
|
|
6170
|
+
{
|
|
6171
|
+
method: "delete",
|
|
6172
|
+
path: "/groups/:groupId",
|
|
6173
|
+
alias: "delete-group",
|
|
6174
|
+
description: `Delete a group. When deleted, both Microsoft 365 and security groups are moved to a temporary container and can be restored within 30 days. After that time, they're permanently deleted. This doesn't apply to Distribution groups which are permanently deleted immediately. To learn more, see deletedItems.`,
|
|
6175
|
+
requestFormat: "json",
|
|
6176
|
+
parameters: [
|
|
6177
|
+
{
|
|
6178
|
+
name: "If-Match",
|
|
6179
|
+
type: "Header",
|
|
6180
|
+
schema: z.string().describe("ETag").optional()
|
|
6181
|
+
}
|
|
6182
|
+
],
|
|
6183
|
+
response: z.void()
|
|
6184
|
+
},
|
|
5963
6185
|
{
|
|
5964
6186
|
method: "get",
|
|
5965
6187
|
path: "/groups/:groupId/conversations",
|
|
@@ -6067,6 +6289,37 @@ You can search within a folder hierarchy, a whole drive, or files shared with th
|
|
|
6067
6289
|
],
|
|
6068
6290
|
response: z.void()
|
|
6069
6291
|
},
|
|
6292
|
+
{
|
|
6293
|
+
method: "delete",
|
|
6294
|
+
path: "/groups/:groupId/members/:directoryObjectId/$ref",
|
|
6295
|
+
alias: "remove-group-member",
|
|
6296
|
+
description: `Remove a member from a group via the members navigation property. You can't remove a member from groups with dynamic memberships.`,
|
|
6297
|
+
requestFormat: "json",
|
|
6298
|
+
parameters: [
|
|
6299
|
+
{
|
|
6300
|
+
name: "If-Match",
|
|
6301
|
+
type: "Header",
|
|
6302
|
+
schema: z.string().describe("ETag").optional()
|
|
6303
|
+
}
|
|
6304
|
+
],
|
|
6305
|
+
response: z.void()
|
|
6306
|
+
},
|
|
6307
|
+
{
|
|
6308
|
+
method: "post",
|
|
6309
|
+
path: "/groups/:groupId/members/$ref",
|
|
6310
|
+
alias: "add-group-member",
|
|
6311
|
+
description: `Add a member to a security or Microsoft 365 group. When using the API to add multiple members in one request, you can add up to only 20 members. The following table shows the types of members that can be added to either security groups or Microsoft 365 groups.`,
|
|
6312
|
+
requestFormat: "json",
|
|
6313
|
+
parameters: [
|
|
6314
|
+
{
|
|
6315
|
+
name: "body",
|
|
6316
|
+
description: `New navigation property ref value`,
|
|
6317
|
+
type: "Body",
|
|
6318
|
+
schema: z.record(z.object({}).partial().passthrough())
|
|
6319
|
+
}
|
|
6320
|
+
],
|
|
6321
|
+
response: z.void()
|
|
6322
|
+
},
|
|
6070
6323
|
{
|
|
6071
6324
|
method: "get",
|
|
6072
6325
|
path: "/groups/:groupId/owners",
|
|
@@ -6124,6 +6377,37 @@ You can search within a folder hierarchy, a whole drive, or files shared with th
|
|
|
6124
6377
|
],
|
|
6125
6378
|
response: z.void()
|
|
6126
6379
|
},
|
|
6380
|
+
{
|
|
6381
|
+
method: "delete",
|
|
6382
|
+
path: "/groups/:groupId/owners/:directoryObjectId/$ref",
|
|
6383
|
+
alias: "remove-group-owner",
|
|
6384
|
+
description: `Remove an owner from a Microsoft 365 group or a security group through the owners navigation property. Once owners are assigned to a group, the last owner (a user object) of the group cannot be removed.`,
|
|
6385
|
+
requestFormat: "json",
|
|
6386
|
+
parameters: [
|
|
6387
|
+
{
|
|
6388
|
+
name: "If-Match",
|
|
6389
|
+
type: "Header",
|
|
6390
|
+
schema: z.string().describe("ETag").optional()
|
|
6391
|
+
}
|
|
6392
|
+
],
|
|
6393
|
+
response: z.void()
|
|
6394
|
+
},
|
|
6395
|
+
{
|
|
6396
|
+
method: "post",
|
|
6397
|
+
path: "/groups/:groupId/owners/$ref",
|
|
6398
|
+
alias: "add-group-owner",
|
|
6399
|
+
description: `Add a user or service principal to a Microsoft 365 or security group's owners. The owners are a set of users or service principals who are allowed to modify the group object.`,
|
|
6400
|
+
requestFormat: "json",
|
|
6401
|
+
parameters: [
|
|
6402
|
+
{
|
|
6403
|
+
name: "body",
|
|
6404
|
+
description: `New navigation property ref value`,
|
|
6405
|
+
type: "Body",
|
|
6406
|
+
schema: z.record(z.object({}).partial().passthrough())
|
|
6407
|
+
}
|
|
6408
|
+
],
|
|
6409
|
+
response: z.void()
|
|
6410
|
+
},
|
|
6127
6411
|
{
|
|
6128
6412
|
method: "get",
|
|
6129
6413
|
path: "/groups/:groupId/threads",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@softeria/ms-365-mcp-server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.85.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",
|
package/src/endpoints.json
CHANGED
|
@@ -1491,5 +1491,61 @@
|
|
|
1491
1491
|
"toolName": "list-calendar-view-delta",
|
|
1492
1492
|
"scopes": ["Calendars.Read"],
|
|
1493
1493
|
"llmTip": "Incremental sync of events within a time window. Required query params on first call: startDateTime, endDateTime (ISO 8601). Returns events in the window plus @odata.deltaLink; subsequent calls with that link return only changes. Expands recurring events to individual occurrences (unlike list-calendar-events-delta which returns the series master). Use this for calendar UIs showing a week/month view."
|
|
1494
|
+
},
|
|
1495
|
+
{
|
|
1496
|
+
"pathPattern": "/groups",
|
|
1497
|
+
"method": "post",
|
|
1498
|
+
"toolName": "create-group",
|
|
1499
|
+
"workScopes": ["Group.ReadWrite.All"],
|
|
1500
|
+
"llmTip": "Creates a new group. Required body: { displayName, mailEnabled (bool), mailNickname (no spaces), securityEnabled (bool) }. For Microsoft 365 group: mailEnabled=true, securityEnabled=false, groupTypes=['Unified']. For security group: mailEnabled=false, securityEnabled=true, groupTypes=[]. Optional: description, visibility ('Public' or 'Private'), owners@odata.bind and members@odata.bind arrays with user directoryObject URLs."
|
|
1501
|
+
},
|
|
1502
|
+
{
|
|
1503
|
+
"pathPattern": "/groups/{group-id}",
|
|
1504
|
+
"method": "patch",
|
|
1505
|
+
"toolName": "update-group",
|
|
1506
|
+
"workScopes": ["Group.ReadWrite.All"],
|
|
1507
|
+
"llmTip": "Updates group properties. Body can include: displayName, description, visibility ('Public' or 'Private'), mailNickname. Use get-group to verify current values before updating."
|
|
1508
|
+
},
|
|
1509
|
+
{
|
|
1510
|
+
"pathPattern": "/groups/{group-id}",
|
|
1511
|
+
"method": "delete",
|
|
1512
|
+
"toolName": "delete-group",
|
|
1513
|
+
"workScopes": ["Group.ReadWrite.All"],
|
|
1514
|
+
"llmTip": "Permanently deletes a group and all its associated resources (conversations, files, calendar, planner). This action is irreversible. Use get-group to verify the group before deleting."
|
|
1515
|
+
},
|
|
1516
|
+
{
|
|
1517
|
+
"pathPattern": "/groups/{group-id}/members/$ref",
|
|
1518
|
+
"method": "post",
|
|
1519
|
+
"toolName": "add-group-member",
|
|
1520
|
+
"workScopes": ["GroupMember.ReadWrite.All"],
|
|
1521
|
+
"llmTip": "Adds a member to a group. Body: { '@odata.id': 'https://graph.microsoft.com/v1.0/directoryObjects/{user-id}' }. Use list-users to find the user ID first. The user must not already be a member."
|
|
1522
|
+
},
|
|
1523
|
+
{
|
|
1524
|
+
"pathPattern": "/groups/{group-id}/members/{directoryObject-id}/$ref",
|
|
1525
|
+
"method": "delete",
|
|
1526
|
+
"toolName": "remove-group-member",
|
|
1527
|
+
"workScopes": ["GroupMember.ReadWrite.All"],
|
|
1528
|
+
"llmTip": "Removes a member from a group. Use list-group-members to find the member's directory object ID first. Cannot remove the last owner of a group."
|
|
1529
|
+
},
|
|
1530
|
+
{
|
|
1531
|
+
"pathPattern": "/groups/{group-id}/owners/$ref",
|
|
1532
|
+
"method": "post",
|
|
1533
|
+
"toolName": "add-group-owner",
|
|
1534
|
+
"workScopes": ["Group.ReadWrite.All"],
|
|
1535
|
+
"llmTip": "Adds an owner to a group. Body: { '@odata.id': 'https://graph.microsoft.com/v1.0/users/{user-id}' }. Use list-users to find the user ID. A group can have a maximum of 100 owners."
|
|
1536
|
+
},
|
|
1537
|
+
{
|
|
1538
|
+
"pathPattern": "/groups/{group-id}/owners/{directoryObject-id}/$ref",
|
|
1539
|
+
"method": "delete",
|
|
1540
|
+
"toolName": "remove-group-owner",
|
|
1541
|
+
"workScopes": ["Group.ReadWrite.All"],
|
|
1542
|
+
"llmTip": "Removes an owner from a group. A group must have at least one owner — this call fails if you try to remove the last owner. Use list-group-owners to find the owner's ID."
|
|
1543
|
+
},
|
|
1544
|
+
{
|
|
1545
|
+
"pathPattern": "/chats",
|
|
1546
|
+
"method": "post",
|
|
1547
|
+
"toolName": "create-chat",
|
|
1548
|
+
"workScopes": ["Chat.Create", "Chat.ReadWrite"],
|
|
1549
|
+
"llmTip": "Creates a new 1:1 or group Teams chat. Body: { chatType ('oneOnOne' or 'group'), topic (optional, group only), members: [{ '@odata.type': '#microsoft.graph.aadUserConversationMember', roles: ['owner' | 'guest'], 'user@odata.bind': 'https://graph.microsoft.com/v1.0/users({id})' }] }. A oneOnOne chat requires exactly 2 members (self + other), both with role 'owner'. For group chats, include all participants. The signed-in user must be one of the members. Returns the created chat with its id — use that id with send-chat-message, list-chat-members, etc."
|
|
1494
1550
|
}
|
|
1495
1551
|
]
|