Naar de inhoud

Ontwikkelaars

Konvoi MCP-server

Koppel Claude, ChatGPT, Cursor of je eigen scripts aan je vlootgegevens in Konvoi via het Model Context Protocol.

Server-URL

https://konvoi.ai/api/mcp

Private bètaKonvoi Dispatch en AI-clients zijn in private beta en worden per werkruimte aangezet.

Vereisten

WerkruimteDispatch en AI-clients (MCP) aangezet
AanmeldenJe Konvoi-login, met je passkey of tweede stap als je die gebruikt
ClientEen MCP-client die met externe servers verbindt over HTTP met OAuth

Koppelen

Claude

  1. Settings → Connectors
  2. Add custom connector
  3. Plak de server-URL
  4. Meld je aan bij Konvoi en sta toegang toe

ChatGPT

  1. Settings → Connectors → Advanced
  2. Zet Developer mode aan
  3. Maak een connector met de server-URL, authenticatie OAuth
  4. Meld je aan bij Konvoi en sta toegang toe

Claude Code

Voer uit in een terminal:

claude mcp add --transport http konvoi https://konvoi.ai/api/mcp

Voer /mcp uit in Claude Code en meld je aan bij Konvoi

Cursor · VS Code

  1. Cursor: toevoegen aan ~/.cursor/mcp.json
  2. VS Code: MCP: Add Server → HTTP → plak de server-URL
  3. Meld je aan bij Konvoi wanneer gevraagd
{
  "mcpServers": {
    "konvoi": {
      "url": "https://konvoi.ai/api/mcp"
    }
  }
}

Scripts

Persoonlijke tokens: Profiel → AI-clients → Persoonlijk token aanmaken

Initialiseren
curl -s https://konvoi.ai/api/mcp \
  -H "Authorization: Bearer $KONVOI_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "initialize",
  "params": {
    "protocolVersion": "2025-06-18",
    "capabilities": {},
    "clientInfo": {
      "name": "curl",
      "version": "1.0"
    }
  }
}'
Tools opvragen
curl -s https://konvoi.ai/api/mcp \
  -H "Authorization: Bearer $KONVOI_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'
Een tool aanroepen
curl -s https://konvoi.ai/api/mcp \
  -H "Authorization: Bearer $KONVOI_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"list_workspaces","arguments":{}}}'

Waar het bij kan

  • Elke werkruimte die je kunt openen waar Dispatch en AI-clients aan staan, met je rol in die werkruimte.
  • Bij het koppelen kun je het beperken tot enkele werkruimtes en Wijzigingen voorstellen weglaten.
  • Een werkruimtebeheerder kan een koppeling uit zijn werkruimte verwijderen via Dispatch → Koppelen.
  • Profiel → AI-clients toont je koppelingen; Ontkoppelen beëindigt er meteen een.

Tools

Leestools zoeken dingen op met jouw rol. propose_*-tools maken een voorstel en wijzigen zelf niets.De beschrijvingen van de tools zijn in het Engels, zoals de AI-client ze ziet.

Account

whoami
Who this connection acts for: the person, the connection's scopes, and the default workspace when there is exactly one. Elke rol
list_workspaces
Every workspace this connection can open: slug, name, organisation, the person's role, whether Dispatch is on, and the vehicle count. Elke rol
fleet_overview
Headline numbers for one or more workspaces side by side: vehicles, drivers, open fines, open fuel cases, silent trackers and fleet fuel use (median L/100 km over the last 30 days). Minimale rol: VIEWER

Vloot

