MCP Server

bol-ai

io.github.peter-schout/bol-ai
Business & Operations Data & Analytics Public & reachable MCP 2026-07-28

What this MCP does

Extracts structured data from bills of lading and related freight documents, supports corrections and exports, and reconciles shipment fields across documents.

export_documents
Export documents as normalized rows
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.
Read only
Input schema
{'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_batch
Extract multiple freight documents
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.
Open world
Input schema
{'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_bol
Extract freight document
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.
Open world
Input schema
{'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_document
Get extraction result
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.
Read only
Input schema
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Document id'}}}
get_related_documents
Reconcile shipment documents
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.
Read only
Input schema
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Document id to reconcile against the rest of the account'}}}
get_usage
Check credits and subscription
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.
Read only
Input schema
{'type': 'object', 'properties': {}}
list_documents
List documents
List the 100 most recent documents for this account with id, filename, status (pending/done/failed), doc_type and primary reference number.
Read only
Input schema
{'type': 'object', 'properties': {}}
save_corrections
Save field corrections
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).
Idempotent
Input schema
{'type': 'object', 'required': ['id', 'fields'], 'properties': {'id': {'type': 'string', 'description': 'Document id'}, 'fields': {'type': 'object', 'description': 'Complete corrected fields object, including doc_type'}}}
Added
get_usage
Sept. 17, 2026, 12:45 p.m.
Added
export_documents
Sept. 17, 2026, 12:45 p.m.
Added
get_related_documents
Sept. 17, 2026, 12:45 p.m.
Added
save_corrections
Sept. 17, 2026, 12:45 p.m.
Added
get_document
Sept. 17, 2026, 12:45 p.m.
Added
list_documents
Sept. 17, 2026, 12:45 p.m.
Added
extract_batch
Sept. 17, 2026, 12:45 p.m.
Added
extract_bol
Sept. 17, 2026, 12:45 p.m.