@softeria/ms-365-mcp-server 0.34.0 → 0.35.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.
@@ -598,5 +598,23 @@
598
598
  "toolName": "search-query",
599
599
  "scopes": ["Mail.Read", "Calendars.Read", "Files.Read.All", "People.Read"],
600
600
  "workScopes": ["Sites.Read.All", "Chat.Read", "ChannelMessage.Read.All"]
601
+ },
602
+ {
603
+ "pathPattern": "/groups/{group-id}/conversations",
604
+ "method": "get",
605
+ "toolName": "list-group-conversations",
606
+ "workScopes": ["Group.Read.All"]
607
+ },
608
+ {
609
+ "pathPattern": "/groups/{group-id}/threads",
610
+ "method": "get",
611
+ "toolName": "list-group-threads",
612
+ "workScopes": ["Group.Read.All"]
613
+ },
614
+ {
615
+ "pathPattern": "/groups/{group-id}/threads/{conversationThread-id}/reply",
616
+ "method": "post",
617
+ "toolName": "reply-to-group-thread",
618
+ "workScopes": ["Group.ReadWrite.All"]
601
619
  }
602
620
  ]
@@ -1136,6 +1136,130 @@ const microsoft_graph_workbookRange = z.object({
1136
1136
  sort: microsoft_graph_workbookRangeSort.optional(),
1137
1137
  worksheet: microsoft_graph_workbookWorksheet.optional()
1138
1138
  }).strict();
