Model Context Protocol

InfraBIDS MCP-server

Koppel je AI-agent (Claude, ChatGPT, Cursor, Codex) aan InfraBIDS en vraag bedrijfsinformatie, diensten en projectcases op in het Nederlands of Engels.

Endpoint
https://infrabidsite.com/mcp
Transport
Streamable HTTP (JSON-RPC 2.0)
Versie
infrabids-landing 0.3.0

Authenticatie

De server is beveiligd met OAuth 2.1. Clients registreren zichzelf automatisch (dynamic client registration); je logt in met je account en keurt de koppeling goed op de toestemmingspagina. Daarna stuurt de client bij elke aanroep een Authorization: Bearer <token>-header mee. Zonder geldig token antwoordt de server met 401 Unauthorized.

Discovery-document: https://infrabidsite.com/.well-known/oauth-protected-resource

Client-configuratie

Voeg de server toe aan je MCP-client; de OAuth-flow start bij de eerste verbinding.

{
  "mcpServers": {
    "infrabids": {
      "url": "https://infrabidsite.com/mcp"
    }
  }
}

Beschikbare tools

get_company_info
alleen-lezen

Openbaar profiel van InfraBIDS: wat het bedrijf doet, focusgebieden, doelgroepen en hoe je een afspraak aanvraagt.

Invoervelden

VeldTypeVerplichtOmschrijving
lang"nl" | "en"NeeTaal van de teruggegeven tekst. Standaard "nl".

Voorbeeld-request

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_company_info",
    "arguments": { "lang": "nl" }
  }
}

Voorbeeld-antwoord (structured)

{
  "brand": "InfraBIDS",
  "tagline": "...",
  "summary": "...",
  "website": "https://infrabidsite.com",
  "pageForLanguage": "https://infrabidsite.com",
  "audiences": ["Bouwbedrijven", "Overheden", "..."],
  "meetingRequest": "https://infrabidsite.com/#contact"
}
list_services
alleen-lezen

Lijst van de openbare diensten van InfraBIDS: consultancy, softwareontwikkeling, data science, geo-data en verkeersmanagement.

Invoervelden

VeldTypeVerplichtOmschrijving
lang"nl" | "en"NeeTaal van de teruggegeven tekst. Standaard "nl".

Voorbeeld-request

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "list_services",
    "arguments": { "lang": "en" }
  }
}

Voorbeeld-antwoord (structured)

{
  "services": [
    { "id": "consultancy", "name": "...", "description": "..." },
    { "id": "geo-data", "name": "...", "description": "..." }
  ]
}
list_projects
alleen-lezen

Lijst van de openbare projectcases van de website, optioneel gefilterd op een dienst-id.

Invoervelden

VeldTypeVerplichtOmschrijving
lang"nl" | "en"NeeTaal van de teruggegeven tekst. Standaard "nl".
servicestringNeeOptioneel dienst-id om op te filteren, bijvoorbeeld "geo-data" of "traffic-management".

Voorbeeld-request

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "list_projects",
    "arguments": { "lang": "nl", "service": "geo-data" }
  }
}

Voorbeeld-antwoord (structured)

{
  "projects": [
    {
      "id": "tvm-operating-system",
      "name": "TVM Operating System",
      "description": "...",
      "focus": ["traffic-management", "software-development"],
      "status": "In productie",
      "url": "https://infrabidsite.com/blog/tvm-platform"
    }
  ]
}
get_team
alleen-lezen

De mensen achter InfraBIDS: rollen, achtergrond, expertisegebieden en LinkedIn-profielen.

Invoervelden

VeldTypeVerplichtOmschrijving
lang"nl" | "en"NeeTaal van de teruggegeven tekst. Standaard "nl".

Voorbeeld-request

{
  "jsonrpc": "2.0",
  "id": 4,
  "method": "tools/call",
  "params": {
    "name": "get_team",
    "arguments": { "lang": "nl" }
  }
}

Voorbeeld-antwoord (structured)

{
  "team": [
    {
      "id": "raymon-somford",
      "name": "Raymon Somford",
      "role": "...",
      "bio": "...",
      "expertise": ["Infrastructuur GWW & TVM"],
      "linkedin": "https://www.linkedin.com/..."
    }
  ]
}
search_site
alleen-lezen

Doorzoekt alle openbare pagina's, secties en FAQ-antwoorden van de site en geeft treffers terug met URL.

Invoervelden

VeldTypeVerplichtOmschrijving
querystringJaZoekwoorden, bijvoorbeeld "verkeersplan" of "geo data".
lang"nl" | "en"NeeTaal van de teruggegeven tekst. Standaard "nl".
limitnumberNeeMaximaal aantal resultaten (1-20). Standaard 8.

Voorbeeld-request

{
  "jsonrpc": "2.0",
  "id": 5,
  "method": "tools/call",
  "params": {
    "name": "search_site",
    "arguments": { "query": "verkeersplan", "lang": "nl" }
  }
}

Voorbeeld-antwoord (structured)

{
  "query": "verkeersplan",
  "results": [
    {
      "type": "page",
      "title": "Platformen",
      "snippet": "...",
      "url": "https://infrabidsite.com/#platforms"
    }
  ]
}
answer_question
alleen-lezen