search_fleet
Search across the entire workspace for vehicles, drivers, fines, invoices, fuelings, emails, inspections, incidents, and contacts. Minimale rol: VIEWER
list_vehicles
List the fleet page by page: plate, name, make, model, year, type, VIN, primary driver and whether it is active. Minimale rol: VIEWER
get_vehicle
Get full details of a specific vehicle including its documents, ownership history, odometer readings, and fine count. Minimale rol: VIEWER
get_vehicle_tco
Get Total Cost of Ownership (TCO) breakdown for a specific vehicle, including invoices by category and fuel costs. Minimale rol: VIEWER
list_drivers
List the drivers page by page: name, e-mail, phone, external id, licence validity and whether they are active. Minimale rol: VIEWER
get_driver
Get full details of a specific driver including their vehicle assignments, license information, and fine count. Minimale rol: VIEWER
list_contacts
List workspace contacts (insurance companies, leasing companies, garages, etc.). Minimale rol: VIEWER
get_fleet_alerts
Get fleet health alerts for the workspace. Minimale rol: VIEWER
find_duplicate_vehicles
Find vehicle records that may be the same vehicle twice: same plate, same VIN, VINs one or two characters apart (a misread 0/O, 1/I, 8/B), plates one character apart on the same make, or a VIN typed into the plate field. Minimale rol: VIEWER
list_permits
List the exceptional-transport permits: number, holder, category, validity, status and the vehicles on each. Minimale rol: VIEWER
get_permit
Read one permit in full: vehicles, route legs, conditions, validity in the issuing country's days. Minimale rol: VIEWER
list_inspections
List vehicle inspections, newest first: vehicle, type, status, odometer, defects found, photo count and the evidence-seal status. Minimale rol: VIEWER
get_inspection
Read one inspection: vehicle, status, odometer, the photos taken (category and notes), the damage analysis and warning lights, and the seal status. Minimale rol: VIEWER

Boetes en documenten