1139
+ const microsoft_graph_emailAddress = z.object({
1140
+ address: z.string().describe("The email address of the person or entity.").nullish(),
1141
+ name: z.string().describe("The display name of the person or entity.").nullish()
1142
+ }).strict();
1143
+ const microsoft_graph_recipient = z.object({ emailAddress: microsoft_graph_emailAddress.optional() }).strict();
1144
+ const microsoft_graph_attachment = z.object({
1145
+ id: z.string().describe("The unique identifier for an entity. Read-only.").optional(),
1146
+ contentType: z.string().describe("The MIME type.").nullish(),
1147
+ isInline: z.boolean().describe("true if the attachment is an inline attachment; otherwise, false.").optional(),
1148
+ lastModifiedDateTime: z.string().regex(
1149
+ /^[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])$/
1150
+ ).datetime({ offset: true }).describe(
1151
+ "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z"
1152
+ ).nullish(),
1153
+ name: z.string().describe("The attachment's file name.").nullish(),
1154
+ size: z.number().gte(-2147483648).lte(2147483647).describe("The length of the attachment in bytes.").optional()
1155
+ }).passthrough();
1156
+ const microsoft_graph_extension = z.object({ id: z.string().describe("The unique identifier for an entity. Read-only.").optional() }).strict();
1157
+ const microsoft_graph_multiValueLegacyExtendedProperty = z.object({
1158
+ id: z.string().describe("The unique identifier for an entity. Read-only.").optional(),
1159
+ value: z.array(z.string().nullable()).describe("A collection of property values.").optional()
1160
+ }).strict();
1161
+ const microsoft_graph_singleValueLegacyExtendedProperty = z.object({
1162
+ id: z.string().describe("The unique identifier for an entity. Read-only.").optional(),
1163
+ value: z.string().describe("A property value.").nullish()
1164
+ }).strict();
1165
+ const microsoft_graph_post = z.lazy(
1166
+ () => z.object({
1167
+ id: z.string().describe("The unique identifier for an entity. Read-only.").optional(),
1168
+ categories: z.array(z.string().nullable()).describe("The categories associated with the item").optional(),
1169
+ changeKey: z.string().describe(
1170
+ "Identifies the version of the item. Every time the item is changed, changeKey changes as well. This allows Exchange to apply changes to the correct version of the object. Read-only."
1171
+ ).nullish(),
1172
+ createdDateTime: z.string().regex(
1173
+ /^[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])$/
1174
+ ).datetime({ offset: true }).describe(
1175
+ "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z"
1176
+ ).nullish(),
1177
+ lastModifiedDateTime: z.string().regex(
1178
+ /^[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])$/
1179
+ ).datetime({ offset: true }).describe(
1180
+ "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z"
1181
+ ).nullish(),
1182
+ body: microsoft_graph_itemBody.optional(),
1183
+ conversationId: z.string().describe("Unique ID of the conversation. Read-only.").nullish(),
1184
+ conversationThreadId: z.string().describe("Unique ID of the conversation thread. Read-only.").nullish(),
1185
+ from: microsoft_graph_recipient.optional(),
1186
+ hasAttachments: z.boolean().describe(
1187
+ "Indicates whether the post has at least one attachment. This is a default property."
1188
+ ).optional(),
1189
+ newParticipants: z.array(microsoft_graph_recipient).describe("Conversation participants that were added to the thread as part of this post.").optional(),
1190
+ receivedDateTime: z.string().regex(
1191
+ /^[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])$/
1192
+ ).datetime({ offset: true }).describe(
1193
+ "Specifies when the post was received. The DateTimeOffset type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z"
1194
+ ).optional(),
1195
+ sender: microsoft_graph_recipient.optional(),
1196
+ attachments: z.array(microsoft_graph_attachment).describe("Read-only. Nullable. Supports $expand.").optional(),
1197
+ extensions: z.array(microsoft_graph_extension).describe(
1198
+ "The collection of open extensions defined for the post. Read-only. Nullable. Supports $expand."
1199
+ ).optional(),
1200
+ inReplyTo: microsoft_graph_post.optional(),
1201
+ multiValueExtendedProperties: z.array(microsoft_graph_multiValueLegacyExtendedProperty).describe(
1202
+ "The collection of multi-value extended properties defined for the post. Read-only. Nullable."
1203
+ ).optional(),
1204
+ singleValueExtendedProperties: z.array(microsoft_graph_singleValueLegacyExtendedProperty).describe(
1205
+ "The collection of single-value extended properties defined for the post. Read-only. Nullable."
1206
+ ).optional()
1207
+ }).strict()
1208
+ );
1209
+ const microsoft_graph_conversationThread = z.object({
1210
+ id: z.string().describe("The unique identifier for an entity. Read-only.").optional(),
1211
+ ccRecipients: z.array(microsoft_graph_recipient).describe("The Cc: recipients for the thread. Returned only on $select.").optional(),
1212
+ hasAttachments: z.boolean().describe(
1213
+ "Indicates whether any of the posts within this thread has at least one attachment. Returned by default."
1214
+ ).optional(),
1215
+ isLocked: z.boolean().describe("Indicates if the thread is locked. Returned by default.").optional(),
1216
+ lastDeliveredDateTime: z.string().regex(
1217
+ /^[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])$/
1218
+ ).datetime({ offset: true }).describe(
1219
+ "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z.Returned by default."
1220
+ ).optional(),
1221
+ preview: z.string().describe(
1222
+ "A short summary from the body of the latest post in this conversation. Returned by default."
1223
+ ).optional(),
1224
+ topic: z.string().describe(
1225
+ "The topic of the conversation. This property can be set when the conversation is created, but it cannot be updated. Returned by default."
1226
+ ).optional(),
1227
+ toRecipients: z.array(microsoft_graph_recipient).describe("The To: recipients for the thread. Returned only on $select.").optional(),
1228
+ uniqueSenders: z.array(z.string()).describe("All the users that sent a message to this thread. Returned by default.").optional(),
1229
+ posts: z.array(microsoft_graph_post).optional()
1230
+ }).strict();
1231
+ const microsoft_graph_conversation = z.object({
1232
+ id: z.string().describe("The unique identifier for an entity. Read-only.").optional(),
1233
+ hasAttachments: z.boolean().describe(
1234
+ "Indicates whether any of the posts within this Conversation has at least one attachment. Supports $filter (eq, ne) and $search."
1235
+ ).optional(),
1236
+ lastDeliveredDateTime: z.string().regex(
1237
+ /^[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])$/
1238
+ ).datetime({ offset: true }).describe(
1239
+ "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z"
1240
+ ).optional(),
1241
+ preview: z.string().describe(
1242
+ "A short summary from the body of the latest post in this conversation. Supports $filter (eq, ne, le, ge)."
1243
+ ).optional(),
1244
+ topic: z.string().describe(
1245
+ "The topic of the conversation. This property can be set when the conversation is created, but it cannot be updated."
1246
+ ).optional(),
1247
+ uniqueSenders: z.array(z.string()).describe("All the users that sent a message to this Conversation.").optional(),
1248
+ threads: z.array(microsoft_graph_conversationThread).describe(
1249
+ "A collection of all the conversation threads in the conversation. A navigation property. Read-only. Nullable."
1250
+ ).optional()
1251
+ }).strict();
1252
+ const microsoft_graph_conversationCollectionResponse = z.object({
1253
+ "@odata.count": z.number().int().nullable(),
1254
+ "@odata.nextLink": z.string().nullable(),
1255
+ value: z.array(microsoft_graph_conversation)
1256
+ }).partial().strict();
1257
+ const microsoft_graph_conversationThreadCollectionResponse = z.object({
1258
+ "@odata.count": z.number().int().nullable(),
1259
+ "@odata.nextLink": z.string().nullable(),
1260
+ value: z.array(microsoft_graph_conversationThread)
1261
+ }).partial().strict();
1262
+ const reply_to_group_thread_Body = z.object({ Post: microsoft_graph_post }).partial().strict();
1139
1263
  const microsoft_graph_onlineMeetingProviderType = z.enum([
1140
1264
  "unknown",
1141
1265
  "skypeForBusiness",
@@ -1155,10 +1279,6 @@ const microsoft_graph_calendarColor = z.enum([
1155
1279
  "lightRed",
1156
1280
  "maxColor"
1157
1281
  ]);
1158
- const microsoft_graph_emailAddress = z.object({
1159
- address: z.string().describe("The email address of the person or entity.").nullish(),
1160
- name: z.string().describe("The display name of the person or entity.").nullish()
1161
- }).strict();
1162
1282
  const microsoft_graph_calendarRoleType = z.enum([
1163
1283
  "none",
1164
1284
  "freeBusyRead",
@@ -1189,18 +1309,6 @@ const microsoft_graph_eventType = z.enum([
1189
1309
  "exception",
1190
1310
  "seriesMaster"
1191
1311
  ]);
1192
- const microsoft_graph_attachment = z.object({
1193
- id: z.string().describe("The unique identifier for an entity. Read-only.").optional(),
1194
- contentType: z.string().describe("The MIME type.").nullish(),
1195
- isInline: z.boolean().describe("true if the attachment is an inline attachment; otherwise, false.").optional(),
1196
- lastModifiedDateTime: z.string().regex(
1197
- /^[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])$/
1198
- ).datetime({ offset: true }).describe(
1199
- "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z"
1200
- ).nullish(),
1201
- name: z.string().describe("The attachment's file name.").nullish(),
1202
- size: z.number().gte(-2147483648).lte(2147483647).describe("The length of the attachment in bytes.").optional()
1203
- }).passthrough();
1204
1312
  const microsoft_graph_attendeeType = z.enum(["required", "optional", "resource"]);
1205
1313
  const microsoft_graph_dateTimeTimeZone = z.object({
1206
1314
  dateTime: z.string().describe(
@@ -1339,14 +1447,6 @@ const microsoft_graph_event = z.object({
1339
1447
  isReminderOn: z.boolean().describe("Set to true if an alert is set to remind the user of the event.").nullish(),
1340
1448
  location: microsoft_graph_location.optional()
1341
1449
  }).strict().passthrough();
1342
- const microsoft_graph_multiValueLegacyExtendedProperty = z.object({
1343
- id: z.string().describe("The unique identifier for an entity. Read-only.").optional(),
1344
- value: z.array(z.string().nullable()).describe("A collection of property values.").optional()
1345
- }).strict();
1346
- const microsoft_graph_singleValueLegacyExtendedProperty = z.object({
1347
- id: z.string().describe("The unique identifier for an entity. Read-only.").optional(),
1348
- value: z.string().describe("A property value.").nullish()
1349
- }).strict();
1350
1450
  const microsoft_graph_calendar = z.object({
1351
1451
  id: z.string().describe("The unique identifier for an entity. Read-only.").optional(),
1352
1452
  allowedOnlineMeetingProviders: z.array(z.union([microsoft_graph_onlineMeetingProviderType, z.object({}).partial().strict()])).describe(
@@ -2211,7 +2311,6 @@ const microsoft_graph_teamCollectionResponse = z.object({
2211
2311
  "@odata.nextLink": z.string().nullable(),
2212
2312
  value: z.array(microsoft_graph_team)
2213
2313
  }).partial().strict();
2214
- const microsoft_graph_recipient = z.object({ emailAddress: microsoft_graph_emailAddress.optional() }).strict();
2215
2314
  const microsoft_graph_messageRuleActions = z.object({
2216
2315
  assignCategories: z.array(z.string().nullable()).describe("A list of categories to be assigned to a message.").optional(),
2217
2316
  copyToFolder: z.string().describe("The ID of a folder that a message is to be copied to.").nullish(),
@@ -2712,7 +2811,6 @@ const microsoft_graph_wellknownListName = z.enum([
2712
2811
  "flaggedEmails",
2713
2812
  "unknownFutureValue"
2714
2813
  ]);
2715
- const microsoft_graph_extension = z.object({ id: z.string().describe("The unique identifier for an entity. Read-only.").optional() }).strict();
2716
2814
  const microsoft_graph_dayOfWeek = z.enum([
2717
2815
  "sunday",
2718
2816
  "monday",
@@ -3362,13 +3460,23 @@ const schemas = {
3362
3460
  microsoft_graph_workbookRangeFormat,
3363
3461
  microsoft_graph_workbookRangeSort,
3364
3462
  microsoft_graph_workbookRange,
3463
+ microsoft_graph_emailAddress,
3464
+ microsoft_graph_recipient,
3465
+ microsoft_graph_attachment,
3466
+ microsoft_graph_extension,
3467
+ microsoft_graph_multiValueLegacyExtendedProperty,
3468
+ microsoft_graph_singleValueLegacyExtendedProperty,
3469
+ microsoft_graph_post,
3470
+ microsoft_graph_conversationThread,
3471
+ microsoft_graph_conversation,
3472
+ microsoft_graph_conversationCollectionResponse,
3473
+ microsoft_graph_conversationThreadCollectionResponse,
3474
+ reply_to_group_thread_Body,
3365
3475
  microsoft_graph_onlineMeetingProviderType,
3366
3476
  microsoft_graph_calendarColor,
3367
- microsoft_graph_emailAddress,
3368
3477
  microsoft_graph_calendarRoleType,
3369
3478
  microsoft_graph_calendarPermission,
3370
3479
  microsoft_graph_eventType,
3371
- microsoft_graph_attachment,
3372
3480
  microsoft_graph_attendeeType,
3373
3481
  microsoft_graph_dateTimeTimeZone,
3374
3482
  microsoft_graph_timeSlot,
@@ -3382,8 +3490,6 @@ const schemas = {
3382
3490
  microsoft_graph_locationUniqueIdType,
3383
3491
  microsoft_graph_location,
3384
3492
  microsoft_graph_event,
3385
- microsoft_graph_multiValueLegacyExtendedProperty,
3386
- microsoft_graph_singleValueLegacyExtendedProperty,
3387
3493
  microsoft_graph_calendar,
3388
3494
  microsoft_graph_calendarCollectionResponse,
3389
3495
  microsoft_graph_eventCollectionResponse,
@@ -3456,7 +3562,6 @@ const schemas = {
3456
3562
  microsoft_graph_teamsAsyncOperation,
3457
3563
  microsoft_graph_team,
3458
3564
  microsoft_graph_teamCollectionResponse,
3459
- microsoft_graph_recipient,
3460
3565
  microsoft_graph_messageRuleActions,
3461
3566
  microsoft_graph_messageActionFlag,
3462
3567
  microsoft_graph_sensitivity,
@@ -3503,7 +3608,6 @@ const schemas = {
3503
3608
  microsoft_graph_plannerTask,
3504
3609
  microsoft_graph_plannerTaskCollectionResponse,
3505
3610
  microsoft_graph_wellknownListName,
3506
- microsoft_graph_extension,
3507
3611
  microsoft_graph_dayOfWeek,
3508
3612
  microsoft_graph_weekIndex,
3509
3613
  microsoft_graph_recurrencePatternType,
@@ -3965,6 +4069,122 @@ const endpoints = makeApi([
3965
4069
  ],
3966
4070
  response: z.void()
3967
4071
  },
4072
+ {
4073
+ method: "get",
4074
+ path: "/groups/:groupId/conversations",
4075
+ alias: "list-group-conversations",
4076
+ description: `Retrieve the list of conversations in this group.`,
4077
+ requestFormat: "json",
4078
+ parameters: [
4079
+ {
4080
+ name: "$top",
4081
+ type: "Query",
4082
+ schema: z.number().int().gte(0).describe("Show only the first n items").optional()
4083
+ },
4084
+ {
4085
+ name: "$skip",
4086
+ type: "Query",
4087
+ schema: z.number().int().gte(0).describe("Skip the first n items").optional()
4088
+ },
4089
+ {
4090
+ name: "$search",
4091
+ type: "Query",
4092
+ schema: z.string().describe("Search items by search phrases").optional()
4093
+ },
4094
+ {
4095
+ name: "$filter",
4096
+ type: "Query",
4097
+ schema: z.string().describe("Filter items by property values").optional()
4098
+ },
4099
+ {
4100
+ name: "$count",
4101
+ type: "Query",
4102
+ schema: z.boolean().describe("Include count of items").optional()
4103
+ },
4104
+ {
4105
+ name: "$orderby",
4106
+ type: "Query",
4107
+ schema: z.array(z.string()).describe("Order items by property values").optional()
4108
+ },
4109
+ {
4110
+ name: "$select",
4111
+ type: "Query",
4112
+ schema: z.array(z.string()).describe("Select properties to be returned").optional()
4113
+ },
4114
+ {
4115
+ name: "$expand",
4116
+ type: "Query",
4117
+ schema: z.array(z.string()).describe("Expand related entities").optional()
4118
+ }
4119
+ ],
4120
+ response: z.void()
4121
+ },
4122
+ {
4123
+ method: "get",
4124
+ path: "/groups/:groupId/threads",
4125
+ alias: "list-group-threads",
4126
+ description: `Get all the threads of a group.`,
4127
+ requestFormat: "json",
4128
+ parameters: [
4129
+ {
4130
+ name: "$top",
4131
+ type: "Query",
4132
+ schema: z.number().int().gte(0).describe("Show only the first n items").optional()
4133
+ },
4134
+ {
4135
+ name: "$skip",
4136
+ type: "Query",
4137
+ schema: z.number().int().gte(0).describe("Skip the first n items").optional()
4138
+ },
4139
+ {
4140
+ name: "$search",
4141
+ type: "Query",
4142
+ schema: z.string().describe("Search items by search phrases").optional()
4143
+ },
4144
+ {
4145
+ name: "$filter",
4146
+ type: "Query",
4147
+ schema: z.string().describe("Filter items by property values").optional()
4148
+ },
4149
+ {
4150
+ name: "$count",
4151
+ type: "Query",
4152
+ schema: z.boolean().describe("Include count of items").optional()
4153
+ },
4154
+ {
4155
+ name: "$orderby",
4156
+ type: "Query",
4157
+ schema: z.array(z.string()).describe("Order items by property values").optional()
4158
+ },
4159
+ {
4160
+ name: "$select",
4161
+ type: "Query",
4162
+ schema: z.array(z.string()).describe("Select properties to be returned").optional()
4163
+ },
4164
+ {
4165
+ name: "$expand",
4166
+ type: "Query",
4167
+ schema: z.array(z.string()).describe("Expand related entities").optional()
4168
+ }
4169
+ ],
4170
+ response: z.void()
4171
+ },
4172
+ {
4173
+ method: "post",
4174
+ path: "/groups/:groupId/threads/:conversationThreadId/reply",
4175
+ alias: "reply-to-group-thread",
4176
+ description: `Create an open extension (openTypeExtension object) and add custom properties in a new or existing instance of a resource. You can create an open extension in a resource instance and store custom data to it all in the same operation, except for specific resources. The table in the Permissions section lists the resources that support open extensions.`,
4177
+ requestFormat: "json",
4178
+ parameters: [
4179
+ {
4180
+ name: "body",
4181
+ description: `Action parameters`,
4182
+ type: "Body",
4183
+ schema: reply_to_group_thread_Body
4184
+ }
4185
+ ],
4186
+ response: z.void()
4187
+ },
3968
4188
  {
3969
4189
  method: "get",
3970
4190
  path: "/me",
@@ -1,5 +1,5 @@
1
- 2026-02-02 08:30:22 INFO: Using environment variables for secrets
2
- 2026-02-02 08:30:22 INFO: Using environment variables for secrets
3
- 2026-02-02 08:30:22 INFO: Using environment variables for secrets
4
- 2026-02-02 08:30:22 INFO: Using environment variables for secrets
5
- 2026-02-02 08:30:22 INFO: Using environment variables for secrets
1
+ 2026-02-02 13:40:51 INFO: Using environment variables for secrets
2
+ 2026-02-02 13:40:51 INFO: Using environment variables for secrets
3
+ 2026-02-02 13:40:51 INFO: Using environment variables for secrets
4
+ 2026-02-02 13:40:51 INFO: Using environment variables for secrets
5
+ 2026-02-02 13:40:51 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.34.0",
3
+ "version": "0.35.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",
@@ -598,5 +598,23 @@
598
598
  "toolName": "search-query",
599
599
  "scopes": ["Mail.Read", "Calendars.Read", "Files.Read.All", "People.Read"],
600
600
  "workScopes": ["Sites.Read.All", "Chat.Read", "ChannelMessage.Read.All"]
601
+ },
602
+ {
603
+ "pathPattern": "/groups/{group-id}/conversations",
604
+ "method": "get",
605
+ "toolName": "list-group-conversations",
606
+ "workScopes": ["Group.Read.All"]
607
+ },
608
+ {
609
+ "pathPattern": "/groups/{group-id}/threads",
610
+ "method": "get",
611
+ "toolName": "list-group-threads",
612
+ "workScopes": ["Group.Read.All"]
613
+ },
614
+ {
615
+ "pathPattern": "/groups/{group-id}/threads/{conversationThread-id}/reply",
616
+ "method": "post",
617
+ "toolName": "reply-to-group-thread",
618
+ "workScopes": ["Group.ReadWrite.All"]
601
619
  }
602
620
  ]