SurveyLane / MCP v0.1.0
Model Context Protocol · live

Analyseer je SurveyLane-resultaten met AI.

Een gehoste, alleen‑lezen MCP-endpoint waarmee Claude (of een andere MCP‑client) de enquêtes en antwoorden in je SurveyLane-account kan lezen — zodat het open antwoorden samenvat, toetst welke verschillen significant zijn, de kerndrivers vindt, segmenten vergelijkt en bevindingen uitschrijft. Geen SDK's, geen lijmwerk.

Endpoint https://mcp.surveylane.app

01Snel starten

In drie stappen van niets tot chatten met je enquêtedata.

1

Genereer een token

Open Instellingen → API access en klik op Genereer. Kopieer de waarde meteen — hij wordt alleen bij het aanmaken getoond.

2

Koppel je client

Voeg de endpoint en de Bearer-header toe aan Claude Code, Claude Desktop of Cursor — één CLI-commando of een klein stukje JSON.

3

Vraag in gewone taal

Het model bepaalt zelf welke tools het aanroept. Jij beschrijft wat je wilt weten, niet welke query er moet draaien.

02Installeren

Plak de endpoint in elke MCP‑client. HTTP-transport, Bearer-auth, geen SDK.

Voeg de server toe met één CLI-aanroep. Positionele argumenten komen vóór de flags, anders wordt de URL opgeslokt door --header.

terminal
claude mcp add surveylane https://mcp.surveylane.app \
  --transport http \
  --header "Authorization: Bearer slk_..."

Controleer met claude mcp list — je zou surveylane tussen je andere servers moeten zien staan.

03Authenticatie & privacy

Elke aanvraag behalve GET /health moet een Bearer-token meesturen. Tokens zijn persoonlijk, alleen‑lezen en worden eenmalig bij het aanmaken getoond.

read

Alleen‑lezen door ontwerp

De AI kan je enquêtes, resultaten en antwoorden opvragen en analyseren — aanmaken, bewerken of verwijderen kan het niet. Veilig om mee te geven aan elke MCP-client waaraan je inzage wilt geven.

  • list_surveys, get_survey
  • get_results, get_open_text, get_funnel
  • get_responses, whoami
privacy

Privacy van respondenten

Bij anonieme enquêtes worden namen en e-mailadressen van respondenten nooit teruggegeven — alleen geaggregeerde en geanonimiseerde antwoorden. Bij niet-anonieme enquêtes wordt de keuze gerespecteerd die je op de enquête hebt gemaakt.

  • isAnonymous wordt server-side afgedwongen
  • aggregatie-tools tonen nooit PII
  • alleen binnen je eigen account
Tokens zijn per‑gebruiker en in te trekken

Elke tool-query blijft binnen je eigen data en kan geen andere accounts zien. Trek een gelekt token in via Instellingen → API access — dat werkt direct.

04Tools · 22

Alles wat de AI kan aanroepen. Allemaal alleen‑lezen. Elke tool geeft kale bouwstenen terug (aantallen, verdelingen, ruwe tekst) — het model doet de interpretatie.

