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
| Werkruimte | Dispatch en AI-clients (MCP) aangezet |
|---|---|
| Aanmelden | Je Konvoi-login, met je passkey of tweede stap als je die gebruikt |
| Client | Een MCP-client die met externe servers verbindt over HTTP met OAuth |
Koppelen
Claude
- Settings → Connectors
- Add custom connector
- Plak de server-URL
- Meld je aan bij Konvoi en sta toegang toe
ChatGPT
- Settings → Connectors → Advanced
- Zet Developer mode aan
- Maak een connector met de server-URL, authenticatie OAuth
- 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
- Cursor: toevoegen aan ~/.cursor/mcp.json
- VS Code: MCP: Add Server → HTTP → plak de server-URL
- Meld je aan bij Konvoi wanneer gevraagd
{
"mcpServers": {
"konvoi": {
"url": "https://konvoi.ai/api/mcp"
}
}
} Scripts
Persoonlijke tokens: Profiel → AI-clients → Persoonlijk token aanmaken
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"
}
}
}' 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"}' 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 koppeling | 120 oproepen per minuut, 5 tegelijk |
|---|---|
| Zware tools | 10 oproepen per minuut per koppeling |
| Per persoon | 300 oproepen per minuut over alle koppelingen |
| Grootte van een resultaat | 100 KB; langere lijsten worden ingekort en het resultaat zegt wat er weg is |
| Boven een limiet | RATE_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_REQUIRED | De koppeling bereikt meerdere werkruimtes. Geef workspace mee, een slug uit list_workspaces. |
|---|---|
| WORKSPACE_NOT_FOUND | De slug klopt niet of de werkruimte zit niet in deze koppeling. Kijk in list_workspaces. |
| DISPATCH_OFF | Dispatch of AI-clients staat uit voor die werkruimte. Vraag het een werkruimtebeheerder. |
| ROLE_REQUIRED | Je rol in die werkruimte ligt onder de minimale rol van de tool. |
| SCOPE_REQUIRED | De koppeling heeft geen Wijzigingen voorstellen. Koppel opnieuw en vink het aan. |
| RATE_LIMITED | Wacht het aantal seconden uit de melding. |
| INVALID_ARGUMENTS | De argumenten passen niet bij het invoerschema van de tool. |
| 401 | Het token is verlopen of ingetrokken. Meld je opnieuw aan vanuit de client. |
Protocolreferentie
| Endpoint | POST https://konvoi.ai/api/mcp |
|---|---|
| Transport | Streamable 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-endpoints | authorize /oauth/authorize · token /api/oauth/token · register /api/oauth/register · revoke /api/oauth/revoke |
| Clientregistratie | Client ID Metadata Documents (een https-client_id), of Dynamic Client Registration (RFC 7591), 10 per uur per IP |
| PKCE | S256, verplicht |
| Resource-indicator | resource=https://konvoi.ai/api/mcp (RFC 8707); tokens zijn eraan gebonden |
| Redirect-URI’s | https, exacte overeenkomst; http alleen op 127.0.0.1 of localhost, elke poort |
| Scopes | fleet:read (altijd), fleet:propose (propose_*-tools) |
| Levensduur tokens | code 60 s · toegang 1 u · vernieuwen 30 dagen ongebruikt, wisselend · persoonlijk 30/90/365 dagen |
| Geen of fout token | 401 met WWW-Authenticate: Bearer resource_metadata=… |
| Toolfouten | Een toolresultaat met isError: true en structuredContent.error = { code, message } |