Serveur MCP Audact — guide de configuration des clients
Connectez des assistants IA à Audact via le Model Context Protocol avec une clé API de tenant : configuration, outils documentés par rôle, étape de confirmation pour les outils à risque, données personnelles et limites.
- Serveur MCP: Est-ce construit
- Est-ce construit
- Serveur MCP: Puis-je y accéder
- Puis-je y accéder
Pourquoi cet état
- Affirmation
- Opérationnel aujourd’hui · Early Customer Program
- Périmètre
- Le point d’accès MCP /mcp/ sur l’hôte de l’API et les outils qu’il expose. Pas le connecteur Anthropic, qui est une intégration distincte.
- Fondement
- Mesuré le 21 octobre 2026 : POST https://api.audact.ai/mcp/ sans clé renvoie 401 avec WWW-Authenticate: Bearer realm="audact" (le défi propre au serveur MCP).
- Ce que cela n’établit pas
- Que chaque outil derrière ce point d’accès fonctionne aujourd’hui. Cela se confirme outil par outil, et la confirmation est encore en suspens.
- Ce que vous pouvez obtenir aujourd’hui
- L’accès passe par la mise en place au sein d’un contrat payant applicable ; le serveur MCP n’est pas tarifé séparément.
- Dernière vérification
- 21 octobre 2026
- Où le vérifier
- /mcp-server
De quoi s’agit-il ? Le serveur MCP (Model Context Protocol) d’Audact expose un ensemble choisi d’opérations Audact sous forme d’outils pour les assistants IA — Claude, Cursor, Claude Desktop ou tout client compatible MCP — via une simple interface HTTP. Connectez-vous avec la clé API de votre tenant, puis examinez des appels, gérez des agents et des webhooks, construisez des automatisations de conformité et pilotez des opérations vocales.
Outils documentés : 161 pour l’ensemble des rôles. Chaque outil est confirmé séparément ; l’état mesuré du point de terminaison figure sur la page du serveur MCP.
Points de terminaison :
- Production :
https://api.audact.ai/mcp/
1. Ce que c’est
Le serveur MCP est un point de terminaison HTTP sans état qui traduit des appels d’outils en opérations de l’API REST d’Audact. Il fonctionne en Streamable HTTP (le standard MCP pour le JSON-RPC du serveur vers le client et du client vers le serveur), n’exige que votre clé API pour l’authentification (jeton Bearer) et applique exactement les mêmes permissions et le même cloisonnement que l’API REST elle-même.
Pourquoi MCP ?
- Configuration en une ligne : aucune intégration écrite à la main, aucune passerelle sur mesure.
- Contexte en temps réel : votre assistant IA accède en direct aux agents, webhooks, numéros, appels et preuves.
- Respect des permissions : chaque appel d’outil est transmis avec votre clé — un assistant ne peut faire que ce que le rôle de votre clé autorise.
- Aucun secret conservé : le serveur MCP ne stocke aucun identifiant qui lui soit propre ; il transmet votre clé octet pour octet à l’API sous-jacente, de sorte qu’un appel d’outil ne peut pas faire plus que la même clé utilisée directement.
Transport et protocole
- Protocole : Model Context Protocol (MCP), version 2025-06-18 (rétrocompatible avec 2025-03-26).
- Transport : POST Streamable HTTP vers
/mcp/sur l’URL de base de votre environnement. - Contenu : requêtes et réponses JSON-RPC 2.0.
- Authentification :
Authorization: Bearer aud_live_…(la clé API de votre tenant, la même que pour REST). - Sans état : ni session ni cookie. Chaque requête est indépendante ; n’importe quelle réplique peut la traiter.
Ce que signifie OAuth ici
OAuth n’est pas pris en charge. Les clients MCP qui exigent OAuth avec des serveurs distants ne peuvent pas se connecter. Les clients pris en charge (Claude Code, Cursor, Claude Desktop via mcp-remote, SDK MCP) transmettent tous les en-têtes directement :
- ✅ Claude Code, Cursor, Claude Desktop avec
mcp-remote: fonctionne - ✅ Clients SDK MCP avec
--headerou une variable d’environnement : fonctionne - ✅ Implémentations MCP personnalisées qui prennent en charge les jetons Bearer : fonctionne
- ❌ Clients qui ne prennent en charge que OAuth pour les serveurs distants : non pris en charge en v1
2. Connecter votre assistant IA
Claude Code
bash
claude mcp add --transport http audact https://api.audact.ai/mcp/ \ --header "Authorization: Bearer aud_live_…"
Remplacez aud_live_… par votre véritable clé API (voir Obtenir votre clé ci-dessous).
Pour vérifier : après l’ajout, redémarrez Claude Code et demandez-lui : « Listez mes agents. » S’il appelle list_agents sans erreur, la connexion est établie.
Claude Desktop
Utilisez mcp-remote pour exécuter le serveur MCP derrière la passerelle locale :
bash
# In Claude Desktop's config file (~/.config/Claude/claude_desktop_config.json on Linux/Mac,
# or %APPDATA%\Claude\claude_desktop_config.json on Windows):
{
"mcpServers": {
"audact": {
"command": "npx",
"args": ["mcp-remote", "https://api.audact.ai/mcp/"],
"env": {
"MCP_REMOTE_HEADER_Authorization": "Bearer aud_live_…"
}
}
}
}Redémarrez Claude Desktop. Les outils Audact devraient maintenant apparaître dans votre liste d’outils.
Cursor
Comme pour Claude Desktop : ajoutez ceci au fichier mcp_server_config.json de Cursor :
json
{
"audact": {
"command": "npx",
"args": ["mcp-remote", "https://api.audact.ai/mcp/"],
"env": {
"MCP_REMOTE_HEADER_Authorization": "Bearer aud_live_…"
}
}
}3. Obtenir votre clé
- Connectez-vous au tableau de bord Audact à l’URL de votre environnement.
- Allez dans API Keys (ou Settings → API Keys).
- Copiez une clé dotée du rôle dont vous avez besoin (Viewer, Developer ou Owner ; voir Correspondance des rôles ci-dessous).
- Utilisez-la dans la configuration ci-dessus.
Gardez votre clé secrète. Traitez-la comme un mot de passe. Si elle est exposée, révoquez-la immédiatement depuis le tableau de bord.
4. Ce que vous pouvez faire : outils par rôle
Le serveur MCP expose 161 outils au total, regroupés par niveau de permission et par domaine. Un outil n’apparaît parmi les outils disponibles de votre assistant que si votre clé possède le rôle requis. Même si vous listez un outil pour lequel vous n’avez pas la permission, le backend rejettera l’appel avec une erreur explicite.
Niveaux de rôle
- Viewer : accès en lecture seule. Consulter les appels, les preuves, les configurations, les webhooks et les numéros.
- Developer : lecture et écriture. Créer et mettre à jour des agents, des outils, des webhooks et des affectations. Pas de suppression ni de purge.
- Owner : accès complet, y compris la suppression et la modification des paramètres.
Catégories d’outils
Légende : L = lecture seule | D = destructif | C = confirmation requise (demandez d’abord à l’utilisateur, puis réessayez avec confirm: true)
Agents
| Outil | Rôle | L | D | C | Ce qu’il fait |
|---|---|---|---|---|---|
list_agents | Viewer | ✓ | Lister tous les agents de votre tenant | ||
get_agent | Viewer | ✓ | Récupérer un agent par son ID | ||
list_agent_tools | Viewer | ✓ | Voir quels outils un agent peut utiliser | ||
create_agent | Developer | Créer un nouvel agent | |||
replace_agent | Developer | Remplacer un agent (mise à jour complète) | |||
update_agent | Developer | Mettre à jour un agent (mise à jour partielle) | |||
duplicate_agent | Developer | Cloner un agent existant | |||
attach_tool_to_agent | Developer | Ajouter un outil à la boîte à outils d’un agent | |||
detach_tool_from_agent | Developer | ✓ | Retirer un outil d’un agent | ||
delete_agent | Owner | ✓ | Supprimer définitivement un agent |
Outils
| Outil | Rôle | L | D | C | Ce qu’il fait |
|---|---|---|---|---|---|
list_tools | Viewer | ✓ | Lister tous les outils personnalisés | ||
get_tool | Viewer | ✓ | Récupérer un outil par son ID | ||
create_tool | Developer | Créer un nouvel outil | |||
replace_tool | Developer | Remplacer un outil (mise à jour complète) | |||
update_tool | Developer | Mettre à jour un outil (mise à jour partielle) | |||
test_tool | Developer | Tester un outil fourni par la plateforme, comme Cal.com (les outils HTTP personnalisés n’ont pas de test) | |||
delete_tool | Owner | ✓ | Supprimer un outil (suppression logique) |
Bases de connaissances
| Outil | Rôle | L | D | C | Ce qu’il fait |
|---|---|---|---|---|---|
list_knowledge_bases | Viewer | ✓ | Lister les bases de connaissances du tenant | ||
get_knowledge_base | Viewer | ✓ | Récupérer une base de connaissances par son ID | ||
create_knowledge_base | Developer | Créer une base de connaissances | |||
update_knowledge_base | Developer | Renommer une base de connaissances ou activer/désactiver l’actualisation automatique | |||
delete_knowledge_base | Owner | ✓ | Supprimer une base de connaissances avec toutes ses sources et ses liens avec les agents | ||
list_kb_sources | Viewer | ✓ | Lister les sources d’une base de connaissances et leur état d’ingestion | ||
get_kb_source | Viewer | ✓ | Récupérer une source | ||
add_kb_source | Developer | Ajouter une source URL ou texte (l’envoi de fichiers n’est possible que par l’API REST) | |||
update_kb_source | Developer | Modifier le titre d’une source ou, pour les sources texte, son contenu | |||
reingest_kb_source | Developer | Réexplorer et réindexer une source | |||
delete_kb_source | Owner | ✓ | Supprimer une source et son contenu indexé | ||
list_kb_agent_links | Viewer | ✓ | Lister les agents auxquels une base de connaissances est rattachée | ||
list_kb_links_by_agent | Viewer | ✓ | Lister les bases de connaissances rattachées à un agent | ||
attach_knowledge_base_to_agent | Developer | Rattacher une base de connaissances à un agent, avec des paramètres de récupération | |||
update_kb_agent_link | Developer | Ajuster les paramètres de récupération (top_k, threshold, instruction) d’un lien | |||
detach_knowledge_base_from_agent | Developer | ✓ | Détacher une base de connaissances d’un agent | ||
list_kb_exclusions | Viewer | ✓ | Lister les règles d’exclusion de l’exploration | ||
add_kb_exclusion | Developer | Exclure un préfixe de chemin ou une URL de l’exploration | |||
delete_kb_exclusion | Developer | ✓ | Supprimer une règle d’exclusion de l’exploration | ||
test_kb_retrieval | Developer | ✓ | Poser une question et voir quels segments la récupération renvoie |
Voix
| Outil | Rôle | L | D | C | Ce qu’il fait |
|---|---|---|---|---|---|
list_voices | Viewer | ✓ | Lister les voix disponibles pour les agents | ||
get_voice | Viewer | ✓ | Récupérer une voix par son ID |
Intégrations
| Outil | Rôle | L | D | C | Ce qu’il fait |
|---|---|---|---|---|---|
list_connections | Viewer | ✓ | Lister les intégrations externes (Slack, Zapier, etc.) | ||
get_connection | Viewer | ✓ | Récupérer une intégration par son ID | ||
list_connection_event_types | Viewer | ✓ | Voir quels événements cette intégration émet | ||
create_connection | Developer | Ajouter une nouvelle intégration | |||
test_connection | Developer | Tester une intégration (essai à blanc) | |||
delete_connection | Developer | ✓ | Retirer une intégration |
Configurations
| Outil | Rôle | L | D | C | Ce qu’il fait |
|---|---|---|---|---|---|
list_configurations | Viewer | ✓ | Lister toutes les configurations | ||
get_configuration | Viewer | ✓ | Récupérer une configuration par son ID | ||
get_configuration_version | Viewer | ✓ | Récupérer une version antérieure d’une configuration (celle avec laquelle un appel rattaché à cette version s’est exécuté) | ||
create_configuration | Developer | Créer une nouvelle configuration | |||
update_configuration | Developer | Mettre à jour une configuration | |||
delete_configuration | Owner | ✓ | Supprimer définitivement une configuration |
Appels et preuves
| Outil | Rôle | L | D | C | Ce qu’il fait |
|---|---|---|---|---|---|
list_calls | Viewer | ✓ | Rechercher des appels dans votre tenant | ||
get_call_detail | Viewer | ✓ | Enregistrement complet de l’appel, transcription, métadonnées, jetons PII | ||
get_call_summary | Viewer | ✓ | Résumé général d’un appel | ||
get_delivery_status | Viewer | ✓ | Vérifier si un enregistrement ou une transcription a été remis aux webhooks | ||
get_chain | Viewer | ✓ | Récupérer la chaîne d’empreintes qui prouve l’intégrité d’un appel | ||
verify_chain | Viewer | ✓ | Vérifier cryptographiquement une chaîne | ||
reconstruct_call | Viewer | ✓ | Reconstruire un appel à partir de ses événements de preuve | ||
list_violations | Viewer | ✓ | Violations de conformité dans un appel | ||
list_compliance_events | Viewer | ✓ | Enregistrements de conformité horodatés | ||
get_article50_report | Viewer | ✓ | Rapport de preuves de l’article 50 du règlement (UE) 2024/1689 sur l’intelligence artificielle (AI Act) pour un appel (JSON dans une enveloppe signée avec ECDSA-P256) | ||
get_receipt | Viewer | ✓ | Reçu de conformité d’un appel | ||
list_proofs | Viewer | ✓ | Preuves de la métachaîne pour les appels | ||
get_proof | Viewer | ✓ | Récupérer une preuve par son ID | ||
get_call_recording | Viewer | ✓ | Obtenir l’URL de l’enregistrement d’un appel (renvoie une URL de téléchargement temporaire) | ||
delete_call_recording | Owner | ✓ | ✓ | Supprimer définitivement l’enregistrement de l’appel |
Webhooks
| Outil | Rôle | L | D | C | Ce qu’il fait |
|---|---|---|---|---|---|
list_webhooks | Viewer | ✓ | Lister tous les abonnements webhook | ||
get_webhook | Viewer | ✓ | Récupérer un webhook par son ID | ||
list_webhook_deliveries | Viewer | ✓ | Voir l’historique des remises d’un webhook | ||
list_webhook_event_types | Viewer | ✓ | Quels événements peuvent faire l’objet d’un abonnement | ||
get_webhook_event_schema | Viewer | ✓ | Schéma JSON d’un événement | ||
get_webhook_secret_status | Viewer | ✓ | Vérifier si un secret de webhook est actif | ||
create_webhook | Developer | S’abonner à des événements (par ex. call_ended) | |||
update_webhook | Developer | Modifier l’URL ou les événements d’un webhook | |||
test_webhook | Developer | Envoyer un événement de test au point de terminaison, authentifié par le HMAC du webhook comme chaque remise | |||
resend_webhook_delivery | Developer | Redéclencher une remise passée | |||
delete_webhook | Owner | ✓ | Se désabonner d’un webhook |
Numéros de téléphone
| Outil | Rôle | L | D | C | Ce qu’il fait |
|---|---|---|---|---|---|
list_numbers | Viewer | ✓ | Lister tous les DID (numéros de téléphone) | ||
lookup_number | Viewer | ✓ | Rechercher un DID par numéro de téléphone ou par ID | ||
list_available_numbers | Viewer | ✓ | Trouver les numéros non attribués | ||
list_number_orders | Viewer | ✓ | Voir l’historique de l’approvisionnement en numéros | ||
get_number_order | Viewer | ✓ | Récupérer une commande par son ID | ||
set_number_trunk | Developer | Définir le trunk d’un numéro de téléphone | |||
assign_number | Developer | Affecter un DID à un agent | |||
suspend_number | Developer | Désactiver temporairement un numéro | |||
resume_number | Developer | Réactiver un numéro suspendu | |||
create_number | Developer | ✓ | ✓ | Ajouter un numéro de téléphone (peut entraîner un coût) | |
create_number_order | Developer | ✓ | ✓ | Commander des numéros de téléphone (dépense de l’argent) | |
release_number | Developer | ✓ | ✓ | Libérer l’affectation d’un numéro (peut être perdu définitivement) | |
delete_number | Developer | ✓ | ✓ | Retirer définitivement un numéro du pool |
Tenant, clés et session
| Outil | Rôle | L | D | C | Ce qu’il fait |
|---|---|---|---|---|---|
get_tenant | Viewer | ✓ | Récupérer les métadonnées de votre tenant | ||
get_tenant_usage | Viewer | ✓ | Informations sur l’utilisation et les quotas | ||
list_keys | Developer | ✓ | Lister les clés API | ||
update_tenant | Owner | ✓ | Mettre à jour les paramètres du tenant | ||
rotate_webhook_secret | Owner | ✓ | Renouveler le secret du webhook | ||
generate_key | Owner | ✓ | ✓ | Générer une clé API (le secret est renvoyé une seule fois, dans cette conversation) | |
revoke_key | Owner | ✓ | ✓ | Révoquer immédiatement une clé API | |
exchange_key | Viewer | ✓ | ✓ | Échanger une clé API contre un jeton de session (dans cette conversation) | |
create_ws_ticket | Viewer | Créer un ticket WebSocket |
Téléphonie BYO (Bring Your Own)
| Outil | Rôle | L | D | C | Ce qu’il fait |
|---|---|---|---|---|---|
get_byo_config | Viewer | ✓ | Obtenir la configuration de la téléphonie BYO | ||
list_byo_connections | Viewer | ✓ | Lister les connexions SIP BYO | ||
get_byo_connection | Viewer | ✓ | Obtenir une connexion SIP BYO | ||
verify_byo_connection | Developer | Vérifier une connexion SIP BYO | |||
create_byo_connection | Owner | Créer une connexion SIP BYO | |||
update_byo_connection | Owner | ✓ | Mettre à jour une connexion SIP BYO | ||
delete_byo_connection | Owner | ✓ | ✓ | Supprimer une connexion SIP BYO (les appels qui y passent s’arrêtent) |
KYC (Know Your Customer)
| Outil | Rôle | L | D | C | Ce qu’il fait |
|---|---|---|---|---|---|
list_kyc_requirements | Viewer | ✓ | Lister les exigences KYC | ||
list_kyc_document_sets | Viewer | ✓ | Lister les jeux de documents KYC | ||
get_kyc_document_set | Viewer | ✓ | Obtenir un jeu de documents KYC | ||
list_kyc_documents | Viewer | ✓ | Lister les documents KYC | ||
get_kyc_document | Viewer | ✓ | Obtenir un document KYC | ||
create_kyc_document_set | Owner | Créer un jeu de documents KYC | |||
upload_kyc_document | Owner | Envoyer un document KYC (voir Envoi de documents KYC) | |||
replace_kyc_document | Owner | Remplacer un document KYC | |||
delete_kyc_document | Owner | ✓ | ✓ | Supprimer un document KYC (supprime définitivement un enregistrement réglementaire) | |
delete_kyc_document_set | Owner | ✓ | ✓ | Supprimer un jeu de documents KYC | |
rotate_kyc_dek | Owner | ✓ | ✓ | Renouveler la clé de chiffrement KYC |
Coffre PII
| Outil | Rôle | L | D | C | Ce qu’il fait |
|---|---|---|---|---|---|
pii_get_settings | Viewer | ✓ | Obtenir la configuration du coffre PII | ||
pii_list_exemptions | Viewer | ✓ | Numéros exemptés du chiffrement | ||
pii_list_shreds | Viewer | ✓ | Journal d’audit des destructions (suppression définitive) | ||
pii_list_erased_keysets | Viewer | ✓ | Clés qui ne sont plus utilisées | ||
pii_decrypt_call | Viewer | Déchiffrer les PII d’un appel (renvoie des PII en clair — voir Données personnelles) | |||
pii_list_call_identities | Viewer | ✓ | Lister les identités d’un appel (renvoie des PII en clair — voir Données personnelles) | ||
pii_link_call_identity | Developer | Lier une identité d’appel | |||
pii_shred_call | Owner | ✓ | ✓ | Détruire les PII d’un appel (efface irréversiblement les données personnelles — effacement au titre du RGPD) | |
pii_shred_by_hash | Owner | ✓ | ✓ | Détruire des PII par empreinte (efface irréversiblement partout — effacement au titre du RGPD) | |
pii_add_exemption | Owner | ✓ | ✓ | Ajouter une exemption PII (exempte un identifiant du chiffrement) | |
pii_delete_exemption | Owner | ✓ | ✓ | Supprimer une exemption PII | |
pii_delete_exemption_by_path | Owner | ✓ | ✓ | Supprimer une exemption PII par chemin | |
pii_put_settings | Owner | ✓ | ✓ | Mettre à jour les paramètres du coffre PII (active ou désactive le chiffrement pour tout le tenant) |
Appels (SIP) — gestion des appels en direct
| Outil | Rôle | L | D | C | Ce qu’il fait |
|---|---|---|---|---|---|
get_call_status | Viewer | ✓ | Obtenir l’état d’un appel | ||
initiate_inbound_call | Developer | ✓ | ✓ | Démarrer un appel entrant (démarre une salle d’appel entrant en direct) | |
initiate_outbound_call | Developer | ✓ | ✓ | Démarrer un appel sortant (passe un vrai appel téléphonique — coûte de l’argent, fait sonner une vraie personne) | |
create_browser_call | Developer | ✓ | ✓ | Démarrer un appel de test dans le navigateur (démarre un appel de test en direct et envoie l’agent IA — consomme des minutes d’agent) | |
hangup_call | Developer | ✓ | ✓ | Raccrocher un appel (met fin immédiatement à un appel en direct) |
Transferts et passations
| Outil | Rôle | L | D | C | Ce qu’il fait |
|---|---|---|---|---|---|
get_transfer_state | Viewer | ✓ | Obtenir l’état d’un transfert | ||
get_handover | Developer | ✓ | Obtenir les informations d’une passation | ||
initiate_transfer | Developer | ✓ | ✓ | Transférer un appel (transfère un appel en direct vers un autre interlocuteur) | |
initiate_handover | Developer | ✓ | ✓ | Passer l’appel à un humain | |
bridge_transfer | Developer | ✓ | ✓ | Établir le pont d’un transfert (met l’appelant en relation avec la destination du transfert) | |
cancel_transfer | Developer | ✓ | ✓ | Annuler un transfert (annule un transfert en direct en cours) | |
end_transfer | Developer | ✓ | ✓ | Terminer un transfert |
Routage SIP
| Outil | Rôle | L | D | C | Ce qu’il fait |
|---|---|---|---|---|---|
list_trunks | Viewer | ✓ | Lister les trunks SIP | ||
list_dispatch_rules | Viewer | ✓ | Lister les règles de dispatch | ||
create_dispatch_rule | Developer | ✓ | ✓ | Créer une règle de dispatch (change le routage des appels entrants) | |
create_inbound_trunk | Owner | ✓ | ✓ | Créer un trunk SIP entrant (crée un trunk SIP qui achemine de vrais appels) | |
create_outbound_trunk | Owner | ✓ | ✓ | Créer un trunk SIP sortant (crée un trunk SIP qui achemine de vrais appels) | |
get_admission_url | Viewer | ✓ | Obtenir l’URL d’admission | ||
set_admission_url | Developer | ✓ | ✓ | Définir l’URL d’admission (change l’URL qu’Audact appelle avant de connecter chaque appel entrant) |
API d’exécution de la conformité
| Outil | Rôle | L | D | C | Ce qu’il fait |
|---|---|---|---|---|---|
validate_text | Developer | Valider un texte par rapport à la politique | |||
validate_audio | Developer | Valider un audio (jusqu’à environ 11 MiB ; voir Limites) | |||
reconcile_audio | Developer | Réconcilier un audio (jusqu’à environ 11 MiB ; voir Limites) | |||
evaluate_policy | Viewer | Évaluer la politique | |||
get_policy | Viewer | ✓ | Obtenir la politique | ||
confirm_delivery | Developer | Confirmer la remise | |||
reconcile_transcript | Developer | Réconcilier une transcription | |||
generate_c2pa_manifest | Developer | Générer un manifeste C2PA | |||
list_c2pa_manifests | Viewer | ✓ | Lister les manifestes C2PA émis pour un appel | ||
create_event | Developer | ✓ | ✓ | Créer un événement de preuve (ajoute à la chaîne de preuves un événement permanent, à détection d’altération) | |
trigger_aggregation | Owner | Déclencher l’agrégation |
Proxy LLM
| Outil | Rôle | L | D | C | Ce qu’il fait |
|---|---|---|---|---|---|
proxy_openai | Developer | ✓ | ✓ | Relayer une requête OpenAI (effectue un appel LLM payant ; voir Proxy LLM) |
5. Confirmation pour les actions dangereuses
Certains outils exigent une confirmation explicite avant de s’exécuter. Ce sont des opérations qui dépensent de l’argent, qui sont irréversibles ou qui touchent à la sécurité :
Les 33 outils qui exigent une confirmation :
- Dépense d’argent :
create_number,create_number_order,initiate_outbound_call - Suppressions irréversibles :
delete_kyc_document,delete_kyc_document_set,delete_call_recording,pii_shred_call,pii_shred_by_hash,pii_delete_exemption,pii_delete_exemption_by_path,revoke_key,release_number,delete_number,delete_byo_connection - Contrôle des appels :
initiate_inbound_call,create_browser_call,hangup_call,initiate_transfer,initiate_handover,bridge_transfer,cancel_transfer,end_transfer - Configuration :
create_dispatch_rule,create_inbound_trunk,create_outbound_trunk,set_admission_url,rotate_kyc_dek,pii_add_exemption,pii_put_settings - Sécurité :
generate_key,exchange_key,create_event,proxy_openai
Comment fonctionne la confirmation
Lorsqu’un outil exige une confirmation :
-
Le premier appel échoue avec
CONFIRMATION_REQUIRED:json
{ "isError": true, "content": [ { "type": "text", "text": "CONFIRMATION_REQUIRED: {consequence}. Ask the user explicitly, and then retry the same call with \"confirm\": true." } ] } -
Le modèle interroge l’utilisateur : « Cela va {consequence}. Dois-je continuer ? »
-
Après l’accord de l’utilisateur, le modèle réessaie avec
confirm: true:json
{ "name": "create_number_order", "arguments": { "body": {"set_id": "11111111-2222-3333-4444-555555555555", "country_code": "NL", "number_type": "local"}, "confirm": true } }
Important : confirm est une protection contre l’injection de prompt, pas un système de permissions. Le rôle de votre clé API détermine toujours si vous pouvez appeler l’outil. Un confirm: true sans le rôle requis est tout de même rejeté par le backend avec une erreur 403.
6. Envoi de documents KYC
L’envoi de documents KYC (Know Your Customer) via MCP se fait en convertissant le fichier binaire en base64 dans du JSON.
Paramètres
file_base64(obligatoire) : le contenu du fichier encodé en base64 (le base64 standard et le base64 compatible URL sont tous deux acceptés ; encodage invalide → erreur d’outilINVALID_FILE_ENCODING)file_name(obligatoire) : nom de fichier d’origine (par ex."passport.pdf")file_content_type(facultatif) : type MIME (par ex."application/pdf"). À omettre s’il est inconnu.doc_type(obligatoire) : code de type de document accepté par le backend KYC (par ex."passport"ou"proof_of_address")
Limites
- Taille maximale du fichier décodé : 10 MiB. Fichiers plus volumineux → erreur d’outil
FILE_TOO_LARGE. - Taille maximale de la requête : 15 MiB pour l’ensemble de la requête
/mcp/, ce qui laisse la place à un fichier de 10 MiB en base64. - Les outils sans fichier sont plafonnés à 1 MiB d’arguments (
ARGUMENTS_TOO_LARGE), saufvalidate_audioetreconcile_audio, qui peuvent aller jusqu’à la limite de requête de 15 MiB.
Exemple
json
{
"doc_type": "passport",
"file_base64": "JVBERi0xLjQKJeLjz9MNCjExIDAgb2JqCjw8L1R5cGUvRm9udERlc2NyaXB0b3IvRm9udE5hbWUvQSsvQmFzZUZvbnQvVGltZXMtQm9sZD4+CmVuZG9iCmZv...",
"file_name": "my_passport.pdf",
"file_content_type": "application/pdf"
}Pour générer le base64 d’un fichier en ligne de commande :
bash
base64 < my_passport.pdf
7. Données personnelles
pii_decrypt_call et pii_list_call_identities renvoient des données personnelles en clair (noms, e-mail, numéros de téléphone, etc.) directement dans la fenêtre de contexte de l’assistant IA.
Audact ne journalise ni les arguments ni les résultats des outils. Nous n’enregistrons donc pas nous-mêmes de données personnelles. En revanche, le fait qu’un assistant IA propre à un tenant puisse recevoir des données personnelles en clair relève de la responsabilité du tenant, au titre de son accord de traitement des données (DPA). Chaque client doit s’assurer que son accord sur les données l’autorise.
Si vous travaillez avec un responsable du traitement qui restreint les PII dans les contextes d’IA, utilisez directement l’API REST, avec des contrôles d’accès appropriés, plutôt que le serveur MCP.
Identifiants dans la conversation. generate_key renvoie le secret d’une nouvelle clé API et exchange_key renvoie un jeton de session. Les deux se retrouvent dans l’historique de conversation de l’assistant (et partout où votre client IA le stocke). Les deux exigent confirm: true ; révoquez avec revoke_key toute clé susceptible d’avoir été exposée.
Remarque sur delete_call_recording : l’API exige le rôle Owner, et MCP exige en plus confirm: true.
8. Limites
Limite de débit
- Point de terminaison
/mcp/: 600 requêtes par minute et par clé. Chaque appel d’outil et chaquetools/listest compté. - Délai d’expiration : 30 secondes par appel.
Limites de taille des arguments
| Catégorie | Limite | Erreur |
|---|---|---|
| La plupart des outils | 1 MiB | ARGUMENTS_TOO_LARGE |
| Envoi de document KYC (décodé) | 10 MiB | FILE_TOO_LARGE |
Outils à gros arguments (validate_audio, reconcile_audio) | 15 MiB | ARGUMENTS_TOO_LARGE (si plus volumineux) |
Remarque : les fichiers audio de plus d’environ 11 MiB nécessitent toujours l’API REST ; pour les très gros fichiers, utilisez directement POST /v1/validate-audio et POST /v1/audio-reconciliation.
Taille des réponses
- Plafond de 256 KiB : si le résultat d’une liste dépasse 256 KiB, des éléments entiers sont retirés à la fin pour que le résultat reste du JSON valide. Un champ
_mcp_truncatedindique combien d’éléments ont été renvoyés et combien tenaient dans la page. Réessayez avec unlimitplus petit ou des filtres plus étroits. - Réponses à un seul élément : si un seul élément dépasse 256 KiB (rare), vous obtenez à la place une erreur d’outil
RESPONSE_TOO_LARGE.
Autres limites
- Encodage des fichiers : seul le base64 (standard ou compatible URL) est accepté pour
file_base64. Encodage invalide →INVALID_FILE_ENCODING. - Décodage base64 : la taille encodée doit tenir dans 10 MiB (décodée) ; au-delà →
FILE_TOO_LARGE.
9. Proxy LLM
L’outil proxy_openai transmet une requête au proxy LLM d’Audact, qui gère l’authentification et le routage vers le fournisseur de LLM que vous avez configuré.
Paramètres
call_id(obligatoire) : UUID du contexte d’appel (en-têteX-Audact-Call-ID)config_id(obligatoire) : UUID de la configuration LLM (en-têteX-Audact-Config-ID)turn(obligatoire) : numéro du tour dans la conversation (en-têteX-Audact-Turn)- Autres champs : transmis tels quels comme corps de la requête au fournisseur de LLM (par ex.
messages,temperature, etc.)
Remarques importantes
- Le tenant provient toujours de votre clé : vous ne pouvez pas en indiquer un autre ; il est renseigné automatiquement à partir de la clé API authentifiée.
- Confirmation requise : appelez
proxy_openaiavec"confirm": true, car l’appel LLM est payant. - Pas de streaming via MCP : le streaming (
text/event-stream) est réservé à REST. MCP ne gère que le JSON ; utilisez directement/v1/llm-proxy/openaipour les réponses en streaming. - Latence : cet appel s’exécute sur le chemin critique (délai strict de 40 ms pour la validation de conformité) ; pour le proxy lui-même, attendez-vous à des réponses en moins d’une seconde.
Exemple
json
{
"call_id": "550e8400-e29b-41d4-a716-446655440000",
"config_id": "660e8400-e29b-41d4-a716-446655440001",
"turn": 1,
"messages": [{"role": "user", "content": "Hello"}],
"temperature": 0.7,
"confirm": true
}10. Ce qui N’est PAS exposé (et pourquoi)
Le serveur MCP exclut délibérément certaines opérations en v1 :
| Exclu | Raison |
|---|---|
Administration d’organisation et de plateforme (/v1/org/*, /v1/platform/*, points de terminaison réservés à l’organisation ou à la plateforme) | Exigent des identifiants d’organisation ou de plateforme, pas des clés API de tenant |
Clonage de voix (create_agent_worker_voice, delete_agent_worker_voice) | Derrière une authentification réservée à la plateforme ; aucune clé de tenant ne peut les appeler |
Export/import (exportAgent, exportTenant, importTenant) | Exigent des jetons de plateforme ou un parcours d’inscription spécial |
Inscription (createTenant) | Ce n’est pas une opération de tenant ; aucune clé de tenant ne peut l’appeler |
OAuth Cal.com (calcom_oauth_start, calcom_oauth_callback) | Hors périmètre : les flux OAuth / de code d’autorisation ne sont pas pris en charge dans cette phase |
Proxy LLM en streaming (proxyOpenAIStream) | Renvoie text/event-stream ; MCP ne gère que le JSON. Utilisez l’API REST pour le streaming. |
Points de terminaison internes du pipeline (finalizeCallScore, checkCallingHours) | Non routés publiquement ; ce ne sont pas des opérations destinées aux tenants |
| Webhooks entrants (points de terminaison receive_*) | Les webhooks des fournisseurs sont des rappels entrants, pas des outils MCP |
| Clés publiques, téléchargement de l’export de preuves, plan de contrôle SIP | Points de terminaison système, URL protégées par jeton, ou sans rapport avec les opérations d’API des tenants |
Vérification publique (getMetachain, verifyInclusion) et actualisation de la session du tableau de bord (refreshToken) | Ne prennent aucune clé API de tenant |
La liste de référence, avec une raison par entrée, est tenue dans la configuration des exclusions du serveur MCP.
Pour toutes ces opérations, utilisez directement l’API REST avec votre clé, ou le tableau de bord Audact.
11. Erreurs et limites de débit
Erreurs d’outil
Lorsqu’un appel d’outil MCP échoue, vous obtenez une erreur d’outil comportant :
- code : le code d’erreur de l’API Audact (par ex.
CALL_NOT_FOUND,INVALID_API_KEY,CONFIRMATION_REQUIRED,ARGUMENTS_TOO_LARGE,FILE_TOO_LARGE,INVALID_FILE_ENCODING) - hint : une suggestion lisible par un humain
- message : le texte complet de l’erreur
Exemple :
json
{
"isError": true,
"content": [
{
"type": "text",
"text": "404 CALL_NOT_FOUND: Call not found\nHint: Provide a valid UUID for call_id"
}
]
}Authentification et limites de débit
- 401 de transport (HTTP 401) : clé API invalide ou révoquée. Vérifiez que votre clé est correcte et n’a pas été révoquée.
- Erreur d’outil 403 (du backend) : le rôle de votre clé est insuffisant pour cet outil. Passez à Developer ou Owner si nécessaire.
- HTTP 429 (limite de débit) :
/mcp/est limité à 600 requêtes par minute et par clé, en comptant chaque requête MCP. Lorsque la limite est atteinte, vous obtenez un HTTP 429 avec un en-têteRetry-After; attendez ce nombre de secondes avant de réessayer. - Plafond de taille des réponses (256 KiB) : si le résultat d’une liste dépasse 256 KiB, des éléments entiers sont retirés à la fin pour que le résultat reste du JSON valide, et un champ
_mcp_truncatedindique combien d’éléments ont été affichés.next_cursorest retiré d’une page tronquée. Un seul élément au-delà du plafond renvoie à la place une erreur d’outilRESPONSE_TOO_LARGE.
Délais d’expiration
- Chaque appel d’outil a un délai d’expiration de 30 secondes. Des retards réseau ou des opérations en amont lentes peuvent parfois le déclencher. Dans ce cas, réessayez après un court délai.
12. Transmission et architecture
Vos appels MCP sont transmis à la véritable API REST d’Audact (/v1) avec votre clé, exactement comme si vous l’aviez appelée directement. Cela signifie que :
- Permissions : le rôle de votre clé détermine ce que vous pouvez faire. Une clé Viewer ne voit que les outils de lecture ; une clé Developer ou Owner peut écrire.
- Cloisonnement des tenants : votre clé est liée à un seul tenant. Vous ne pouvez ni lire ni modifier les données d’un autre tenant, même si vous transmettez d’une manière ou d’une autre leurs ID.
- Piste d’audit : chaque appel est journalisé sous votre clé, comme un appel REST.
- Idempotence : gérée par les mêmes services backend que ceux qui traitent REST ; transmettez
idempotency_keylorsqu’un outil le propose.
En bref : un appel d’outil MCP ne peut jamais faire plus que ce que la même clé pourrait faire directement sur /v1.
13. Exemples
Lister les agents
Outil : list_agents Arguments : (aucun) → Renvoie la liste des agents de votre tenant
Créer un webhook
Outil : create_webhook
Arguments :
- body:
url: "https://example.com/hook"
events: ["call_ended", "call_summary"]
scope: "account"
→ Renvoie l’ID et la configuration du nouveau webhookConfirmer la remise
Outil : confirm_delivery
Arguments :
- body:
call_id: "aaaabbbb-cccc-dddd-eeee-ffff00001111"
delivered_text: "Your balance is low"
mechanism: "voice"
→ Renvoie 200 OK ; événement de preuve enregistréEnvoyer un document KYC
Outil : upload_kyc_document Arguments : - doc_type: "passport" - file_base64: "JVBERi0xLjQK..." (PDF encodé en base64) - file_name: "my_passport.pdf" - file_content_type: "application/pdf" → Renvoie l’ID du document et l’horodatage de l’envoi
14. Assistance et retours
- Référence de l’API REST : Référence de l’API Audact
- Spécification du protocole MCP : Model Context Protocol
- Dépannage :
- Vérifiez que votre clé API est correcte et n’a pas été révoquée.
- Vérifiez que vous utilisez
https://api.audact.ai/mcp/comme URL de point de terminaison. - Si
tools/listrenvoie une liste vide : le rôle de votre clé est peut-être insuffisant. Essayez une clé Developer. - Pour des erreurs d’outil précises : le code d’erreur et l’indication (hint) renvoient à la documentation de l’API REST.
- Signaler un problème : Assistance Audact
Référence rapide
| Élément | Valeur |
|---|---|
| Protocole | MCP (Model Context Protocol) 2025-06-18 |
| Transport | Streamable HTTP, POST /mcp/ |
| URL de production | https://api.audact.ai/mcp/ |
| Authentification | Authorization: Bearer aud_live_… |
| Outils | 161 opérations choisies de l’API REST d’Audact |
| Rôles | Viewer, Developer, Owner |
| Limite de débit | 600 req/min par clé sur /mcp/ |
| Délai d’expiration | 30 secondes par appel |
| Outils exigeant confirm | 33 (argent, irréversible, critique pour la sécurité) |
| Limite d’arguments (la plupart des outils) | 1 MiB |
| Limite d’arguments (validation audio) | 15 MiB (audio : environ 11 MiB recommandés) |
| Limite des documents KYC | 10 MiB (décodé) |
| Plafond de réponse | 256 KiB : les listes sont tronquées (_mcp_truncated) ; un seul élément au-delà du plafond renvoie RESPONSE_TOO_LARGE |