Your AI agent can read freight documents now

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.

Start free — 5 documents Read the docs

"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.

30-second quickstart

  1. Sign up and create an API key. Sign up (no credit card, 5 free documents included), then create a key under API keys in the app. Keys look like bolai_… and are shown once.
  2. Paste the MCP config. The server speaks streamable HTTP with Bearer auth, so the same snippet works in Claude Code, Cursor, n8n, Zapier MCP, Make, or any other MCP client:
{
  "mcpServers": {
    "bol-ai": {
      "type": "http",
      "url": "https://bol.ai/api/mcp",
      "headers": { "Authorization": "Bearer bolai_YOUR_KEY" }
    }
  }
}
  1. Ask your agent. "Extract this Bill of Lading and check the container numbers: https://…/bl.pdf". The document type is detected automatically (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).

The eight tools

ToolWhat it does
extract_bolExtract one document from a URL or base64 — type auto-detected, bills one document
extract_batchUp to 10 URLs in one call, with a per-file outcome
list_documentsBrowse your recent documents and their status
get_documentOne extraction in full: original fields, corrected fields, verification warnings
save_correctionsWrite corrected fields back; corrections win in exports and reconciliation
get_related_documentsCross-document reconciliation — link a shipment's B/L, invoice and packing list, flag mismatches
export_documentsTMS-ready normalized rows for a whole account's extractions
get_usageRemaining 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.

The killer workflow: reconciliation

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:

  1. Extract all three documents (extract_batch, or three extract_bol calls).
  2. Call 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.
  3. Read the field-by-field results: shipper/seller and consignee/buyer, total gross weight (5% tolerance), total package count. Each comes back as 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.

Works with

Claude CodeDrop the snippet into .mcp.json, or claude mcp add.
Claude APIAttach the server via the MCP connector on a Messages call.
CursorSame snippet under mcpServers in Cursor's MCP settings.
n8nPoint the MCP client node at https://bol.ai/api/mcp with the Bearer header.
Zapier MCPAdd as a custom MCP server next to Zapier's own tools.
MakeStreamable HTTP with Bearer auth — no custom app needed.
Custom agentsNo MCP in your stack? The same operations exist as a REST API with an OpenAPI spec.

Beyond MCP: agent input and output

PrimitiveWhy an agent cares
Email inEvery 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.
WebhooksA POST fires on every completed extraction, whatever the source. Push results into your agent's pipeline instead of polling.
GET /api/usageRemaining credits and subscription state (also the get_usage MCP tool). Budget-aware agents check it before starting a batch.
402 + checkout URLOut 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.

FAQ

What does this cost for an agent?

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.

Are there rate limits?

60 MCP calls per 5 minutes per account. Batch tools help: extract_batch handles 10 documents in a single call.

Where is my data stored?

Exclusively in the European Union — database in Western Europe, file storage under EU jurisdiction. Bol.ai is built by Dutchcode in the Netherlands.

How do corrections work?

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.

Is there OAuth?

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.

Can my agent sign up by itself?

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.

Ready? Sign up, create a key, paste the config. Your first 5 documents are free — enough to extract a real shipment's B/L, invoice and packing list and run the reconciliation twice.