API et MCP

Serveur MCP

Le serveur MCP de Diaform connecte votre agent IA au feedback que vous recueillez. Une fois l’agent connecté, vous pouvez lui poser des questions comme « De quoi les clients se sont-ils plaints ce mois-ci ? », et il récupère les conversations, les résumés et les rapports.

MCP (Model Context Protocol) est le standard qui permet aux agents IA de se connecter à des outils externes. Le serveur expose les mêmes données que l’API REST, est en lecture seule et utilise la même clé API.

Avant de commencer#

Il vous faut une offre Pro, Business ou Enterprise et une clé API. Les propriétaires et les admins créent des clés dans Paramètres → Général → Clés API. Consultez Vue d’ensemble de l’API.

ParamètreValeur
URL du serveurhttps://diaform.io/api/mcp
TransportStreamable HTTP
AuthentificationEn-tête Authorization: Bearer dia_org_live_...

Une clé donne à l’agent un accès en lecture à tous les projets de votre organisation. Créez une clé distincte pour chaque agent : vous pourrez ainsi en révoquer une sans toucher aux autres.

Connecter votre agent#

Choisissez votre agent :

Exécutez cette commande dans votre terminal :

Shell
claude mcp add --transport http diaform https://diaform.io/api/mcp \
  --header "Authorization: Bearer $DIAFORM_API_KEY"

Lancez ensuite /mcp dans Claude Code pour vérifier que diaform est connecté.

Outils#

L’agent voit six outils en lecture seule :

OutilCe qu’il faitArguments
list_projectsListe tous les projets avec leur ID, leur nom et leur statutAucun
get_projectRenvoie un projet avec ses questions et le nombre de ses conversationsproject_id
list_conversationsListe les conversations d’un projet avec le répondant, le sentiment et le résumé IAproject_id, et en option status, sentiment, created_after, created_before, search, limit, cursor
get_conversationRenvoie une conversation avec son résumé et sa transcription complèteconversation_id
list_reportsListe les rapports IA d’un projetproject_id, et en option status, limit, cursor
get_reportRenvoie un rapport IA avec ses thèmes, ses problèmes, ses cas isolés et ses citationsreport_id

Chaque outil renvoie le même JSON que son endpoint REST. Les champs sont décrits dans Projets, Conversations et Rapports. status et sentiment sont des tableaux, comme ["completed"].

Les listes renvoient jusqu’à 100 éléments à la fois. Quand un résultat contient has_more: true, l’agent transmet next_cursor dans cursor pour obtenir la page suivante.

Exemples de questions#

  • « Liste mes projets Diaform et dis-moi lequel a reçu le plus de réponses. »
  • « Lis les conversations terminées des 30 derniers jours dans le projet d’onboarding et regroupe les plaintes par thème. »
  • « Trouve les conversations qui parlent des prix et cite ce que les gens ont dit. »
  • « Résume le dernier rapport IA et rédige un message Slack pour l’équipe produit. »
  • « Récupère la transcription complète de la conversation la plus négative de la semaine. »

Erreurs et limites#

Une clé absente ou révoquée, ou une offre sans accès à l’API, fait échouer la connexion avec un code HTTP 401 ou 403. Votre client l’affiche généralement comme un serveur en échec ou non autorisé.

Quand un appel d’outil échoue, par exemple à cause d’un ID erroné, l’agent reçoit les mêmes error et code que l’API REST et peut se corriger. Consultez Erreurs.

Les requêtes MCP comptent dans la même limite que l’API REST : 120 requêtes par minute pour chaque clé.

Détails techniques#

Pour créer votre propre client :

  • Envoyez des messages JSON-RPC 2.0 avec POST https://diaform.io/api/mcp. Le serveur répond à chaque requête par une seule réponse JSON, pas par un flux d’événements.
  • Le serveur est sans état. Il n’émet pas d’ID de session, et GET et DELETE renvoient 405.
  • Les versions du protocole prises en charge sont 2025-06-18, 2025-03-26 et 2024-11-05.
  • Il implémente initialize, ping, tools/list et tools/call. Il n’a ni ressources ni prompts.
Shell
curl -X POST "https://diaform.io/api/mcp" \
  -H "Authorization: Bearer $DIAFORM_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "list_conversations",
      "arguments": {
        "project_id": "b8acb3ab-1f3d-4a7e-a846-b7f493f86b6d",
        "status": ["completed"],
        "limit": 10
      }
    }
  }'