> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ouraicalling.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Point de terminaison MCP

> Connectez Claude, ChatGPT ou tout autre client MCP à votre compte

La plate-forme est livrée avec un **serveur MCP** (Model Context Protocol, streamable HTTP). Connectez une application d'IA (Claude, ChatGPT, Cursor ou votre propre agent) et elle pourra gérer des assistants, démarrer des appels, lire des transcriptions et gérer des campagnes en votre nom.

```text theme={null}
https://{domain}/mcp
```

Sur un domaine en marque blanche, les écrans de point de terminaison, de connexion et de consentement s'exécutent tous sous la marque du locataire. L'accès nécessite la fonctionnalité **Connect AI / MCP** dans votre forfait (`connect_ai_mcp`) — sinon le point de terminaison répond `403`.

## Connecter les clients

<Tabs>
  <Tab title="Claude">
    1. **Paramètres → Connecteurs → Ajouter un connecteur personnalisé**
    2. Saisissez `https://{your-domain}/mcp`.
    3. Claude démarre automatiquement le flux OAuth : connectez-vous sur la page de connexion de votre plateforme et approuvez l'écran de consentement.
    4. Les outils apparaissent dans Claude.
  </Tab>

  <Tab title="ChatGPT">
    1. **Paramètres → Connecteurs → Créer** (connecteur personnalisé)
    2. URL du serveur MCP : `https://{your-domain}/mcp`, authentification : **OAuth**
    3. Connectez-vous et approuvez – les outils sont ensuite disponibles dans ChatGPT.
  </Tab>

  <Tab title="Autres clients">
    ```json theme={null}
    {
      "mcpServers": {
        "voice-ai": {
          "command": "npx",
          "args": ["mcp-remote", "https://{your-domain}/mcp"]
        }
      }
    }
    ```

    Vous pouvez également ignorer OAuth et vous authentifier avec une **clé API** (`fam_...`, créée sous Paramètres) en tant que jeton porteur statique : `Authorization: Bearer fam_...`.
  </Tab>
</Tabs>

### Connectez-vous depuis le tableau de bord

Le moyen le plus rapide de se connecter est le modal **Connect AI** intégré : ouvrez la page **Outils** du tableau de bord et cliquez sur **Utiliser dans ChatGPT & Claude**. Le modal affiche l'URL MCP de votre compte (votre domaine en marque blanche s'il est configuré et vérifié), vous permet de le copier en un seul clic et propose des invites de démarrage prêtes à l'emploi : créez un assistant, réparez un assistant, analysez le dernier appel, exploitez les 30 derniers appels ou lancez une campagne. **Ouvrir dans Claude** / **Ouvrir dans ChatGPT** transmet l'invite sélectionnée directement à l'application IA ; vous complétez uniquement l’étape de connexion et de consentement ici.

## Authentification

Le point de terminaison implémente la pile d'authentification MCP moderne et complète — les clients la gèrent automatiquement :

1. Une requête non authentifiée renvoie `401` avec des métadonnées de ressources protégées (RFC 9728).
2. Le client découvre le serveur d'autorisation (RFC 8414), s'enregistre via l'enregistrement dynamique du client (RFC 7591) et exécute **Authorization Code + PKCE**.
3. Vous vous connectez (connexion en marque blanche) et approuvez l’écran de consentement – ​​une fois par candidature ; l'approbation est mémorisée pendant 180 jours.
4. Le client reçoit un jeton d'accès (`fam_at_...`, 1 h, avec jeton d'actualisation) et appelle le point de terminaison.

## Outils disponibles

Chaque opération de l'[API REST v1](/api-reference/introduction) est également disponible sous forme d'outil MCP — mêmes services, même validation (limites du plan, catalogue de modèles, liste DNC).

| Outil                                   | Portée             | Description                                                                                                                                                                                                                                                                                                     |
| --------------------------------------- | ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `list_assistants` / `get_assistant`     | `assistants:read`  | Lister les assistants/récupérer une configuration                                                                                                                                                                                                                                                               |
| `create_assistant` / `update_assistant` | `assistants:write` | Créer/modifier des assistants (les mises à jour sont automatiquement versionnées). La création par défaut est **Invite unique** (`flow_json` null). Transmettez `flow_json` pour le **Flux conversationnel**. Utilisez `list_prompt_templates` puis `system_prompt` / `first_message` pour appliquer un modèle. |

