bol-ai
Server Details
Extract structured data from Bills of Lading: parties, ports, containers, incoterms. EU-hosted.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.5/5 across 8 of 8 tools scored.
Each tool targets a distinct action and resource: single extraction, batch extraction, document retrieval, listing, export, corrections, reconciliation, and account usage. extract_bol vs extract_batch is the only close pair, but single vs batch is a clear distinction.
All tool names follow a consistent verb_noun pattern with lowercase and underscores: export_documents, extract_batch, extract_bol, get_document, get_related_documents, get_usage, list_documents, save_corrections. No mixed styles or vague verbs.
8 tools is well within the ideal 3-15 range. Each tool earns its place by covering a distinct step in the document processing workflow, with no redundancy or bloat.
The toolkit covers the full lifecycle: extraction (single and batch), retrieval (get/list), update (save_corrections), export, reconciliation, and account management. There are no obvious gaps that would hinder agent workflows.
Available Tools
8 toolsexport_documentsExport documents as normalized rowsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Only include documents of this type | |
| max_rows | No | Maximum rows to return (default 500) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses key behaviors: corrected data overrides original extractions, newest-first ordering, and one row per container/invoice line/package/goods line. These details are not visible in the schema or annotations and are valuable for invoking the tool correctly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the primary purpose, and provides a clear alternative in the second sentence. It contains no filler or redundant phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description explains the output format (normalized rows with granularity), ordering, filtering options, data precedence, and points to an alternative for other file types. This is sufficient for an agent to invoke the tool correctly in most scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage for both parameters, with descriptions for each and an enum for type. The description only restates the existence of a doc_type filter and max_rows cap without adding extra semantic meaning. The baseline of 3 applies since the schema carries the explanatory burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: exporting completed extractions as normalized line rows for TMS/ERP use, with specifics on row granularity and ordering. It distinguishes itself from siblings like extract_batch or list_documents by focusing on the export of processed data in a structured format.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides an alternative for CSV/XLSX files via the REST API, which helps the agent decide when not to use this tool. It also implies the appropriate use case (completed extractions, row-oriented output) without ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_batchExtract multiple freight documentsAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| urls | Yes | URLs of documents to fetch and extract (max 10) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses important behavioral traits beyond the annotations: each document is processed and billed independently, and the response reports per-document outcomes, making partial failures (e.g., running out of credits) explicit. This adds meaningful context about cost and partial success, complementing the annotations (readOnlyHint=false, openWorldHint=true). No contradictions noted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the core purpose. Two sentences deliver all necessary information: the batch limit, the input format, independent billing, and the per-document outcome reporting. No word is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (one param, no output schema), the description is remarkably complete. It covers the batch limit, the requirement for fetchable URLs, independent billing, and the explicit handling of partial success. This is sufficient for an agent to understand the tool's behavior and likely outcomes without an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already has 100% coverage with a clear parameter description ('URLs of documents to fetch and extract (max 10)'). The tool description adds the semantic nuance that URLs must be 'fetchable' and that the batch is processed independently per document, which enriches the understanding of the parameter's role and constraints beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Extract up to 10 freight documents in one call.' It uses a specific verb ('extract') and resource ('freight documents'), and distinguishes itself from sibling tools like extract_bol (likely single extraction) and export_documents (export vs extract). The batch aspect is highlighted, making its purpose unique.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool: when multiple documents need extraction in a single call. It explains the array of URLs and the per-document billing model. However, it does not explicitly name alternative tools for single-document extraction or state when NOT to use this tool, so it lacks explicit exclusions/alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_bolExtract freight documentAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | URL of the document to fetch and extract | |
| base64 | No | Base64-encoded file content (alternative to url) | |
| filename | No | Filename including extension, e.g. shipment-4711.pdf |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds valuable context beyond the annotations: automatic doc_type detection, strict null-for-missing-fields policy ('never guessed'), file format/size limits, and billing ('each successful extraction bills one document'). These details are not present in the annotations and help the agent anticipate side effects and accuracy guarantees.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the core purpose, then efficiently covers input methods, output behavior, and billing. Every sentence contributes essential information with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description does reasonably well by stating that doc_type is returned and that absent fields are null. However, it does not enumerate the specific structured fields that can be extracted, which would be important for an agent to understand the full output. The tool handles multiple document types with variable fields, so this gap prevents a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already has 100% parameter description coverage, so the baseline is 3. The description adds the key relationship that 'url' and 'base64' are alternatives, clarifying that exactly one should be provided. This is a meaningful addition beyond the schema, justifying a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Extract structured data from a freight document' and enumerates supported document types (Bill of Lading, commercial invoice, packing list, CMR waybill). This clearly distinguishes it from sibling tools like extract_batch, which handles batch extraction, and get_document, which likely retrieves existing documents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for use: supported file formats and size, input methods (url or base64), and the per-document billing implication. However, it does not explicitly contrast with alternative tools such as extract_batch or state when batch extraction would be more appropriate, leaving some inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_documentGet extraction resultARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Document id |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation declares readOnlyHint=true, so the safe-read nature is already known. The description adds valuable behavioral context: the precedence of corrections over original fields, the existence of verification warnings, and the presence of optional fields. This goes beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, two sentences long, front-loaded with the core purpose, then elaborates on the return structure. Every sentence adds meaningful detail without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description effectively explains the expected return fields and their relationships. It mentions optionality and warning details. It could optionally cover error cases, but for a single-id read tool it is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers the only parameter 'id' with a clear description ('Document id'). The tool description reinforces 'by id' but adds no extra format or constraints. With 100% schema coverage, a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets the extraction result for a document by id, listing the specific contents (doc_type, extracted fields, corrections, warnings). This distinguishes it from sibling tools like list_documents or save_corrections.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: use this tool when you need a single document's extraction result by id. However, there are no explicit comparisons to alternatives or exclusions, so it lacks strong guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_usageCheck credits and subscriptionARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint=true, and the description adds useful behavior beyond that: it explains the consequence of running out of credits and mentions the buy_credits_url return value. This enriches the read-only nature with actionable context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences deliver purpose, usage timing, and critical behavioral detail without redundancy. Front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter, read-only tool with annotations, the description fully covers purpose, usage context, and follow-up action. The mention of buy_credits_url compensates for the lack of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has zero parameters, so the empty schema fully covers parameter needs. Baseline of 4 applies since no param documentation is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool checks account credits and subscription status, using a specific verb and resource. It clearly distinguishes from sibling tools focused on document operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance to call before large batches to avoid credit shortfalls, which is clear context for usage. It does not mention when not to use or alternatives, but the guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_documentsList documentsARead-onlyInspect
List the 100 most recent documents for this account with id, filename, status (pending/done/failed), doc_type and primary reference number.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the readOnlyHint annotation by specifying the 100-document limit, account scoping, and the exact set of fields returned (including status enum values). This provides clear behavioral expectations, though it doesn't cover edge cases like empty accounts or pagination details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that conveys the action, scope, and result fields with no redundant information. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless list tool, the description fully covers what the tool does and what it returns, including the 100-document limit and field names. There is no output schema, so this textual description carries the full burden and meets it well.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so the baseline is 4. The description adds no parameter details because none exist, and this is acceptable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'List the 100 most recent documents for this account' with a specific verb and resource, and lists the returned fields (id, filename, status, doc_type, primary reference number). This clearly distinguishes it from sibling tools like get_document (single document) or export_documents (exporting).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies its use for browsing recent documents but does not explicitly compare with alternatives like get_document or export_documents. There is no when-not-to-use guidance or mention of sibling tools, so it's adequate but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_correctionsSave field correctionsAIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Document id | |
| fields | Yes | Complete corrected fields object, including doc_type |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds valuable behavioral context beyond annotations: original extraction is kept alongside corrections, and corrected data takes precedence. The requirement to pass the complete object implies a non-merge behavior. These align with idempotentHint and destructiveHint=false while providing richer semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each carrying essential information: action, behavioral effect, and required input format. No filler or redundant wording. Front-loaded with the purpose in the first sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (two params, no output schema), the description covers what, how, and side effects. It references get_document for shape, making it self-contained. Sibling differentiation is implicit and sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already documents both parameters clearly with 100% coverage. The description adds cross-reference to get_document for the shape of the fields object, which is useful beyond the schema. Reinforces the 'complete' requirement, though it repeats schema wording.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb 'Save' plus resource 'corrected field values for an extracted document' precisely defines the action. It distinguishes from siblings like get_document, extract_batch, and export_documents by focusing on corrections. Mentioning precedence over originals further clarifies the tool's role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to pass the complete corrected fields object matching get_document's shape, providing concrete usage guidance. It explains when this tool matters by noting corrected data takes precedence in get_document, exports, and reconciliation. Does not explicitly state when not to use it, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
- Flicense-qualityCmaintenanceAI-powered laytime, demurrage and despatch calculation for ship chartering. Send a Charter Party, Fixture Recap, NOR or Statement of Facts as text or files (PDF, image, Excel) and get a full, auditable laytime statement. Available as a REST API and an MCP server.

DocumentPro MCPofficial
Alicense-qualityCmaintenanceExtract structured, schema-typed data from invoices, purchase orders, receipts, and tax forms, and classify documents into custom label sets — via a hosted MCP server. Free tier included.MIT- FlicenseBquality-maintenanceHeadless document processing for AI agents. Invoice extraction, contract analysis, and Dutch business verification. Pay-per-use via X402 on Solana. No API keys needed.101
- Alicense-qualityDmaintenanceEnables AI agents to extract structured JSON from invoices and receipts in PDF and image formats using Claude Vision. Supports full document parsing, line item extraction, validation, and batch CSV export with API key or cryptocurrency payment options.MIT