list_fines
List traffic fines in the workspace with optional filters. Minimale rol: VIEWER
get_fine
Get full details of a specific traffic fine including the associated vehicle, driver, payment information, and document. Minimale rol: VIEWER
list_document_reviews
List documents in the review inbox that need human verification. Minimale rol: VIEWER
list_document_requests
List document requests sent to contacts (insurance companies, leasing companies, garages, etc.). Minimale rol: VIEWER
get_document
Get full details of an uploaded document: its classification, processing status, the records it produced (results: permits, fines, invoices with their fuelings, vehicle documents, driver licences, incidents, vehicle imp… Minimale rol: VIEWER
read_document
Read any uploaded file (document page, inbox attachment, review item): PDF text layer, OCR for scans and photos, spreadsheets. Minimale rol: VIEWER

Brandstof

query_fuelings
Query fuel transactions with filters (date range, vehicle, plate, card, min quantity). Minimale rol: VIEWER
get_fuel_consumption
The Consumption page numbers from the CAN counter: L/100 km while driving, litres, distance and idle share per driver (default) or per vehicle, over the last days (default 30, max 120), with the fleet baseline (p10/medi… Minimale rol: VIEWER
get_fuel_ledger
Read one vehicle's fuel ledger over a window: every fill seen at the tank or on a card, with level from→to, litres into the tank, card litres, the delta (tank − card), station, driver and flags, plus the tank capacity u… Minimale rol: VIEWER
query_fuel_cases
List fuel-integrity cases (open, held or resolved) for the workspace or one vehicle, with their unexplained litres and value at risk. Minimale rol: VIEWER
get_fuel_readiness
Whether Fuel Watch can judge this fleet: per vehicle which inputs are there (level sensor, CAN fuel counter, fuel cards, tank size) over the last days (default 30), and what is missing. Minimale rol: VIEWER

Telemetrie en plaatsen

fleet_now
What every tracked vehicle is doing right now: DRIVING, STOPPED (ignition on), PARKED, NOT_DRIVEN (tracker reporting, not moved for the Fleet Health idle days, 7 by default) or NO_SIGNAL (tracker silent — whether it mov… Minimale rol: VIEWER
locate_vehicle
Where was a vehicle at a moment: the telemetry position nearest to at (within toleranceMinutes, default 120), with speed, ignition and how many minutes the fix is from the moment. Minimale rol: VIEWER
vehicle_whereabouts
Track a vehicle around a moment or over a window, per tracker: sample counts, the largest gap, coverage, and the fix nearest to the moment (or to a reference point refLat/refLng, with its distance). Minimale rol: VIEWER
list_vehicle_positions
Latest known position per vehicle as delivered by its primary tracker: lat/lng, speed, heading, ignition, battery, odometer (real CAN or GPS estimate), recorded time, hours since, and which provider/device reported it. Minimale rol: VIEWER
list_trackers
List telematics trackers/devices discovered from the providers (Ruptela, Transics, PAJ, …) with their IMEI, provider device id, provider label, the linked vehicle (plate), link status (LINKED/UNMATCHED/IGNORED/CONFLICT)… Minimale rol: VIEWER
list_tracker_events
Events the trackers raised (POWER_LOST, DISCONNECTED, SOS, GEOFENCE_ENTER/EXIT, provider alarms, …) with severity, message, location and time. Minimale rol: VIEWER
list_telemetry_signals
Discover which telemetry signals a vehicle (or the fleet) actually emits, with basic stats (count, min, max, last). Minimale rol: VIEWER
get_telemetry_timeseries
Fetch the downsampled raw (and optionally derived) time-series for ONE vehicle over a window, so you can inspect the data — read the fuel curve, find the exact drop, pick a threshold, or benchmark against fleet norms. Minimale rol: VIEWER
query_telemetry_data
Generic, bounded query over everything the telemetry sources deliver. Minimale rol: VIEWER · Zwaar
run_telemetry_report
Answer behavioural questions about vehicle GPS/telemetry OVER TIME, across one or many vehicles and any tracker provider (Ruptela, Teltonika, etc.). Minimale rol: VIEWER · Zwaar
run_telemetry_analysis
Run a composable detector analysis across one or many vehicles. Minimale rol: VIEWER · Zwaar
search_places
Find places (geofences) in this workspace — depots, customer sites, fuel stations, workshops, parkings. Minimale rol: VIEWER
place_visits
Visits of vehicles to known places (depots, customers, fuel stations): entered/left times, newest first. Minimale rol: VIEWER

Rapporten en borden

list_reports
List the saved smart reports: id, name, description, number of sections, number of runs and the latest run. Minimale rol: VIEWER
run_report
Run a saved smart report now (list_reports gives the id) and return its sections with their rows (max 1000 per section). Minimale rol: USER · Zwaar
query_report_rows
Query enriched report rows (e.g. night-allowance claims from the nightly Nachtrapport) across runs, by the day the claim is about. Minimale rol: VIEWER
list_boards
List the fleet boards (wall reports): the built-in ones and the ones made from a sentence, with their key, title and description. Minimale rol: VIEWER
read_board
Read a fleet board's current numbers (list_boards gives the key), over its saved period or the last days. Minimale rol: VIEWER
draft_board
Draft a fleet board from a sentence ("fuel per driver for the Antwerp trucks, this month"). Minimale rol: USER · Zwaar

Dispatch

list_pending_proposals
Changes waiting for a person: proposals from chat or an AI client, and standing-order steps held for approval, newest first. Minimale rol: VIEWER
list_standing_orders
The standing orders Dispatch runs for this workspace: name, trigger, whether it is on, its autonomy rung (how much it may do without a person) and how often it ran. Minimale rol: VIEWER

Wijzigingen

propose_fine_assignment
Propose assigning a fine to the driver on record (matched by plate and violation date). Minimale rol: USER
propose_place
Propose saving a place (depot, customer, fuel station) with its geofence. Minimale rol: USER
propose_board
Propose saving a fleet board: a draft_board spec, or a sentence to draft and save. Minimale rol: USER
propose_vehicle_changes
Propose creating or updating vehicles in bulk (from a list or a file). Minimale rol: USER · Beheerder keurt goed
propose_vehicle_merge
Propose merging duplicate vehicle records (same truck from a telematics sync and a registration import, or a plate/VIN typo): everything on the duplicate moves to the kept vehicle and the duplicate is removed. Minimale rol: ADMIN · Beheerder keurt goed
propose_document_request
Propose e-mailing a contact to ask for a missing document. Minimale rol: ADMIN · Beheerder keurt goed
propose_archive_document
Propose archiving an uploaded document. Minimale rol: USER · Beheerder keurt goed
propose_driver_message
Propose a message to a driver's phone (push + the Konvoi app's inbox), optionally with a link to an app screen or an https address. Minimale rol: USER · Beheerder keurt goed
propose_close_fuel_case
Propose closing a fuel case with a resolution and a note. Minimale rol: USER · Beheerder keurt goed
propose_standing_order
Propose a standing order: a rule Dispatch runs on a trigger (it starts at proposal-only autonomy). Minimale rol: ADMIN · Beheerder keurt goed
propose_scheduled_report
Propose emailing a report on a schedule: the read calls you used (with rolling dates like "today-7d"), recipients, a cron in a timezone, and xlsx/csv/pdf. Minimale rol: USER · Beheerder keurt goed

Wijzigingen zijn voorstellen

  • Een propose_*-tool wijzigt zelf niets. Hij maakt een voorstel in Konvoi Dispatch en geeft de link terug.
  • Gewone voorstellen: goedkeuren of afwijzen in de client als die het je kan vragen, anders in Konvoi Dispatch.
  • Voorstellen met Beheerder keurt goed: een werkruimtebeheerder keurt ze goed in Konvoi Dispatch.
  • Een goedgekeurde wijziging loopt als de persoon die goedkeurt, met diens rol. Elke oproep en beslissing wordt gelogd.
  • Voorstellen vraagt de toegang Wijzigingen voorstellen, gekozen bij het koppelen.

Prompts

Handle this week’s fines
Match each open fine to a driver, propose assignments, flag contest candidates.
fine-triage
Sweep fuel for anomalies
Impossible fills vs tank size, off-hours fills at the depot, duplicate charges.
fuel-anomaly
What expires in the next 30 days
Technical inspections, insurance, registrations and licenses coming due.
expiry-sweep
Weekly fleet review
Utilization, idle vehicles, telemetry highlights — one digest.
weekly-telemetry

Limieten

Per koppeling120 oproepen per minuut, 5 tegelijk
Zware tools10 oproepen per minuut per koppeling
Per persoon300 oproepen per minuut over alle koppelingen
Grootte van een resultaat100 KB; langere lijsten worden ingekort en het resultaat zegt wat er weg is
Boven een limietRATE_LIMITED, met het aantal seconden om te wachten

Beveiliging

  • Tokens zijn willekeurige tekenreeksen die alleen als hash worden bewaard. Toegangstokens gelden 1 uur; vernieuwingstokens wisselen bij elk gebruik en vervallen na 30 dagen ongebruikt; persoonlijke tokens gelden 30, 90 of 365 dagen.
  • Al je koppelingen worden meteen ingetrokken als je je wachtwoord wijzigt, overal afmeldt of tweestapsverificatie uitzet.
  • Een oud vernieuwingstoken opnieuw aanbieden trekt die koppeling in.
  • Koppelingen volgen de sessievergrendeling niet. Een koppeling toestaan vraagt een volledig ontgrendelde sessie.
  • Tekst van buiten Konvoi, zoals gescande documenten en e-mails, is gemarkeerd met {"untrusted": true}. Clients krijgen de opdracht die als gegevens te behandelen, nooit als instructies.
  • Gegevens waarnaar je vraagt, gaan naar de client die je gebruikt.

Problemen oplossen

WORKSPACE_REQUIREDDe koppeling bereikt meerdere werkruimtes. Geef workspace mee, een slug uit list_workspaces.
WORKSPACE_NOT_FOUNDDe slug klopt niet of de werkruimte zit niet in deze koppeling. Kijk in list_workspaces.
DISPATCH_OFFDispatch of AI-clients staat uit voor die werkruimte. Vraag het een werkruimtebeheerder.
ROLE_REQUIREDJe rol in die werkruimte ligt onder de minimale rol van de tool.
SCOPE_REQUIREDDe koppeling heeft geen Wijzigingen voorstellen. Koppel opnieuw en vink het aan.
RATE_LIMITEDWacht het aantal seconden uit de melding.
INVALID_ARGUMENTSDe argumenten passen niet bij het invoerschema van de tool.
401Het token is verlopen of ingetrokken. Meld je opnieuw aan vanuit de client.

Protocolreferentie

EndpointPOST https://konvoi.ai/api/mcp
TransportStreamable HTTP, stateless: alleen POST, geen Mcp-Session-Id; GET en DELETE geven 405
Metadata autorisatieserver/.well-known/oauth-authorization-server
Metadata beschermde bron/.well-known/oauth-protected-resource
OAuth-endpointsauthorize /oauth/authorize · token /api/oauth/token · register /api/oauth/register · revoke /api/oauth/revoke
ClientregistratieClient ID Metadata Documents (een https-client_id), of Dynamic Client Registration (RFC 7591), 10 per uur per IP
PKCES256, verplicht
Resource-indicatorresource=https://konvoi.ai/api/mcp (RFC 8707); tokens zijn eraan gebonden
Redirect-URI’shttps, exacte overeenkomst; http alleen op 127.0.0.1 of localhost, elke poort
Scopesfleet:read (altijd), fleet:propose (propose_*-tools)
Levensduur tokenscode 60 s · toegang 1 u · vernieuwen 30 dagen ongebruikt, wisselend · persoonlijk 30/90/365 dagen
Geen of fout token401 met WWW-Authenticate: Bearer resource_metadata=…
ToolfoutenEen toolresultaat met isError: true en structuredContent.error = { code, message }