← transcribe.soCONTENT HISTORY
WHAT CHANGED
Update to transcribe.so
Snapshot Oct 24, 2026 · 13:41 UTC · version 1.7.0
Collection source: downloaded plugin package.
First saved snapshot
No earlier snapshot is available to establish a change.
Save transcribe.so and check future changes in Following.
Up to 10 plugins free · no card required.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"description": "Transcribe audio or video from a YouTube URL, platform URL (Apple Podcasts, SoundCloud, Vimeo, Twitch, Loom), direct file URL, or local file upload into speaker-labelled, timestamped segments with chapters, sections, and cited Q&A. Use when the user wants a transcript, show notes, chapters, or analysis of any recording.",
"included_files": [],
"name": "transcribe-audio",
"skill_md_contents": "---\nname: transcribe-audio\ndescription: Transcribe audio or video from a YouTube URL, platform URL (Apple Podcasts, SoundCloud, Vimeo, Twitch, Loom), direct file URL, or local file upload into speaker-labelled, timestamped segments with chapters, sections, and cited Q&A. Use when the user wants a transcript, show notes, chapters, or analysis of any recording.\n---\n\n# Transcribe audio or video\n\nThe bundled `transcribe-so` MCP server turns recordings into speaker-labelled,\ntimestamped transcripts with automatic chapters, sections, and cited Q&A.\n\n## Sources\n\n- `youtube`: a YouTube video URL\n- `platform_url`: a public page URL on a supported platform (Apple Podcasts,\n SoundCloud, Vimeo, Twitch, Loom and similar)\n- `external_url`: a direct http(s) link to an audio or video file\n- `upload`: a local file (shell agents only): call `createUpload` for a presigned PUT URL\n (15 minute TTL), PUT the bytes, then pass the returned `upload_id` together\n with `duration_seconds`\n\n## Flow\n\n1. Preview before creating a job: call `getQuote` first. It starts nothing;\n it returns the length, the detected title and what the job would use from\n the user's existing transcribe.so account (`retail_usd`, 0 when the account\n already includes it). When `retail_usd` is 0, or within a limit the user\n already gave, go ahead; otherwise tell the user the figure and wait for a\n go-ahead. Pass the figure the user agreed to as `max_charge_usd` to\n `transcribe`; the server enforces it: if the real figure is higher the call\n is refused with `max_charge_exceeded` and nothing is started. Report the\n refused figure and ask; do not raise the ceiling yourself.\n2. Call `transcribe` with the source. It returns `id` immediately; jobs are\n asynchronous.\n3. For short recordings, long-poll with `waitForTranscription` (each call\n covers ~90 s; `_timed_out: true` means still processing; call it again,\n this is the expected loop, not an error). For long recordings, hand the\n user the dashboard link (https://transcribe.so/transcriptions); they also\n get a completion email.\n4. Retries: pass `idempotency_key`; without one `transcribe` is not idempotent\n (check `listTranscriptions` before retrying a timed-out call). Keep the\n SAME key unless one of the NEW-key cases below applies:\n - SAME key: a retry with the same arguments replays the first result.\n After `queue_full` or a server error (neither is stored under the key),\n wait `retry_after` seconds first. If reading the source took longer than\n 45 seconds, retry the same key once; if that is refused the same way,\n stop and tell the user (for `external_url`, pass `duration_seconds` if\n you know the length). On `not_ready` saying the earlier call is already\n in flight, it is still running and the server ends its preview within\n 45 seconds: keep retrying the same key. A `not_ready` saying the earlier\n request just completed with an error recorded nothing: retry, same key.\n - `not_ready` with `stale: true` (no result recorded after 120 seconds):\n check `listTranscriptions` for the `client_reference` you sent. A job\n there in ANY status counts as found, so do not create another; if it is\n still `quoted` (not started yet), tell the user. Only if none is listed\n use a new key. If you sent no `client_reference`, do not switch keys on\n your own: tell the user.\n - NEW key: refusals are replayed under the key for 24 hours too, so a new\n key is needed only after a refusal you actually received that says\n nothing was started, once its cause is fixed (for example\n `insufficient_funds` or `max_charge_exceeded` after the user resolved\n it, or a corrected input), or in the `stale` case above. Changed\n arguments after such a refusal are a new request and take the new key.\n - Key rejected because the arguments differ, and you never got an answer\n to the first call: it may have gone through. Re-send the SAME key with\n the original arguments to get that result back, or check\n `listTranscriptions` / `getTranscription`, before transcribing again;\n never switch keys just to get past that rejection.\n\nAgents with their own public endpoint can pass `callback_url` to `transcribe`\nto receive a signed `transcription.completed` / `transcription.failed`\nwebhook instead of polling (the per-job HMAC secret comes back as\n`callback.secret`).\n\n## Authentication\n\nThe MCP server authenticates via OAuth 2.0 (browser flow starts automatically\non first use) or a `tsk_live_*` API key from\nhttps://transcribe.so/settings/api-keys sent as the Bearer token.\n\n## Related\n\n- Retrieve results, subtitles, clips, Q&A: see the `get-transcript` skill\n- REST equivalent of everything here: https://transcribe.so/api/v1/openapi.yaml\n- Developer docs: https://transcribe.so/developers/docs\n"
}SHA-256 of public snapshot: 48285e436013a69bb51301d84342ad53191365225f63ead8c62f1e7f580de9f0