Bol.ai is the first MCP server built for freight documents. Eight tools over one HTTP endpoint: extract Bills of Lading, commercial invoices, packing lists and CMR waybills, verify what was read, and reconcile a shipment's paperwork before customs does. Fields are never guessed — a field that can't be read is null.
"First" is a claim we checked (July 2026): Klippa, Docsumo, Rossum and Parseur ship no first-party MCP server; Nanonets has a generic-document one. For freight documents specifically, this is it.
bolai_… and are shown once.{
"mcpServers": {
"bol-ai": {
"type": "http",
"url": "https://bol.ai/api/mcp",
"headers": { "Authorization": "Bearer bolai_YOUR_KEY" }
}
}
}
doc_type); PDF, PNG and JPG up to 10 MB.Agents can also find the server on their own: discovery metadata at /.well-known/mcp.json and llms.txt. Cloudflare rates bol.ai "Agent Ready" Level 5 (Agent-Native).
| Tool | What it does |
|---|---|
extract_bol | Extract one document from a URL or base64 — type auto-detected, bills one document |
extract_batch | Up to 10 URLs in one call, with a per-file outcome |
list_documents | Browse your recent documents and their status |
get_document | One extraction in full: original fields, corrected fields, verification warnings |
save_corrections | Write corrected fields back; corrections win in exports and reconciliation |
get_related_documents | Cross-document reconciliation — link a shipment's B/L, invoice and packing list, flag mismatches |
export_documents | TMS-ready normalized rows for a whole account's extractions |
get_usage | Remaining credits and subscription — check before large batches |
Every extraction runs a deterministic verification pass — ISO 6346 container check digits and plausibility rules — and returns a warnings array, so the agent knows what to distrust without being asked.
A shipment travels with a Bill of Lading, a commercial invoice and a packing list, and customs expects them to agree. Usually nobody checks until the entry is held. An agent with Bol.ai checks in one pass:
extract_batch, or three extract_bol calls).get_related_documents on any of them. Bol.ai links the shipment's documents by shared reference numbers — B/L number, invoice number — no manual matching.match or mismatch.The reconciliation is deterministic and free — it never bills a document or a credit. In practice it looks like this:
You: Three PDFs for shipment MAEU123456789: the B/L, the commercial invoice and the packing list. Extract them and tell me if anything will trip up the customs entry.
→ extract_batch (3 URLs) … 3 documents done
→ get_related_documents (bill of lading) … 2 linked documents, 2 mismatches
Agent: All three extracted and linked by B/L number MAEU123456789. Two mismatches: gross weight on the invoice is 24,500 kg but the B/L says 22,100 kg — a 10.9% gap, well past the 5% tolerance. And the packing list totals 1,080 cartons against 1,100 on the B/L. Parties match on all three documents. I would correct the weight (and save it with save_corrections) before anyone files the entry.
.mcp.json, or claude mcp add.mcpServers in Cursor's MCP settings.https://bol.ai/api/mcp with the Bearer header.| Primitive | Why an agent cares |
|---|---|
| Email in | Every account has a private address, in-<token>@bol.ai. Anything that can send email — a scanner, a shared mailbox, an auto-forward rule, another agent — can feed documents in; extractions appear in list_documents. |
| Webhooks | A POST fires on every completed extraction, whatever the source. Push results into your agent's pipeline instead of polling. |
GET /api/usage | Remaining credits and subscription state (also the get_usage MCP tool). Budget-aware agents check it before starting a batch. |
402 + checkout URL | Out of credits, the API returns 402 with a buy_credits_url. The agent hands that link to a human, the human pays, the agent retries. Human-in-the-loop top-ups by design. |
The same as for a human: 5 free documents at signup (no credit card), then Starter at €19/month + €0.49 per document, Professional at €79/month + €0.29 per document, or a €49 credit pack for 100 documents. API and MCP access come with Professional or with any credits. Reconciliation and all read tools are free — only extractions bill.
60 MCP calls per 5 minutes per account. Batch tools help: extract_batch handles 10 documents in a single call.
Exclusively in the European Union — database in Western Europe, file storage under EU jurisdiction. Bol.ai is built by Dutchcode in the Netherlands.
save_corrections (or PATCH /api/bol/:id) stores corrected fields alongside the original extraction — the original is never overwritten. Exports and reconciliation use the corrected values. So an agent that fixes a misread weight fixes it everywhere downstream.
Not yet. Authentication today is a Bearer API key (bolai_…), which covers Claude Code, Cursor, n8n, Zapier MCP, Make and any client that can set a header. OAuth — needed for the claude.ai and ChatGPT connector directories — is on the roadmap.
No. A human creates the account and the API key; that is deliberate, since a payment method and legal ownership need a person behind them. After that, agents drive everything: extraction, corrections, reconciliation, exports, usage checks.