bol.com MCP by usefulapi
Server Details
Read bol orders, returns, offers and inventory; update an offer’s stock, price or sale status.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- m190/usefulapi-mcp
- GitHub Stars
- 0
TDQS
Scored across 18 tools
Each tool targets a distinct resource and action, with clear list/get pairs for orders, returns, shipments, invoices, and offers. The potentially confusing offer-related tools are well separated by their descriptions: own offers, one offer, competing offers, and not-for-sale reasons are clearly different concepts.
All tools use a predictable bol_ prefix followed by snake_case verb_noun naming: bol_list_*, bol_get_*, bol_update_*. The pattern is consistent throughout, and the few noun-heavy names like bol_get_invoice_specification still fit the scheme.
With 18 tools the server is slightly above the ideal compact range, but each tool maps to a distinct bol.com endpoint and earns its place. There is no obvious filler or redundancy in the set.
Read coverage is strong across orders, returns, shipments, offers, invoices, inventory, commissions, and insights, but the write/action surface is thin: only bol_update_offer exists. Obvious gaps include creating or deleting offers, creating shipments, handling returns, acknowledging or cancelling orders, and updating inventory, which may cause dead ends for seller workflows.
Available Tools
18 toolsbol_get_commissionsCalculate commissionsARead-onlyInspect
Calculate bol's commission for up to 100 products: for each EAN, a selling price and optionally a condition, returns the fixed amount, the percentage, total cost and any reductions. Read-only (a POST because of the request body). POST /retailer/commission.
| Name | Required | Description | Default |
|---|---|---|---|
| products | Yes | The products to calculate. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it explains the puzzling detail that this is read-only despite being a POST (request body), which prevents an agent from mistaking it for a mutation, and it discloses the per-product result fields (fixed amount, percentage, total cost, reductions). It does not cover rate limits or auth requirements, so not a 5.
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?
Two compact sentences: the capability and return shape come first, the read-only/POST clarification second. Nothing is redundant and nothing needs re-reading.
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?
With no output schema, the description carries the burden of describing results and does so (fixed amount, percentage, total cost, reductions). Only auth/permission or rate-limit context is missing, which is minor for a read-only calculation.
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 coverage is 100%, so the baseline is 3, and the description adds value by mapping the composite input to meaning: one entry per EAN, selling price required, condition optional, batch capped at 100. It also implicitly ties each input record to the breakdown returned, which the schema alone does not convey.
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?
States a specific verb and resource (calculate bol's commission) plus scope (up to 100 products, per EAN with price and optional condition) and even names the underlying endpoint. No sibling tool competes for this purpose, so an agent can select it unambiguously.
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 by the purpose statement (batch commission lookup) but there are no explicit when/when-not rules or named alternatives. The sibling list contains no overlapping commission tool, so the risk of misrouting is low, but the description does not actively help the agent decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bol_get_competing_offersCompeting offers for an EANARead-onlyInspect
The offers on bol.com for one EAN from all retailers: price, condition, fulfilment, the best offer. Optionally only the best offer or one condition and country. GET /retailer/products/{ean}/offers.
| Name | Required | Description | Default |
|---|---|---|---|
| ean | Yes | EAN (8 to 14 digits). | |
| page | No | Page number, 1-200. | |
| condition | No | Offer condition filter. | |
| country_code | No | Webshop country (default NL). | |
| best_offer_only | No | true = only the best offer. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so safety is covered; the description adds that data is sourced across all retailers and quotes the underlying GET endpoint, confirming the open-world read behavior. It does not mention pagination limits or response size, which keeps it short of a 5.
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?
One dense sentence that front-loads the resource and field list, followed by the endpoint. No filler, though the colon-separated field list and trailing endpoint push it toward run-on.
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?
There is no output schema, and the description compensates by naming the returned fields (price, condition, fulfilment, best offer), which is what an agent needs to know it can read competitor pricing. Pagination behavior for the 'page' parameter is left unexplained, a minor gap.
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 coverage is 100% with descriptive enums, so the parameters are already fully documented. The description only restates that best-offer, condition and country narrowing are available, adding no format or default detail beyond the schema (country default NL is only in 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?
States a specific verb and resource (offers on bol.com for one EAN), enumerates the returned fields (price, condition, fulfilment, best offer), and the 'from all retailers' scope implicitly separates it from bol_list_offers/bol_get_offer, which deal with the caller's own offers.
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 sentence 'Optionally only the best offer or one condition and country' hints at the filtering modes but never states when to choose this tool over bol_get_offer (single offer) or bol_list_offers (own offers). Usage is implied rather than prescribed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bol_get_invoice_specificationGet an invoice specificationARead-onlyInspect
The transactions (sales, commissions, shipping, returns) behind one bol invoice, as JSON, up to 25,000 lines per page. GET /retailer/invoices/{invoice-id}/specification.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, from 1 (default 1). Use the previous reply's next_page. | |
| invoice_id | Yes | The invoice id (from bol_list_invoices). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, non-destructive, and open-world behavior, so the bar is lower. The description adds real value beyond that: the response is JSON, it contains four named transaction categories, and pagination caps at 25,000 lines per page, which tells the agent to expect to page through large invoices. It does not describe error or auth behavior, so it is not a 5.
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?
A single front-loaded sentence lists the payload contents first, then format and page limit, followed by the endpoint. Every clause earns its place and nothing is repeated from the schema or annotations.
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?
There is no output schema, so the description correctly states the return format and what the payload contains, and it discloses the pagination ceiling. It leaves the shape of individual transaction line items unspecified, a minor gap for a read tool whose annotations already declare safety.
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 coverage is 100%, so baseline is 3. The description adds meaning for the page parameter by stating the 25,000-line page cap, complementing the schema's guidance to use the previous reply's next_page. It says nothing about the invoice_id format beyond what the schema's pattern already provides.
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 names a specific verb-resource pair: it returns the transactions (sales, commissions, shipping, returns) behind one bol invoice, in JSON, along with the exact endpoint. An agent can distinguish it from list-style siblings like bol_list_invoices by the required invoice id. It stops short of naming an alternative tool, which keeps it at 4 rather than 5.
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 only implied: an agent deduces that this tool is called for a single invoice's line-level detail. There is no explicit when-to-use, when-not-to-use, or routing to bol_list_invoices or bol_get_commissions. Adequate minimum viability, but nothing to guide selection among 17 siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bol_get_offerGet an offerARead-onlyInspect
One offer by id (Offers API v11): condition, price bundles, stock, fulfilment, countries, product. GET /retailer/offers/{offer-id} (v11).
| Name | Required | Description | Default |
|---|---|---|---|
| offer_id | Yes | The offer id (UUID, from bol_list_offers). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds real value beyond that by naming the specific data fields returned (stock, fulfilment, countries, price bundles) and pinning the endpoint and API version, which helps an agent judge whether the call will supply what it needs. It does not mention error behavior for unknown ids, so a 4 rather than a 5.
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?
Two compact fragments with zero filler; the returned-field list and the endpoint come after the core 'one offer by id' statement, so it is front-loaded correctly.
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?
With no output schema, the description compensates by listing the returned fields, and the annotations cover the read-only safety profile. What remains unstated is failure behavior (e.g. a missing or malformed offer id) and any auth scope, which keeps it below 5 for an open-world fetch tool.
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 description coverage is 100% and the single parameter is documented as a UUID sourced from bol_list_offers, so the schema carries the detail. The description only restates 'by id' and adds no format or provenance guidance beyond what the schema already provides, which is the expected baseline of 3.
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 states a specific resource ('One offer by id') and enumerates the data it returns (condition, price bundles, stock, fulfilment, countries, product), which lets an agent distinguish it from bol_list_offers without opening the schema. It lacks an explicit verb like 'retrieve' and does not name the sibling it contrasts with, so it stops short of a 5.
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 phrase 'by id' implies the lookup case, and the schema note that the id comes from bol_list_offers hints at the relationship, but the description itself says nothing about when to prefer this over bol_list_offers or bol_get_competing_offers. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bol_get_offer_not_for_sale_reasonsWhy an offer is not for saleARead-onlyInspect
The reasons an offer is not for sale per country (an offer that is for sale everywhere has none) (content, price, stock, shop status, selling rights, on hold, assortment policy), each with a code and description. GET /retailer/offers/{offer-id}/not-for-sale-reasons (v11).
| Name | Required | Description | Default |
|---|---|---|---|
| offer_id | Yes | The offer id (UUID). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false), so the bar is lower; the description adds real context beyond them by disclosing that results are grouped per country, that each reason carries a code and description, and that a fully-sellable offer returns nothing. It does not mention permissions or rate limits, but none are implied for a read.
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?
One dense sentence front-loads the purpose and the endpoint, with no filler. It is slightly overstuffed with nested parentheticals and the repeated 'offer is not for sale' phrasing, but nothing is extraneous.
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?
There is no output schema, so the description must describe the return shape — it does (per-country grouping, code+description pairs, empty when sellable). Combined with annotations covering read-only safety, an agent has enough to call it correctly; only explicit guidance on when to prefer bol_get_offer is missing.
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 coverage is 100% and the single offer_id parameter is fully documented as a UUID with a pattern, so the schema does the work. The description only restates it indirectly through the endpoint path (/offers/{offer-id}), adding no new semantics.
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?
States a specific resource ('reasons an offer is not for sale') and scopes it per country, plus enumerates the reason categories (content, price, stock, shop status, selling rights, on hold, assortment policy). This clearly distinguishes it from bol_get_offer and the list/sibling tools, though it never names a sibling explicitly.
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 only implied by the resource name; there is no explicit 'use this when...' or reference to the alternative bol_get_offer for general offer data. The parenthetical about offers that are for sale everywhere having no reasons does usefully signal the empty-result case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bol_get_orderGet an orderARead-onlyInspect
One order by id: the order items (with their order item ids), prices, quantities, fulfilment, the buyer's shipment and billing details (personal data) and the latest delivery dates. GET /retailer/orders/{order-id}.
| Name | Required | Description | Default |
|---|---|---|---|
| order_id | Yes | The bol order id (from bol_list_orders). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so safety is covered. The description adds useful behavioral context by disclosing that the response includes personal data (shipment and billing details), order item ids, fulfilment data, and latest delivery dates, which helps an agent anticipate the payload.
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 dense sentence that front-loads the essential operation ('One order by id') before listing returned fields and the API endpoint. It is efficient, though the field enumeration is long and could be slightly trimmed without losing meaning.
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?
Because there is no output schema, the description usefully enumerates the returned data, including sensitive buyer details and delivery dates. Combined with full parameter documentation and safety annotations, it gives an agent enough information to call the tool correctly, with only minor gaps around errors or authentication.
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?
With one parameter at 100% schema description coverage, the schema already documents the order_id format and source. The description only reinforces 'by id' and does not add syntax, format, or sourcing details beyond what the schema provides, so the baseline of 3 applies.
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 uses a specific retrieval verb for a single resource ('One order by id') and enumerates the exact data returned, including items, prices, quantities, fulfilment, buyer details, and delivery dates. This clearly distinguishes it from list-oriented siblings such as bol_list_orders and from resource-specific siblings like bol_get_shipment.
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 phrase 'One order by id' implies when to use it, and the schema notes the id comes from bol_list_orders, but the description itself gives no explicit when-to-use guidance, exclusions, or named alternatives. It is adequate but leaves routing between list and get tools largely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bol_get_performance_indicatorGet a performance indicatorARead-onlyInspect
The seller's weekly measurements of one bol performance indicator (cancellations, fulfilment, phone availability, response time, case/item ratio, track and trace, returns, reviews) for an ISO year and week. GET /retailer/insights/performance/indicator.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The indicator. | |
| week | Yes | ISO week number, 1-53. | |
| year | Yes | Year, e.g. 2026. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds only that the data is weekly and per-seller, without covering auth requirements, rate limits, data freshness/lag, or what the response contains — modest incremental value over the annotations.
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?
A single front-loaded sentence carries the meaning; the trailing 'GET /retailer/insights/performance/indicator' is redundant noise for an agent that cannot call HTTP directly, but it is short and does not obscure the purpose.
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?
With no output schema, the description should hint at what comes back. It says 'weekly measurements' but not the shape (score, norm, period, unit), which is the main missing piece. All three required params are fully documented, so the definition is adequate but not 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?
Schema description coverage is 100% and the 'name' enum already enumerates every indicator, so the description's indicator list is largely redundant. It does reinforce 'ISO year and week' semantics, but adds no format or edge-case detail (e.g. how weeks 52/53 behave). Baseline 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?
States a specific verb and resource ('weekly measurements of one bol performance indicator') and lists the eight possible indicators, plus the exact endpoint. No sibling tool covers performance indicators, so an agent can unambiguously select this one.
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 by the description (fetch a KPI for a given ISO year/week), but there is no explicit when-to-use guidance, no prerequisites, and no mention of alternatives or limits. The sibling list contains no comparable tool, so the gap is tolerable but real.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bol_get_process_statusGet a process statusARead-onlyInspect
The status of an asynchronous bol process (a write that answered 202) by its process status id: PENDING, SUCCESS, FAILURE or TIMEOUT, with the error message on failure. GET /shared/process-status/{process-status-id}.
| Name | Required | Description | Default |
|---|---|---|---|
| process_status_id | Yes | The process status id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as a safe read (readOnlyHint=true, destructiveHint=false), and the description adds substantive behavior: the four possible status values and the fact that an error message accompanies FAILURE. It does not cover auth or rate limits, but for a single read endpoint that is a minor gap.
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?
Two compact sentences: the core semantics and status set come first, the endpoint path last. No repetition of the tool name or title and nothing extraneous.
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?
With no output schema, the description carries the return-value burden and does list the status outcomes plus the error message on failure. It leaves open response structure details (e.g., field names, whether an error message is present on TIMEOUT), but is otherwise complete for a one-parameter read tool.
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 coverage is 100%, so the baseline is 3, but the description earns extra by explaining where the id originates (a previous write that returned 202) and by mirroring the path templating, which tells an agent how to source the parameter.
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?
States a specific verb and resource ('get the status of an asynchronous bol process'), constrains the scope to processes that answered 202, and enumerates the possible outcome states. This makes it immediately distinguishable from all sibling GET tools, which fetch business objects rather than process state.
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 parenthetical '(a write that answered 202)' makes it clear this is the follow-up call after an asynchronous write, which is exactly the guidance an agent needs. It does not discuss polling cadence or what to do with each status, but no sibling offers an alternative path, so the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bol_get_returnGet a returnARead-onlyInspect
One return by id: return items, reasons, handling results, the customer's details (personal data). GET /retailer/returns/{return-id}.
| Name | Required | Description | Default |
|---|---|---|---|
| return_id | Yes | The return id (from bol_list_returns). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered elsewhere. The description does add useful context by flagging that the response includes the customer's personal data (PII) and by citing the underlying endpoint, but says nothing about auth requirements, not-found behavior, or rate limits.
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?
A single front-loaded sentence listing the payload contents plus the endpoint, with no filler. Every clause contributes either scope or content information.
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?
With no output schema, the description compensates by enumerating the returned fields (items, reasons, handling results, customer details). For a one-parameter read tool that is nearly sufficient, though it omits error/empty-case behavior.
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 description coverage is 100% and the schema itself documents the single return_id parameter including its origin (bol_list_returns). The description adds no format or constraint detail beyond what the schema already provides, so baseline 3 applies.
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?
States a concrete verb+resource+scope: a single return fetched by id, with an enumeration of what the record contains (items, reasons, handling results, customer details). This implicitly distinguishes it from bol_list_returns, though it never names that sibling explicitly.
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?
"One return by id" implies retrieval-after-listing, and the schema notes the id comes from bol_list_returns, but the description itself offers no explicit when-to-use guidance or exclusions versus bol_list_returns.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bol_get_sales_forecastGet a sales forecastARead-onlyInspect
bol's sales forecast for one offer: expected sales on the whole bol.com platform for the next 1-12 weeks. GET /retailer/insights/sales-forecast.
| Name | Required | Description | Default |
|---|---|---|---|
| offer_id | Yes | The offer id (UUID). | |
| weeks_ahead | Yes | Weeks ahead, 1-12. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful scope context that the forecast is platform-wide and limited to 1-12 weeks ahead, but it does not discuss response format, permissions, or rate limits.
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 with the essential scope and horizon, followed only by the endpoint path. There is no wasted text, and the key constraints are immediately visible.
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 simple two-parameter read-only retrieval tool with full schema coverage and annotations, the description supplies enough context to invoke it correctly. It conceptually explains the returned forecast, though without an output schema it could say a bit more about the response shape or units.
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 description coverage is 100%, so both offer_id and weeks_ahead are already documented in the input schema. The description reinforces that the forecast is for one offer and covers 1-12 weeks, but adds no syntax, format, or constraint detail 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 a specific resource and operation: a sales forecast for one offer, covering expected sales on the whole bol.com platform for the next 1-12 weeks. It is easy to distinguish from siblings such as bol_get_offer or bol_get_performance_indicator, though it does not explicitly name alternatives.
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 when to use the tool by specifying that it returns a forward-looking sales forecast for a single offer over 1-12 weeks. However, it gives no explicit when-to-use guidance, no exclusions, and no comparison to alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bol_get_shipmentGet a shipmentARead-onlyInspect
One shipment by id: shipment date, order items, transport and track and trace details, the buyer's delivery address (personal data). GET /retailer/shipments/{shipment-id}.
| Name | Required | Description | Default |
|---|---|---|---|
| shipment_id | Yes | The shipment id (from bol_list_shipments). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description still adds real value by enumerating the returned sections and flagging that the buyer's delivery address is personal data — a meaningful PII/logging caveat an agent wouldn't otherwise know. Minor gap: no note on error or not-found behavior.
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?
One sentence plus an endpoint reference, with the key constraint ('by id') front-loaded and no filler. Every clause conveys distinct information about the payload or the identifier.
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?
There is no output schema, so the description must carry the return shape — and it does, naming the four main sections returned. The PII caveat covers the main agent pitfall. Slightly incomplete on not-found behavior and whether the payload is large (order items could be unbounded).
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 description coverage is 100% and the single parameter carries a pattern plus provenance ('from bol_list_shipments'). The description adds nothing about the id format or source beyond what the schema already states, so baseline 3 applies.
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?
States a specific verb+resource ('One shipment by id') and enumerates exactly what comes back: shipment date, order items, transport and track-and-trace, delivery address. That level of detail lets an agent tell it apart from bol_list_shipments. It stops short of naming the sibling explicitly, keeping it at 4 rather than 5.
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?
'by id' implies this is the single-record fetch versus the list variant, and the parameter description points back to bol_list_shipments as the id source. However, there is no explicit statement of when to prefer this over the list tool or what happens on an unknown id (error vs empty). Usage is implied, not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bol_list_inventoryList FBB inventoryARead-onlyInspect
Fulfilment by bol (FBB/LVB) inventory only, not your own stock (50 per page): EAN, title, regular and graded stock, and the stock level. Filter by EAN or title, stock level, stock type or a quantity range. GET /retailer/inventory.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, from 1 (default 1). Use the previous reply's next_page. | |
| query | No | EAN or product title. | |
| state | No | Stock type filter. | |
| stock | No | Stock level filter. | |
| quantity | No | Quantity range "min-max", e.g. "0-10". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description's job is lighter. It adds real context: fixed page size of 50, the underlying GET endpoint, and the exact fields returned. It does not discuss rate limits or ordering, so it falls short of a 5.
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?
A tight, front-loaded block: scope first, returns second, filters third, endpoint last. Every clause carries information, though the parenthetical '(50 per page)' and trailing endpoint are slightly crammed into one run-on structure.
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?
With no output schema, the description correctly enumerates the returned fields and notes page size, giving an agent enough to interpret results. Pagination mechanics are delegated to the page parameter's schema description, which is acceptable.
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 coverage is 100% with two enums already documented, so the schema does the heavy lifting. The description restates the filter dimensions (EAN/title, stock level, stock type, quantity range) but adds no syntax or format detail beyond it. Baseline 3 applies.
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?
States a specific verb (list) and resource (FBB/LVB inventory) and immediately scopes it: 'not your own stock'. The returned fields (EAN, title, regular/graded stock, stock level) and the underlying endpoint make the operation unmistakable and separable from siblings like bol_list_offers.
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 states the applicable domain (FBB/LVB inventory only, excluding own stock), which is the key selection criterion. It does not name an alternative tool for non-FBB stock, but no sibling covers that case, so the guidance is effectively complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bol_list_invoicesList invoicesARead-onlyInspect
List bol invoices (the seller's statements from bol), by default the past 4 weeks: invoice id, issue date, type, period and the media types it can be downloaded in. Pass both dates to look further back (max 31 days). GET /retailer/invoices.
| Name | Required | Description | Default |
|---|---|---|---|
| period_end_date | No | Period end, yyyy-mm-dd. | |
| period_start_date | No | Period start, yyyy-mm-dd (give both dates, max 31 days apart). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/non-destructive, and the description adds the default window, the 31-day maximum span, and the fields returned — useful operational context. It doesn't cover pagination or what happens if only one date is supplied, keeping it at 4.
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?
Two tight sentences, front-loaded with the resource and default scope, with the date-range constraint immediately after. No 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?
With no output schema, listing the returned fields is valuable and the default/limit behavior is stated. Endpoint path adds little but isn't harmful; pagination behavior remains unaddressed, so not a full 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?
Schema coverage is 100% and the schema already states yyyy-mm-dd format and 'give both dates, max 31 days apart', so the description's date guidance largely repeats structured data. Baseline 3 applies since the schema does the heavy lifting.
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?
States a specific verb and resource plus a clarifying gloss ('the seller's statements from bol') and enumerates the fields returned (invoice id, issue date, type, period, media types). It does not differentiate against the nearby bol_get_invoice_specification sibling, so it falls short of a 5.
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?
Gives clear default behavior ('by default the past 4 weeks') and the condition for changing it ('Pass both dates to look further back (max 31 days)'). No explicit when-not-to-use or named alternative is given, so it stops short of 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bol_list_offersList offersARead-onlyInspect
List the seller's offers (Offers API v11): offer id, EAN, condition, price bundles, stock, fulfilment, on-hold flag and last-modified time. Filter by offer ids, EANs, your reference, for-sale state or last-modified time. Cursor paging: pass the previous reply's next_cursor. GET /retailer/offers (v11).
| Name | Required | Description | Default |
|---|---|---|---|
| eans | No | Only these EANs. | |
| cursor | No | The next_cursor of the previous reply. | |
| for_sale | No | true = only offers currently for sale, false = only those not for sale. | |
| offer_ids | No | Only these offer ids (UUIDs). | |
| page_size | No | Offers per page, 1-100. | |
| reference | No | Only offers with this seller reference. | |
| last_modified_since | No | Only offers modified since this UTC time, e.g. 2026-10-01T08:00:00Z. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description still adds value by naming the endpoint and version (GET /retailer/offers, v11) and the cursor-paging contract, which the annotations do not convey. It omits rate limits and auth requirements, keeping it short of a 5.
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: what is returned, how to filter, how to page, plus the endpoint. Nothing repeats and the most important information (scope and returned fields) leads.
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?
With no output schema, the description usefully compensates by listing the response fields, and all seven optional filters are covered by the schema. It stops short of explaining default page size or how filters interact, which would matter for a zero-required-parameter list tool.
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 description coverage is 100%, so the schema already documents every parameter including formats and bounds. The description restates the filter set and the cursor rule without adding syntax or combination semantics beyond what the schema provides — baseline 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?
States a specific verb and resource ("List the seller's offers") and then enumerates the returned fields — offer id, EAN, condition, price bundles, stock, fulfilment, on-hold flag, last-modified. The plural "List" plus the filter set clearly separates it from the singular sibling bol_get_offer.
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?
It tells the agent which filters exist and how to page ("pass the previous reply's next_cursor"), which is real operational guidance. It never says when to prefer this over bol_get_offer or bol_list_inventory, or what happens when multiple filters are combined, so the when-to-use decision is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bol_list_ordersList ordersARead-onlyInspect
List the seller's bol orders (50 per page), each with its order items, EANs, quantities, prices, fulfilment method and the buyer's shipment details (personal data). By default only OPEN orders fulfilled by the retailer (FBR). Use change_interval_minute or latest_change_date to poll for recent changes. GET /retailer/orders.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, from 1 (default 1). Use the previous reply's next_page. | |
| status | No | Order status (default OPEN). | |
| fulfilment_method | No | Fulfilled by the retailer (FBR, default), by bol (FBB) or both (ALL). | |
| latest_change_date | No | Only order items last changed on this date, yyyy-mm-dd (up to 3 months back). | |
| change_interval_minute | No | Only order items changed in the last N minutes (1-60). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, openWorld and non-destructive. The description adds genuinely useful context beyond them: page size (50 per page), the default filter combination, the polling mechanism, and a warning that shipment details are personal data. No return schema is provided, and it doesn't state an authorization requirement, keeping it from a 5.
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 dense sentences, front-loaded with scope and content, followed by defaults then polling guidance. Every sentence earns its place with no 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?
No output schema exists, yet the description enumerates the returned fields and page size, and it covers defaults and polling. An agent has everything needed to invoke it correctly without opening the 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?
Schema description coverage is 100%, so all five parameters are already documented with their enums and defaults. The description restates the OPEN/FBR defaults and the polling intent but adds no syntax or format detail beyond the schema, so baseline 3 applies.
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?
States a specific verb and resource ('List the seller's bol orders') and enumerates exactly what each record contains (items, EANs, quantities, prices, fulfilment method, shipment details). The scoping detail makes it clearly distinguishable from bol_get_order.
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 states the default behavior (only OPEN orders fulfilled by the retailer FBR) and names the polling parameters (change_interval_minute / latest_change_date) with their purpose. It does not name the sibling bol_get_order as the alternative for fetching a single order, so it stops short of full when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bol_list_returnsList returnsARead-onlyInspect
List customer returns (RMA): return id, registration date, fulfilment method and the return items with their handling status. Set handled explicitly: true = handled returns (newest first), false = returns still to handle (oldest first); bol documents no default. GET /retailer/returns.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, from 1 (default 1). Use the previous reply's next_page. | |
| handled | No | true = handled returns, false = returns still to handle. Set it explicitly. | |
| fulfilment_method | No | FBR or FBB. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, non-destructive, open-world behavior. The description adds valuable context beyond that: the exact return fields returned, the sort order implied by handled (newest-first vs oldest-first), and the absence of a documented default for handled.
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 definition is compact and front-loads the purpose before detailing return fields and the handled parameter. One sentence carries the parameter nuance efficiently, though the ordering details slightly interrupt the main purpose statement.
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?
With three optional parameters, full schema coverage, and annotations covering safety, the description provides enough context to call the tool correctly: it names return fields, explains the critical handled behavior, and notes the undocumented default. Pagination is left to the schema, which is acceptable here.
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 coverage is 100%, so the schema already defines all three parameters including the handled boolean and its effect. The description reinforces the handled semantics and adds ordering information, but otherwise adds little beyond the structured 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?
States a specific verb and resource ('List customer returns (RMA)') and enumerates the returned fields plus the endpoint. It is clearly distinguishable from the sibling single-return tool bol_get_return and from other list tools.
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 this is the batch-listing counterpart to bol_get_return but never says so explicitly. It explains the handled filter's effect on ordering, which indirectly guides usage, but there is no explicit when-to-use or when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bol_list_shipmentsList shipmentsARead-onlyInspect
List shipments up to 3 months old, newest first (50 per page): shipment id, date, the order items shipped and the transport (track and trace). Filter by order_id OR fulfilment_method (order_id wins). GET /retailer/shipments.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, from 1 (default 1). Use the previous reply's next_page. | |
| order_id | No | Only the shipments of this order. | |
| fulfilment_method | No | FBR or FBB (ignored when order_id is given). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish this as a safe, read-only, open-world read. The description adds real behavioral context beyond that: a 3-month recency ceiling, newest-first ordering, and a fixed 50-per-page size — all of which shape how the agent must page. It does not mention rate limits or total-result behavior, so not a 5.
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?
A single dense sentence covering scope, ordering, page size, return fields, and filter precedence, followed by the raw endpoint. No filler, and the most decision-relevant facts (age limit, sort order) are front-loaded.
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?
With no output schema, the description carries the burden of describing return values and does so explicitly. Combined with the recency cap, ordering, page size, and filter precedence, an agent has everything needed to call and page this tool correctly.
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 description coverage is already 100%, so the baseline is 3. The description adds marginal value by defining what a 'page' contains (50 records) and reinforcing the order_id-over-fulfilment_method precedence, making paging behavior concrete rather than abstract.
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?
States a specific verb and resource ('List shipments') and immediately scopes it: up to 3 months old, newest first, 50 per page. It even enumerates the returned fields (id, date, order items, transport/track and trace), so an agent knows exactly what this tool yields. This clearly distinguishes it from the single-record sibling bol_get_shipment.
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?
Gives a concrete invocation rule — filter by order_id OR fulfilment_method, with order_id taking precedence — which prevents an agent from sending both and guessing at behavior. It doesn't explicitly name an alternative (e.g. bol_get_shipment for one shipment) or state when not to use it, so it stops short of full when/when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bol_update_offerUpdate an offerADestructiveIdempotentInspect
WRITE: change an existing offer on bol (Offers API v11 PATCH): put it on hold or back on sale, set your reference, replace its price bundles and/or its own stock. Only the fields you pass change. A price or stock change goes live on bol.com. Use bol_list_offers first to see the current values. PATCH /retailer/offers/{offer-id} (v11).
| Name | Required | Description | Default |
|---|---|---|---|
| prices | No | Replaces ALL price bundles: [{quantity: 1, unit_price: 9.99}, ...]. The first quantity must be 1; quantities rise, unit prices (incl. VAT, 2 decimals) fall. | |
| on_hold | No | true = take the offer off sale (hold), false = list it for sale again. | |
| offer_id | Yes | The offer id (UUID). | |
| reference | No | Your own reference for the offer (max 100 chars; empty clears it). | |
| stock_amount | No | Stock in your own warehouse (not FBB stock). | |
| stock_managed_by_retailer | No | true = you manage stock levels; false = bol corrects stock for open orders. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already declaring write, destructive, idempotent, and open-world behavior, the description adds meaningful context: PATCH semantics, partial-update behavior, and that price or stock changes go live on bol.com. It does not contradict the annotations.
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 front-loaded with 'WRITE' and the action, then quickly covers partial-update behavior, live effects, prerequisite inspection, and the endpoint. Every sentence carries useful operational information without padding.
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 six-parameter mutation tool with full schema coverage and annotations, the description is nearly complete: it covers what changes, partial-update semantics, live side effects, and the relevant read tool. It does not describe response behavior, which is a minor gap given there is no 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?
Schema description coverage is 100%, so parameter meaning is already well documented in the input schema. The description reinforces replacement of price bundles and own-warehouse stock, but adds little syntax or format detail 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 states a specific verb and resource: changing an existing offer via Offers API v11 PATCH. It explicitly lists updatable facets (hold status, reference, price bundles, own stock) and names bol_list_offers as the inspection sibling, so the agent can distinguish it from read-only tools.
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?
It gives clear usage context: use bol_list_offers first to inspect current values, and only supplied fields are changed. The alternative for reading is named, though explicit when-not-to-use guidance is not present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
18 tool updates
- First observed
bol_get_commissions - First observed
bol_get_competing_offers - First observed
bol_get_invoice_specification - First observed
bol_get_offer - First observed
bol_get_offer_not_for_sale_reasons - First observed
bol_get_order - First observed
bol_get_performance_indicator - First observed
bol_get_process_status - First observed
bol_get_return - First observed
bol_get_sales_forecast - First observed
bol_get_shipment - First observed
bol_list_inventory - First observed
bol_list_invoices - First observed
bol_list_offers - First observed
bol_list_orders - First observed
bol_list_returns - First observed
bol_list_shipments - First observed
bol_update_offer
Related MCP Connectors
Read e-Boekhouden relations, invoices, ledgers, bookings and products; create relations, invoices.
Read Sellasist orders, products, stock, customers, invoices, returns; add order notes, set status.
Read Megaventory products, stock, orders and partners; create clients, sales and purchase orders.
Read Linnworks inventory, stock and orders; set stock levels and add order notes.
Related MCP Servers
- AlicenseAqualityCmaintenanceMCP server for the bol.com Retailer API that enables managing orders, offers, shipments, returns, invoices, and commissions via natural language.7636 npm5MIT
- AlicenseNot gradedqualityCmaintenanceProvides AI assistants with tools to read and update OTTO Market orders, products, stock levels, returns, and prices via natural language.AGPL 3.0
- FlicenseNot gradedqualityNot gradedmaintenanceEnables seamless integration with SnelStart accounting data, allowing users to manage multiple administrations, process invoices, and handle bookings through the B2B API. It supports comprehensive read/write operations, VAT summary generation, and document processing for UBL invoices and bank statements.-
- AlicenseNot gradedqualityCmaintenanceProvides read-only access to normalized Amazon marketplace data, including product details, search, offers, reviews, sellers, categories, deals, best sellers, identifiers, stock, and sales estimates across 13 marketplaces.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.