Beantwoordt een vraag in natuurlijke taal met alle openbare content tegelijk: FAQ, cases, diensten en pagina's. Geeft gerangschikte passages met bron-URL terug, zodat een agent kan citeren.

Invoervelden

VeldTypeVerplichtOmschrijving
questionstringJaDe vraag, bijvoorbeeld "Werken jullie met BGT en IMBOR?".
lang"nl" | "en"NeeTaal van de teruggegeven tekst. Standaard "nl".
limitnumberNeeMaximaal aantal passages (1-10). Standaard 5.

Voorbeeld-request

{
  "jsonrpc": "2.0",
  "id": 6,
  "method": "tools/call",
  "params": {
    "name": "answer_question",
    "arguments": { "question": "Werken jullie met BGT en IMBOR?", "lang": "nl" }
  }
}

Voorbeeld-antwoord (structured)

{
  "question": "Werken jullie met BGT en IMBOR?",
  "passages": [
    {
      "source": "faq",
      "title": "...",
      "text": "...",
      "url": "https://infrabidsite.com/#faq"
    }
  ],
  "note": "Beantwoord uitsluitend op basis van deze passages..."
}
get_capabilities
alleen-lezen

Koppelt de rol van de beller (gemeente, aannemer, landelijke beheerder, ingenieursbureau) aan de vraagstukken die InfraBIDS oplost en de bijpassende diensten met links.

Invoervelden

VeldTypeVerplichtOmschrijving
audiencestringNeeRol: "municipality", "contractor", "national" of "engineering". Laat leeg voor alle doelgroepen.
lang"nl" | "en"NeeTaal van de teruggegeven tekst. Standaard "nl".

Voorbeeld-request

{
  "jsonrpc": "2.0",
  "id": 7,
  "method": "tools/call",
  "params": {
    "name": "get_capabilities",
    "arguments": { "audience": "municipality", "lang": "nl" }
  }
}

Voorbeeld-antwoord (structured)

{
  "matches": [
    {
      "id": "municipality",
      "audience": "Gemeenten en wegbeheerders",
      "problems": ["..."],
      "services": [{ "id": "geo-data", "name": "...", "description": "..." }],
      "url": "https://infrabidsite.com/#services"
    }
  ]
}
get_case_study
alleen-lezen

Uitgebreide, openbaar gepubliceerde case van een eigen platform (TVM Operating System of Infrafoto): doelgroep, probleem, aanpak, functies en resultaat. Bevat geen prijzen, klantnamen of interne details.

Invoervelden

VeldTypeVerplichtOmschrijving
idstringNee"tvm" of "infrafoto". Laat leeg voor alle cases.
lang"nl" | "en"NeeTaal van de teruggegeven tekst. Standaard "nl".

Voorbeeld-request

{
  "jsonrpc": "2.0",
  "id": 8,
  "method": "tools/call",
  "params": {
    "name": "get_case_study",
    "arguments": { "id": "tvm", "lang": "nl" }
  }
}

Voorbeeld-antwoord (structured)

{
  "cases": [
    {
      "id": "tvm",
      "name": "TVM Operating System",
      "audience": ["Gemeenten en wegbeheerders"],
      "problem": "...",
      "approach": "...",
      "capabilities": ["..."],
      "outcomes": ["..."],
      "article": "https://infrabidsite.com/blog/tvm-platform"
    }
  ]
}
request_meeting

Vraagt een Microsoft Teams-meeting aan bij het InfraBIDS-team. De aanvraag wordt vastgelegd als lead. De bevestigingsmail gaat altijd naar het geverifieerde e-mailadres uit het OAuth-token van de ingelogde gebruiker, een e-mailadres opgeven in de aanroep kan niet. Maximaal 3 aanvragen per gebruiker per dag.

Invoervelden

VeldTypeVerplichtOmschrijving
namestringJaNaam van de aanvrager.
companystringNeeBedrijf of organisatie.
topicstringNeeOnderwerp van het gesprek.
datestringNeeGewenste datum, bijv. 2026-09-12.
timestringNeeGewenst tijdstip, bijv. 10:00.
messagestringNeeExtra context over het project.
lang"nl" | "en"NeeTaal van de teruggegeven tekst. Standaard "nl".

Voorbeeld-request

{
  "jsonrpc": "2.0",
  "id": 9,
  "method": "tools/call",
  "params": {
    "name": "request_meeting",
    "arguments": {
      "name": "Jan Jansen",
      "company": "Gemeente X",
      "topic": "Verkeersplannen digitaliseren",
      "date": "2026-09-12",
      "time": "10:00",
      "lang": "nl"
    }
  }
}

Voorbeeld-antwoord (structured)

{
  "received": true,
  "emailed": true,
  "followUp": "Het InfraBIDS-team bevestigt de Microsoft Teams-meeting per e-mail."
}

Rauwe HTTP-aanroep

Tools opvragen met een geldig access token:

curl -X POST https://infrabidsite.com/mcp \
  -H "Authorization: Bearer <access_token>" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Foutafhandeling: ongeldige invoer levert een tool-resultaat met isError: true; een ontbrekend of verlopen token levert HTTP 401 met een WWW-Authenticate-header die naar het discovery-document verwijst.

Vragen over integratie?

Plan een Teams-meeting via de contactsectie op de website.

Plan een afspraak