whoami
read
Return the caller's plan and account context.
list_surveys
read
List the caller's surveys with response totals and completion rate.
get_survey (survey_id)
read
Get the full structure of a survey (groups, questions, options). No responses, no PII.
get_results (survey_id, only_complete, filter, segment_by)
read
Aggregated results per question: choice counts, rich numeric summary (mean/median/stddev/quartiles + histogram), and scale distributions with NPS/top-2-box. Optional `filter` ({question_id, equals}) restricts to a subgroup; optional `segment_by` (a choice question id) returns results split per option. yes_no/single_choice counts are correct (not just multiple_choice).
get_open_text (question_id, limit, offset)
read
Free-text answers for one question, paginated. Use to summarise themes/sentiment.
get_responses (survey_id, only_complete, limit, offset, include_pii, question_ids)
read
Individual responses as a compact answer matrix (response x question), paginated. PII (name/email) is omitted by default and only included with include_pii=true on a non-anonymous survey. Use question_ids to fetch only specific columns and keep payloads small. Prefer get_crosstab/get_results for analysis.
get_funnel (survey_id)
read
Drop-off funnel: total vs completed responses, per-question answered/shown/skipped and reached counts. Conditional (branched) questions report drop-off relative to who actually saw them, not all starters.
get_crosstab (question_a, question_b)
read
Cross-tabulate two questions of the same survey. Numeric×numeric returns a Pearson correlation; otherwise a contingency table (counts of A categories × B categories).
get_group_summary (survey_id)
read
Roll-up of numeric/VAS scores per question group (cluster): pooled group mean + per-question means, so clusters are comparable at a glance.
get_data_quality (survey_id)
read
Data-quality signals for a survey: completion-time stats (median/quartiles + speeders) and straightlining detection (respondents giving near-identical answers across numeric/scale questions).
compare_surveys (survey_a, survey_b)
read
Compare two surveys (e.g. baseline vs follow-up). Matches numeric/VAS questions by text and reports per-question mean deltas, sorted by magnitude. Useful for 0-meting vs nameting.
test_significance (survey_id, question_id, group_question_id, group_a, group_b)
read
Statistically test whether a target question differs across subgroups defined by another question. Numeric target -> Welch t-test (two groups) or one-way ANOVA (all groups), with Cohen's d / eta². Categorical target -> chi-square + Cramér's V. Returns p-values so you don't over-interpret small samples.
get_correlation_matrix (survey_id, group_id)
read
Pairwise Pearson correlations (with p-values, significance) across all numeric/VAS questions, sorted by strength. Optionally scope to one group/cluster. One call instead of N² crosstabs.
key_drivers (survey_id, target)
read
Driver analysis: rank all numeric questions by their correlation (with p-value) to a target numeric question. Answers 'what most relates to low energy / high stress?'.
scale_reliability (survey_id)
read
Cronbach's alpha per question group (cluster) over its numeric items, with an interpretation. Validates whether a cluster measures one coherent construct before averaging it.
query_cohort (survey_id, where, aggregate)
read
Define a cohort with multiple AND/OR conditions (numeric ranges, option matches, answered/not_answered) and get its size/share. With aggregate=true, returns full get_results-style aggregates for just that cohort.
get_weighted_results (survey_id, weight_question_id, target_shares)
read
Post-stratification weighting on a single variable: supply target shares for a demographic question (e.g. gender 50/50) and get weighted numeric means vs unweighted, plus Kish effective sample size. Corrects sample skew.
compute_index (survey_id, items, normalize, segment_by)
read
Build a composite index from chosen items (optional per-item weight/reverse/min-max, optional 0..100 normalization) and get its distribution overall and per segment. E.g. a wellbeing index from selected VAS questions.
auto_insights (survey_id, top_n)
read
Automatically scan every segmentation question × numeric question, ANOVA-test each, and return the significant differences ranked by effect size (eta²). The 'do the analysis for me' tool, guarded by significance.
get_verbatims (question_id, link_question_id, min_score, max_score, limit)
read
Free-text verbatims for a question (text answers, or the 'other' texts of a choice question), optionally linked to another numeric question's score and filtered by a score range (e.g. comments of the lowest scorers). Includes keyword frequency.
response_timeline (survey_id, bucket)
read
Response volume over the fielding period: started/completed per day or hour, cumulative and completion rate. Shows when responses came in (e.g. after a reminder) and where people abandon.
report_bundle (survey_id, driver_target)
read
One call returns a full analysis pack: overview results, per-cluster summary, scale reliability, data quality, funnel, and auto-insights (optionally key drivers for a target). Feeds a report/PDF directly.

05Prompts

Server‑gehoste prompt-sjablonen die de AI rechtstreeks aanroept. In Claude Code: /mcp__surveylane__<name>. Eén klik geeft je een volledige begeleide analyse, in plaats van dat je zelf de juiste vragen moet stellen.

analyze_survey Analyze a survey

Run a full analysis of a survey's results and write a report with findings and recommendations.

06Voorbeeldprompts

Echte vragen die je in je AI-client kunt plakken — van een snelle samenvatting tot significantietoetsen, kerndriver-analyse, cohorten, weging en voor/na-vergelijkingen. Het model bepaalt welke tools het aanroept en koppelt ze aan elkaar; jij blijft in gewone taal.

“Welke van mijn enquêtes hebben de meeste antwoorden?”
“Geef me de voltooiingsgraad van elke enquête.”
“Welke enquêtes staan nog in concept, en welke zijn gesloten?”
“Wanneer kreeg mijn enquête Aanmelden interventieperiode voor het laatst een antwoord?”

07Van data naar een gepolijst rapport

Vraag je AI om een volledige analyse en die leest de cijfers rechtstreeks uit de MCP-tools — een klein script maakt er vervolgens een gehuisstijld, directieklaar PDF van. Hier zie je de workflow en een voorbeeld.

  1. 1
    Vraag het in gewone taal

    “Voer een volledige analyse uit en schrijf een vertrouwelijk rapport op groepsniveau met bevindingen en aanbevelingen.”

  2. 2
    De AI roept de tools aan

    Hij koppelt report_bundle, key_drivers, compute_index, test_significance en meer aan elkaar — allemaal alleen-lezen, allemaal beperkt tot je eigen account.

  3. 3
    Een script rendert de PDF

    Geef de teruggegeven cijfers aan een klein ReportLab- (of HTML‑naar‑PDF-)script met je eigen kleuren en logo. Draai het opnieuw zodra de data verandert.

