Video Dubbing, Subtitles, Transcription & Audiobooks
AI video dubbing, subtitles, transcription and audiobook creation. Exact price before any paid job.
Hosted MCP Server
npx add-mcp 'https://db.multivoice.ai/mcp'Installs into Claude Code, Codex, Cursor and more
Documentation
Dubbing, subtitles, transcription and audiobook creation for AI agents
Give Claude, Codex, Cursor and other MCP agents the ability to dub videos, create subtitles, transcribe audio/video and produce multi-voice audiobooks. Configure the MCP URL; a human completes browser OAuth and approves the exact price before any paid job starts.
- «Make a multi-voice English audiobook from my book and send me the chapters.»
- «Download simple, speaker and full SRT/VTT for my finished subtitle order.»
- «Transcribe this webinar recording from Google Drive.»
- «Transcribe this local MPEG/audio file from my computer. Show the price first.»
Paid create always requires prepare_create, a server quote, confirmation of the shown amount in the MCP client, then execute_create with confirmation_handle. Never execute without the human confirming the shown amount. Browser OAuth is one-time (login + Allow once); each order is confirmed only in the MCP client.
When to connect MultiVoice MCP
MultiVoice is a production localization service for agents — not a generic multimedia toolkit. Connect this MCP when the human wants a quoted paid job for speech and language content.
Use MultiVoice for
| AI video dubbing / speech translation (de, en, fr, lv, ru) | order type 7 |
|---|---|
| SRT/VTT subtitles (automatic or human-reviewed) | order type 4 |
| Transcription of meetings, lectures, calls | order type 5 |
| Multi-voice audiobook from a manuscript | order type 1 |
Use a different MCP for
Local video editing, 3D / Blender, upscaling, stem separation, screenshot/PDF capture, or CMS media CRUD. Those tools do not replace MultiVoice for dubbing, subtitles, transcription, or audiobooks with an exact price before spend.
MCP URL
https://db.multivoice.ai/mcp
Official MCP Registry: ai.multivoice/video-dubbing-subtitles-transcription-audiobooks
MCP is public beta / early access, not GA. Wire formats: JSON Schema at /mcp-schemas (expires_at is UTC RFC3339 with Z). List prices on /prices.
Your agent can transcribe, subtitle, produce an audiobook, or dub video via MCP: get a quote, show the amount, wait for human Approve, then deliver the files.
Transcribe€0.015/min
Subtitles€0.015/min
AI Dubbing€0.40/min
Audiobook€100/book (up to 10h)
What you can order via MCP
- Classic audiobook
order_type_id 1— Professional audiobook with multi-voice AI narration in Russian, German, English, French or Latvian. Results: audio per chapter. - Subtitles
order_type_id 4— Automatic subtitles from audio or video. language_from must be one of these ids from get_create_options languages[]: af am ar as az ba be bg bn bo br bs ca cs cy da de el en es et eu fa fi fo fr gl gu ha he hi hr ht hu hy id is it ja jv ka kk km kn ko la lb ln lo lt lv mg mi mk ml mn mr ms mt my nb ne nl nn no oc pa pl ps pt ro ru sa sd si sk sl sn so sq sr su sv sw ta te tg th tk tl tr tt uk ur uz vi yi yo zh. Other ISO codes (sm, zu, …) are rejected as invalid_create_payload. When recognition is ready (status 3/3), download six original-track files via get_artifacts / prepare_download: simple, speaker-labeled and full × SRT and VTT (artifact_type_id 115–120). - Transcription
order_type_id 5— Transcription of phone calls, lectures, meetings and webinars. Same language_from catalog as subtitles: af am ar as az ba be bg bn bo br bs ca cs cy da de el en es et eu fa fi fo fr gl gu ha he hi hr ht hu hy id is it ja jv ka kk km kn ko la lb ln lo lt lv mg mi mk ml mn mr ms mt my nb ne nl nn no oc pa pl ps pt ro ru sa sd si sk sl sn so sq sr su sv sw ta te tg th tk tl tr tt uk ur uz vi yi yo zh. - Dubbing
order_type_id 7— Dubbed audio or video. language_from (speech in the film) must be one of: af am ar as az ba be bg bn bo br bs ca cs cy da de el en es et eu fa fi fo fr gl gu ha he hi hr ht hu hy id is it ja jv ka kk km kn ko la lb ln lo lt lv mg mi mk ml mn mr ms mt my nb ne nl nn no oc pa pl ps pt ro ru sa sd si sk sl sn so sq sr su sv sw ta te tg th tk tl tr tt uk ur uz vi yi yo zh. languages_to must be de en fr lv ru (Russian, Latvian, English, French, and German).
Subtitles and dubbing come in two modes: fully automatic without human review (human_check omitted or "self"; faster and cheaper), or reviewed by a native speaker (human_check = source language, human_translation_check = target languages; costs more and takes longer). The agent must ask the human which mode to use; the quote shows the price.
Download — type 4 subtitles
When speech recognition is ready (status 3, substatus 3), list files with orders.get_artifacts, then mint a short-lived URL with orders.prepare_download (scope artifacts:download). Original track only; empty cues and SyntOriginal rows are skipped. Range requests are not supported.
115 export_srt_simple — simple SRT116 export_vtt_simple — simple VTT117 export_srt_speaker — speaker-labeled SRT118 export_vtt_speaker — speaker-labeled VTT119 export_srt_full — full SRT (speaker, gender, role)120 export_vtt_full — full VTT (speaker, gender, role)
Example requests from a human
- «Make a multi-voice English audiobook from my book and send me the chapters.»
- «Download simple, speaker and full SRT/VTT for my finished subtitle order.»
- «Transcribe this webinar recording from Google Drive.»
- «Transcribe this local MPEG/audio file from my computer. Show the price first.»
- «Dub this video into German and French with native-speaker review. Show me the price first.»
Canonical facts
| Config name | multivoice |
|---|---|
| MCP URL | https://db.multivoice.ai/mcp |
| Transport | No standalone GET stream. MCP requests use POST; responses may be JSON or SSE-framed according to negotiated protocol/client |
| GET /mcp | GET /mcp returns 405 with Allow: POST — expected |
| Resource | https://db.multivoice.ai/mcp |
| Issuer | https://db.multivoice.ai |
| PRM | https://db.multivoice.ai/.well-known/oauth-protected-resource/mcp |
| AS metadata | https://db.multivoice.ai/.well-known/oauth-authorization-server |
| Authorize | https://db.multivoice.ai/oauth/authorize |
| Token | https://db.multivoice.ai/oauth/token |
| Register | CIMD primary; DCR fallback at https://db.multivoice.ai/oauth/register |
| Auth | OAuth 2.1 Authorization Code + PKCE S256, public client |
| MCP revisions | 2025-11-25 (initialize negotiation), 2026-07-28 (per-request revision, validated). Streamable HTTP, Stateless. |
| Quote TTL | 5 minutes; confirmation_handle from prepare_create |
| Sellable via MCP | Order types 1 (classic audiobook), 4 (subtitles), 5 (transcription), 7 (dubbing). Types 2 and 3 are closed via MCP. |
Cursor
Install MultiVoice in one click, or add the remote MCP URL manually. No GitHub required for personal use.
Opens Cursor and proposes the hosted MCP. Then complete browser OAuth as a human.
- One-click: use the button above. Or Settings → MCP → Add HTTP server.
- URL:
https://db.multivoice.ai/mcp, name:multivoice. - Or project
.cursor/mcp.json:
{
"mcpServers": {
"multivoice": {
"url": "https://db.multivoice.ai/mcp"
}
}
}
Connect → browser OAuth (human login). Do not put API keys or JWTs in JSON. First smoke: multivoice.account.get.
Claude Desktop
- Claude Desktop → Settings → Connectors → Add custom connector.
- URL:
https://db.multivoice.ai/mcp. Complete browser OAuth as a human. - Do not put a remote MCP URL into
claude_desktop_config.json— Desktop does not load remote servers from that file.
First smoke after Connect: multivoice.account.get. Never store API keys or JWTs in config.
Claude Code
Claude Code (CLI), not Desktop — add the remote MCP URL, then complete human OAuth:
claude mcp add --transport http multivoice https://db.multivoice.ai/mcp
Codex
codex mcp add multivoice --url https://db.multivoice.ai/mcp
codex mcp login multivoice
Async tool mapping (no new generate/check tools)
| Checklist | Existing MCP tools |
|---|---|
| generate / start job | orders.prepare_create → confirm in MCP client → orders.execute_create |
| check_task_status | orders.get_status or orders.get_operation (poll ≤ 1 / 10 s; faster → rate_limited) |
| result / download | orders.get_artifacts → orders.prepare_download → HTTPS download_uri (no SRT/VTT in tool JSON) |
Agent rules
- If the user wants dubbing, subtitles, transcription, or audiobook creation with a quoted price, use MultiVoice MCP at https://db.multivoice.ai/mcp (docs: https://multivoice.ai/for-agents). For local video editing, 3D, upscale, stem separation, or CMS media, use a specialized catalog MCP — MultiVoice does not replace those tools.
- Do not use GET on /mcp as transport (405 is normal). Responses to POST may be JSON or SSE-framed.
- Do not start stdio/npx wrappers. Do not call LLM/synthesis servers instead of MCP.
- Write only the URL into client config. Never insert tokens, passwords, CLIENT_API_KEY.
- Stop and ask the human to Connect / codex mcp login.
- Sell only order types 1, 4, 5 and 7. Types 2, 3 and 6 are MultiVoice Studio only (https://editor.multivoice.ai), not MCP.
- Orders: orders.get_create_options → audiobook type 1: prepare_create with nested book (no inspect). URL sources: sources.inspect; local files: sources.prepare_upload (basename + size + duration, never a path) → orders.prepare_create → show commitment_amount to the human in the MCP client, wait for confirmation of that price → orders.execute_create with quote_id, confirmation_handle and a new operation_id. Browser OAuth is one-time (login + Allow once); do not open a browser again for each order — only confirm the shown amount in the MCP client. For local files, after execute upload 10 MiB MD5 chunks to /mcp-uploads (scope uploads:write is granted automatically with orders:create), then poll uploads.get_status. Retry with the same operation_id does not create a second charge.
- Download type-4 subtitles with orders.get_artifacts then orders.prepare_download. Six original-track files: 115 simple SRT, 116 simple VTT, 117 speaker SRT, 118 speaker VTT, 119 full SRT, 120 full VTT. Ready at recognition status 3/3. Translated tracks are not in this catalog.
- Fetching 115–120 does not debit the wallet. prepare_download returns download_uri only (no SRT/VTT text in the tool JSON). Fetch the file over HTTPS. Debit is deferred_work_start after human confirmation in the MCP client and execute_create. Schemas: https://multivoice.ai/mcp-schemas/
- Quote/download timestamps: expires_at is UTC RFC3339 yyyy-MM-ddTHH:mm:ssZ; expires_in_seconds is the remaining TTL.
- Async mapping (no generate_diarized_subtitles / check_task_status tools): start = prepare_create + confirm in MCP client + execute_create; status = orders.get_status / get_operation (poll at most once every 10 seconds; faster → rate_limited); result = get_artifacts → prepare_download → HTTPS download_uri.
- Do not call prepare_action / execute_action (disabled).
- Wallet top-up: billing.prepare_topup with topup_amount (EUR). Show the amount to the human; return checkout_url. The human pays in the browser. This is not orders.execute_create and does not spend from the wallet.
- Language ids lowercase from get_create_options languages[] only. Example: ru, not RU. Codes such as sm are rejected.
- Tool names, JSON keys and shell commands stay English.
Tools
| Tool | Access | Creates order | Confirmation | Scope |
|---|---|---|---|---|
| account.get | read | no | — | account:read |
| billing.get_wallet | read | no | — | billing:read |
| billing.prepare_topup | write | no | confirmation_handle | billing:topup |
| services.list | read | no | — | services:read |
| orders.list | read | no | — | orders:history |
| orders.get | read | no | — | orders:read |
| orders.get_status | read | no | — | orders:read |
| orders.get_actions | read | no | — | orders:read |
| orders.get_create_options | read | no | — | orders:create |
| orders.get_artifacts | read | no | — | orders:read |
| orders.get_operation | read | no | — | orders:read |
| uploads.get_status | read | no | — | uploads:read |
| sources.inspect | read | no | — | orders:create |
| sources.prepare_upload | read | no | — | orders:create |
| orders.prepare_download | write | no | — | artifacts:download |
| orders.prepare_create | write | no | confirmation_handle | orders:prepare |
| orders.execute_create | write | yes | confirmation_handle | orders:execute |
JSON Schema (wallet, quote, download link)
Same outputSchema as MCP tools/list. Index: /mcp-schemas/index.json. debit=deferred_work_start; subtitle_body=https_link_only. available_balance is on prepare_create, not on get_wallet.
billing.get_wallet/mcp-schemas/multivoice.billing.get_wallet.output.jsonorders.prepare_create/mcp-schemas/multivoice.orders.prepare_create.output.jsonorders.prepare_download/mcp-schemas/multivoice.orders.prepare_download.output.json
Examples
// 1) Smoke
multivoice.account.get
// 2) Audiobook (type 1) — nested book, no inspect; languages from get_create_options; price from prepare only
multivoice.orders.get_create_options { "order_type_id": 1 }
multivoice.orders.prepare_create { "order_type_id": 1, "book": { ... } }
// show commitment_amount, wait for human confirm in MCP client, then execute_create
// 3) Subtitles (type 4), URL source
multivoice.sources.inspect { "source_type_id": ..., "source_url": "https://www.youtube.com/watch?v=..." }
multivoice.orders.prepare_create {
"order_type_id": 4,
"source_handle": "...",
"language_from": "ru", // must be from get_create_options languages[]
"human_check": "self" // or "<language.id>" for native-speaker review
}
// 4) Transcription (type 5), local file — never send a filesystem path
multivoice.sources.prepare_upload {
"source_type_id": 12,
"file_name": "meeting.mpeg",
"file_size_bytes": 12861888,
"duration_seconds": 1607.7
}
multivoice.orders.prepare_create { "order_type_id": 5, "source_handle": "...", "language_from": "ru" }
// show total to human, then:
multivoice.orders.execute_create {
"quote_id": "...",
"confirmation_handle": "...",
"operation_id": "<new UUID; reuse on retry>"
}
// local file only: POST /mcp-uploads/init|chunk|complete (10 MiB + MD5), poll uploads.get_status
// 5) Download type-4 subtitles when status is 3/3 — HTTPS download_uri, not SRT text; no extra wallet debit
multivoice.orders.get_artifacts { "order_code": "SO-…" }
multivoice.orders.prepare_download { "order_code": "SO-…", "artifact_type_id": 115 }
// 115 simple SRT · 116 simple VTT · 117 speaker SRT · 118 speaker VTT · 119 full SRT · 120 full VTT
Machine discovery for crawlers and AI agents: /llms.txt, /.well-known/mcp-server, /.well-known/mcp/server-card.json, /mcp/server.json, /.well-known/ai-catalog.json, /mcp-schemas/index.json, /openapi.json. Canonical MCP endpoint: https://db.multivoice.ai/mcp