In-app **[Milian Copilot](/assistants/milian-copilot)** utilise les mêmes services via votre session de connexion (`/api/milian/*`) — pas ce point de terminaison MCP.
|`delete_assistant`|`assistants:write`|Supprimer définitivement un assistant|
|`list_tools` / `get_tool`|`assistants:read`|Répertorier les outils réutilisables (outils API HTTP + serveurs MCP externes) / en récupérer un (secrets masqués comme `•••`)|
|`create_tool` / `update_tool` / `delete_tool`|`assistants:write`|Gérer les outils réutilisables (`type` `api`, `mcp` ou `builtin` — ce dernier englobe un [outil intégré ](/assistants/built-in-tools) en tant qu'outil d'espace de travail ; la création/mise à jour nécessite des informations d'identification d'administrateur car les configurations contiennent des secrets)|
|`get_assistant_tools` / `set_assistant_tools`|`assistants:read` / `assistants:write`|Lire / REMPLACER les affectations d'outils d'un assistant|
|`get_voices`|`voices:read` ou `assistants:read`|Parcourez la bibliothèque vocale TTS (fournisseur, langue, sexe, accent, recherche)|
|`get_models`|`assistants:read`|Parcourez le catalogue de modèles (`type` = `llm`, `stt`, `tts` ou `realtime`) — les modèles disponibles pour la configuration assistée|
|`get_languages`|`assistants:read`|Répertoriez les langues de l'assistant prises en charge (codes ISO 639-1 + étiquettes) pour `primary_language` / `secondary_languages`|
|`list_calls` / `get_call`|`calls:read`|Parcourir les appels ; `get_call` comprend une transcription, un résumé et un `recording_url` temporaire|
|`list_history` / `get_email_history_item`|`calls:read`|Parcourez les appels et les conversations par courrier électronique groupées ; chaque tour de client/assistant avec le même ID de fil stable forme une ligne et peut être récupéré chronologiquement|
|`make_call`|`calls:write`|Démarrer un appel sortant (`assistant_id`, `to_number`, lead facultatif)|
|`live_call_control`|`calls:write`|Contrôle des appels actifs : `listen_token`, `whisper`, `end_agent` ou `hangup` (nécessite la fonctionnalité du plan `live_monitoring`)|
|`list_campaigns` / `get_campaign`|`campaigns:read` ou `calls:read`|Parcourir les campagnes incl. paramètres du numéroteur et nombre de prospects|
|`create_campaign` / `update_campaign` / `delete_campaign`|`campaigns:write` ou `calls:write`|Gérer les campagnes (accès simultané, tentatives, fenêtres d'appel et politiques de nouvelle tentative : `retry_on_voicemail`, `retry_until_goal` + `goal_variable`, `mark_complete_when_no_leads`)|
|`start_campaign` / `stop_campaign`|`campaigns:write` ou `calls:write`|Lancer ou mettre en pause le composeur|
|`list_leads`|`leads:read` ou `calls:read`|Lister les leads d'une campagne|
|`add_lead` / `add_leads` / `delete_lead`|`leads:write` ou `calls:write`|Gérer les leads (uniques ou en masse jusqu'à 1 000, normalisés E.164, vérifiés DNC)|
|`list_suppression_entries`|`suppression:read` ou `campaigns:read`|Parcourir la liste des numéros à ne pas appeler (suppression) de l'espace de travail|
|`add_suppression_entry` / `remove_suppression_entry`|`suppression:write` ou `campaigns:write`|Bloquer un numéro de toutes les campagnes / le supprimer de la liste|
|`list_phone_numbers`|`phone_numbers:read` ou `calls:read`|Numéros sur le compte|
|`search_phone_numbers`|`phone_numbers:read` ou `calls:read`|Recherchez les numéros de marché achetables, y compris. prix|
|`buy_phone_number` / `release_phone_number`|`phone_numbers:write` ou `calls:write`|Numéros d'achat/version (facturation complète + flux de conformité)|
|`assign_phone_number`|`phone_numbers:write` ou `calls:write`|Attribuer un numéro à un assistant, basculer les directions|
|`list_sip_trunks` / `get_sip_trunk`|`sip_trunks:read` ou `calls:read`|Parcourir les lignes réseau SIP (les informations d'identification ne sont jamais retournées)|
|`create_sip_trunk` / `delete_sip_trunk`|`sip_trunks:write` ou `calls:write`|Apportez votre propre opérateur (DID/Extension, format d'appel, SLA avancé) / supprimez une ligne réseau - voir [BYO SIP trunk](/telephony/sip-trunks)|
|`list_knowledge_bases` / `get_knowledge_base`|`knowledge:read` ou `assistants:read`|Parcourir les bases de connaissances|
|`create_knowledge_base` / `delete_knowledge_base`|`knowledge:write` ou `assistants:write`|Gérer les bases de connaissances|
|`add_document`|`knowledge:write` ou `assistants:write`|Ajoutez un document (texte brut ou URL de fichier) et indexez-le pour le récupérer|
|`get_balance`|`billing:read` ou `calls:read`|Solde minutes/crédits + résumé du plan|
|`get_me`|aucun (n'importe quel jeton valide)|Inspectez les informations d'identification d'appel, les limites du forfait et les bascules de fonctionnalités|
|`get_memory_settings` / `update_memory_settings`|`settings:read` / `settings:write` (ou `assistants:*`)|Paramètres par défaut de l'espace de travail pour la mémoire de l'appelant (activation/désactivation par défaut + fenêtre d'obsolescence)|
|`get_assistant_variables` / `set_assistant_variables`|`assistants:read` / `assistants:write`|Lire/REMPLACER les définitions [variable personnalisée ](/assistants/variables) d'un assistant|
|`list_integrations` / `get_integration`|`integrations:read` ou `assistants:read`|Parcourir [intégrations de calendrier](/assistants/calendar-booking) (Cal.com, Calendly, Google, Outlook, natif ; secrets masqués)|
|`create_integration` / `update_integration` / `delete_integration`|`integrations:write` ou `assistants:write`|Gérer les intégrations de calendrier (connexion testée avant l'enregistrement ; informations d'identification d'administrateur requises)|
|`get_assistant_integrations` / `set_assistant_integrations`|`integrations:read/write` ou `assistants:read/write`|Lire / REMPLACER les tâches d'intégration du calendrier d'un assistant|
|`get_booking_event_types`|`bookings:read` ou `assistants:read`|Lister les types d'événements du moteur de réservation (slug, durée, disponibilité hebdomadaire)|
|`create_booking_event_type` / `update_booking_event_type` / `delete_booking_event_type`|`bookings:write` ou `assistants:write`|Gérer les types d'événements du moteur de réservation intégré|
|`list_bookings` / `get_booking`|`bookings:read` ou `calls:read`|Parcourir les réservations (filtrer par type d'événement, statut, plage horaire)|
|`cancel_booking`|`bookings:write` ou `calls:write`|Annuler une réservation (envoie la mise à jour ICS `METHOD:CANCEL`)|
|`get_usage_summary`|`calls:read`|Utilisation mensuelle (minutes, coûts)|
|`list_dashboards` / `get_dashboard`|`dashboards:read` ou `calls:read`|Parcourez les tableaux de bord d'analyse personnalisés|
|`create_dashboard` / `update_dashboard` / `delete_dashboard`|`dashboards:write` ou `calls:write`|Gérer des tableaux de bord personnalisés ; `show_default_sections=false` crée un canevas vierge et `hidden_default_sections` supprime les cartes intégrées individuelles (nécessite la fonctionnalité de plan `custom_dashboards`)|
|`get_dashboard_analytics`|`dashboards:read` ou `calls:read`|KPI, deltas de comparaison, séries chronologiques, répartitions, progression de la campagne et résumés de modules sécurisés|
|`list_dashboard_widgets`|`dashboards:read` ou `calls:read`|Lire les widgets, les filtres, les paramètres de visualisation et la disposition de la grille|
|`create_dashboard_widget` / `update_dashboard_widget` / `remove_dashboard_widget`|`dashboards:write` ou `calls:write`|Construisez le canevas du tableau de bord ; supprimer se détache mais conserve le widget réutilisable|

Each tool accepts either its fine-grained v1 scope **or** the legacy umbrella scope (`calls:*` for campaigns/leads/numbers/SIP/billing/dashboards, `assistants:*` for voices/knowledge) — OAuth tokens issued with the four standard scopes keep working for everything. Les clés/jetons sans restrictions de portée ont un accès complet ; `:write` implique `:read`.

## Erreurs

| Statut | Signification                                                       |
| ------ | ------------------------------------------------------------------- |
| `401`  | Jeton non/invalide — le client doit (re)démarrer le flux OAuth      |
| `403`  | Le plan ne contient pas `connect_ai_mcp`                            |
| `405`  | Le point de terminaison est sans état : utilisez uniquement `POST`. |

<Tip>
  Les mêmes fonctionnalités sont disponibles en tant que [REST API](/api-reference/introduction) classique — choisissez celle qui correspond à votre intégration.
</Tip>
