MCP-server
De MCP-server van Diaform verbindt je AI-agent met je feedback. Na het verbinden kun je de agent vragen stellen als “Waar klaagden klanten deze maand over?”, en hij haalt de gesprekken, samenvattingen en rapporten op.
MCP (Model Context Protocol) is de standaard waarmee AI-agents verbinding maken met externe tools. De server biedt dezelfde data als de REST API, is alleen-lezen en gebruikt dezelfde API-sleutel.
Voordat je begint#
Je hebt een Pro-, Business- of Enterprise-abonnement en een API-sleutel nodig. Eigenaren en beheerders maken sleutels aan onder Instellingen → Algemeen → API-sleutels. Zie API-overzicht.
| Instelling | Waarde |
|---|---|
| Server-URL | https://diaform.io/api/mcp |
| Transport | Streamable HTTP |
| Authenticatie | Header Authorization: Bearer dia_org_live_... |
Een sleutel geeft de agent leestoegang tot elk project in je organisatie. Maak voor elke agent een aparte sleutel, zodat je er één kunt intrekken zonder dat de andere agents er last van hebben.
Je agent verbinden#
Kies je agent:
Voer dit uit in je terminal:
claude mcp add --transport http diaform https://diaform.io/api/mcp \
--header "Authorization: Bearer $DIAFORM_API_KEY"Voer daarna /mcp uit in Claude Code om te controleren of diaform verbonden is.
Tools#
De agent ziet zes tools, allemaal alleen-lezen:
| Tool | Wat de tool doet | Argumenten |
|---|---|---|
list_projects | Toont elk project met ID, naam en status | Geen |
get_project | Geeft één project terug met de vragen en aantallen gesprekken | project_id |
list_conversations | Toont de gesprekken van een project met respondent, sentiment en AI-samenvatting | project_id, en optioneel status, sentiment, created_after, created_before, search, limit, cursor |
get_conversation | Geeft één gesprek terug met de samenvatting en het volledige transcript | conversation_id |
list_reports | Toont de AI-rapporten van een project | project_id, en optioneel status, limit, cursor |
get_report | Geeft één AI-rapport terug met thema's, problemen, uitschieters en citaten | report_id |
Elke tool geeft dezelfde JSON terug als het bijbehorende REST-endpoint. De velden staan beschreven in Projecten, Gesprekken en Rapporten. status en sentiment zijn arrays, zoals ["completed"].
Lijsten geven maximaal 100 items per keer terug. Heeft een resultaat has_more: true, dan geeft de agent next_cursor door als cursor om de volgende pagina op te halen.
Wat je kunt vragen#
- “Geef een lijst van mijn Diaform-projecten en vertel me welk project de meeste antwoorden kreeg.”
- “Lees de afgeronde gesprekken van de afgelopen 30 dagen in het onboardingproject en groepeer de klachten per thema.”
- “Zoek gesprekken waarin de prijs ter sprake komt en citeer wat mensen zeiden.”
- “Vat het nieuwste AI-rapport samen en schrijf een Slack-update voor het productteam.”
- “Haal het volledige transcript op van het meest negatieve gesprek van deze week.”
Fouten en limieten#
Bij een ontbrekende of ingetrokken sleutel, of een abonnement zonder API-toegang, mislukt de verbinding met HTTP 401 of 403. Je client toont dat meestal als een mislukte of niet-geautoriseerde server.
Mislukt de aanroep van een tool, bijvoorbeeld door een verkeerde ID, dan krijgt de agent dezelfde error en code als bij de REST API en kan hij zichzelf corrigeren. Zie Fouten.
MCP-requests tellen mee voor dezelfde limiet als de REST API: 120 requests per minuut per sleutel.
Technische details#
Als je je eigen client bouwt:
- Stuur JSON-RPC 2.0-berichten met
POST https://diaform.io/api/mcp. De server beantwoordt elk request met één JSON-response, niet met een eventstream. - De server is stateless. Hij geeft geen sessie-ID uit, en
GETenDELETEgeven405terug. - Ondersteunde protocolversies zijn
2025-06-18,2025-03-26en2024-11-05. - Hij implementeert
initialize,ping,tools/listentools/call. Hij heeft geen resources of prompts.
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
}
}
}'