@speakai/mcp-server 1.7.10 → 1.8.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/index.js +525 -360
- package/package.json +6 -6
package/dist/index.js
CHANGED
|
@@ -202,6 +202,49 @@ var init_client = __esm({
|
|
|
202
202
|
}
|
|
203
203
|
});
|
|
204
204
|
|
|
205
|
+
// src/tools/_helpers.ts
|
|
206
|
+
function registerSpeakTool(server, name, description, inputSchema, annotations, handler) {
|
|
207
|
+
const { title, ...toolAnnotations } = annotations;
|
|
208
|
+
return server.registerTool(
|
|
209
|
+
name,
|
|
210
|
+
{
|
|
211
|
+
title,
|
|
212
|
+
description,
|
|
213
|
+
inputSchema,
|
|
214
|
+
outputSchema: passthroughOutputSchema,
|
|
215
|
+
annotations: toolAnnotations
|
|
216
|
+
},
|
|
217
|
+
(async (...args2) => {
|
|
218
|
+
const result = await handler(...args2);
|
|
219
|
+
if (result.isError || result.structuredContent) {
|
|
220
|
+
return result;
|
|
221
|
+
}
|
|
222
|
+
const textContent = result.content?.find(
|
|
223
|
+
(item) => item.type === "text" && typeof item.text === "string"
|
|
224
|
+
);
|
|
225
|
+
if (!textContent) {
|
|
226
|
+
return { ...result, structuredContent: { data: null } };
|
|
227
|
+
}
|
|
228
|
+
try {
|
|
229
|
+
return { ...result, structuredContent: { data: JSON.parse(textContent.text) } };
|
|
230
|
+
} catch {
|
|
231
|
+
return { ...result, structuredContent: { data: textContent.text } };
|
|
232
|
+
}
|
|
233
|
+
})
|
|
234
|
+
);
|
|
235
|
+
}
|
|
236
|
+
var import_zod, passthroughOutputSchema;
|
|
237
|
+
var init_helpers = __esm({
|
|
238
|
+
"src/tools/_helpers.ts"() {
|
|
239
|
+
"use strict";
|
|
240
|
+
import_zod = require("zod");
|
|
241
|
+
init_client();
|
|
242
|
+
passthroughOutputSchema = {
|
|
243
|
+
data: import_zod.z.unknown().describe("Response payload from the Speak AI API")
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
});
|
|
247
|
+
|
|
205
248
|
// node_modules/@speakai/shared/dist/enums/activities.js
|
|
206
249
|
var ActivityType;
|
|
207
250
|
var init_activities = __esm({
|
|
@@ -710,7 +753,7 @@ var init_recorder = __esm({
|
|
|
710
753
|
});
|
|
711
754
|
|
|
712
755
|
// node_modules/@speakai/shared/dist/enums/subscription.js
|
|
713
|
-
var SubscriptionStatus, SubscriptionDuration;
|
|
756
|
+
var SubscriptionStatus, SubscriptionDuration, TrialTier;
|
|
714
757
|
var init_subscription = __esm({
|
|
715
758
|
"node_modules/@speakai/shared/dist/enums/subscription.js"() {
|
|
716
759
|
"use strict";
|
|
@@ -730,6 +773,11 @@ var init_subscription = __esm({
|
|
|
730
773
|
SubscriptionDuration2["9Months"] = "9months";
|
|
731
774
|
SubscriptionDuration2["Yearly"] = "yearly";
|
|
732
775
|
})(SubscriptionDuration || (SubscriptionDuration = {}));
|
|
776
|
+
(function(TrialTier2) {
|
|
777
|
+
TrialTier2["T0"] = "T0";
|
|
778
|
+
TrialTier2["T1"] = "T1";
|
|
779
|
+
TrialTier2["T2"] = "T2";
|
|
780
|
+
})(TrialTier || (TrialTier = {}));
|
|
733
781
|
}
|
|
734
782
|
});
|
|
735
783
|
|
|
@@ -837,7 +885,7 @@ var init_translation = __esm({
|
|
|
837
885
|
});
|
|
838
886
|
|
|
839
887
|
// node_modules/@speakai/shared/dist/enums/user.js
|
|
840
|
-
var UserRole, UserPermissionType, UserActionType;
|
|
888
|
+
var UserRole, UserType, UserPermissionType, UserActionType;
|
|
841
889
|
var init_user = __esm({
|
|
842
890
|
"node_modules/@speakai/shared/dist/enums/user.js"() {
|
|
843
891
|
"use strict";
|
|
@@ -846,6 +894,10 @@ var init_user = __esm({
|
|
|
846
894
|
UserRole2["OWNER"] = "owner";
|
|
847
895
|
UserRole2["MEMBER"] = "member";
|
|
848
896
|
})(UserRole || (UserRole = {}));
|
|
897
|
+
(function(UserType2) {
|
|
898
|
+
UserType2["Individual"] = "I";
|
|
899
|
+
UserType2["Company"] = "C";
|
|
900
|
+
})(UserType || (UserType = {}));
|
|
849
901
|
(function(UserPermissionType2) {
|
|
850
902
|
UserPermissionType2["FOLDER"] = "folder";
|
|
851
903
|
UserPermissionType2["RECORDER"] = "recorder";
|
|
@@ -1062,6 +1114,13 @@ var init_category = __esm({
|
|
|
1062
1114
|
}
|
|
1063
1115
|
});
|
|
1064
1116
|
|
|
1117
|
+
// node_modules/@speakai/shared/dist/interfaces/clip.js
|
|
1118
|
+
var init_clip2 = __esm({
|
|
1119
|
+
"node_modules/@speakai/shared/dist/interfaces/clip.js"() {
|
|
1120
|
+
"use strict";
|
|
1121
|
+
}
|
|
1122
|
+
});
|
|
1123
|
+
|
|
1065
1124
|
// node_modules/@speakai/shared/dist/interfaces/index.js
|
|
1066
1125
|
var init_interfaces = __esm({
|
|
1067
1126
|
"node_modules/@speakai/shared/dist/interfaces/index.js"() {
|
|
@@ -1083,6 +1142,14 @@ var init_interfaces = __esm({
|
|
|
1083
1142
|
init_subscription2();
|
|
1084
1143
|
init_calendar2();
|
|
1085
1144
|
init_category();
|
|
1145
|
+
init_clip2();
|
|
1146
|
+
}
|
|
1147
|
+
});
|
|
1148
|
+
|
|
1149
|
+
// node_modules/@speakai/shared/dist/utils/transcript.js
|
|
1150
|
+
var init_transcript2 = __esm({
|
|
1151
|
+
"node_modules/@speakai/shared/dist/utils/transcript.js"() {
|
|
1152
|
+
"use strict";
|
|
1086
1153
|
}
|
|
1087
1154
|
});
|
|
1088
1155
|
|
|
@@ -1092,6 +1159,7 @@ var init_dist = __esm({
|
|
|
1092
1159
|
"use strict";
|
|
1093
1160
|
init_enums();
|
|
1094
1161
|
init_interfaces();
|
|
1162
|
+
init_transcript2();
|
|
1095
1163
|
}
|
|
1096
1164
|
});
|
|
1097
1165
|
|
|
@@ -1102,13 +1170,14 @@ __export(media_exports, {
|
|
|
1102
1170
|
});
|
|
1103
1171
|
function register(server, client) {
|
|
1104
1172
|
const api = client ?? speakClient;
|
|
1105
|
-
|
|
1173
|
+
registerSpeakTool(
|
|
1174
|
+
server,
|
|
1106
1175
|
"get_signed_upload_url",
|
|
1107
1176
|
"Get a pre-signed S3 URL for direct file upload to Speak AI storage. After getting the URL, PUT your file to it, then call upload_media with the S3 URL. For a simpler workflow, use upload_local_file instead which handles all steps automatically.",
|
|
1108
1177
|
{
|
|
1109
|
-
isVideo:
|
|
1110
|
-
filename:
|
|
1111
|
-
mimeType:
|
|
1178
|
+
isVideo: import_zod2.z.boolean().describe("Set true for video files, false for audio files"),
|
|
1179
|
+
filename: import_zod2.z.string().min(1).describe("Original filename including extension"),
|
|
1180
|
+
mimeType: import_zod2.z.string().describe('MIME type of the file, e.g. "audio/mp4" or "video/mp4"')
|
|
1112
1181
|
},
|
|
1113
1182
|
{
|
|
1114
1183
|
title: "Get Signed Upload URL",
|
|
@@ -1135,22 +1204,23 @@ function register(server, client) {
|
|
|
1135
1204
|
}
|
|
1136
1205
|
}
|
|
1137
1206
|
);
|
|
1138
|
-
|
|
1207
|
+
registerSpeakTool(
|
|
1208
|
+
server,
|
|
1139
1209
|
"upload_media",
|
|
1140
1210
|
"Upload media from a publicly accessible URL. Processing is asynchronous \u2014 after uploading, use get_media_status to poll until state is 'processed' (typically 1-3 minutes for audio under 60 min), then use get_transcript and get_media_insights to retrieve results. For a single call that handles everything, use upload_and_analyze instead. For local files, use upload_local_file.",
|
|
1141
1211
|
{
|
|
1142
|
-
name:
|
|
1143
|
-
url:
|
|
1144
|
-
mediaType:
|
|
1145
|
-
description:
|
|
1146
|
-
sourceLanguage:
|
|
1147
|
-
tags:
|
|
1148
|
-
folderId:
|
|
1149
|
-
callbackUrl:
|
|
1150
|
-
fields:
|
|
1151
|
-
|
|
1152
|
-
id:
|
|
1153
|
-
value:
|
|
1212
|
+
name: import_zod2.z.string().min(1).describe("Display name for the media file"),
|
|
1213
|
+
url: import_zod2.z.string().describe("Publicly accessible URL of the media file (or pre-signed S3 URL)"),
|
|
1214
|
+
mediaType: import_zod2.z.enum([MediaType.AUDIO, MediaType.VIDEO]).describe('Type of media: "audio" or "video"'),
|
|
1215
|
+
description: import_zod2.z.string().optional().describe("Description of the media file"),
|
|
1216
|
+
sourceLanguage: import_zod2.z.string().optional().describe('BCP-47 language code for transcription, e.g. "en-US" or "he-IL"'),
|
|
1217
|
+
tags: import_zod2.z.string().optional().describe("Comma-separated tags for the media"),
|
|
1218
|
+
folderId: import_zod2.z.string().optional().describe("ID of the folder to place the media in"),
|
|
1219
|
+
callbackUrl: import_zod2.z.string().optional().describe("Webhook callback URL for this specific upload"),
|
|
1220
|
+
fields: import_zod2.z.array(
|
|
1221
|
+
import_zod2.z.object({
|
|
1222
|
+
id: import_zod2.z.string().min(1).describe("Custom field ID"),
|
|
1223
|
+
value: import_zod2.z.string().min(1).describe("Custom field value")
|
|
1154
1224
|
})
|
|
1155
1225
|
).optional().describe("Custom field values to attach to the media")
|
|
1156
1226
|
},
|
|
@@ -1159,7 +1229,7 @@ function register(server, client) {
|
|
|
1159
1229
|
readOnlyHint: false,
|
|
1160
1230
|
destructiveHint: false,
|
|
1161
1231
|
idempotentHint: false,
|
|
1162
|
-
openWorldHint:
|
|
1232
|
+
openWorldHint: false
|
|
1163
1233
|
},
|
|
1164
1234
|
async (body) => {
|
|
1165
1235
|
try {
|
|
@@ -1177,22 +1247,23 @@ function register(server, client) {
|
|
|
1177
1247
|
}
|
|
1178
1248
|
}
|
|
1179
1249
|
);
|
|
1180
|
-
|
|
1250
|
+
registerSpeakTool(
|
|
1251
|
+
server,
|
|
1181
1252
|
"list_media",
|
|
1182
1253
|
"List and search media files in the workspace with filtering, pagination, and sorting. Use filterName for text search, mediaType to filter by audio/video/text, folderId for folder-specific results, and from/to for date ranges. Use the include param to embed additional data (transcripts, speakers, keywords) inline with each result, avoiding N+1 API calls. Returns mediaIds you can pass to get_transcript, get_media_insights, or ask_magic_prompt. For deep full-text search across transcripts, use search_media instead.",
|
|
1183
1254
|
{
|
|
1184
|
-
mediaType:
|
|
1185
|
-
page:
|
|
1186
|
-
pageSize:
|
|
1187
|
-
sortBy:
|
|
1188
|
-
filterMedia:
|
|
1189
|
-
filterName:
|
|
1190
|
-
folderId:
|
|
1191
|
-
from:
|
|
1192
|
-
to:
|
|
1193
|
-
isFavorites:
|
|
1194
|
-
include:
|
|
1195
|
-
|
|
1255
|
+
mediaType: import_zod2.z.enum([MediaType.AUDIO, MediaType.VIDEO, MediaType.TEXT]).optional().describe('Filter by media type: "audio", "video", or "text"'),
|
|
1256
|
+
page: import_zod2.z.number().int().min(0).optional().describe("Page number for pagination (0-based, default: 0)"),
|
|
1257
|
+
pageSize: import_zod2.z.number().int().min(1).max(500).optional().describe("Number of results per page (default: 20, max: 500)"),
|
|
1258
|
+
sortBy: import_zod2.z.string().optional().describe('Sort field and direction, e.g. "createdAt:desc" or "name:asc"'),
|
|
1259
|
+
filterMedia: import_zod2.z.number().int().optional().describe("Filter: 0=Uploaded, 1=Assigned, 2=Both (default: 2)"),
|
|
1260
|
+
filterName: import_zod2.z.string().optional().describe("Filter media by partial name match"),
|
|
1261
|
+
folderId: import_zod2.z.string().optional().describe("Filter media within a specific folder"),
|
|
1262
|
+
from: import_zod2.z.string().optional().describe("Start date for date range filter (ISO 8601)"),
|
|
1263
|
+
to: import_zod2.z.string().optional().describe("End date for date range filter (ISO 8601)"),
|
|
1264
|
+
isFavorites: import_zod2.z.boolean().optional().describe("Filter to only show favorited media"),
|
|
1265
|
+
include: import_zod2.z.array(
|
|
1266
|
+
import_zod2.z.enum([
|
|
1196
1267
|
"transcription",
|
|
1197
1268
|
"keywords",
|
|
1198
1269
|
"speakers",
|
|
@@ -1231,11 +1302,12 @@ function register(server, client) {
|
|
|
1231
1302
|
}
|
|
1232
1303
|
}
|
|
1233
1304
|
);
|
|
1234
|
-
|
|
1305
|
+
registerSpeakTool(
|
|
1306
|
+
server,
|
|
1235
1307
|
"get_media_insights",
|
|
1236
1308
|
"Retrieve AI-generated insights for a processed media file \u2014 topics, sentiment, keywords, action items, summaries, and more. The media must be in 'processed' state (check with get_media_status first). For asking custom questions about a media file, use ask_magic_prompt instead.",
|
|
1237
1309
|
{
|
|
1238
|
-
mediaId:
|
|
1310
|
+
mediaId: import_zod2.z.string().min(1).describe("Unique identifier of the media file")
|
|
1239
1311
|
},
|
|
1240
1312
|
{
|
|
1241
1313
|
title: "Get Media Insights",
|
|
@@ -1260,11 +1332,12 @@ function register(server, client) {
|
|
|
1260
1332
|
}
|
|
1261
1333
|
}
|
|
1262
1334
|
);
|
|
1263
|
-
|
|
1335
|
+
registerSpeakTool(
|
|
1336
|
+
server,
|
|
1264
1337
|
"get_transcript",
|
|
1265
1338
|
"Retrieve the full transcript for a processed media file with speaker labels and timestamps. The media must be in 'processed' state. Use update_transcript_speakers to rename speaker labels after reviewing. For subtitle-formatted output, use get_captions instead.",
|
|
1266
1339
|
{
|
|
1267
|
-
mediaId:
|
|
1340
|
+
mediaId: import_zod2.z.string().min(1).describe("Unique identifier of the media file")
|
|
1268
1341
|
},
|
|
1269
1342
|
{
|
|
1270
1343
|
title: "Get Transcript",
|
|
@@ -1289,15 +1362,16 @@ function register(server, client) {
|
|
|
1289
1362
|
}
|
|
1290
1363
|
}
|
|
1291
1364
|
);
|
|
1292
|
-
|
|
1365
|
+
registerSpeakTool(
|
|
1366
|
+
server,
|
|
1293
1367
|
"update_transcript_speakers",
|
|
1294
1368
|
"Update or rename speaker labels in a media transcript.",
|
|
1295
1369
|
{
|
|
1296
|
-
mediaId:
|
|
1297
|
-
speakers:
|
|
1298
|
-
|
|
1299
|
-
id:
|
|
1300
|
-
name:
|
|
1370
|
+
mediaId: import_zod2.z.string().min(1).describe("Unique identifier of the media file"),
|
|
1371
|
+
speakers: import_zod2.z.array(
|
|
1372
|
+
import_zod2.z.object({
|
|
1373
|
+
id: import_zod2.z.string().min(1).describe("Speaker identifier from the transcript"),
|
|
1374
|
+
name: import_zod2.z.string().min(1).describe("Display name to assign to the speaker")
|
|
1301
1375
|
})
|
|
1302
1376
|
).describe("Array of speaker ID to name mappings")
|
|
1303
1377
|
},
|
|
@@ -1327,11 +1401,12 @@ function register(server, client) {
|
|
|
1327
1401
|
}
|
|
1328
1402
|
}
|
|
1329
1403
|
);
|
|
1330
|
-
|
|
1404
|
+
registerSpeakTool(
|
|
1405
|
+
server,
|
|
1331
1406
|
"get_media_status",
|
|
1332
1407
|
"Check the processing status of a media file. States: pending \u2192 transcribing \u2192 analyzing \u2192 processed (or failed). Poll this after upload_media until state is 'processed', then use get_transcript and get_media_insights to retrieve results.",
|
|
1333
1408
|
{
|
|
1334
|
-
mediaId:
|
|
1409
|
+
mediaId: import_zod2.z.string().min(1).describe("Unique identifier of the media file")
|
|
1335
1410
|
},
|
|
1336
1411
|
{
|
|
1337
1412
|
title: "Get Media Status",
|
|
@@ -1356,18 +1431,19 @@ function register(server, client) {
|
|
|
1356
1431
|
}
|
|
1357
1432
|
}
|
|
1358
1433
|
);
|
|
1359
|
-
|
|
1434
|
+
registerSpeakTool(
|
|
1435
|
+
server,
|
|
1360
1436
|
"update_media_metadata",
|
|
1361
1437
|
"Update metadata fields (name, description, tags, status) for an existing media file.",
|
|
1362
1438
|
{
|
|
1363
|
-
mediaId:
|
|
1364
|
-
name:
|
|
1365
|
-
description:
|
|
1366
|
-
folderId:
|
|
1367
|
-
tags:
|
|
1368
|
-
status:
|
|
1369
|
-
remark:
|
|
1370
|
-
manageBy:
|
|
1439
|
+
mediaId: import_zod2.z.string().min(1).describe("Unique identifier of the media file"),
|
|
1440
|
+
name: import_zod2.z.string().optional().describe("New display name for the media"),
|
|
1441
|
+
description: import_zod2.z.string().optional().describe("Description or notes for the media"),
|
|
1442
|
+
folderId: import_zod2.z.string().optional().describe("Move media to this folder ID"),
|
|
1443
|
+
tags: import_zod2.z.array(import_zod2.z.string()).optional().describe("Array of tags to assign to the media"),
|
|
1444
|
+
status: import_zod2.z.string().optional().describe("Media status value"),
|
|
1445
|
+
remark: import_zod2.z.string().optional().describe("Internal remark or note"),
|
|
1446
|
+
manageBy: import_zod2.z.string().optional().describe("User ID to assign management of this media to")
|
|
1371
1447
|
},
|
|
1372
1448
|
{
|
|
1373
1449
|
title: "Update Media Metadata",
|
|
@@ -1392,11 +1468,12 @@ function register(server, client) {
|
|
|
1392
1468
|
}
|
|
1393
1469
|
}
|
|
1394
1470
|
);
|
|
1395
|
-
|
|
1471
|
+
registerSpeakTool(
|
|
1472
|
+
server,
|
|
1396
1473
|
"delete_media",
|
|
1397
1474
|
"Permanently delete a media file and all associated transcripts and insights.",
|
|
1398
1475
|
{
|
|
1399
|
-
mediaId:
|
|
1476
|
+
mediaId: import_zod2.z.string().min(1).describe("Unique identifier of the media file to delete")
|
|
1400
1477
|
},
|
|
1401
1478
|
{
|
|
1402
1479
|
title: "Delete Media File",
|
|
@@ -1421,11 +1498,12 @@ function register(server, client) {
|
|
|
1421
1498
|
}
|
|
1422
1499
|
}
|
|
1423
1500
|
);
|
|
1424
|
-
|
|
1501
|
+
registerSpeakTool(
|
|
1502
|
+
server,
|
|
1425
1503
|
"get_captions",
|
|
1426
1504
|
"Get captions for a media file. Captions are separate from full transcripts and are formatted for display/subtitles.",
|
|
1427
1505
|
{
|
|
1428
|
-
mediaId:
|
|
1506
|
+
mediaId: import_zod2.z.string().min(1).describe("Unique identifier of the media file")
|
|
1429
1507
|
},
|
|
1430
1508
|
{
|
|
1431
1509
|
title: "Get Captions",
|
|
@@ -1450,7 +1528,8 @@ function register(server, client) {
|
|
|
1450
1528
|
}
|
|
1451
1529
|
}
|
|
1452
1530
|
);
|
|
1453
|
-
|
|
1531
|
+
registerSpeakTool(
|
|
1532
|
+
server,
|
|
1454
1533
|
"list_supported_languages",
|
|
1455
1534
|
"List all languages supported for transcription. Use the language codes when uploading media with a specific sourceLanguage.",
|
|
1456
1535
|
{},
|
|
@@ -1477,7 +1556,8 @@ function register(server, client) {
|
|
|
1477
1556
|
}
|
|
1478
1557
|
}
|
|
1479
1558
|
);
|
|
1480
|
-
|
|
1559
|
+
registerSpeakTool(
|
|
1560
|
+
server,
|
|
1481
1561
|
"get_media_statistics",
|
|
1482
1562
|
"Get workspace-level media statistics \u2014 total counts, processing status breakdown, storage usage, etc.",
|
|
1483
1563
|
{},
|
|
@@ -1504,11 +1584,12 @@ function register(server, client) {
|
|
|
1504
1584
|
}
|
|
1505
1585
|
}
|
|
1506
1586
|
);
|
|
1507
|
-
|
|
1587
|
+
registerSpeakTool(
|
|
1588
|
+
server,
|
|
1508
1589
|
"toggle_media_favorite",
|
|
1509
1590
|
"Mark or unmark a media file as a favorite for quick access.",
|
|
1510
1591
|
{
|
|
1511
|
-
mediaId:
|
|
1592
|
+
mediaId: import_zod2.z.string().min(1).describe("Unique identifier of the media file")
|
|
1512
1593
|
},
|
|
1513
1594
|
{
|
|
1514
1595
|
title: "Toggle Media Favorite",
|
|
@@ -1533,11 +1614,12 @@ function register(server, client) {
|
|
|
1533
1614
|
}
|
|
1534
1615
|
}
|
|
1535
1616
|
);
|
|
1536
|
-
|
|
1617
|
+
registerSpeakTool(
|
|
1618
|
+
server,
|
|
1537
1619
|
"reanalyze_media",
|
|
1538
1620
|
"Re-run AI analysis on a media file using the latest models. Use this after Speak AI has updated its analysis capabilities or if the original analysis was incomplete.",
|
|
1539
1621
|
{
|
|
1540
|
-
mediaId:
|
|
1622
|
+
mediaId: import_zod2.z.string().min(1).describe("Unique identifier of the media file to re-analyze")
|
|
1541
1623
|
},
|
|
1542
1624
|
{
|
|
1543
1625
|
title: "Re-analyze Media",
|
|
@@ -1562,15 +1644,16 @@ function register(server, client) {
|
|
|
1562
1644
|
}
|
|
1563
1645
|
}
|
|
1564
1646
|
);
|
|
1565
|
-
|
|
1647
|
+
registerSpeakTool(
|
|
1648
|
+
server,
|
|
1566
1649
|
"bulk_update_transcript_speakers",
|
|
1567
1650
|
"Update or rename speaker labels across multiple media files in a single operation. Applies the same speaker mappings to every specified media file. Use this instead of calling update_transcript_speakers repeatedly when renaming speakers across a project or folder.",
|
|
1568
1651
|
{
|
|
1569
|
-
mediaIds:
|
|
1570
|
-
speakers:
|
|
1571
|
-
|
|
1572
|
-
id:
|
|
1573
|
-
name:
|
|
1652
|
+
mediaIds: import_zod2.z.array(import_zod2.z.string().min(1)).min(1).max(500).describe("Array of media IDs to update speakers for (max 500 per call)"),
|
|
1653
|
+
speakers: import_zod2.z.array(
|
|
1654
|
+
import_zod2.z.object({
|
|
1655
|
+
id: import_zod2.z.string().min(1).describe("Speaker identifier from the transcript"),
|
|
1656
|
+
name: import_zod2.z.string().min(1).describe("Display name to assign to the speaker")
|
|
1574
1657
|
})
|
|
1575
1658
|
).describe("Array of speaker ID to name mappings to apply to all specified media files")
|
|
1576
1659
|
},
|
|
@@ -1608,12 +1691,13 @@ function register(server, client) {
|
|
|
1608
1691
|
};
|
|
1609
1692
|
}
|
|
1610
1693
|
);
|
|
1611
|
-
|
|
1694
|
+
registerSpeakTool(
|
|
1695
|
+
server,
|
|
1612
1696
|
"bulk_move_media",
|
|
1613
1697
|
"Move multiple media files to a folder in a single operation. Use this for batch reorganization instead of updating media one by one.",
|
|
1614
1698
|
{
|
|
1615
|
-
folderId:
|
|
1616
|
-
mediaIds:
|
|
1699
|
+
folderId: import_zod2.z.string().min(1).describe("Target folder ID to move media into"),
|
|
1700
|
+
mediaIds: import_zod2.z.array(import_zod2.z.string().min(1)).min(1).describe("Array of media IDs to move")
|
|
1617
1701
|
},
|
|
1618
1702
|
{
|
|
1619
1703
|
title: "Bulk Move Media Files",
|
|
@@ -1639,11 +1723,12 @@ function register(server, client) {
|
|
|
1639
1723
|
}
|
|
1640
1724
|
);
|
|
1641
1725
|
}
|
|
1642
|
-
var
|
|
1726
|
+
var import_zod2;
|
|
1643
1727
|
var init_media3 = __esm({
|
|
1644
1728
|
"src/tools/media.ts"() {
|
|
1645
1729
|
"use strict";
|
|
1646
|
-
|
|
1730
|
+
import_zod2 = require("zod");
|
|
1731
|
+
init_helpers();
|
|
1647
1732
|
init_client();
|
|
1648
1733
|
init_dist();
|
|
1649
1734
|
}
|
|
@@ -1656,20 +1741,21 @@ __export(text_exports, {
|
|
|
1656
1741
|
});
|
|
1657
1742
|
function register2(server, client) {
|
|
1658
1743
|
const api = client ?? speakClient;
|
|
1659
|
-
|
|
1744
|
+
registerSpeakTool(
|
|
1745
|
+
server,
|
|
1660
1746
|
"create_text_note",
|
|
1661
1747
|
"Create a new text note in Speak AI for analysis. The content will be analyzed for insights, topics, and sentiment.",
|
|
1662
1748
|
{
|
|
1663
|
-
name:
|
|
1664
|
-
text:
|
|
1665
|
-
description:
|
|
1666
|
-
folderId:
|
|
1667
|
-
tags:
|
|
1668
|
-
callbackUrl:
|
|
1669
|
-
fields:
|
|
1670
|
-
|
|
1671
|
-
id:
|
|
1672
|
-
value:
|
|
1749
|
+
name: import_zod3.z.string().min(1).describe("Title/name for the text note"),
|
|
1750
|
+
text: import_zod3.z.string().optional().describe("Full text content to analyze"),
|
|
1751
|
+
description: import_zod3.z.string().optional().describe("Description for the text note"),
|
|
1752
|
+
folderId: import_zod3.z.string().optional().describe("ID of the folder to place the note in"),
|
|
1753
|
+
tags: import_zod3.z.string().optional().describe("Comma-separated tags or array of tag strings"),
|
|
1754
|
+
callbackUrl: import_zod3.z.string().optional().describe("Webhook callback URL for completion notification"),
|
|
1755
|
+
fields: import_zod3.z.array(
|
|
1756
|
+
import_zod3.z.object({
|
|
1757
|
+
id: import_zod3.z.string().min(1).describe("Custom field ID"),
|
|
1758
|
+
value: import_zod3.z.string().min(1).describe("Custom field value")
|
|
1673
1759
|
})
|
|
1674
1760
|
).optional().describe("Custom field values to attach to the text note")
|
|
1675
1761
|
},
|
|
@@ -1696,11 +1782,12 @@ function register2(server, client) {
|
|
|
1696
1782
|
}
|
|
1697
1783
|
}
|
|
1698
1784
|
);
|
|
1699
|
-
|
|
1785
|
+
registerSpeakTool(
|
|
1786
|
+
server,
|
|
1700
1787
|
"get_text_insight",
|
|
1701
1788
|
"Retrieve AI-generated insights for a text note, including topics, sentiment, summaries, and action items.",
|
|
1702
1789
|
{
|
|
1703
|
-
mediaId:
|
|
1790
|
+
mediaId: import_zod3.z.string().min(1).describe("Unique identifier of the text note")
|
|
1704
1791
|
},
|
|
1705
1792
|
{
|
|
1706
1793
|
title: "Get Text Note Insights",
|
|
@@ -1725,11 +1812,12 @@ function register2(server, client) {
|
|
|
1725
1812
|
}
|
|
1726
1813
|
}
|
|
1727
1814
|
);
|
|
1728
|
-
|
|
1815
|
+
registerSpeakTool(
|
|
1816
|
+
server,
|
|
1729
1817
|
"reanalyze_text",
|
|
1730
1818
|
"Trigger a re-analysis of an existing text note to regenerate insights with the latest AI models.",
|
|
1731
1819
|
{
|
|
1732
|
-
mediaId:
|
|
1820
|
+
mediaId: import_zod3.z.string().describe("Unique identifier of the text note to reanalyze")
|
|
1733
1821
|
},
|
|
1734
1822
|
{
|
|
1735
1823
|
title: "Re-analyze Text Note",
|
|
@@ -1754,16 +1842,17 @@ function register2(server, client) {
|
|
|
1754
1842
|
}
|
|
1755
1843
|
}
|
|
1756
1844
|
);
|
|
1757
|
-
|
|
1845
|
+
registerSpeakTool(
|
|
1846
|
+
server,
|
|
1758
1847
|
"update_text_note",
|
|
1759
1848
|
"Update an existing text note's name, content, or metadata. Updating text content will trigger re-analysis.",
|
|
1760
1849
|
{
|
|
1761
|
-
mediaId:
|
|
1762
|
-
name:
|
|
1763
|
-
text:
|
|
1764
|
-
description:
|
|
1765
|
-
folderId:
|
|
1766
|
-
tags:
|
|
1850
|
+
mediaId: import_zod3.z.string().min(1).describe("Unique identifier of the text note"),
|
|
1851
|
+
name: import_zod3.z.string().optional().describe("New name for the text note"),
|
|
1852
|
+
text: import_zod3.z.string().optional().describe("New text content (will trigger re-analysis)"),
|
|
1853
|
+
description: import_zod3.z.string().optional().describe("Updated description"),
|
|
1854
|
+
folderId: import_zod3.z.string().optional().describe("Move to a different folder"),
|
|
1855
|
+
tags: import_zod3.z.string().optional().describe("Updated comma-separated tags")
|
|
1767
1856
|
},
|
|
1768
1857
|
{
|
|
1769
1858
|
title: "Update Text Note",
|
|
@@ -1792,11 +1881,12 @@ function register2(server, client) {
|
|
|
1792
1881
|
}
|
|
1793
1882
|
);
|
|
1794
1883
|
}
|
|
1795
|
-
var
|
|
1884
|
+
var import_zod3;
|
|
1796
1885
|
var init_text2 = __esm({
|
|
1797
1886
|
"src/tools/text.ts"() {
|
|
1798
1887
|
"use strict";
|
|
1799
|
-
|
|
1888
|
+
import_zod3 = require("zod");
|
|
1889
|
+
init_helpers();
|
|
1800
1890
|
init_client();
|
|
1801
1891
|
}
|
|
1802
1892
|
});
|
|
@@ -1808,18 +1898,19 @@ __export(exports_exports, {
|
|
|
1808
1898
|
});
|
|
1809
1899
|
function register3(server, client) {
|
|
1810
1900
|
const api = client ?? speakClient;
|
|
1811
|
-
|
|
1901
|
+
registerSpeakTool(
|
|
1902
|
+
server,
|
|
1812
1903
|
"export_media",
|
|
1813
1904
|
"Export a media file's transcript or insights in various formats (pdf, docx, srt, vtt, txt, csv).",
|
|
1814
1905
|
{
|
|
1815
|
-
mediaId:
|
|
1816
|
-
fileType:
|
|
1817
|
-
isSpeakerNames:
|
|
1818
|
-
isSpeakerEmail:
|
|
1819
|
-
isTimeStamps:
|
|
1820
|
-
isInsightVisualized:
|
|
1821
|
-
isRedacted:
|
|
1822
|
-
redactedCategories:
|
|
1906
|
+
mediaId: import_zod4.z.string().min(1).describe("Unique identifier of the media file"),
|
|
1907
|
+
fileType: import_zod4.z.enum(["pdf", "docx", "srt", "vtt", "txt", "csv"]).describe("Desired export format"),
|
|
1908
|
+
isSpeakerNames: import_zod4.z.boolean().optional().describe("Include speaker names in export"),
|
|
1909
|
+
isSpeakerEmail: import_zod4.z.boolean().optional().describe("Include speaker emails in export"),
|
|
1910
|
+
isTimeStamps: import_zod4.z.boolean().optional().describe("Include timestamps in export"),
|
|
1911
|
+
isInsightVisualized: import_zod4.z.boolean().optional().describe("Include insight visualizations"),
|
|
1912
|
+
isRedacted: import_zod4.z.boolean().optional().describe("Apply PII redaction to export"),
|
|
1913
|
+
redactedCategories: import_zod4.z.array(import_zod4.z.string()).optional().describe("Specific categories to redact")
|
|
1823
1914
|
},
|
|
1824
1915
|
{
|
|
1825
1916
|
title: "Export Media Transcript",
|
|
@@ -1847,19 +1938,20 @@ function register3(server, client) {
|
|
|
1847
1938
|
}
|
|
1848
1939
|
}
|
|
1849
1940
|
);
|
|
1850
|
-
|
|
1941
|
+
registerSpeakTool(
|
|
1942
|
+
server,
|
|
1851
1943
|
"export_multiple_media",
|
|
1852
1944
|
"Export multiple media files at once, optionally merged into a single file.",
|
|
1853
1945
|
{
|
|
1854
|
-
mediaIds:
|
|
1855
|
-
fileType:
|
|
1856
|
-
isSpeakerNames:
|
|
1857
|
-
isSpeakerEmail:
|
|
1858
|
-
isTimeStamps:
|
|
1859
|
-
isInsightVisualized:
|
|
1860
|
-
isRedacted:
|
|
1861
|
-
isMerged:
|
|
1862
|
-
folderId:
|
|
1946
|
+
mediaIds: import_zod4.z.array(import_zod4.z.string()).describe("Array of media IDs to export"),
|
|
1947
|
+
fileType: import_zod4.z.enum(["pdf", "docx", "srt", "vtt", "txt", "csv"]).describe("Desired export format"),
|
|
1948
|
+
isSpeakerNames: import_zod4.z.boolean().optional().describe("Include speaker names in export"),
|
|
1949
|
+
isSpeakerEmail: import_zod4.z.boolean().optional().describe("Include speaker emails in export"),
|
|
1950
|
+
isTimeStamps: import_zod4.z.boolean().optional().describe("Include timestamps in export"),
|
|
1951
|
+
isInsightVisualized: import_zod4.z.boolean().optional().describe("Include insight visualizations"),
|
|
1952
|
+
isRedacted: import_zod4.z.boolean().optional().describe("Apply PII redaction to export"),
|
|
1953
|
+
isMerged: import_zod4.z.boolean().optional().describe("Merge all exports into a single file"),
|
|
1954
|
+
folderId: import_zod4.z.string().optional().describe("Folder ID for the merged export")
|
|
1863
1955
|
},
|
|
1864
1956
|
{
|
|
1865
1957
|
title: "Export Multiple Media Files",
|
|
@@ -1888,11 +1980,12 @@ function register3(server, client) {
|
|
|
1888
1980
|
}
|
|
1889
1981
|
);
|
|
1890
1982
|
}
|
|
1891
|
-
var
|
|
1983
|
+
var import_zod4;
|
|
1892
1984
|
var init_exports = __esm({
|
|
1893
1985
|
"src/tools/exports.ts"() {
|
|
1894
1986
|
"use strict";
|
|
1895
|
-
|
|
1987
|
+
import_zod4 = require("zod");
|
|
1988
|
+
init_helpers();
|
|
1896
1989
|
init_client();
|
|
1897
1990
|
}
|
|
1898
1991
|
});
|
|
@@ -1904,7 +1997,8 @@ __export(folders_exports, {
|
|
|
1904
1997
|
});
|
|
1905
1998
|
function register4(server, client) {
|
|
1906
1999
|
const api = client ?? speakClient;
|
|
1907
|
-
|
|
2000
|
+
registerSpeakTool(
|
|
2001
|
+
server,
|
|
1908
2002
|
"get_all_folder_views",
|
|
1909
2003
|
"Retrieve all saved views across all folders.",
|
|
1910
2004
|
{},
|
|
@@ -1931,11 +2025,12 @@ function register4(server, client) {
|
|
|
1931
2025
|
}
|
|
1932
2026
|
}
|
|
1933
2027
|
);
|
|
1934
|
-
|
|
2028
|
+
registerSpeakTool(
|
|
2029
|
+
server,
|
|
1935
2030
|
"get_folder_views",
|
|
1936
2031
|
"Retrieve all saved views for a specific folder.",
|
|
1937
2032
|
{
|
|
1938
|
-
folderId:
|
|
2033
|
+
folderId: import_zod5.z.string().min(1).describe("Unique identifier of the folder")
|
|
1939
2034
|
},
|
|
1940
2035
|
{
|
|
1941
2036
|
title: "Get Folder Views",
|
|
@@ -1960,13 +2055,14 @@ function register4(server, client) {
|
|
|
1960
2055
|
}
|
|
1961
2056
|
}
|
|
1962
2057
|
);
|
|
1963
|
-
|
|
2058
|
+
registerSpeakTool(
|
|
2059
|
+
server,
|
|
1964
2060
|
"create_folder_view",
|
|
1965
2061
|
"Create a new saved view for a folder with custom filters and display settings.",
|
|
1966
2062
|
{
|
|
1967
|
-
folderId:
|
|
1968
|
-
name:
|
|
1969
|
-
filters:
|
|
2063
|
+
folderId: import_zod5.z.string().min(1).describe("Unique identifier of the folder"),
|
|
2064
|
+
name: import_zod5.z.string().optional().describe("Display name for the view"),
|
|
2065
|
+
filters: import_zod5.z.record(import_zod5.z.unknown()).optional().describe("Filter configuration object")
|
|
1970
2066
|
},
|
|
1971
2067
|
{
|
|
1972
2068
|
title: "Create Folder View",
|
|
@@ -1994,14 +2090,15 @@ function register4(server, client) {
|
|
|
1994
2090
|
}
|
|
1995
2091
|
}
|
|
1996
2092
|
);
|
|
1997
|
-
|
|
2093
|
+
registerSpeakTool(
|
|
2094
|
+
server,
|
|
1998
2095
|
"update_folder_view",
|
|
1999
2096
|
"Update an existing saved view's name, filters, or display settings.",
|
|
2000
2097
|
{
|
|
2001
|
-
folderId:
|
|
2002
|
-
viewId:
|
|
2003
|
-
name:
|
|
2004
|
-
filters:
|
|
2098
|
+
folderId: import_zod5.z.string().min(1).describe("Unique identifier of the folder"),
|
|
2099
|
+
viewId: import_zod5.z.string().min(1).describe("Unique identifier of the view to update"),
|
|
2100
|
+
name: import_zod5.z.string().optional().describe("New display name for the view"),
|
|
2101
|
+
filters: import_zod5.z.record(import_zod5.z.unknown()).optional().describe("Updated filter configuration")
|
|
2005
2102
|
},
|
|
2006
2103
|
{
|
|
2007
2104
|
title: "Update Folder View",
|
|
@@ -2029,11 +2126,12 @@ function register4(server, client) {
|
|
|
2029
2126
|
}
|
|
2030
2127
|
}
|
|
2031
2128
|
);
|
|
2032
|
-
|
|
2129
|
+
registerSpeakTool(
|
|
2130
|
+
server,
|
|
2033
2131
|
"clone_folder_view",
|
|
2034
2132
|
"Duplicate an existing folder view.",
|
|
2035
2133
|
{
|
|
2036
|
-
viewId:
|
|
2134
|
+
viewId: import_zod5.z.string().min(1).describe("Unique identifier of the view to clone")
|
|
2037
2135
|
},
|
|
2038
2136
|
{
|
|
2039
2137
|
title: "Clone Folder View",
|
|
@@ -2058,13 +2156,14 @@ function register4(server, client) {
|
|
|
2058
2156
|
}
|
|
2059
2157
|
}
|
|
2060
2158
|
);
|
|
2061
|
-
|
|
2159
|
+
registerSpeakTool(
|
|
2160
|
+
server,
|
|
2062
2161
|
"list_folders",
|
|
2063
2162
|
"List all folders in the workspace with pagination and sorting.",
|
|
2064
2163
|
{
|
|
2065
|
-
page:
|
|
2066
|
-
pageSize:
|
|
2067
|
-
sortBy:
|
|
2164
|
+
page: import_zod5.z.number().int().min(0).optional().describe("Page number (0-based, default: 0)"),
|
|
2165
|
+
pageSize: import_zod5.z.number().int().min(1).max(500).optional().describe("Results per page (default: 20, max: 500)"),
|
|
2166
|
+
sortBy: import_zod5.z.string().optional().describe('Sort field and direction, e.g. "createdAt:desc"')
|
|
2068
2167
|
},
|
|
2069
2168
|
{
|
|
2070
2169
|
title: "List Folders",
|
|
@@ -2089,11 +2188,12 @@ function register4(server, client) {
|
|
|
2089
2188
|
}
|
|
2090
2189
|
}
|
|
2091
2190
|
);
|
|
2092
|
-
|
|
2191
|
+
registerSpeakTool(
|
|
2192
|
+
server,
|
|
2093
2193
|
"get_folder_info",
|
|
2094
2194
|
"Get detailed information about a specific folder including its contents.",
|
|
2095
2195
|
{
|
|
2096
|
-
folderId:
|
|
2196
|
+
folderId: import_zod5.z.string().min(1).describe("Unique identifier of the folder")
|
|
2097
2197
|
},
|
|
2098
2198
|
{
|
|
2099
2199
|
title: "Get Folder Info",
|
|
@@ -2118,12 +2218,13 @@ function register4(server, client) {
|
|
|
2118
2218
|
}
|
|
2119
2219
|
}
|
|
2120
2220
|
);
|
|
2121
|
-
|
|
2221
|
+
registerSpeakTool(
|
|
2222
|
+
server,
|
|
2122
2223
|
"create_folder",
|
|
2123
2224
|
"Create a new folder in the workspace.",
|
|
2124
2225
|
{
|
|
2125
|
-
name:
|
|
2126
|
-
parentFolderId:
|
|
2226
|
+
name: import_zod5.z.string().min(1).describe("Display name for the new folder"),
|
|
2227
|
+
parentFolderId: import_zod5.z.string().optional().describe("ID of the parent folder for nesting")
|
|
2127
2228
|
},
|
|
2128
2229
|
{
|
|
2129
2230
|
title: "Create Folder",
|
|
@@ -2148,11 +2249,12 @@ function register4(server, client) {
|
|
|
2148
2249
|
}
|
|
2149
2250
|
}
|
|
2150
2251
|
);
|
|
2151
|
-
|
|
2252
|
+
registerSpeakTool(
|
|
2253
|
+
server,
|
|
2152
2254
|
"clone_folder",
|
|
2153
2255
|
"Duplicate an existing folder and all of its contents.",
|
|
2154
2256
|
{
|
|
2155
|
-
folderId:
|
|
2257
|
+
folderId: import_zod5.z.string().min(1).describe("ID of the folder to clone")
|
|
2156
2258
|
},
|
|
2157
2259
|
{
|
|
2158
2260
|
title: "Clone Folder",
|
|
@@ -2177,12 +2279,13 @@ function register4(server, client) {
|
|
|
2177
2279
|
}
|
|
2178
2280
|
}
|
|
2179
2281
|
);
|
|
2180
|
-
|
|
2282
|
+
registerSpeakTool(
|
|
2283
|
+
server,
|
|
2181
2284
|
"update_folder",
|
|
2182
2285
|
"Update a folder's name or other properties.",
|
|
2183
2286
|
{
|
|
2184
|
-
folderId:
|
|
2185
|
-
name:
|
|
2287
|
+
folderId: import_zod5.z.string().min(1).describe("Unique identifier of the folder"),
|
|
2288
|
+
name: import_zod5.z.string().optional().describe("New display name for the folder")
|
|
2186
2289
|
},
|
|
2187
2290
|
{
|
|
2188
2291
|
title: "Update Folder",
|
|
@@ -2207,11 +2310,12 @@ function register4(server, client) {
|
|
|
2207
2310
|
}
|
|
2208
2311
|
}
|
|
2209
2312
|
);
|
|
2210
|
-
|
|
2313
|
+
registerSpeakTool(
|
|
2314
|
+
server,
|
|
2211
2315
|
"delete_folder",
|
|
2212
2316
|
"Permanently delete a folder. Media within the folder will be moved, not deleted.",
|
|
2213
2317
|
{
|
|
2214
|
-
folderId:
|
|
2318
|
+
folderId: import_zod5.z.string().min(1).describe("Unique identifier of the folder to delete")
|
|
2215
2319
|
},
|
|
2216
2320
|
{
|
|
2217
2321
|
title: "Delete Folder",
|
|
@@ -2237,11 +2341,12 @@ function register4(server, client) {
|
|
|
2237
2341
|
}
|
|
2238
2342
|
);
|
|
2239
2343
|
}
|
|
2240
|
-
var
|
|
2344
|
+
var import_zod5;
|
|
2241
2345
|
var init_folders = __esm({
|
|
2242
2346
|
"src/tools/folders.ts"() {
|
|
2243
2347
|
"use strict";
|
|
2244
|
-
|
|
2348
|
+
import_zod5 = require("zod");
|
|
2349
|
+
init_helpers();
|
|
2245
2350
|
init_client();
|
|
2246
2351
|
}
|
|
2247
2352
|
});
|
|
@@ -2253,11 +2358,12 @@ __export(recorder_exports, {
|
|
|
2253
2358
|
});
|
|
2254
2359
|
function register5(server, client) {
|
|
2255
2360
|
const api = client ?? speakClient;
|
|
2256
|
-
|
|
2361
|
+
registerSpeakTool(
|
|
2362
|
+
server,
|
|
2257
2363
|
"check_recorder_status",
|
|
2258
2364
|
"Check whether a recorder/survey is active and accepting submissions.",
|
|
2259
2365
|
{
|
|
2260
|
-
token:
|
|
2366
|
+
token: import_zod6.z.string().min(1).describe("Unique token identifying the recorder")
|
|
2261
2367
|
},
|
|
2262
2368
|
{
|
|
2263
2369
|
title: "Check Recorder Status",
|
|
@@ -2280,13 +2386,14 @@ function register5(server, client) {
|
|
|
2280
2386
|
}
|
|
2281
2387
|
}
|
|
2282
2388
|
);
|
|
2283
|
-
|
|
2389
|
+
registerSpeakTool(
|
|
2390
|
+
server,
|
|
2284
2391
|
"create_recorder",
|
|
2285
2392
|
"Create a new recorder or survey for collecting audio/video submissions.",
|
|
2286
2393
|
{
|
|
2287
|
-
name:
|
|
2288
|
-
folderId:
|
|
2289
|
-
settings:
|
|
2394
|
+
name: import_zod6.z.string().optional().describe("Display name for the recorder"),
|
|
2395
|
+
folderId: import_zod6.z.string().optional().describe("Folder to store recordings in"),
|
|
2396
|
+
settings: import_zod6.z.record(import_zod6.z.unknown()).optional().describe("Recorder configuration settings")
|
|
2290
2397
|
},
|
|
2291
2398
|
{
|
|
2292
2399
|
title: "Create Recorder",
|
|
@@ -2309,13 +2416,14 @@ function register5(server, client) {
|
|
|
2309
2416
|
}
|
|
2310
2417
|
}
|
|
2311
2418
|
);
|
|
2312
|
-
|
|
2419
|
+
registerSpeakTool(
|
|
2420
|
+
server,
|
|
2313
2421
|
"list_recorders",
|
|
2314
2422
|
"List all recorders/surveys in the workspace.",
|
|
2315
2423
|
{
|
|
2316
|
-
page:
|
|
2317
|
-
pageSize:
|
|
2318
|
-
sortBy:
|
|
2424
|
+
page: import_zod6.z.number().int().min(0).optional().describe("Page number (0-based, default: 0)"),
|
|
2425
|
+
pageSize: import_zod6.z.number().int().min(1).max(500).optional().describe("Results per page (default: 20, max: 500)"),
|
|
2426
|
+
sortBy: import_zod6.z.string().optional().describe('Sort field, e.g. "createdAt:desc"')
|
|
2319
2427
|
},
|
|
2320
2428
|
{
|
|
2321
2429
|
title: "List Recorders",
|
|
@@ -2338,11 +2446,12 @@ function register5(server, client) {
|
|
|
2338
2446
|
}
|
|
2339
2447
|
}
|
|
2340
2448
|
);
|
|
2341
|
-
|
|
2449
|
+
registerSpeakTool(
|
|
2450
|
+
server,
|
|
2342
2451
|
"clone_recorder",
|
|
2343
2452
|
"Duplicate an existing recorder including all its settings and questions.",
|
|
2344
2453
|
{
|
|
2345
|
-
recorderId:
|
|
2454
|
+
recorderId: import_zod6.z.string().min(1).describe("ID of the recorder to clone")
|
|
2346
2455
|
},
|
|
2347
2456
|
{
|
|
2348
2457
|
title: "Clone Recorder",
|
|
@@ -2365,11 +2474,12 @@ function register5(server, client) {
|
|
|
2365
2474
|
}
|
|
2366
2475
|
}
|
|
2367
2476
|
);
|
|
2368
|
-
|
|
2477
|
+
registerSpeakTool(
|
|
2478
|
+
server,
|
|
2369
2479
|
"get_recorder_info",
|
|
2370
2480
|
"Get detailed information about a specific recorder including its settings and questions.",
|
|
2371
2481
|
{
|
|
2372
|
-
recorderId:
|
|
2482
|
+
recorderId: import_zod6.z.string().min(1).describe("Unique identifier of the recorder")
|
|
2373
2483
|
},
|
|
2374
2484
|
{
|
|
2375
2485
|
title: "Get Recorder Info",
|
|
@@ -2392,11 +2502,12 @@ function register5(server, client) {
|
|
|
2392
2502
|
}
|
|
2393
2503
|
}
|
|
2394
2504
|
);
|
|
2395
|
-
|
|
2505
|
+
registerSpeakTool(
|
|
2506
|
+
server,
|
|
2396
2507
|
"get_recorder_recordings",
|
|
2397
2508
|
"List all submissions/recordings collected by a specific recorder.",
|
|
2398
2509
|
{
|
|
2399
|
-
recorderId:
|
|
2510
|
+
recorderId: import_zod6.z.string().min(1).describe("Unique identifier of the recorder")
|
|
2400
2511
|
},
|
|
2401
2512
|
{
|
|
2402
2513
|
title: "Get Recorder Submissions",
|
|
@@ -2419,11 +2530,12 @@ function register5(server, client) {
|
|
|
2419
2530
|
}
|
|
2420
2531
|
}
|
|
2421
2532
|
);
|
|
2422
|
-
|
|
2533
|
+
registerSpeakTool(
|
|
2534
|
+
server,
|
|
2423
2535
|
"generate_recorder_url",
|
|
2424
2536
|
"Generate a shareable public URL for a recorder/survey.",
|
|
2425
2537
|
{
|
|
2426
|
-
recorderId:
|
|
2538
|
+
recorderId: import_zod6.z.string().min(1).describe("Unique identifier of the recorder")
|
|
2427
2539
|
},
|
|
2428
2540
|
{
|
|
2429
2541
|
title: "Generate Recorder Share URL",
|
|
@@ -2446,12 +2558,13 @@ function register5(server, client) {
|
|
|
2446
2558
|
}
|
|
2447
2559
|
}
|
|
2448
2560
|
);
|
|
2449
|
-
|
|
2561
|
+
registerSpeakTool(
|
|
2562
|
+
server,
|
|
2450
2563
|
"update_recorder_settings",
|
|
2451
2564
|
"Update configuration settings for a recorder (branding, permissions, etc.).",
|
|
2452
2565
|
{
|
|
2453
|
-
recorderId:
|
|
2454
|
-
settings:
|
|
2566
|
+
recorderId: import_zod6.z.string().min(1).describe("Unique identifier of the recorder"),
|
|
2567
|
+
settings: import_zod6.z.record(import_zod6.z.unknown()).describe("Settings object with updated values")
|
|
2455
2568
|
},
|
|
2456
2569
|
{
|
|
2457
2570
|
title: "Update Recorder Settings",
|
|
@@ -2474,12 +2587,13 @@ function register5(server, client) {
|
|
|
2474
2587
|
}
|
|
2475
2588
|
}
|
|
2476
2589
|
);
|
|
2477
|
-
|
|
2590
|
+
registerSpeakTool(
|
|
2591
|
+
server,
|
|
2478
2592
|
"update_recorder_questions",
|
|
2479
2593
|
"Update the survey questions for a recorder.",
|
|
2480
2594
|
{
|
|
2481
|
-
recorderId:
|
|
2482
|
-
questions:
|
|
2595
|
+
recorderId: import_zod6.z.string().min(1).describe("Unique identifier of the recorder"),
|
|
2596
|
+
questions: import_zod6.z.array(import_zod6.z.record(import_zod6.z.unknown())).describe("Array of question objects")
|
|
2483
2597
|
},
|
|
2484
2598
|
{
|
|
2485
2599
|
title: "Update Recorder Questions",
|
|
@@ -2502,11 +2616,12 @@ function register5(server, client) {
|
|
|
2502
2616
|
}
|
|
2503
2617
|
}
|
|
2504
2618
|
);
|
|
2505
|
-
|
|
2619
|
+
registerSpeakTool(
|
|
2620
|
+
server,
|
|
2506
2621
|
"delete_recorder",
|
|
2507
2622
|
"Permanently delete a recorder/survey. Existing recordings are preserved.",
|
|
2508
2623
|
{
|
|
2509
|
-
recorderId:
|
|
2624
|
+
recorderId: import_zod6.z.string().min(1).describe("Unique identifier of the recorder to delete")
|
|
2510
2625
|
},
|
|
2511
2626
|
{
|
|
2512
2627
|
title: "Delete Recorder",
|
|
@@ -2530,11 +2645,12 @@ function register5(server, client) {
|
|
|
2530
2645
|
}
|
|
2531
2646
|
);
|
|
2532
2647
|
}
|
|
2533
|
-
var
|
|
2648
|
+
var import_zod6;
|
|
2534
2649
|
var init_recorder3 = __esm({
|
|
2535
2650
|
"src/tools/recorder.ts"() {
|
|
2536
2651
|
"use strict";
|
|
2537
|
-
|
|
2652
|
+
import_zod6 = require("zod");
|
|
2653
|
+
init_helpers();
|
|
2538
2654
|
init_client();
|
|
2539
2655
|
}
|
|
2540
2656
|
});
|
|
@@ -2546,12 +2662,13 @@ __export(embed_exports, {
|
|
|
2546
2662
|
});
|
|
2547
2663
|
function register6(server, client) {
|
|
2548
2664
|
const api = client ?? speakClient;
|
|
2549
|
-
|
|
2665
|
+
registerSpeakTool(
|
|
2666
|
+
server,
|
|
2550
2667
|
"create_embed",
|
|
2551
2668
|
"Create an embeddable player/transcript widget for a media file.",
|
|
2552
2669
|
{
|
|
2553
|
-
mediaId:
|
|
2554
|
-
settings:
|
|
2670
|
+
mediaId: import_zod7.z.string().min(1).describe("Unique identifier of the media file"),
|
|
2671
|
+
settings: import_zod7.z.record(import_zod7.z.unknown()).optional().describe("Embed configuration settings")
|
|
2555
2672
|
},
|
|
2556
2673
|
{
|
|
2557
2674
|
title: "Create Embed Widget",
|
|
@@ -2574,12 +2691,13 @@ function register6(server, client) {
|
|
|
2574
2691
|
}
|
|
2575
2692
|
}
|
|
2576
2693
|
);
|
|
2577
|
-
|
|
2694
|
+
registerSpeakTool(
|
|
2695
|
+
server,
|
|
2578
2696
|
"update_embed",
|
|
2579
2697
|
"Update settings for an existing embed widget.",
|
|
2580
2698
|
{
|
|
2581
|
-
embedId:
|
|
2582
|
-
settings:
|
|
2699
|
+
embedId: import_zod7.z.string().min(1).describe("Unique identifier of the embed"),
|
|
2700
|
+
settings: import_zod7.z.record(import_zod7.z.unknown()).optional().describe("Updated embed settings")
|
|
2583
2701
|
},
|
|
2584
2702
|
{
|
|
2585
2703
|
title: "Update Embed Widget",
|
|
@@ -2602,11 +2720,12 @@ function register6(server, client) {
|
|
|
2602
2720
|
}
|
|
2603
2721
|
}
|
|
2604
2722
|
);
|
|
2605
|
-
|
|
2723
|
+
registerSpeakTool(
|
|
2724
|
+
server,
|
|
2606
2725
|
"check_embed",
|
|
2607
2726
|
"Check if an embed exists for a media file and retrieve its configuration.",
|
|
2608
2727
|
{
|
|
2609
|
-
mediaId:
|
|
2728
|
+
mediaId: import_zod7.z.string().min(1).describe("Unique identifier of the media file")
|
|
2610
2729
|
},
|
|
2611
2730
|
{
|
|
2612
2731
|
title: "Check Embed Exists",
|
|
@@ -2629,11 +2748,12 @@ function register6(server, client) {
|
|
|
2629
2748
|
}
|
|
2630
2749
|
}
|
|
2631
2750
|
);
|
|
2632
|
-
|
|
2751
|
+
registerSpeakTool(
|
|
2752
|
+
server,
|
|
2633
2753
|
"get_embed_iframe_url",
|
|
2634
2754
|
"Get the iframe URL for embedding a media player/transcript on a webpage.",
|
|
2635
2755
|
{
|
|
2636
|
-
mediaId:
|
|
2756
|
+
mediaId: import_zod7.z.string().min(1).describe("Unique identifier of the media file")
|
|
2637
2757
|
},
|
|
2638
2758
|
{
|
|
2639
2759
|
title: "Get Embed Iframe URL",
|
|
@@ -2659,11 +2779,12 @@ function register6(server, client) {
|
|
|
2659
2779
|
}
|
|
2660
2780
|
);
|
|
2661
2781
|
}
|
|
2662
|
-
var
|
|
2782
|
+
var import_zod7;
|
|
2663
2783
|
var init_embed3 = __esm({
|
|
2664
2784
|
"src/tools/embed.ts"() {
|
|
2665
2785
|
"use strict";
|
|
2666
|
-
|
|
2786
|
+
import_zod7 = require("zod");
|
|
2787
|
+
init_helpers();
|
|
2667
2788
|
init_client();
|
|
2668
2789
|
}
|
|
2669
2790
|
});
|
|
@@ -2675,7 +2796,8 @@ __export(prompt_exports, {
|
|
|
2675
2796
|
});
|
|
2676
2797
|
function register7(server, client) {
|
|
2677
2798
|
const api = client ?? speakClient;
|
|
2678
|
-
|
|
2799
|
+
registerSpeakTool(
|
|
2800
|
+
server,
|
|
2679
2801
|
"ask_magic_prompt",
|
|
2680
2802
|
[
|
|
2681
2803
|
"Ask an AI-powered question about your media using Speak AI's Magic Prompt.",
|
|
@@ -2686,18 +2808,18 @@ function register7(server, client) {
|
|
|
2686
2808
|
"Returns a promptId \u2014 save it to continue the conversation with follow-up questions."
|
|
2687
2809
|
].join(" "),
|
|
2688
2810
|
{
|
|
2689
|
-
prompt:
|
|
2690
|
-
mediaIds:
|
|
2691
|
-
folderIds:
|
|
2692
|
-
folderId:
|
|
2693
|
-
assistantType:
|
|
2694
|
-
assistantTemplateId:
|
|
2695
|
-
promptId:
|
|
2696
|
-
speakers:
|
|
2697
|
-
tags:
|
|
2698
|
-
startDate:
|
|
2699
|
-
endDate:
|
|
2700
|
-
isIndividualPrompt:
|
|
2811
|
+
prompt: import_zod8.z.string().min(1).describe("The question or prompt to ask about the media"),
|
|
2812
|
+
mediaIds: import_zod8.z.array(import_zod8.z.string()).optional().describe("Array of media IDs to query. Omit along with folderIds to search across all media in your workspace."),
|
|
2813
|
+
folderIds: import_zod8.z.array(import_zod8.z.string()).optional().describe("Array of folder IDs to scope the query to. Omit along with mediaIds to search across all media."),
|
|
2814
|
+
folderId: import_zod8.z.string().optional().describe("Single folder ID to scope the query to. Use folderIds for multiple folders."),
|
|
2815
|
+
assistantType: import_zod8.z.enum(Object.values(AssistantType)).optional().describe("Assistant persona: 'general' (default), 'researcher' (academic), 'marketer' (content), 'sales' (deals), 'recruiter' (hiring). Use 'custom' with assistantTemplateId."),
|
|
2816
|
+
assistantTemplateId: import_zod8.z.string().optional().describe("Required when assistantType is 'custom'. ID of a custom assistant template from list_prompts."),
|
|
2817
|
+
promptId: import_zod8.z.string().optional().describe("ID of an existing conversation to continue. Pass this to maintain chat context across multiple questions."),
|
|
2818
|
+
speakers: import_zod8.z.array(import_zod8.z.string()).optional().describe("Filter to specific speaker IDs from the transcript"),
|
|
2819
|
+
tags: import_zod8.z.array(import_zod8.z.string()).optional().describe("Filter media by tags"),
|
|
2820
|
+
startDate: import_zod8.z.string().optional().describe("Start date for date range filter (ISO 8601, e.g., '2025-01-01')"),
|
|
2821
|
+
endDate: import_zod8.z.string().optional().describe("End date for date range filter (ISO 8601, e.g., '2025-03-31')"),
|
|
2822
|
+
isIndividualPrompt: import_zod8.z.boolean().optional().describe("When true, processes each media file separately instead of combining context. Useful for comparing responses across files.")
|
|
2701
2823
|
},
|
|
2702
2824
|
{
|
|
2703
2825
|
title: "Ask AI About Your Recordings",
|
|
@@ -2720,12 +2842,13 @@ function register7(server, client) {
|
|
|
2720
2842
|
}
|
|
2721
2843
|
}
|
|
2722
2844
|
);
|
|
2723
|
-
|
|
2845
|
+
registerSpeakTool(
|
|
2846
|
+
server,
|
|
2724
2847
|
"retry_magic_prompt",
|
|
2725
2848
|
"Retry a failed or incomplete Magic Prompt response. Use when a previous ask_magic_prompt call returned an error or incomplete answer.",
|
|
2726
2849
|
{
|
|
2727
|
-
promptId:
|
|
2728
|
-
messageId:
|
|
2850
|
+
promptId: import_zod8.z.string().min(1).describe("ID of the conversation containing the failed message"),
|
|
2851
|
+
messageId: import_zod8.z.string().min(1).describe("ID of the specific message to retry")
|
|
2729
2852
|
},
|
|
2730
2853
|
{
|
|
2731
2854
|
title: "Retry AI Question",
|
|
@@ -2748,11 +2871,12 @@ function register7(server, client) {
|
|
|
2748
2871
|
}
|
|
2749
2872
|
}
|
|
2750
2873
|
);
|
|
2751
|
-
|
|
2874
|
+
registerSpeakTool(
|
|
2875
|
+
server,
|
|
2752
2876
|
"get_chat_history",
|
|
2753
2877
|
"Get a list of recent Magic Prompt conversations. Returns conversation summaries with promptIds that can be used to continue conversations via ask_magic_prompt or retrieve full messages via get_chat_messages.",
|
|
2754
2878
|
{
|
|
2755
|
-
limit:
|
|
2879
|
+
limit: import_zod8.z.number().int().positive().optional().describe("Number of recent conversations to return (default: 10)")
|
|
2756
2880
|
},
|
|
2757
2881
|
{
|
|
2758
2882
|
title: "Get Chat History",
|
|
@@ -2777,16 +2901,17 @@ function register7(server, client) {
|
|
|
2777
2901
|
}
|
|
2778
2902
|
}
|
|
2779
2903
|
);
|
|
2780
|
-
|
|
2904
|
+
registerSpeakTool(
|
|
2905
|
+
server,
|
|
2781
2906
|
"get_chat_messages",
|
|
2782
2907
|
"Get full message history for conversations. Can filter by promptId for a specific conversation, by media/folder, or search across all chat messages. Returns questions, answers, references, and metadata.",
|
|
2783
2908
|
{
|
|
2784
|
-
promptId:
|
|
2785
|
-
folderId:
|
|
2786
|
-
mediaIds:
|
|
2787
|
-
query:
|
|
2788
|
-
page:
|
|
2789
|
-
pageSize:
|
|
2909
|
+
promptId: import_zod8.z.string().optional().describe("Filter to a specific conversation by its ID"),
|
|
2910
|
+
folderId: import_zod8.z.string().optional().describe("Filter messages by folder ID"),
|
|
2911
|
+
mediaIds: import_zod8.z.string().optional().describe("Filter by media IDs (comma-separated)"),
|
|
2912
|
+
query: import_zod8.z.string().optional().describe("Search text in prompts and answers"),
|
|
2913
|
+
page: import_zod8.z.number().int().min(0).optional().describe("Page number for pagination (0-based, default: 0)"),
|
|
2914
|
+
pageSize: import_zod8.z.number().int().min(1).max(500).optional().describe("Results per page (default: 25, max: 500)")
|
|
2790
2915
|
},
|
|
2791
2916
|
{
|
|
2792
2917
|
title: "Get Chat Messages",
|
|
@@ -2809,11 +2934,12 @@ function register7(server, client) {
|
|
|
2809
2934
|
}
|
|
2810
2935
|
}
|
|
2811
2936
|
);
|
|
2812
|
-
|
|
2937
|
+
registerSpeakTool(
|
|
2938
|
+
server,
|
|
2813
2939
|
"delete_chat_message",
|
|
2814
2940
|
"Delete a specific chat message from conversation history.",
|
|
2815
2941
|
{
|
|
2816
|
-
promptId:
|
|
2942
|
+
promptId: import_zod8.z.string().min(1).describe("ID of the message to delete")
|
|
2817
2943
|
},
|
|
2818
2944
|
{
|
|
2819
2945
|
title: "Delete Chat Message",
|
|
@@ -2836,7 +2962,8 @@ function register7(server, client) {
|
|
|
2836
2962
|
}
|
|
2837
2963
|
}
|
|
2838
2964
|
);
|
|
2839
|
-
|
|
2965
|
+
registerSpeakTool(
|
|
2966
|
+
server,
|
|
2840
2967
|
"list_prompts",
|
|
2841
2968
|
"List all available Magic Prompt templates. Use template IDs with ask_magic_prompt's assistantTemplateId parameter when using assistantType 'custom'.",
|
|
2842
2969
|
{},
|
|
@@ -2861,7 +2988,8 @@ function register7(server, client) {
|
|
|
2861
2988
|
}
|
|
2862
2989
|
}
|
|
2863
2990
|
);
|
|
2864
|
-
|
|
2991
|
+
registerSpeakTool(
|
|
2992
|
+
server,
|
|
2865
2993
|
"get_favorite_prompts",
|
|
2866
2994
|
"Get all prompts and answers that have been marked as favorites. Useful for finding saved insights and important AI-generated analysis.",
|
|
2867
2995
|
{},
|
|
@@ -2886,13 +3014,14 @@ function register7(server, client) {
|
|
|
2886
3014
|
}
|
|
2887
3015
|
}
|
|
2888
3016
|
);
|
|
2889
|
-
|
|
3017
|
+
registerSpeakTool(
|
|
3018
|
+
server,
|
|
2890
3019
|
"toggle_prompt_favorite",
|
|
2891
3020
|
"Mark or unmark a chat message as a favorite for easy retrieval later.",
|
|
2892
3021
|
{
|
|
2893
|
-
promptId:
|
|
2894
|
-
messageId:
|
|
2895
|
-
isFavorite:
|
|
3022
|
+
promptId: import_zod8.z.string().min(1).describe("ID of the conversation"),
|
|
3023
|
+
messageId: import_zod8.z.string().min(1).describe("ID of the specific message to favorite/unfavorite"),
|
|
3024
|
+
isFavorite: import_zod8.z.boolean().describe("true to mark as favorite, false to remove")
|
|
2896
3025
|
},
|
|
2897
3026
|
{
|
|
2898
3027
|
title: "Toggle Prompt Favorite",
|
|
@@ -2915,12 +3044,13 @@ function register7(server, client) {
|
|
|
2915
3044
|
}
|
|
2916
3045
|
}
|
|
2917
3046
|
);
|
|
2918
|
-
|
|
3047
|
+
registerSpeakTool(
|
|
3048
|
+
server,
|
|
2919
3049
|
"update_chat_title",
|
|
2920
3050
|
"Update the title of a chat conversation for easier identification in history.",
|
|
2921
3051
|
{
|
|
2922
|
-
promptId:
|
|
2923
|
-
title:
|
|
3052
|
+
promptId: import_zod8.z.string().min(1).describe("ID of the conversation to rename"),
|
|
3053
|
+
title: import_zod8.z.string().min(1).describe("New title for the conversation")
|
|
2924
3054
|
},
|
|
2925
3055
|
{
|
|
2926
3056
|
title: "Rename Chat",
|
|
@@ -2943,14 +3073,15 @@ function register7(server, client) {
|
|
|
2943
3073
|
}
|
|
2944
3074
|
}
|
|
2945
3075
|
);
|
|
2946
|
-
|
|
3076
|
+
registerSpeakTool(
|
|
3077
|
+
server,
|
|
2947
3078
|
"submit_chat_feedback",
|
|
2948
3079
|
"Submit feedback on a chat response (thumbs up/down). Helps improve AI answer quality.",
|
|
2949
3080
|
{
|
|
2950
|
-
promptId:
|
|
2951
|
-
messageId:
|
|
2952
|
-
score:
|
|
2953
|
-
reason:
|
|
3081
|
+
promptId: import_zod8.z.string().min(1).describe("ID of the conversation"),
|
|
3082
|
+
messageId: import_zod8.z.string().min(1).describe("ID of the message to rate"),
|
|
3083
|
+
score: import_zod8.z.number().describe("Feedback score: 1 for thumbs up, -1 for thumbs down"),
|
|
3084
|
+
reason: import_zod8.z.string().optional().describe("Optional explanation for the feedback")
|
|
2954
3085
|
},
|
|
2955
3086
|
{
|
|
2956
3087
|
title: "Submit Chat Feedback",
|
|
@@ -2973,12 +3104,13 @@ function register7(server, client) {
|
|
|
2973
3104
|
}
|
|
2974
3105
|
}
|
|
2975
3106
|
);
|
|
2976
|
-
|
|
3107
|
+
registerSpeakTool(
|
|
3108
|
+
server,
|
|
2977
3109
|
"get_chat_statistics",
|
|
2978
3110
|
"Get usage statistics for Magic Prompt / chat. Returns metrics on prompt usage, optionally filtered by date range.",
|
|
2979
3111
|
{
|
|
2980
|
-
startDate:
|
|
2981
|
-
endDate:
|
|
3112
|
+
startDate: import_zod8.z.string().optional().describe("Start date for stats (ISO 8601)"),
|
|
3113
|
+
endDate: import_zod8.z.string().optional().describe("End date for stats (ISO 8601)")
|
|
2982
3114
|
},
|
|
2983
3115
|
{
|
|
2984
3116
|
title: "Get Chat Statistics",
|
|
@@ -3001,11 +3133,12 @@ function register7(server, client) {
|
|
|
3001
3133
|
}
|
|
3002
3134
|
}
|
|
3003
3135
|
);
|
|
3004
|
-
|
|
3136
|
+
registerSpeakTool(
|
|
3137
|
+
server,
|
|
3005
3138
|
"export_chat_answer",
|
|
3006
3139
|
"Export a Magic Prompt conversation or answer. Useful for saving AI-generated summaries, reports, or analysis results.",
|
|
3007
3140
|
{
|
|
3008
|
-
promptId:
|
|
3141
|
+
promptId: import_zod8.z.string().min(1).describe("ID of the conversation to export")
|
|
3009
3142
|
},
|
|
3010
3143
|
{
|
|
3011
3144
|
title: "Export Chat Answer",
|
|
@@ -3029,11 +3162,12 @@ function register7(server, client) {
|
|
|
3029
3162
|
}
|
|
3030
3163
|
);
|
|
3031
3164
|
}
|
|
3032
|
-
var
|
|
3165
|
+
var import_zod8;
|
|
3033
3166
|
var init_prompt3 = __esm({
|
|
3034
3167
|
"src/tools/prompt.ts"() {
|
|
3035
3168
|
"use strict";
|
|
3036
|
-
|
|
3169
|
+
import_zod8 = require("zod");
|
|
3170
|
+
init_helpers();
|
|
3037
3171
|
init_client();
|
|
3038
3172
|
init_dist();
|
|
3039
3173
|
}
|
|
@@ -3046,14 +3180,15 @@ __export(meeting_exports, {
|
|
|
3046
3180
|
});
|
|
3047
3181
|
function register8(server, client) {
|
|
3048
3182
|
const api = client ?? speakClient;
|
|
3049
|
-
|
|
3183
|
+
registerSpeakTool(
|
|
3184
|
+
server,
|
|
3050
3185
|
"list_meeting_events",
|
|
3051
3186
|
"List scheduled or completed meeting assistant events with filtering and pagination.",
|
|
3052
3187
|
{
|
|
3053
|
-
platformType:
|
|
3054
|
-
meetingStatus:
|
|
3055
|
-
page:
|
|
3056
|
-
pageSize:
|
|
3188
|
+
platformType: import_zod9.z.string().optional().describe("Filter by platform (e.g. zoom, teams, meet)"),
|
|
3189
|
+
meetingStatus: import_zod9.z.string().optional().describe("Filter by status (e.g. scheduled, completed, cancelled)"),
|
|
3190
|
+
page: import_zod9.z.number().int().min(0).optional().describe("Page number (0-based, default: 0)"),
|
|
3191
|
+
pageSize: import_zod9.z.number().int().min(1).max(500).optional().describe("Results per page (default: 20, max: 500)")
|
|
3057
3192
|
},
|
|
3058
3193
|
{
|
|
3059
3194
|
title: "List Meeting Events",
|
|
@@ -3078,13 +3213,14 @@ function register8(server, client) {
|
|
|
3078
3213
|
}
|
|
3079
3214
|
}
|
|
3080
3215
|
);
|
|
3081
|
-
|
|
3216
|
+
registerSpeakTool(
|
|
3217
|
+
server,
|
|
3082
3218
|
"schedule_meeting_event",
|
|
3083
3219
|
"Schedule the Speak AI meeting assistant to join and record an upcoming meeting.",
|
|
3084
3220
|
{
|
|
3085
|
-
meetingUrl:
|
|
3086
|
-
title:
|
|
3087
|
-
scheduledAt:
|
|
3221
|
+
meetingUrl: import_zod9.z.string().min(1).describe("URL of the meeting to join"),
|
|
3222
|
+
title: import_zod9.z.string().optional().describe("Display title for the event"),
|
|
3223
|
+
scheduledAt: import_zod9.z.string().optional().describe("ISO 8601 datetime for when the meeting starts")
|
|
3088
3224
|
},
|
|
3089
3225
|
{
|
|
3090
3226
|
title: "Schedule AI Meeting Assistant",
|
|
@@ -3110,11 +3246,12 @@ function register8(server, client) {
|
|
|
3110
3246
|
}
|
|
3111
3247
|
}
|
|
3112
3248
|
);
|
|
3113
|
-
|
|
3249
|
+
registerSpeakTool(
|
|
3250
|
+
server,
|
|
3114
3251
|
"remove_assistant_from_meeting",
|
|
3115
3252
|
"Remove the Speak AI assistant from an active or scheduled meeting.",
|
|
3116
3253
|
{
|
|
3117
|
-
meetingAssistantEventId:
|
|
3254
|
+
meetingAssistantEventId: import_zod9.z.string().describe("Unique identifier of the meeting assistant event")
|
|
3118
3255
|
},
|
|
3119
3256
|
{
|
|
3120
3257
|
title: "Remove Assistant from Meeting",
|
|
@@ -3141,11 +3278,12 @@ function register8(server, client) {
|
|
|
3141
3278
|
}
|
|
3142
3279
|
}
|
|
3143
3280
|
);
|
|
3144
|
-
|
|
3281
|
+
registerSpeakTool(
|
|
3282
|
+
server,
|
|
3145
3283
|
"delete_scheduled_assistant",
|
|
3146
3284
|
"Cancel and delete a scheduled meeting assistant event.",
|
|
3147
3285
|
{
|
|
3148
|
-
meetingAssistantEventId:
|
|
3286
|
+
meetingAssistantEventId: import_zod9.z.string().describe("Unique identifier of the meeting assistant event to cancel")
|
|
3149
3287
|
},
|
|
3150
3288
|
{
|
|
3151
3289
|
title: "Cancel Scheduled Meeting Assistant",
|
|
@@ -3172,11 +3310,12 @@ function register8(server, client) {
|
|
|
3172
3310
|
}
|
|
3173
3311
|
);
|
|
3174
3312
|
}
|
|
3175
|
-
var
|
|
3313
|
+
var import_zod9;
|
|
3176
3314
|
var init_meeting3 = __esm({
|
|
3177
3315
|
"src/tools/meeting.ts"() {
|
|
3178
3316
|
"use strict";
|
|
3179
|
-
|
|
3317
|
+
import_zod9 = require("zod");
|
|
3318
|
+
init_helpers();
|
|
3180
3319
|
init_client();
|
|
3181
3320
|
}
|
|
3182
3321
|
});
|
|
@@ -3188,7 +3327,8 @@ __export(fields_exports, {
|
|
|
3188
3327
|
});
|
|
3189
3328
|
function register9(server, client) {
|
|
3190
3329
|
const api = client ?? speakClient;
|
|
3191
|
-
|
|
3330
|
+
registerSpeakTool(
|
|
3331
|
+
server,
|
|
3192
3332
|
"list_fields",
|
|
3193
3333
|
"List all custom fields defined in the workspace.",
|
|
3194
3334
|
{},
|
|
@@ -3213,13 +3353,14 @@ function register9(server, client) {
|
|
|
3213
3353
|
}
|
|
3214
3354
|
}
|
|
3215
3355
|
);
|
|
3216
|
-
|
|
3356
|
+
registerSpeakTool(
|
|
3357
|
+
server,
|
|
3217
3358
|
"create_field",
|
|
3218
3359
|
"Create a new custom field for categorizing and tagging media.",
|
|
3219
3360
|
{
|
|
3220
|
-
name:
|
|
3221
|
-
type:
|
|
3222
|
-
options:
|
|
3361
|
+
name: import_zod10.z.string().min(1).describe("Display name for the field"),
|
|
3362
|
+
type: import_zod10.z.string().optional().describe("Field type (text, number, select, etc.)"),
|
|
3363
|
+
options: import_zod10.z.array(import_zod10.z.string()).optional().describe("Options for select/multi-select field types")
|
|
3223
3364
|
},
|
|
3224
3365
|
{
|
|
3225
3366
|
title: "Create Custom Field",
|
|
@@ -3242,11 +3383,12 @@ function register9(server, client) {
|
|
|
3242
3383
|
}
|
|
3243
3384
|
}
|
|
3244
3385
|
);
|
|
3245
|
-
|
|
3386
|
+
registerSpeakTool(
|
|
3387
|
+
server,
|
|
3246
3388
|
"update_multiple_fields",
|
|
3247
3389
|
"Update multiple custom fields in a single batch operation.",
|
|
3248
3390
|
{
|
|
3249
|
-
fields:
|
|
3391
|
+
fields: import_zod10.z.array(import_zod10.z.record(import_zod10.z.unknown())).describe("Array of field objects to update")
|
|
3250
3392
|
},
|
|
3251
3393
|
{
|
|
3252
3394
|
title: "Bulk Update Custom Fields",
|
|
@@ -3269,14 +3411,15 @@ function register9(server, client) {
|
|
|
3269
3411
|
}
|
|
3270
3412
|
}
|
|
3271
3413
|
);
|
|
3272
|
-
|
|
3414
|
+
registerSpeakTool(
|
|
3415
|
+
server,
|
|
3273
3416
|
"update_field",
|
|
3274
3417
|
"Update a specific custom field by ID.",
|
|
3275
3418
|
{
|
|
3276
|
-
id:
|
|
3277
|
-
name:
|
|
3278
|
-
type:
|
|
3279
|
-
options:
|
|
3419
|
+
id: import_zod10.z.string().min(1).describe("Unique identifier of the field"),
|
|
3420
|
+
name: import_zod10.z.string().optional().describe("New display name"),
|
|
3421
|
+
type: import_zod10.z.string().optional().describe("New field type"),
|
|
3422
|
+
options: import_zod10.z.array(import_zod10.z.string()).optional().describe("Updated options for select types")
|
|
3280
3423
|
},
|
|
3281
3424
|
{
|
|
3282
3425
|
title: "Update Custom Field",
|
|
@@ -3300,11 +3443,12 @@ function register9(server, client) {
|
|
|
3300
3443
|
}
|
|
3301
3444
|
);
|
|
3302
3445
|
}
|
|
3303
|
-
var
|
|
3446
|
+
var import_zod10;
|
|
3304
3447
|
var init_fields2 = __esm({
|
|
3305
3448
|
"src/tools/fields.ts"() {
|
|
3306
3449
|
"use strict";
|
|
3307
|
-
|
|
3450
|
+
import_zod10 = require("zod");
|
|
3451
|
+
init_helpers();
|
|
3308
3452
|
init_client();
|
|
3309
3453
|
}
|
|
3310
3454
|
});
|
|
@@ -3316,7 +3460,8 @@ __export(automations_exports, {
|
|
|
3316
3460
|
});
|
|
3317
3461
|
function register10(server, client) {
|
|
3318
3462
|
const api = client ?? speakClient;
|
|
3319
|
-
|
|
3463
|
+
registerSpeakTool(
|
|
3464
|
+
server,
|
|
3320
3465
|
"list_automations",
|
|
3321
3466
|
"List all automation rules configured in the workspace.",
|
|
3322
3467
|
{},
|
|
@@ -3341,11 +3486,12 @@ function register10(server, client) {
|
|
|
3341
3486
|
}
|
|
3342
3487
|
}
|
|
3343
3488
|
);
|
|
3344
|
-
|
|
3489
|
+
registerSpeakTool(
|
|
3490
|
+
server,
|
|
3345
3491
|
"get_automation",
|
|
3346
3492
|
"Get detailed information about a specific automation rule.",
|
|
3347
3493
|
{
|
|
3348
|
-
automationId:
|
|
3494
|
+
automationId: import_zod11.z.string().min(1).describe("Unique identifier of the automation")
|
|
3349
3495
|
},
|
|
3350
3496
|
{
|
|
3351
3497
|
title: "Get Automation Details",
|
|
@@ -3368,14 +3514,15 @@ function register10(server, client) {
|
|
|
3368
3514
|
}
|
|
3369
3515
|
}
|
|
3370
3516
|
);
|
|
3371
|
-
|
|
3517
|
+
registerSpeakTool(
|
|
3518
|
+
server,
|
|
3372
3519
|
"create_automation",
|
|
3373
3520
|
"Create a new automation rule for automatic media processing workflows.",
|
|
3374
3521
|
{
|
|
3375
|
-
name:
|
|
3376
|
-
trigger:
|
|
3377
|
-
actions:
|
|
3378
|
-
config:
|
|
3522
|
+
name: import_zod11.z.string().optional().describe("Display name for the automation"),
|
|
3523
|
+
trigger: import_zod11.z.record(import_zod11.z.unknown()).optional().describe("Trigger configuration"),
|
|
3524
|
+
actions: import_zod11.z.array(import_zod11.z.record(import_zod11.z.unknown())).optional().describe("Array of action configurations"),
|
|
3525
|
+
config: import_zod11.z.record(import_zod11.z.unknown()).optional().describe("Full automation configuration object")
|
|
3379
3526
|
},
|
|
3380
3527
|
{
|
|
3381
3528
|
title: "Create Automation",
|
|
@@ -3398,15 +3545,16 @@ function register10(server, client) {
|
|
|
3398
3545
|
}
|
|
3399
3546
|
}
|
|
3400
3547
|
);
|
|
3401
|
-
|
|
3548
|
+
registerSpeakTool(
|
|
3549
|
+
server,
|
|
3402
3550
|
"update_automation",
|
|
3403
3551
|
"Update an existing automation rule's configuration.",
|
|
3404
3552
|
{
|
|
3405
|
-
automationId:
|
|
3406
|
-
name:
|
|
3407
|
-
trigger:
|
|
3408
|
-
actions:
|
|
3409
|
-
config:
|
|
3553
|
+
automationId: import_zod11.z.string().min(1).describe("Unique identifier of the automation"),
|
|
3554
|
+
name: import_zod11.z.string().optional().describe("New display name"),
|
|
3555
|
+
trigger: import_zod11.z.record(import_zod11.z.unknown()).optional().describe("Updated trigger configuration"),
|
|
3556
|
+
actions: import_zod11.z.array(import_zod11.z.record(import_zod11.z.unknown())).optional().describe("Updated action configurations"),
|
|
3557
|
+
config: import_zod11.z.record(import_zod11.z.unknown()).optional().describe("Full updated configuration object")
|
|
3410
3558
|
},
|
|
3411
3559
|
{
|
|
3412
3560
|
title: "Update Automation",
|
|
@@ -3432,12 +3580,13 @@ function register10(server, client) {
|
|
|
3432
3580
|
}
|
|
3433
3581
|
}
|
|
3434
3582
|
);
|
|
3435
|
-
|
|
3583
|
+
registerSpeakTool(
|
|
3584
|
+
server,
|
|
3436
3585
|
"toggle_automation_status",
|
|
3437
3586
|
"Enable or disable an automation rule.",
|
|
3438
3587
|
{
|
|
3439
|
-
automationId:
|
|
3440
|
-
enabled:
|
|
3588
|
+
automationId: import_zod11.z.string().min(1).describe("Unique identifier of the automation"),
|
|
3589
|
+
enabled: import_zod11.z.boolean().describe("Set to true to enable, false to disable")
|
|
3441
3590
|
},
|
|
3442
3591
|
{
|
|
3443
3592
|
title: "Enable or Disable Automation",
|
|
@@ -3464,11 +3613,12 @@ function register10(server, client) {
|
|
|
3464
3613
|
}
|
|
3465
3614
|
);
|
|
3466
3615
|
}
|
|
3467
|
-
var
|
|
3616
|
+
var import_zod11;
|
|
3468
3617
|
var init_automations = __esm({
|
|
3469
3618
|
"src/tools/automations.ts"() {
|
|
3470
3619
|
"use strict";
|
|
3471
|
-
|
|
3620
|
+
import_zod11 = require("zod");
|
|
3621
|
+
init_helpers();
|
|
3472
3622
|
init_client();
|
|
3473
3623
|
}
|
|
3474
3624
|
});
|
|
@@ -3480,12 +3630,13 @@ __export(webhooks_exports, {
|
|
|
3480
3630
|
});
|
|
3481
3631
|
function register11(server, client) {
|
|
3482
3632
|
const api = client ?? speakClient;
|
|
3483
|
-
|
|
3633
|
+
registerSpeakTool(
|
|
3634
|
+
server,
|
|
3484
3635
|
"create_webhook",
|
|
3485
3636
|
"Create a new webhook to receive real-time notifications when events occur in Speak AI.",
|
|
3486
3637
|
{
|
|
3487
|
-
url:
|
|
3488
|
-
events:
|
|
3638
|
+
url: import_zod12.z.string().url().describe("HTTPS endpoint URL to receive webhook payloads"),
|
|
3639
|
+
events: import_zod12.z.array(import_zod12.z.string()).optional().describe("Array of event types to subscribe to")
|
|
3489
3640
|
},
|
|
3490
3641
|
{
|
|
3491
3642
|
title: "Create Webhook",
|
|
@@ -3508,7 +3659,8 @@ function register11(server, client) {
|
|
|
3508
3659
|
}
|
|
3509
3660
|
}
|
|
3510
3661
|
);
|
|
3511
|
-
|
|
3662
|
+
registerSpeakTool(
|
|
3663
|
+
server,
|
|
3512
3664
|
"list_webhooks",
|
|
3513
3665
|
"List all configured webhooks in the workspace.",
|
|
3514
3666
|
{},
|
|
@@ -3533,13 +3685,14 @@ function register11(server, client) {
|
|
|
3533
3685
|
}
|
|
3534
3686
|
}
|
|
3535
3687
|
);
|
|
3536
|
-
|
|
3688
|
+
registerSpeakTool(
|
|
3689
|
+
server,
|
|
3537
3690
|
"update_webhook",
|
|
3538
3691
|
"Update an existing webhook's URL or subscribed events.",
|
|
3539
3692
|
{
|
|
3540
|
-
webhookId:
|
|
3541
|
-
url:
|
|
3542
|
-
events:
|
|
3693
|
+
webhookId: import_zod12.z.string().min(1).describe("Unique identifier of the webhook"),
|
|
3694
|
+
url: import_zod12.z.string().url().optional().describe("New endpoint URL"),
|
|
3695
|
+
events: import_zod12.z.array(import_zod12.z.string()).optional().describe("Updated array of event types")
|
|
3543
3696
|
},
|
|
3544
3697
|
{
|
|
3545
3698
|
title: "Update Webhook",
|
|
@@ -3562,11 +3715,12 @@ function register11(server, client) {
|
|
|
3562
3715
|
}
|
|
3563
3716
|
}
|
|
3564
3717
|
);
|
|
3565
|
-
|
|
3718
|
+
registerSpeakTool(
|
|
3719
|
+
server,
|
|
3566
3720
|
"delete_webhook",
|
|
3567
3721
|
"Delete a webhook and stop receiving notifications at its endpoint.",
|
|
3568
3722
|
{
|
|
3569
|
-
webhookId:
|
|
3723
|
+
webhookId: import_zod12.z.string().min(1).describe("Unique identifier of the webhook to delete")
|
|
3570
3724
|
},
|
|
3571
3725
|
{
|
|
3572
3726
|
title: "Delete Webhook",
|
|
@@ -3590,11 +3744,12 @@ function register11(server, client) {
|
|
|
3590
3744
|
}
|
|
3591
3745
|
);
|
|
3592
3746
|
}
|
|
3593
|
-
var
|
|
3747
|
+
var import_zod12;
|
|
3594
3748
|
var init_webhooks = __esm({
|
|
3595
3749
|
"src/tools/webhooks.ts"() {
|
|
3596
3750
|
"use strict";
|
|
3597
|
-
|
|
3751
|
+
import_zod12 = require("zod");
|
|
3752
|
+
init_helpers();
|
|
3598
3753
|
init_client();
|
|
3599
3754
|
}
|
|
3600
3755
|
});
|
|
@@ -3614,7 +3769,8 @@ function withDefaultSearchDateRange(params) {
|
|
|
3614
3769
|
}
|
|
3615
3770
|
function register12(server, client) {
|
|
3616
3771
|
const api = client ?? speakClient;
|
|
3617
|
-
|
|
3772
|
+
registerSpeakTool(
|
|
3773
|
+
server,
|
|
3618
3774
|
"search_media",
|
|
3619
3775
|
[
|
|
3620
3776
|
"Deep search across all media transcripts, insights, and metadata.",
|
|
@@ -3624,15 +3780,15 @@ function register12(server, client) {
|
|
|
3624
3780
|
"Results are scoped by date range \u2014 defaults to current year if not specified."
|
|
3625
3781
|
].join(" "),
|
|
3626
3782
|
{
|
|
3627
|
-
query:
|
|
3628
|
-
startDate:
|
|
3629
|
-
endDate:
|
|
3630
|
-
filterList:
|
|
3631
|
-
|
|
3632
|
-
fieldName:
|
|
3633
|
-
fieldOperator:
|
|
3634
|
-
fieldValue:
|
|
3635
|
-
fieldCondition:
|
|
3783
|
+
query: import_zod13.z.string().min(1).describe("Search query \u2014 searches across transcripts, insights, and metadata"),
|
|
3784
|
+
startDate: import_zod13.z.string().optional().describe("Start date for search range (ISO 8601). Defaults to start of current year."),
|
|
3785
|
+
endDate: import_zod13.z.string().optional().describe("End date for search range (ISO 8601). Defaults to now."),
|
|
3786
|
+
filterList: import_zod13.z.array(
|
|
3787
|
+
import_zod13.z.object({
|
|
3788
|
+
fieldName: import_zod13.z.enum(Object.values(FilterFieldName)).describe("Field to filter on"),
|
|
3789
|
+
fieldOperator: import_zod13.z.enum(Object.values(FilterOperator)).describe("Filter operator"),
|
|
3790
|
+
fieldValue: import_zod13.z.array(import_zod13.z.string()).describe("Values to filter by"),
|
|
3791
|
+
fieldCondition: import_zod13.z.enum(Object.values(FilterCondition)).describe("Condition linking multiple filters")
|
|
3636
3792
|
})
|
|
3637
3793
|
).optional().describe("Advanced filters for narrowing search results by tags, speakers, media type, sentiment, folder, etc.")
|
|
3638
3794
|
},
|
|
@@ -3658,11 +3814,12 @@ function register12(server, client) {
|
|
|
3658
3814
|
}
|
|
3659
3815
|
);
|
|
3660
3816
|
}
|
|
3661
|
-
var
|
|
3817
|
+
var import_zod13;
|
|
3662
3818
|
var init_analytics = __esm({
|
|
3663
3819
|
"src/tools/analytics.ts"() {
|
|
3664
3820
|
"use strict";
|
|
3665
|
-
|
|
3821
|
+
import_zod13 = require("zod");
|
|
3822
|
+
init_helpers();
|
|
3666
3823
|
init_client();
|
|
3667
3824
|
init_dist();
|
|
3668
3825
|
}
|
|
@@ -3675,7 +3832,8 @@ __export(clips_exports, {
|
|
|
3675
3832
|
});
|
|
3676
3833
|
function register13(server, client) {
|
|
3677
3834
|
const api = client ?? speakClient;
|
|
3678
|
-
|
|
3835
|
+
registerSpeakTool(
|
|
3836
|
+
server,
|
|
3679
3837
|
"create_clip",
|
|
3680
3838
|
[
|
|
3681
3839
|
"Create a highlight clip from one or more media files by specifying time ranges.",
|
|
@@ -3684,18 +3842,18 @@ function register13(server, client) {
|
|
|
3684
3842
|
"Use multiple timeRanges to stitch segments from different media files together."
|
|
3685
3843
|
].join(" "),
|
|
3686
3844
|
{
|
|
3687
|
-
title:
|
|
3688
|
-
mediaType:
|
|
3689
|
-
timeRanges:
|
|
3690
|
-
|
|
3691
|
-
mediaId:
|
|
3692
|
-
startTime:
|
|
3693
|
-
endTime:
|
|
3845
|
+
title: import_zod14.z.string().min(1).describe("Title for the clip"),
|
|
3846
|
+
mediaType: import_zod14.z.enum([MediaType.AUDIO, MediaType.VIDEO]).describe("Output media type"),
|
|
3847
|
+
timeRanges: import_zod14.z.array(
|
|
3848
|
+
import_zod14.z.object({
|
|
3849
|
+
mediaId: import_zod14.z.string().min(1).describe("Source media file ID"),
|
|
3850
|
+
startTime: import_zod14.z.number().min(0).describe("Start time in seconds"),
|
|
3851
|
+
endTime: import_zod14.z.number().min(0).describe("End time in seconds (must be > startTime)")
|
|
3694
3852
|
})
|
|
3695
3853
|
).min(1).describe("Array of time ranges to include in the clip. Each specifies a source media and start/end times."),
|
|
3696
|
-
description:
|
|
3697
|
-
tags:
|
|
3698
|
-
mergeStrategy:
|
|
3854
|
+
description: import_zod14.z.string().optional().describe("Description of the clip"),
|
|
3855
|
+
tags: import_zod14.z.array(import_zod14.z.string()).optional().describe("Tags for the clip"),
|
|
3856
|
+
mergeStrategy: import_zod14.z.enum(["CONCATENATE"]).optional().describe("How to merge multiple segments (default: CONCATENATE)")
|
|
3699
3857
|
},
|
|
3700
3858
|
{
|
|
3701
3859
|
title: "Create Highlight Clip",
|
|
@@ -3718,13 +3876,14 @@ function register13(server, client) {
|
|
|
3718
3876
|
}
|
|
3719
3877
|
}
|
|
3720
3878
|
);
|
|
3721
|
-
|
|
3879
|
+
registerSpeakTool(
|
|
3880
|
+
server,
|
|
3722
3881
|
"get_clips",
|
|
3723
3882
|
"List clips, optionally filtered by folder or media files. If clipId is provided, returns a single clip with its download URL (when processed).",
|
|
3724
3883
|
{
|
|
3725
|
-
clipId:
|
|
3726
|
-
folderId:
|
|
3727
|
-
mediaIds:
|
|
3884
|
+
clipId: import_zod14.z.string().optional().describe("Get a specific clip by ID"),
|
|
3885
|
+
folderId: import_zod14.z.string().optional().describe("Filter clips by folder ID"),
|
|
3886
|
+
mediaIds: import_zod14.z.array(import_zod14.z.string()).optional().describe("Filter clips by source media file IDs")
|
|
3728
3887
|
},
|
|
3729
3888
|
{
|
|
3730
3889
|
title: "List Clips",
|
|
@@ -3748,14 +3907,15 @@ function register13(server, client) {
|
|
|
3748
3907
|
}
|
|
3749
3908
|
}
|
|
3750
3909
|
);
|
|
3751
|
-
|
|
3910
|
+
registerSpeakTool(
|
|
3911
|
+
server,
|
|
3752
3912
|
"update_clip",
|
|
3753
3913
|
"Update a clip's title, description, or tags.",
|
|
3754
3914
|
{
|
|
3755
|
-
clipId:
|
|
3756
|
-
title:
|
|
3757
|
-
description:
|
|
3758
|
-
tags:
|
|
3915
|
+
clipId: import_zod14.z.string().min(1).describe("ID of the clip to update"),
|
|
3916
|
+
title: import_zod14.z.string().optional().describe("New title"),
|
|
3917
|
+
description: import_zod14.z.string().optional().describe("New description"),
|
|
3918
|
+
tags: import_zod14.z.array(import_zod14.z.string()).optional().describe("New tags")
|
|
3759
3919
|
},
|
|
3760
3920
|
{
|
|
3761
3921
|
title: "Update Clip",
|
|
@@ -3778,11 +3938,12 @@ function register13(server, client) {
|
|
|
3778
3938
|
}
|
|
3779
3939
|
}
|
|
3780
3940
|
);
|
|
3781
|
-
|
|
3941
|
+
registerSpeakTool(
|
|
3942
|
+
server,
|
|
3782
3943
|
"delete_clip",
|
|
3783
3944
|
"Permanently delete a clip and its associated media file.",
|
|
3784
3945
|
{
|
|
3785
|
-
clipId:
|
|
3946
|
+
clipId: import_zod14.z.string().min(1).describe("ID of the clip to delete")
|
|
3786
3947
|
},
|
|
3787
3948
|
{
|
|
3788
3949
|
title: "Delete Clip",
|
|
@@ -3806,11 +3967,12 @@ function register13(server, client) {
|
|
|
3806
3967
|
}
|
|
3807
3968
|
);
|
|
3808
3969
|
}
|
|
3809
|
-
var
|
|
3970
|
+
var import_zod14;
|
|
3810
3971
|
var init_clips = __esm({
|
|
3811
3972
|
"src/tools/clips.ts"() {
|
|
3812
3973
|
"use strict";
|
|
3813
|
-
|
|
3974
|
+
import_zod14 = require("zod");
|
|
3975
|
+
init_helpers();
|
|
3814
3976
|
init_client();
|
|
3815
3977
|
init_dist();
|
|
3816
3978
|
}
|
|
@@ -3857,16 +4019,17 @@ __export(workflows_exports, {
|
|
|
3857
4019
|
});
|
|
3858
4020
|
function register14(server, client) {
|
|
3859
4021
|
const api = client ?? speakClient;
|
|
3860
|
-
|
|
4022
|
+
registerSpeakTool(
|
|
4023
|
+
server,
|
|
3861
4024
|
"upload_and_analyze",
|
|
3862
4025
|
"Upload media and return media_id immediately. After this returns, poll get_media_status until state is 'processed' (typically 1-3 min for under 60min audio), then call get_media_insights for AI summaries. This async pattern is required for remote MCP transports \u2014 long blocking calls die at proxy idle timeouts.",
|
|
3863
4026
|
{
|
|
3864
|
-
url:
|
|
3865
|
-
name:
|
|
3866
|
-
mediaType:
|
|
3867
|
-
sourceLanguage:
|
|
3868
|
-
folderId:
|
|
3869
|
-
tags:
|
|
4027
|
+
url: import_zod15.z.string().describe("Publicly accessible URL of the media file"),
|
|
4028
|
+
name: import_zod15.z.string().optional().describe("Display name for the media (defaults to filename from URL)"),
|
|
4029
|
+
mediaType: import_zod15.z.enum([MediaType.AUDIO, MediaType.VIDEO]).optional().describe("Media type (default: audio)"),
|
|
4030
|
+
sourceLanguage: import_zod15.z.string().optional().describe("BCP-47 language code (e.g., 'en-US', 'he-IL')"),
|
|
4031
|
+
folderId: import_zod15.z.string().optional().describe("Folder ID to place the media in"),
|
|
4032
|
+
tags: import_zod15.z.string().optional().describe("Comma-separated tags")
|
|
3870
4033
|
},
|
|
3871
4034
|
{
|
|
3872
4035
|
title: "Upload and Analyze Media",
|
|
@@ -3916,7 +4079,8 @@ ${JSON.stringify(uploadRes.data, null, 2)}` }],
|
|
|
3916
4079
|
}
|
|
3917
4080
|
}
|
|
3918
4081
|
);
|
|
3919
|
-
|
|
4082
|
+
registerSpeakTool(
|
|
4083
|
+
server,
|
|
3920
4084
|
"upload_local_file",
|
|
3921
4085
|
[
|
|
3922
4086
|
"Upload a local file to Speak AI for transcription and analysis.",
|
|
@@ -3925,12 +4089,12 @@ ${JSON.stringify(uploadRes.data, null, 2)}` }],
|
|
|
3925
4089
|
"After upload, use get_media_status to poll for completion, then get_transcript and get_media_insights."
|
|
3926
4090
|
].join(" "),
|
|
3927
4091
|
{
|
|
3928
|
-
filePath:
|
|
3929
|
-
name:
|
|
3930
|
-
mediaType:
|
|
3931
|
-
sourceLanguage:
|
|
3932
|
-
folderId:
|
|
3933
|
-
tags:
|
|
4092
|
+
filePath: import_zod15.z.string().describe("Absolute path to the local audio or video file"),
|
|
4093
|
+
name: import_zod15.z.string().optional().describe("Display name (defaults to filename)"),
|
|
4094
|
+
mediaType: import_zod15.z.enum([MediaType.AUDIO, MediaType.VIDEO]).optional().describe("Media type (auto-detected from extension if omitted)"),
|
|
4095
|
+
sourceLanguage: import_zod15.z.string().optional().describe("BCP-47 language code (e.g., 'en-US')"),
|
|
4096
|
+
folderId: import_zod15.z.string().optional().describe("Folder ID to place the media in"),
|
|
4097
|
+
tags: import_zod15.z.string().optional().describe("Comma-separated tags")
|
|
3934
4098
|
},
|
|
3935
4099
|
{
|
|
3936
4100
|
title: "Upload Local File",
|
|
@@ -4011,11 +4175,12 @@ ${JSON.stringify(signedRes.data, null, 2)}` }],
|
|
|
4011
4175
|
}
|
|
4012
4176
|
);
|
|
4013
4177
|
}
|
|
4014
|
-
var
|
|
4178
|
+
var import_zod15, fs, path2;
|
|
4015
4179
|
var init_workflows = __esm({
|
|
4016
4180
|
"src/tools/workflows.ts"() {
|
|
4017
4181
|
"use strict";
|
|
4018
|
-
|
|
4182
|
+
import_zod15 = require("zod");
|
|
4183
|
+
init_helpers();
|
|
4019
4184
|
init_client();
|
|
4020
4185
|
init_dist();
|
|
4021
4186
|
fs = __toESM(require("fs"));
|
|
@@ -4183,8 +4348,8 @@ function registerPrompts(server) {
|
|
|
4183
4348
|
"analyze-meeting",
|
|
4184
4349
|
"Upload a meeting recording and get a full analysis \u2014 transcript, insights, action items, and key takeaways.",
|
|
4185
4350
|
{
|
|
4186
|
-
url:
|
|
4187
|
-
name:
|
|
4351
|
+
url: import_zod16.z.string().describe("URL of the meeting recording"),
|
|
4352
|
+
name: import_zod16.z.string().optional().describe("Meeting name (optional)")
|
|
4188
4353
|
},
|
|
4189
4354
|
async ({ url, name }) => ({
|
|
4190
4355
|
messages: [
|
|
@@ -4216,8 +4381,8 @@ function registerPrompts(server) {
|
|
|
4216
4381
|
"research-across-media",
|
|
4217
4382
|
"Search for themes, patterns, or topics across multiple recordings or your entire media library.",
|
|
4218
4383
|
{
|
|
4219
|
-
topic:
|
|
4220
|
-
folder:
|
|
4384
|
+
topic: import_zod16.z.string().describe("The topic, theme, or question to research"),
|
|
4385
|
+
folder: import_zod16.z.string().optional().describe("Folder ID to scope the research (optional)")
|
|
4221
4386
|
},
|
|
4222
4387
|
async ({ topic, folder }) => ({
|
|
4223
4388
|
messages: [
|
|
@@ -4250,8 +4415,8 @@ function registerPrompts(server) {
|
|
|
4250
4415
|
"meeting-brief",
|
|
4251
4416
|
"Prepare a brief from recent meetings \u2014 pull transcripts, extract decisions, and summarize open items.",
|
|
4252
4417
|
{
|
|
4253
|
-
days:
|
|
4254
|
-
folder:
|
|
4418
|
+
days: import_zod16.z.string().optional().describe("Number of days to look back (default: 7)"),
|
|
4419
|
+
folder: import_zod16.z.string().optional().describe("Folder ID to scope to (optional)")
|
|
4255
4420
|
},
|
|
4256
4421
|
async ({ days, folder }) => {
|
|
4257
4422
|
const lookback = parseInt(days ?? "7");
|
|
@@ -4288,11 +4453,11 @@ function registerPrompts(server) {
|
|
|
4288
4453
|
}
|
|
4289
4454
|
);
|
|
4290
4455
|
}
|
|
4291
|
-
var
|
|
4456
|
+
var import_zod16;
|
|
4292
4457
|
var init_prompts = __esm({
|
|
4293
4458
|
"src/prompts.ts"() {
|
|
4294
4459
|
"use strict";
|
|
4295
|
-
|
|
4460
|
+
import_zod16 = require("zod");
|
|
4296
4461
|
}
|
|
4297
4462
|
});
|
|
4298
4463
|
|