Tools achter het voorbeeld: report_bundle, key_drivers, get_correlation_matrix, test_significance, compute_index, get_weighted_results, query_cohort, response_timeline.

SurveyLane · ANALYSERAPPORT
Vitaliteit op de werkvloer
Veldhoek Logistiek
Inzicht op groepsniveau in energie, focus, stress en herstel.
97gestart
86voltooid
89%completion
69.2welzijnsindex
Welzijn in één oogopslag (0–100)
Sociale veiligheid84
Motivatie79
Focus72
Energie71
Slaapkwaliteit70
Stress (kalm)64
Grootste verbeterkans

22% zit meer dan 8 uur per dag en doet nooit aan mobiliteit — een concreet cohort voor de interventie. Beweging en voeding hebben het meeste effect.

Gegenereerd via de SurveyLane MCP-server · Vertrouwelijk — uitsluitend op groepsniveau
Illustratief voorbeeld — fictief bedrijf, uitsluitend cijfers op groepsniveau.

08Rate limits

Per‑gebruiker, een schuivend venster van 60‑seconden. Bij het bereiken van de limiet krijg je een nette tool-fout met een retry_after_seconds-hint — geen HTTP 429 — zodat je AI-client kan terugschakelen zonder het gesprek te breken.

reads
120 / min

Geteld over al je tokens samen, dus meer tokens aanmaken kan het budget niet vergroten. Alle tools zijn pure database-leesacties.

scope
read v1

Alleen‑lezen in deze versie. De scope-kolom bestaat zodat schrijftools later achter een expliciete upgrade toegevoegd kunnen worden.

Backoff-hints, geen HTTP 429

De MCP SDK kent geen retry-semantiek op transport‑niveau. AI-clients lezen de fouttekst WEL — de geweigerde response bevat een precieze retry_after_seconds.

09FAQ

Open Instellingen → API access in SurveyLane en klik op intrekken bij de tokenregel. Dat werkt direct — de volgende aanvraag van dat token faalt bij de auth.
MCP-verkeer gebruikt POST op ditzelfde root-pad. Een browser-GET (Accept: text/html) krijgt deze hulppagina; de losse GET SSE-stream van een MCP-client (Accept: text/event-stream) wordt geweigerd met 405, omdat ons stateless transport geen server-geïnitieerde meldingen verstuurt.
Alleen wanneer de enquête niet anoniem is. Bij anonieme enquêtes worden namen en e-mailadressen van respondenten nooit teruggegeven — de tools leveren alleen geaggregeerde en geanonimiseerde antwoorden. De privacy-instelling die je op de enquête koos wordt server-side afgedwongen.
Nee. Elke aanvraag blijft via je persoonlijke token binnen je eigen account, en data stroomt alleen naar de MCP-client die je hebt gekoppeld (bijv. je eigen Claude). De server geeft nooit de enquêtes van een andere gebruiker terug.
De server geeft de ruwe 0–10-verdeling terug als bouwstenen; de AI berekent de NPS (promoters min detractors). Dat houdt de server simpel en laat het model over de getallen redeneren, grote resultaatsets pagineren en zijn berekening uitleggen.
Niet in deze versie — de MCP-server is alleen-lezen en gebouwd voor analyse. Tokens worden uitgegeven met read-scope. Tools om enquêtes op te stellen komen mogelijk later, achter een aparte write-scope.
Ja. Vraag je AI om een volledige analyse en die haalt de cijfers rechtstreeks uit de tools (report_bundle, key_drivers, compute_index …); een klein script maakt er vervolgens een gehuisstijld PDF van. Zie de sectie Rapporten voor een uitgewerkt voorbeeld.
Elke MCP‑client via HTTP — Claude Code, Claude Desktop en Cursor staan onder Installeren, maar alles dat het Model Context Protocol spreekt werkt.
Nee. De server leest alleen je data en geeft die aan de MCP-client die je hebt gekoppeld; SurveyLane stuurt het nergens anders heen en traint er niet op. Wat je je AI-client vraagt valt onder de voorwaarden van de aanbieder van die client.
Ja. De tools geven de eigen inhoud van je enquête terug — Nederlands, Duits, Frans of anders — en de AI analyseert en schrijft in de taal die je vraagt. Deze pagina zelf is beschikbaar in vier talen.
Live. Elke tool-aanroep leest de SurveyLane-database op het moment van de aanvraag, dus je werkt altijd met de nieuwste antwoorden — geen synchronisatie of export.