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/mcp

Ce 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 simple
  • 116 export_vtt_simple — VTT simple
  • 117 export_srt_speaker — SRT par locuteurs
  • 118 export_vtt_speaker — VTT par locuteurs
  • 119 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 namemultivoice
MCP URLhttps://db.multivoice.ai/mcp
TransportNo standalone GET stream. MCP requests use POST; responses may be JSON or SSE-framed according to negotiated protocol/client
GET /mcpGET /mcp returns 405 with Allow: POST — expected
Resourcehttps://db.multivoice.ai/mcp
Issuerhttps://db.multivoice.ai
PRMhttps://db.multivoice.ai/.well-known/oauth-protected-resource/mcp
AS metadatahttps://db.multivoice.ai/.well-known/oauth-authorization-server
Authorizehttps://db.multivoice.ai/oauth/authorize
Tokenhttps://db.multivoice.ai/oauth/token
RegisterCIMD primary; DCR fallback at https://db.multivoice.ai/oauth/register
AuthOAuth 2.1 Authorization Code + PKCE S256, public client
MCP revisions2025-11-25 (initialize negotiation), 2026-07-28 (per-request revision, validated). Streamable HTTP, Stateless.
Quote TTL5 minutes; confirmation_handle from prepare_create
Sellable via MCPOrder types 1 (classic audiobook), 4 (subtitles), 5 (transcription), 7 (dubbing). Types 2 and 3 are closed via MCP.

Cursor

  1. Settings → MCP → Add HTTP server.
  2. URL: https://db.multivoice.ai/mcp, name: multivoice.
  3. 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

ToolAccessCreates orderConfirmationScope
account.getreadno—account:read
billing.get_walletreadno—billing:read
billing.prepare_topupwritenoconfirmation_handlebilling:read
services.listreadno—services:read
orders.listreadno—orders:history
orders.getreadno—orders:read
orders.get_statusreadno—orders:read
orders.get_actionsreadno—orders:read
orders.get_create_optionsreadno—orders:create
orders.get_artifactsreadno—orders:read
orders.get_operationreadno—orders:read
uploads.get_statusreadno—uploads:read
sources.inspectreadno—orders:create
sources.prepare_uploadreadno—orders:create
orders.prepare_downloadwriteno—artifacts:download
orders.prepare_createwriteno—orders:prepare
orders.execute_createwriteyesconfirmation_handleorders: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 VTT

Also see /llms.txt for crawlers and agents.