Extract structured data from Bills of Lading: parties, ports, containers, incoterms. EU-hosted.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Bearer <Bol.ai API key> — create one in the app (Professional plan)
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Export completed extractions as TMS/ERP-ready normalized line rows (one row per container / invoice line / package / goods line), newest first. Optional doc_type filter and max_rows cap. Corrected data wins over the original extraction. For CSV/XLSX files use GET /api/bol/export on the REST API.
Only include documents of this type
Maximum rows to return (default 500)
Export completed extractions as TMS/ERP-ready normalized line rows (one row per container / invoice line / package / goods line), newest first. Optional doc_type filter and max_rows cap. Corrected data wins over the original extraction. For CSV/XLSX files use GET /api/bol/export on the REST API.
| Argument | Type | Description |
|---|---|---|
| type | string | Only include documents of this type |
| max_rows | number | Maximum rows to return (default 500) |
{
"type": "object",
"properties": {
"type": {
"enum": [
"bill_of_lading",
"commercial_invoice",
"packing_list",
"cmr"
],
"type": "string",
"description": "Only include documents of this type"
},
"max_rows": {
"type": "number",
"description": "Maximum rows to return (default 500)"
}
}
}Extract up to 10 freight documents in one call. Provide an array of fetchable URLs; each document is processed and billed independently, and the response reports a per-document outcome so partial success (e.g. running out of credits mid-batch) is explicit.
| Argument | Type | Description |
|---|---|---|
| urls* | array | URLs of documents to fetch and extract (max 10) |
{
"type": "object",
"required": [
"urls"
],
"properties": {
"urls": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 10,
"minItems": 1,
"description": "URLs of documents to fetch and extract (max 10)"
}
}
}Extract structured data from a freight document (PDF, PNG or JPG, max 10 MB): Bill of Lading, commercial invoice, packing list, or CMR road waybill. The document type is detected automatically and returned as `doc_type`. Provide either a fetchable `url` or `base64` file content. Fields not present in the document are null — never guessed. Each successful extraction bills one document.
| Argument | Type | Description |
|---|---|---|
| url | string | URL of the document to fetch and extract |
| base64 | string | Base64-encoded file content (alternative to url) |
| filename | string | Filename including extension, e.g. shipment-4711.pdf |
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "URL of the document to fetch and extract"
},
"base64": {
"type": "string",
"description": "Base64-encoded file content (alternative to url)"
},
"filename": {
"type": "string",
"description": "Filename including extension, e.g. shipment-4711.pdf"
}
}
}Get the extraction result for a document by id: doc_type, extracted fields, user corrections (when present), and deterministic verification warnings (ISO 6346 container check digits, plausibility flags). `fields` is the best available data (corrections win); `original_fields` and `corrected_fields` show both sides.
| Argument | Type | Description |
|---|---|---|
| id* | string | Document id |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Document id"
}
}
}Cross-document reconciliation: find the other documents in this shipment (linked by shared reference numbers such as B/L number and invoice number) and compare them field by field — shipper/seller and consignee/buyer names, total gross weight (5% tolerance) and package counts. Returns matches and mismatches per linked document. Catches the discrepancies that cause customs holds, amended entries and demurrage. Deterministic — no extra document billed.
| Argument | Type | Description |
|---|---|---|
| id* | string | Document id to reconcile against the rest of the account |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Document id to reconcile against the rest of the account"
}
}
}Check this account's remaining prepaid credits and subscription status. Call this before large batches to avoid running out of credits mid-workflow. When the account cannot bill more documents, a human can top up at the returned buy_credits_url.
No arguments.
{
"type": "object",
"properties": {}
}List the 100 most recent documents for this account with id, filename, status (pending/done/failed), doc_type and primary reference number.
No arguments.
{
"type": "object",
"properties": {}
}Save corrected field values for an extracted document. The original extraction is kept alongside the corrections; corrected data takes precedence in get_document, exports and reconciliation. Pass the complete corrected fields object (same shape as returned by get_document).
| Argument | Type | Description |
|---|---|---|
| id* | string | Document id |
| fields* | object | Complete corrected fields object, including doc_type |
{
"type": "object",
"required": [
"id",
"fields"
],
"properties": {
"id": {
"type": "string",
"description": "Document id"
},
"fields": {
"type": "object",
"description": "Complete corrected fields object, including doc_type"
}
}
}