@speakai/mcp-server 1.11.0 → 1.12.1

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/README.md CHANGED
@@ -402,9 +402,9 @@ SPEAK_API_KEY=your-key npx @speakai/mcp-server
402
402
  | Tool | Description |
403
403
  |---|---|
404
404
  | `get_signed_upload_url` | Get a pre-signed S3 URL for direct file upload |
405
- | `upload_media` | Upload media from a public URL for transcription |
405
+ | `upload_media` | Upload media from a URL — a direct/public file URL or a social/video link (YouTube, Instagram, TikTok, X, Facebook, Reddit, SoundCloud, …) resolved automatically. |
406
406
  | `upload_local_file` | Upload a local file directly from disk |
407
- | `upload_and_analyze` | Upload media and return its `media_id` immediately. Poll `get_media_status` until `processed`, then call `get_media_insights` for AI summaries. |
407
+ | `upload_and_analyze` | Upload media from a URL (direct file or social/video link, resolved automatically) and return its `media_id` immediately. Poll `get_media_status` until `processed`, then call `get_media_insights` for AI summaries. |
408
408
  | `list_media` | List and search media files with filters, pagination, and optional inline data (transcripts, speakers, keywords) via `include` param |
409
409
  | `get_media_insights` | Get AI insights — topics, sentiment, summaries, action items |
410
410
  | `get_transcript` | Get full transcript with speaker labels and timestamps |
package/dist/index.js CHANGED
@@ -1208,10 +1208,10 @@ function register(server, client) {
1208
1208
  registerSpeakTool(
1209
1209
  server,
1210
1210
  "upload_media",
1211
- "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.",
1211
+ "Upload media from a URL \u2014 a direct/public file URL, a pre-signed S3 URL, or a shareable social/video link (YouTube, Instagram, TikTok, X, Facebook, Reddit, SoundCloud, and similar) which Speak resolves to the underlying media automatically. 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. (Vimeo links are not yet supported.)",
1212
1212
  {
1213
1213
  name: import_zod2.z.string().min(1).describe("Display name for the media file"),
1214
- url: import_zod2.z.string().describe("Publicly accessible URL of the media file (or pre-signed S3 URL)"),
1214
+ url: import_zod2.z.string().describe("Direct/public media file URL, pre-signed S3 URL, or a shareable social/video page link (e.g. an Instagram reel or TikTok URL) \u2014 page links are resolved to the underlying media server-side."),
1215
1215
  mediaType: import_zod2.z.enum([MediaType.AUDIO, MediaType.VIDEO]).describe('Type of media: "audio" or "video"'),
1216
1216
  description: import_zod2.z.string().optional().describe("Description of the media file"),
1217
1217
  sourceLanguage: import_zod2.z.string().optional().describe('BCP-47 language code for transcription, e.g. "en-US" or "he-IL"'),
@@ -4214,9 +4214,9 @@ function register14(server, client) {
4214
4214
  registerSpeakTool(
4215
4215
  server,
4216
4216
  "upload_and_analyze",
4217
- "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.",
4217
+ "Upload and transcribe media from a URL \u2014 a direct/public file URL, OR a shareable social/video link (YouTube, Instagram, TikTok, X, Facebook, Reddit, SoundCloud, and similar), which Speak resolves to the underlying media automatically. Returns 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. (Vimeo links are not yet supported.)",
4218
4218
  {
4219
- url: import_zod15.z.string().describe("Publicly accessible URL of the media file"),
4219
+ url: import_zod15.z.string().describe("Direct/public media file URL, or a shareable social/video page link (e.g. an Instagram reel, TikTok, YouTube, or X post URL) \u2014 page links are resolved to the underlying media server-side. Pass the URL the user gave you as-is."),
4220
4220
  name: import_zod15.z.string().optional().describe("Display name for the media (defaults to filename from URL)"),
4221
4221
  mediaType: import_zod15.z.enum([MediaType.AUDIO, MediaType.VIDEO]).optional().describe("Media type (default: audio)"),
4222
4222
  sourceLanguage: import_zod15.z.string().optional().describe("BCP-47 language code (e.g., 'en-US', 'he-IL')"),
@@ -4540,7 +4540,7 @@ function registerPrompts(server) {
4540
4540
  "analyze-meeting",
4541
4541
  "Upload a meeting recording and get a full analysis \u2014 transcript, insights, action items, and key takeaways.",
4542
4542
  {
4543
- url: import_zod16.z.string().describe("URL of the meeting recording"),
4543
+ url: import_zod16.z.string().describe("URL of the meeting recording \u2014 a direct file link or a shareable social/video link (resolved automatically)"),
4544
4544
  name: import_zod16.z.string().optional().describe("Meeting name (optional)")
4545
4545
  },
4546
4546
  async ({ url, name }) => ({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@speakai/mcp-server",
3
- "version": "1.11.0",
3
+ "version": "1.12.1",
4
4
  "mcpName": "io.github.speakai/mcp-server",
5
5
  "description": "Official Speak AI MCP Server — capture meetings, search thousands of recordings, run async voice and video surveys, create clips, and automate workflows from your AI assistant.",
6
6
  "homepage": "https://mcp.speakai.co",