@speakai/mcp-server 1.0.1 → 1.0.3

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.
Files changed (2) hide show
  1. package/dist/index.js +53 -52
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -135,8 +135,9 @@ speakClient.interceptors.response.use(
135
135
  (response) => response,
136
136
  async (error) => {
137
137
  const originalRequest = error.config;
138
- if (error.response?.status === 401 && !originalRequest._retried) {
139
- originalRequest._retried = true;
138
+ const retryCount = originalRequest._retryCount ?? 0;
139
+ if (error.response?.status === 401 && retryCount < 2) {
140
+ originalRequest._retryCount = retryCount + 1;
140
141
  tokenExpiresAt = 0;
141
142
  await ensureAuthenticated();
142
143
  originalRequest.headers["x-speakai-key"] = API_KEY;
@@ -176,7 +177,7 @@ function register(server2, client) {
176
177
  "Get a pre-signed S3 URL for direct media file upload. Use this before uploading a file directly to Speak AI storage.",
177
178
  {
178
179
  isVideo: import_zod.z.boolean().describe("Set true for video files, false for audio files"),
179
- filename: import_zod.z.string().describe("Original filename including extension"),
180
+ filename: import_zod.z.string().min(1).describe("Original filename including extension"),
180
181
  mimeType: import_zod.z.string().describe('MIME type of the file, e.g. "audio/mp4" or "video/mp4"')
181
182
  },
182
183
  async ({ isVideo, filename, mimeType }) => {
@@ -201,7 +202,7 @@ function register(server2, client) {
201
202
  "upload_media",
202
203
  "Upload a media file to Speak AI by providing a publicly accessible URL. Speak AI will fetch and process the file asynchronously.",
203
204
  {
204
- name: import_zod.z.string().describe("Display name for the media file"),
205
+ name: import_zod.z.string().min(1).describe("Display name for the media file"),
205
206
  url: import_zod.z.string().describe("Publicly accessible URL of the media file (or pre-signed S3 URL)"),
206
207
  mediaType: import_zod.z.enum(["audio", "video"]).describe('Type of media: "audio" or "video"'),
207
208
  description: import_zod.z.string().optional().describe("Description of the media file"),
@@ -211,8 +212,8 @@ function register(server2, client) {
211
212
  callbackUrl: import_zod.z.string().optional().describe("Webhook callback URL for this specific upload"),
212
213
  fields: import_zod.z.array(
213
214
  import_zod.z.object({
214
- id: import_zod.z.string().describe("Custom field ID"),
215
- value: import_zod.z.string().describe("Custom field value")
215
+ id: import_zod.z.string().min(1).describe("Custom field ID"),
216
+ value: import_zod.z.string().min(1).describe("Custom field value")
216
217
  })
217
218
  ).optional().describe("Custom field values to attach to the media")
218
219
  },
@@ -267,7 +268,7 @@ function register(server2, client) {
267
268
  "get_media_insights",
268
269
  "Retrieve AI-generated insights for a media file, including topics, sentiment, action items, and summaries.",
269
270
  {
270
- mediaId: import_zod.z.string().describe("Unique identifier of the media file")
271
+ mediaId: import_zod.z.string().min(1).describe("Unique identifier of the media file")
271
272
  },
272
273
  async ({ mediaId }) => {
273
274
  try {
@@ -289,7 +290,7 @@ function register(server2, client) {
289
290
  "get_transcript",
290
291
  "Retrieve the full transcript for a media file, including speaker labels and timestamps.",
291
292
  {
292
- mediaId: import_zod.z.string().describe("Unique identifier of the media file")
293
+ mediaId: import_zod.z.string().min(1).describe("Unique identifier of the media file")
293
294
  },
294
295
  async ({ mediaId }) => {
295
296
  try {
@@ -311,11 +312,11 @@ function register(server2, client) {
311
312
  "update_transcript_speakers",
312
313
  "Update or rename speaker labels in a media transcript.",
313
314
  {
314
- mediaId: import_zod.z.string().describe("Unique identifier of the media file"),
315
+ mediaId: import_zod.z.string().min(1).describe("Unique identifier of the media file"),
315
316
  speakers: import_zod.z.array(
316
317
  import_zod.z.object({
317
- id: import_zod.z.string().describe("Speaker identifier from the transcript"),
318
- name: import_zod.z.string().describe("Display name to assign to the speaker")
318
+ id: import_zod.z.string().min(1).describe("Speaker identifier from the transcript"),
319
+ name: import_zod.z.string().min(1).describe("Display name to assign to the speaker")
319
320
  })
320
321
  ).describe("Array of speaker ID to name mappings")
321
322
  },
@@ -342,7 +343,7 @@ function register(server2, client) {
342
343
  "get_media_status",
343
344
  "Check the processing status of a media file (e.g. pending, transcribing, completed, failed).",
344
345
  {
345
- mediaId: import_zod.z.string().describe("Unique identifier of the media file")
346
+ mediaId: import_zod.z.string().min(1).describe("Unique identifier of the media file")
346
347
  },
347
348
  async ({ mediaId }) => {
348
349
  try {
@@ -364,7 +365,7 @@ function register(server2, client) {
364
365
  "update_media_metadata",
365
366
  "Update metadata fields (name, description, tags, status) for an existing media file.",
366
367
  {
367
- mediaId: import_zod.z.string().describe("Unique identifier of the media file"),
368
+ mediaId: import_zod.z.string().min(1).describe("Unique identifier of the media file"),
368
369
  name: import_zod.z.string().optional().describe("New display name for the media"),
369
370
  description: import_zod.z.string().optional().describe("Description or notes for the media"),
370
371
  folderId: import_zod.z.string().optional().describe("Move media to this folder ID"),
@@ -393,7 +394,7 @@ function register(server2, client) {
393
394
  "delete_media",
394
395
  "Permanently delete a media file and all associated transcripts and insights.",
395
396
  {
396
- mediaId: import_zod.z.string().describe("Unique identifier of the media file to delete")
397
+ mediaId: import_zod.z.string().min(1).describe("Unique identifier of the media file to delete")
397
398
  },
398
399
  async ({ mediaId }) => {
399
400
  try {
@@ -425,7 +426,7 @@ function register2(server2, client) {
425
426
  "create_text_note",
426
427
  "Create a new text note in Speak AI for analysis. The content will be analyzed for insights, topics, and sentiment.",
427
428
  {
428
- name: import_zod2.z.string().describe("Title/name for the text note"),
429
+ name: import_zod2.z.string().min(1).describe("Title/name for the text note"),
429
430
  text: import_zod2.z.string().optional().describe("Full text content to analyze"),
430
431
  description: import_zod2.z.string().optional().describe("Description for the text note"),
431
432
  folderId: import_zod2.z.string().optional().describe("ID of the folder to place the note in"),
@@ -433,8 +434,8 @@ function register2(server2, client) {
433
434
  callbackUrl: import_zod2.z.string().optional().describe("Webhook callback URL for completion notification"),
434
435
  fields: import_zod2.z.array(
435
436
  import_zod2.z.object({
436
- id: import_zod2.z.string().describe("Custom field ID"),
437
- value: import_zod2.z.string().describe("Custom field value")
437
+ id: import_zod2.z.string().min(1).describe("Custom field ID"),
438
+ value: import_zod2.z.string().min(1).describe("Custom field value")
438
439
  })
439
440
  ).optional().describe("Custom field values to attach to the text note")
440
441
  },
@@ -458,7 +459,7 @@ function register2(server2, client) {
458
459
  "get_text_insight",
459
460
  "Retrieve AI-generated insights for a text note, including topics, sentiment, summaries, and action items.",
460
461
  {
461
- mediaId: import_zod2.z.string().describe("Unique identifier of the text note")
462
+ mediaId: import_zod2.z.string().min(1).describe("Unique identifier of the text note")
462
463
  },
463
464
  async ({ mediaId }) => {
464
465
  try {
@@ -502,7 +503,7 @@ function register2(server2, client) {
502
503
  "update_text_note",
503
504
  "Update an existing text note's name, content, or metadata. Updating text content will trigger re-analysis.",
504
505
  {
505
- mediaId: import_zod2.z.string().describe("Unique identifier of the text note"),
506
+ mediaId: import_zod2.z.string().min(1).describe("Unique identifier of the text note"),
506
507
  name: import_zod2.z.string().optional().describe("New name for the text note"),
507
508
  text: import_zod2.z.string().optional().describe("New text content (will trigger re-analysis)"),
508
509
  description: import_zod2.z.string().optional().describe("Updated description"),
@@ -542,7 +543,7 @@ function register3(server2, client) {
542
543
  "export_media",
543
544
  "Export a media file's transcript or insights in various formats (pdf, docx, srt, vtt, txt, csv, md).",
544
545
  {
545
- mediaId: import_zod3.z.string().describe("Unique identifier of the media file"),
546
+ mediaId: import_zod3.z.string().min(1).describe("Unique identifier of the media file"),
546
547
  fileType: import_zod3.z.enum(["pdf", "docx", "srt", "vtt", "txt", "csv", "md"]).describe("Desired export format"),
547
548
  isSpeakerNames: import_zod3.z.boolean().optional().describe("Include speaker names in export"),
548
549
  isSpeakerEmail: import_zod3.z.boolean().optional().describe("Include speaker emails in export"),
@@ -638,7 +639,7 @@ function register4(server2, client) {
638
639
  "get_folder_views",
639
640
  "Retrieve all saved views for a specific folder.",
640
641
  {
641
- folderId: import_zod4.z.string().describe("Unique identifier of the folder")
642
+ folderId: import_zod4.z.string().min(1).describe("Unique identifier of the folder")
642
643
  },
643
644
  async ({ folderId }) => {
644
645
  try {
@@ -660,7 +661,7 @@ function register4(server2, client) {
660
661
  "create_folder_view",
661
662
  "Create a new saved view for a folder with custom filters and display settings.",
662
663
  {
663
- folderId: import_zod4.z.string().describe("Unique identifier of the folder"),
664
+ folderId: import_zod4.z.string().min(1).describe("Unique identifier of the folder"),
664
665
  name: import_zod4.z.string().optional().describe("Display name for the view"),
665
666
  filters: import_zod4.z.record(import_zod4.z.unknown()).optional().describe("Filter configuration object")
666
667
  },
@@ -687,8 +688,8 @@ function register4(server2, client) {
687
688
  "update_folder_view",
688
689
  "Update an existing saved view's name, filters, or display settings.",
689
690
  {
690
- folderId: import_zod4.z.string().describe("Unique identifier of the folder"),
691
- viewId: import_zod4.z.string().describe("Unique identifier of the view to update"),
691
+ folderId: import_zod4.z.string().min(1).describe("Unique identifier of the folder"),
692
+ viewId: import_zod4.z.string().min(1).describe("Unique identifier of the view to update"),
692
693
  name: import_zod4.z.string().optional().describe("New display name for the view"),
693
694
  filters: import_zod4.z.record(import_zod4.z.unknown()).optional().describe("Updated filter configuration")
694
695
  },
@@ -715,7 +716,7 @@ function register4(server2, client) {
715
716
  "clone_folder_view",
716
717
  "Duplicate an existing folder view.",
717
718
  {
718
- viewId: import_zod4.z.string().describe("Unique identifier of the view to clone")
719
+ viewId: import_zod4.z.string().min(1).describe("Unique identifier of the view to clone")
719
720
  },
720
721
  async (body) => {
721
722
  try {
@@ -761,7 +762,7 @@ function register4(server2, client) {
761
762
  "get_folder_info",
762
763
  "Get detailed information about a specific folder including its contents.",
763
764
  {
764
- folderId: import_zod4.z.string().describe("Unique identifier of the folder")
765
+ folderId: import_zod4.z.string().min(1).describe("Unique identifier of the folder")
765
766
  },
766
767
  async ({ folderId }) => {
767
768
  try {
@@ -783,7 +784,7 @@ function register4(server2, client) {
783
784
  "create_folder",
784
785
  "Create a new folder in the workspace.",
785
786
  {
786
- name: import_zod4.z.string().describe("Display name for the new folder"),
787
+ name: import_zod4.z.string().min(1).describe("Display name for the new folder"),
787
788
  parentFolderId: import_zod4.z.string().optional().describe("ID of the parent folder for nesting")
788
789
  },
789
790
  async (body) => {
@@ -806,7 +807,7 @@ function register4(server2, client) {
806
807
  "clone_folder",
807
808
  "Duplicate an existing folder and all of its contents.",
808
809
  {
809
- folderId: import_zod4.z.string().describe("ID of the folder to clone")
810
+ folderId: import_zod4.z.string().min(1).describe("ID of the folder to clone")
810
811
  },
811
812
  async (body) => {
812
813
  try {
@@ -828,7 +829,7 @@ function register4(server2, client) {
828
829
  "update_folder",
829
830
  "Update a folder's name or other properties.",
830
831
  {
831
- folderId: import_zod4.z.string().describe("Unique identifier of the folder"),
832
+ folderId: import_zod4.z.string().min(1).describe("Unique identifier of the folder"),
832
833
  name: import_zod4.z.string().optional().describe("New display name for the folder")
833
834
  },
834
835
  async ({ folderId, ...body }) => {
@@ -851,7 +852,7 @@ function register4(server2, client) {
851
852
  "delete_folder",
852
853
  "Permanently delete a folder. Media within the folder will be moved, not deleted.",
853
854
  {
854
- folderId: import_zod4.z.string().describe("Unique identifier of the folder to delete")
855
+ folderId: import_zod4.z.string().min(1).describe("Unique identifier of the folder to delete")
855
856
  },
856
857
  async ({ folderId }) => {
857
858
  try {
@@ -883,7 +884,7 @@ function register5(server2, client) {
883
884
  "check_recorder_status",
884
885
  "Check whether a recorder/survey is active and accepting submissions.",
885
886
  {
886
- token: import_zod5.z.string().describe("Unique token identifying the recorder")
887
+ token: import_zod5.z.string().min(1).describe("Unique token identifying the recorder")
887
888
  },
888
889
  async ({ token }) => {
889
890
  try {
@@ -947,7 +948,7 @@ function register5(server2, client) {
947
948
  "clone_recorder",
948
949
  "Duplicate an existing recorder including all its settings and questions.",
949
950
  {
950
- recorderId: import_zod5.z.string().describe("ID of the recorder to clone")
951
+ recorderId: import_zod5.z.string().min(1).describe("ID of the recorder to clone")
951
952
  },
952
953
  async (body) => {
953
954
  try {
@@ -967,7 +968,7 @@ function register5(server2, client) {
967
968
  "get_recorder_info",
968
969
  "Get detailed information about a specific recorder including its settings and questions.",
969
970
  {
970
- recorderId: import_zod5.z.string().describe("Unique identifier of the recorder")
971
+ recorderId: import_zod5.z.string().min(1).describe("Unique identifier of the recorder")
971
972
  },
972
973
  async ({ recorderId }) => {
973
974
  try {
@@ -987,7 +988,7 @@ function register5(server2, client) {
987
988
  "get_recorder_recordings",
988
989
  "List all submissions/recordings collected by a specific recorder.",
989
990
  {
990
- recorderId: import_zod5.z.string().describe("Unique identifier of the recorder")
991
+ recorderId: import_zod5.z.string().min(1).describe("Unique identifier of the recorder")
991
992
  },
992
993
  async ({ recorderId }) => {
993
994
  try {
@@ -1007,7 +1008,7 @@ function register5(server2, client) {
1007
1008
  "generate_recorder_url",
1008
1009
  "Generate a shareable public URL for a recorder/survey.",
1009
1010
  {
1010
- recorderId: import_zod5.z.string().describe("Unique identifier of the recorder")
1011
+ recorderId: import_zod5.z.string().min(1).describe("Unique identifier of the recorder")
1011
1012
  },
1012
1013
  async ({ recorderId }) => {
1013
1014
  try {
@@ -1027,7 +1028,7 @@ function register5(server2, client) {
1027
1028
  "update_recorder_settings",
1028
1029
  "Update configuration settings for a recorder (branding, permissions, etc.).",
1029
1030
  {
1030
- recorderId: import_zod5.z.string().describe("Unique identifier of the recorder"),
1031
+ recorderId: import_zod5.z.string().min(1).describe("Unique identifier of the recorder"),
1031
1032
  settings: import_zod5.z.record(import_zod5.z.unknown()).describe("Settings object with updated values")
1032
1033
  },
1033
1034
  async ({ recorderId, settings }) => {
@@ -1048,7 +1049,7 @@ function register5(server2, client) {
1048
1049
  "update_recorder_questions",
1049
1050
  "Update the survey questions for a recorder.",
1050
1051
  {
1051
- recorderId: import_zod5.z.string().describe("Unique identifier of the recorder"),
1052
+ recorderId: import_zod5.z.string().min(1).describe("Unique identifier of the recorder"),
1052
1053
  questions: import_zod5.z.array(import_zod5.z.record(import_zod5.z.unknown())).describe("Array of question objects")
1053
1054
  },
1054
1055
  async ({ recorderId, questions }) => {
@@ -1069,7 +1070,7 @@ function register5(server2, client) {
1069
1070
  "delete_recorder",
1070
1071
  "Permanently delete a recorder/survey. Existing recordings are preserved.",
1071
1072
  {
1072
- recorderId: import_zod5.z.string().describe("Unique identifier of the recorder to delete")
1073
+ recorderId: import_zod5.z.string().min(1).describe("Unique identifier of the recorder to delete")
1073
1074
  },
1074
1075
  async ({ recorderId }) => {
1075
1076
  try {
@@ -1099,7 +1100,7 @@ function register6(server2, client) {
1099
1100
  "create_embed",
1100
1101
  "Create an embeddable player/transcript widget for a media file.",
1101
1102
  {
1102
- mediaId: import_zod6.z.string().describe("Unique identifier of the media file"),
1103
+ mediaId: import_zod6.z.string().min(1).describe("Unique identifier of the media file"),
1103
1104
  settings: import_zod6.z.record(import_zod6.z.unknown()).optional().describe("Embed configuration settings")
1104
1105
  },
1105
1106
  async (body) => {
@@ -1120,7 +1121,7 @@ function register6(server2, client) {
1120
1121
  "update_embed",
1121
1122
  "Update settings for an existing embed widget.",
1122
1123
  {
1123
- embedId: import_zod6.z.string().describe("Unique identifier of the embed"),
1124
+ embedId: import_zod6.z.string().min(1).describe("Unique identifier of the embed"),
1124
1125
  settings: import_zod6.z.record(import_zod6.z.unknown()).optional().describe("Updated embed settings")
1125
1126
  },
1126
1127
  async ({ embedId, ...body }) => {
@@ -1141,7 +1142,7 @@ function register6(server2, client) {
1141
1142
  "check_embed",
1142
1143
  "Check if an embed exists for a media file and retrieve its configuration.",
1143
1144
  {
1144
- mediaId: import_zod6.z.string().describe("Unique identifier of the media file")
1145
+ mediaId: import_zod6.z.string().min(1).describe("Unique identifier of the media file")
1145
1146
  },
1146
1147
  async ({ mediaId }) => {
1147
1148
  try {
@@ -1161,7 +1162,7 @@ function register6(server2, client) {
1161
1162
  "get_embed_iframe_url",
1162
1163
  "Get the iframe URL for embedding a media player/transcript on a webpage.",
1163
1164
  {
1164
- mediaId: import_zod6.z.string().describe("Unique identifier of the media file")
1165
+ mediaId: import_zod6.z.string().min(1).describe("Unique identifier of the media file")
1165
1166
  },
1166
1167
  async ({ mediaId }) => {
1167
1168
  try {
@@ -1211,8 +1212,8 @@ function register7(server2, client) {
1211
1212
  "ask_magic_prompt",
1212
1213
  "Ask an AI-powered question about a specific media file using Speak AI's Magic Prompt.",
1213
1214
  {
1214
- mediaId: import_zod7.z.string().describe("Unique identifier of the media file to query"),
1215
- prompt: import_zod7.z.string().describe("The question or prompt to ask about the media"),
1215
+ mediaId: import_zod7.z.string().min(1).describe("Unique identifier of the media file to query"),
1216
+ prompt: import_zod7.z.string().min(1).describe("The question or prompt to ask about the media"),
1216
1217
  promptId: import_zod7.z.string().optional().describe("ID of a predefined prompt template to use")
1217
1218
  },
1218
1219
  async (body) => {
@@ -1268,7 +1269,7 @@ function register8(server2, client) {
1268
1269
  "schedule_meeting_event",
1269
1270
  "Schedule the Speak AI meeting assistant to join and record an upcoming meeting.",
1270
1271
  {
1271
- meetingUrl: import_zod8.z.string().describe("URL of the meeting to join"),
1272
+ meetingUrl: import_zod8.z.string().min(1).describe("URL of the meeting to join"),
1272
1273
  title: import_zod8.z.string().optional().describe("Display title for the event"),
1273
1274
  scheduledAt: import_zod8.z.string().optional().describe("ISO 8601 datetime for when the meeting starts")
1274
1275
  },
@@ -1368,7 +1369,7 @@ function register9(server2, client) {
1368
1369
  "create_field",
1369
1370
  "Create a new custom field for categorizing and tagging media.",
1370
1371
  {
1371
- name: import_zod9.z.string().describe("Display name for the field"),
1372
+ name: import_zod9.z.string().min(1).describe("Display name for the field"),
1372
1373
  type: import_zod9.z.string().optional().describe("Field type (text, number, select, etc.)"),
1373
1374
  options: import_zod9.z.array(import_zod9.z.string()).optional().describe("Options for select/multi-select field types")
1374
1375
  },
@@ -1410,7 +1411,7 @@ function register9(server2, client) {
1410
1411
  "update_field",
1411
1412
  "Update a specific custom field by ID.",
1412
1413
  {
1413
- id: import_zod9.z.string().describe("Unique identifier of the field"),
1414
+ id: import_zod9.z.string().min(1).describe("Unique identifier of the field"),
1414
1415
  name: import_zod9.z.string().optional().describe("New display name"),
1415
1416
  type: import_zod9.z.string().optional().describe("New field type"),
1416
1417
  options: import_zod9.z.array(import_zod9.z.string()).optional().describe("Updated options for select types")
@@ -1461,7 +1462,7 @@ function register10(server2, client) {
1461
1462
  "get_automation",
1462
1463
  "Get detailed information about a specific automation rule.",
1463
1464
  {
1464
- automationId: import_zod10.z.string().describe("Unique identifier of the automation")
1465
+ automationId: import_zod10.z.string().min(1).describe("Unique identifier of the automation")
1465
1466
  },
1466
1467
  async ({ automationId }) => {
1467
1468
  try {
@@ -1504,7 +1505,7 @@ function register10(server2, client) {
1504
1505
  "update_automation",
1505
1506
  "Update an existing automation rule's configuration.",
1506
1507
  {
1507
- automationId: import_zod10.z.string().describe("Unique identifier of the automation"),
1508
+ automationId: import_zod10.z.string().min(1).describe("Unique identifier of the automation"),
1508
1509
  name: import_zod10.z.string().optional().describe("New display name"),
1509
1510
  trigger: import_zod10.z.record(import_zod10.z.unknown()).optional().describe("Updated trigger configuration"),
1510
1511
  actions: import_zod10.z.array(import_zod10.z.record(import_zod10.z.unknown())).optional().describe("Updated action configurations"),
@@ -1531,7 +1532,7 @@ function register10(server2, client) {
1531
1532
  "toggle_automation_status",
1532
1533
  "Enable or disable an automation rule.",
1533
1534
  {
1534
- automationId: import_zod10.z.string().describe("Unique identifier of the automation"),
1535
+ automationId: import_zod10.z.string().min(1).describe("Unique identifier of the automation"),
1535
1536
  enabled: import_zod10.z.boolean().describe("Set to true to enable, false to disable")
1536
1537
  },
1537
1538
  async ({ automationId, enabled }) => {
@@ -1604,7 +1605,7 @@ function register11(server2, client) {
1604
1605
  "update_webhook",
1605
1606
  "Update an existing webhook's URL or subscribed events.",
1606
1607
  {
1607
- webhookId: import_zod11.z.string().describe("Unique identifier of the webhook"),
1608
+ webhookId: import_zod11.z.string().min(1).describe("Unique identifier of the webhook"),
1608
1609
  url: import_zod11.z.string().url().optional().describe("New endpoint URL"),
1609
1610
  events: import_zod11.z.array(import_zod11.z.string()).optional().describe("Updated array of event types")
1610
1611
  },
@@ -1626,7 +1627,7 @@ function register11(server2, client) {
1626
1627
  "delete_webhook",
1627
1628
  "Delete a webhook and stop receiving notifications at its endpoint.",
1628
1629
  {
1629
- webhookId: import_zod11.z.string().describe("Unique identifier of the webhook to delete")
1630
+ webhookId: import_zod11.z.string().min(1).describe("Unique identifier of the webhook to delete")
1630
1631
  },
1631
1632
  async ({ webhookId }) => {
1632
1633
  try {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@speakai/mcp-server",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "Official Speak AI MCP Server — connect Claude and other AI assistants to Speak AI's transcription, insights, and media management API",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",