Connect Subtly to your AI assistant
Add Subtly as a hosted MCP connector, sign in, select a workspace, and approve access.
For a copyable version, read the Markdown guide, or browse the REST API reference. Sign in to connect a workspace, or create an account if you are new to Subtly.
Connect your assistant
Copy this hosted MCP endpoint into your assistant:
https://subtly.app/mcp- Add Subtly as a custom remote MCP connector in your assistant's settings, using the endpoint above. In Claude, open Customize > Connectors; for current plan-specific steps, see the Claude connector guide.
- Choose Sign in, sign in to Subtly, select the workspace to connect, review the requested access, and approve it.
- Enable the connector in a conversation. To revoke access later, open Connected apps for that workspace.
The connection uses OAuth and is scoped to the approved workspace. Its tokens refresh independently of your Subtly browser session.
Upload files and submit jobs
For transcription, use a reachable HTTPS media URL (.aac, .flac, .m4a, .mp3, .mp4, .mpeg, .mpg, .mov, .m4v, .mkv, .ogg, .opus, .wav, .webm, .wma, .avi) or create an upload. For translation, upload SRT, VTT, Subtly JSON, or TXT; provide any of those four formats as a URL or up to 32 KiB of inline source_text with input_format; or use a completed transcription in the same workspace with an available VTT artifact. URLs cannot contain user information or require authentication headers; Subtly does not forward those headers.
- Call create_upload with kind transcription or translation. The upload intent expires after 15 minutes; media can be up to 4 GiB and subtitle/text files up to 10 MiB. Creating an upload does not start a job or use credits.
- PUT the raw bytes to upload_url with Authorization: Upload <upload_token>, the file's Content-Type, exact Content-Length, and a percent-encoded X-Upload-Filename. Keep the one-use token private. If the client cannot transfer file bytes, open browser_url, sign in with the account that approved the connector, and choose the file. The file bytes stay outside MCP messages.
- Check get_upload until the status is ready, then pass its upload_id to submit_transcription or submit_translation. Jobs run asynchronously; use get_job to check progress and retrieve output links.
Hosted tools
- create_upload({ kind, filename?, content_type?, size_bytes? })
- Create a temporary file upload and return upload_url, a one-use upload_token, and browser_url.
- get_upload({ upload_id })
- Check upload status; submit only when it is ready.
- get_supported_languages()
- Read language names, codes, model IDs, and selection rules before choosing languages.
- submit_transcription({ idempotency_key, upload_id | source_url, language?, model?, formats?, title? })
- Queue a transcription from a ready upload or an HTTPS source URL. Accepted jobs use the selected workspace's prepaid balance.
- submit_translation({ idempotency_key, source_job_id | source_text | source_url | upload_id, source_language, target_languages, input_format?, model?, formats?, title? })
- Queue a subtitle or text translation. URL and inline sources accept input_format vtt, srt, json, or txt. URL JSON defaults to JSON output; URL TXT defaults to TXT. Timed uploads default to VTT and support all four outputs. Untimed TXT/JSON defaults to TXT and supports TXT/JSON only. Audio and video must be transcribed first. A source_job_id needs a completed transcription with an available VTT artifact in the selected workspace.
- get_job({ job_id, artifact_offset? })
- Check status and progress. Returns up to 16 managed output links per call; pass next_artifact_offset as artifact_offset to request another page. Links expire within 5 minutes or when the artifact expires.
- read_output({ job_id, artifact_id })
- Read up to 12 KiB of UTF-8 text from a managed artifact. Use a download link for complete files or binary output.
Each translation request supports up to 16 output variants. Use the same idempotency key to safely retry a submission; use a new key to start another job.