Connecter des agents au MCP MultiVoice
Les agents ne se connectent pas seuls. Configurez l’URL MCP ; un humain termine l’OAuth dans le navigateur.
Les actions payantes exigent toujours un devis émis par le serveur et un confirmation_handle. L’agent doit montrer le total à l’humain avant execute_create.
URL MCP
https://db.multivoice.ai/mcpCe que l’on peut commander via MCP
- Livre audio classique
order_type_id 1— Livre audio professionnel avec narration IA multivoix en russe, allemand, anglais, français ou letton. Résultat : audio par chapitre. - Sous-titres
order_type_id 4— Sous-titres automatiques à partir d’audio ou de vidéo. language_from doit être un id de 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. Les autres codes ISO (sm, zu, …) sont rejetés (invalid_create_payload). Quand la reconnaissance est prête (statut 3/3), télécharger six fichiers de la piste originale via get_artifacts / prepare_download : simple, par locuteurs et complet × SRT et VTT (artifact_type_id 115–120). - Transcription
order_type_id 5— Transcription d’appels téléphoniques, de cours, de réunions et de webinaires. Même catalogue language_from que les sous-titres : 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. - Doublage
order_type_id 7— Audio ou vidéo doublé. language_from (langue parlée dans le film) doit être l’un de : 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 uniquement de en fr lv ru (allemand, anglais, français, letton, russe).
Les sous-titres et le doublage existent en deux modes : entièrement automatique sans relecture humaine (human_check omis ou "self" ; plus rapide et moins cher) ou relu par un locuteur natif (human_check = langue source, human_translation_check = langues cibles ; plus cher et plus long). L’agent doit demander à l’humain quel mode choisir ; le devis indique le prix.
Téléchargement — sous-titres type 4
Quand la reconnaissance est prête (statut 3, sous-statut 3) : lister avec orders.get_artifacts, puis URL courte avec orders.prepare_download (scope artifacts:download). Piste originale uniquement ; cues vides et SyntOriginal ignorés. HTTP Range non pris en charge.
115 export_srt_simple — SRT simple116 export_vtt_simple — VTT simple117 export_srt_speaker — SRT par locuteurs118 export_vtt_speaker — VTT par locuteurs119 export_srt_full — SRT complet (locuteur, genre, rôle)120 export_vtt_full — VTT complet (locuteur, genre, rôle)
Exemples de demandes humaines
- «Fais un livre audio multivoix en français à partir de mon livre et envoie-moi les chapitres.»
- «Télécharge les SRT/VTT simples, par locuteurs et complets pour ma commande de sous-titres terminée.»
- «Transcris cet enregistrement de webinaire depuis Google Drive.»
- «Transcris ce fichier MPEG/audio local depuis l’ordinateur. Montre-moi d’abord le prix.»
- «Double cette vidéo en allemand et en anglais avec relecture native. Montre-moi d’abord le prix.»
Paramètres canoniques
| 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
- 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.
Codex
codex mcp add multivoice --url https://db.multivoice.ai/mcp codex mcp login multivoice
Règles pour les agents
- N’utilisez pas GET sur /mcp comme transport (405 est normal). La réponse POST peut être JSON ou SSE.
- Ne démarrez pas de wrappers stdio/npx. N’appelez pas LLM/synthèse à la place du MCP.
- N’écrivez que l’URL dans la config client. Jamais de tokens, mots de passe, CLIENT_API_KEY.
- Arrêtez-vous et demandez à l’humain Connect / codex mcp login.
- Vendez uniquement les types de commande 1, 4, 5 et 7. Les types 2 et 3 sont fermés via MCP.
- Commandes : orders.get_create_options → URL : sources.inspect ; fichier local : sources.prepare_upload (nom + taille + durée, jamais un chemin) → orders.prepare_create → montrer le total à l’humain → orders.execute_create avec quote_id, confirmation_handle et un nouvel operation_id. Pour un fichier local, après execute envoyer des chunks 10 MiB + MD5 vers /mcp-uploads (uploads:write est accordé avec orders:create), puis uploads.get_status. Une reprise avec le même operation_id ne crée pas de second débit.
- Télécharger les sous-titres type 4 avec orders.get_artifacts puis orders.prepare_download. Six fichiers de la piste originale : 115 SRT simple, 116 VTT simple, 117 SRT locuteurs, 118 VTT locuteurs, 119 SRT complet, 120 VTT complet. Prêt au statut de reconnaissance 3/3. Les pistes traduites ne sont pas dans ce catalogue.
- N’appelez pas prepare_action / execute_action (désactivés).
- Recharge: billing.prepare_topup avec topup_amount (EUR). Montrer le montant à l’humain ; renvoyer checkout_url. L’humain paie dans le navigateur. Ce n’est pas orders.execute_create ni une dépense du portefeuille.
- Identifiants de langue uniquement depuis get_create_options languages[], minuscules (ru, pas RU). Les codes comme sm sont rejetés.
- Noms d’outils, clés JSON et commandes restent en anglais.
Outils
| 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:read |
| 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 | — | orders:prepare |
| orders.execute_create | write | yes | confirmation_handle | orders:execute |
Exemples
// 1) Smoke
multivoice.account.get
// 2) Audiobook (type 1)
multivoice.orders.get_create_options { "order_type_id": 1 }
multivoice.orders.prepare_create { "order_type_id": 1, "book": { ... } }
// 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
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 VTTAlso see /llms.txt for crawlers and agents.