# Bol.com MCP connector

The Bol.com connector brings your Bol.com retailer orders, offers, stock, prices, invoices, commissions and sales insights into Claude, ChatGPT, Cursor and other MCP clients, where each person works inside their own access and every action is logged.

Source: https://elaichi.ai/connectors/bol/

## Facts

| | |
| --- | --- |
| Application | Bol.com |
| Category | Ecommerce |
| AI tools | 72 |
| Authentication | App credentials |
| Needs your own OAuth app | No |
| MCP endpoint | https://api.elaichi.ai/mcp |
| Works with | Claude, ChatGPT, Cursor, any MCP client, and the Elaichi Agent |
| Tools advertised by name | No. 72 tools is past the 30-tool threshold, so clients use `search_tools` and `execute_tool` |

## What you can ask once Bol.com is connected

- Which Bol.com offers have the lowest product rank this week.
- Summarize last month's Bol.com commissions by invoice.
- Show inventory levels for offers with rising search terms.

## Connect Bol.com in Elaichi

This happens once for the organization, before any client is involved.

1. Open Connections, choose Add connection, and pick Bol.com.
2. Optionally set Share with, then press Connect.
3. Paste your Bol.com app credentials. Bol.com authenticates the app rather than a person. One person supplies the credentials once, and everyone else works through Share with.

Credentials are vaulted and nobody, including the AI, reads them back. The connection becomes a toolbox immediately, so you can curate which Bol.com tools are exposed, rename them, or freeze arguments before anyone points a client at it.

## Connect Bol.com to Claude

Endpoint: https://api.elaichi.ai/mcp

1. Open Customize, then Connectors.
2. Press Add.
3. Name it, paste the MCP server URL, then Continue.
4. Sign in and approve.

On Team and Enterprise, an Owner adds it once. Everyone else turns it on for themselves.

## Connect Bol.com to ChatGPT

Endpoint: https://api.elaichi.ai/mcp

1. Open Plugins, then press the + button.
2. Name it and paste the endpoint into Server URL.
3. Leave Authentication on OAuth, then tick the risk acknowledgement.
4. Press Create, then sign in and approve.

Works on the web today. The plugin directory lives at chatgpt.com/plugins.

## Connect Bol.com to Cursor

Endpoint: https://api.elaichi.ai/mcp

1. Open `~/.cursor/mcp.json`.
2. Add the endpoint under `mcpServers`.
3. Reload Cursor, then sign in and approve.

Set up per machine, so repeat it on each computer you work from.

## Connect Bol.com to any MCP client

Endpoint: https://api.elaichi.ai/mcp

1. Add the endpoint as a remote MCP server.
2. Sign in and approve.

The Elaichi Agent already has these tools, with nothing to set up.

## What the consent screen decides

Only Read is granted by default, which is not enough to call a Bol.com tool. Over MCP there is no trusted place to confirm a write in the moment, so the consent screen is the standing approval rather than a formality. Grant Read and Run tools. Think hard before granting Delete, which reaches into connected apps and cannot be undone.

## What teams do with Bol.com through Elaichi

### Fix prices and stock across many offers

Ecommerce. Ask for every Bol.com offer with a stale price or zero stock and push the corrected figures in one pass instead of editing offers one at a time.

### Check this morning's Bol.com orders

Operations. Pull today's Bol.com orders, see which are still open, and open any single order to check what was bought and where it ships.

### Reconcile Bol.com invoices and commissions

Finance. List Bol.com invoices for the month, open the specification behind one, and line the commission charged on each product up against what was sold.

### See which search terms bring shoppers

Marketing. Ask which Bol.com search terms lead customers to your listings and how your product ranks are moving, then decide where to put attention this week.

### Catch unpublished offers before they cost sales

Merchandising. Export the list of Bol.com offers that are not live, find out why, and update or remove each one so the catalog stays clean.

### Plan stock around Bol.com sales forecasts

Planning. Compare Bol.com sales forecasts with current inventory and performance indicators to see which products will run short and which are overstocked.

## Frequently asked questions

### How do I connect Bol.com to Claude?

Connect Bol.com in Elaichi first, then in Claude go to Customize, then Connectors, then Add, and paste https://api.elaichi.ai/mcp as the endpoint. The Bol.com step is entering the app credentials from your Bol.com retailer account into Elaichi; there is no OAuth application to register and no client ID or secret to generate. Once that is done, Claude signs you in through Elaichi and the connection is live.

### Does Bol.com work with ChatGPT and Cursor as well as Claude?

Yes. Bol.com connected once in Elaichi is available from Claude, ChatGPT, Cursor, any other MCP client and the Elaichi Agent through the same endpoint, https://api.elaichi.ai/mcp. You do not repeat the setup for each client.

### What can an AI agent actually do with my Bol.com data?

With Bol.com connected, an agent can list and open your orders, create, update or remove offers, change prices and stock across many offers at once, pull invoices and their specifications, check commissions, and read insights such as sales forecasts, search terms, product ranks and performance indicators. Because Bol.com exposes a large set of actions, short concrete asks such as "show open Bol.com orders from today" work better than long instructions.

### Does connecting Bol.com give the AI access to my whole seller account?

No. An agent working through Bol.com sees only what the Bol.com retailer account it was connected with is allowed to see, and Elaichi restrictions can narrow that further, never widen it. If a person cannot reach something in Bol.com, neither can an agent acting for them.

### Can my team share one Bol.com connection?

Yes. One person connects Bol.com in Elaichi and shares it with a team, and nobody else ever handles the Bol.com app credentials. Each teammate still signs in to Elaichi as themselves, so every Bol.com action in the audit log is tied to the person who made it.

### Can I stop an agent from deleting or changing things in Bol.com?

Yes. In Elaichi you restrict Bol.com actions individually, so you can allow reading orders and invoices while blocking offer deletion or bulk price changes. A blocked action is never shown to Claude, ChatGPT, Cursor or any other client, so no prompt can reach it.

### What happens to a Bol.com connection when someone leaves?

When you offboard a person in Elaichi, their access to Bol.com through every client ends at once. A shared Bol.com connection keeps working for everyone else on the team. If you ever want Bol.com gone entirely, disconnecting it once in Elaichi removes it from Claude, ChatGPT, Cursor and every other client at the same time.

## All 72 Bol.com tools

Every tool below is callable through https://api.elaichi.ai/mcp once Bol.com is connected, subject to the toolbox it is in and the restrictions on the caller.

- **Bol.com retailer commissions bulk get** (Get). Get bol commissions and possible reductions for many products in bulk by EAN, price, and optionally condition. Returns: id, resources, url, subscriptionType. Requires a request body with the product EANs and prices.
- **Bol.com retailer commissions bulk list** (List). Get commission rates for multiple EANs in bulk (BETA). Returns a multi-status result with id, resources, url, and subscriptionType, mixing successful and unsuccessful per-EAN outcomes. Requires a request body listing the EANs to query.
- **List all Bol.com retailer commissions** (List). Get the bol commission and possible reductions for a single product by EAN at a given price. Returns a commission result with id and vendor-defined commission attributes. Required: ean, unit-price.
- **List all Bol.com insights offers** (List). Get offer insights for a bol offer: the product visits and buy box percentage grouped over a historical period. Returns the OfferInsights response (id, attributes; the full field shape is defined by the upstream OfferInsights schema). Required: offer-id, period, number-of-periods, name. Maximum periods back in time: 730 for DAY, 104 for WEEK, 24 for MONTH.
- **List all Bol.com performance indicators** (List). Get the weekly measurements for your bol performance indicators. Returns the PerformanceIndicators response for the requested indicator, year, and week, with fields defined by bol's Retailer API schema. Required: name (indicator type such as CANCELLATIONS or REVIEWS), year, week (ISO-8601). Current-week measurements can change heavily during the week.
- **List all Bol.com insights product ranks** (List). List product ranks on bol for a specific product EAN and date. Returns the ProductRanks payload (attributes) with the product's rank entries for the requested search type. Required: ean, date. The date must be in the past, no more than three months back and up to yesterday.
- **List all Bol.com insights sales forecasts** (List). Get the bol sales forecast estimating expected sales on the total bol.com platform for the requested number of weeks ahead. Returns the sales forecast response object defined by the bol SalesForecastResponse schema. Required: offer-id, weeks-ahead (between 1 and 12).
- **List all Bol.com insights search terms** (List). Get search terms — retrieve the search volume for a specified search term on bol.com over a chosen period range, to optimize product content, spot assortment opportunities, and analyze trends. Returns the search volume data for the requested term and periods. Requires search-term, period (DAY, WEEK, or MONTH), and number-of-periods; pass related-search-terms to also include related search terms.
- **List all Bol.com retailer inventories** (List). List your fulfilment by bol.com (FBB/LVB) inventory in a paginated feed; this endpoint does not cover your own stock. Returns inventory records including the regularStock details for each item. Page size is 50.
- **List all Bol.com retailer invoices** (List). List bol retailer invoices, by default from the past 4 weeks, or supply an optional date range of at most 31 days using period-start-date and period-end-date. Returns the raw invoice list document for download; available media types are listed per invoice in the document.
- **Get single Bol.com retailer invoice by ID** (Get). Download a single bol retailer invoice by id, returned in the media format offered for that invoice (JSON or PDF). The available media types differ per invoice and are listed in the invoice list response. Required: id.
- **Get single Bol.com invoice specification by ID** (Get). Get the specification for a bol invoice by id, including a paginated list of its transactions. Returns the specification file with content-type-specific fields, delivered as JSON or XLSX depending on the media types listed for the invoice. Required: id.
- **Create a Bol.com retailer offer** (Create). Create a new offer in bol for an EAN and add it to the retailer's catalog. Requires ean, condition (name), pricing.bundlePrices (one entry with quantity 1), stock (amount, managedByRetailer) and fulfilment (method FBR or FBB; deliveryCode for FBR). Processing is asynchronous: returns a 202 process status with processStatusId, entityId, eventType, description, status, createTimestamp and links; poll the process status to confirm the offer was created and published. Required: ean, condition, pricing, stock, fulfilment.
- **Get single Bol.com retailer offer by ID** (Get). Retrieve a single bol offer by its offer id. Returns: offerId, ean, reference, onHoldByRetailer, economicOperatorId, unknownProductTitle, pricing (bundlePrices with quantity and unitPrice), stock (amount, correctedStock, managedByRetailer), fulfilment (method, deliveryCode, profileId), store (productTitle, visible countries), condition (name, category, comment) and notPublishableReasons. Required: id.
- **Update a Bol.com retailer offer by ID** (Update). Update an existing bol offer by offer id. Only fulfilment (method, deliveryCode, profileId), reference, onHoldByRetailer, economicOperatorId and unknownProductTitle can be changed here; use offer_prices.bulk_update and offer_stocks.bulk_update for price and stock. Processing is asynchronous: returns a 202 process status with processStatusId, entityId, eventType, status, createTimestamp and links. Required: id, fulfilment.
- **Delete a Bol.com retailer offer by ID** (Delete). Delete a bol offer by offer id, removing it from the catalog. Processing is asynchronous: returns a 202 process status with processStatusId, entityId, eventType, status, createTimestamp and links; poll the process status to confirm deletion. Required: id.
- **Create a Bol.com offers export** (Create). Request an offer export file containing all of a retailer's offers in bol. The export is generated asynchronously — Returns a process status object with processStatusId, eventType, description, status, createTimestamp, and links to track the request. Requires a CreateOfferExportRequest JSON body.
- **Get single Bol.com offers export by ID** (Get). Retrieve an offer export file by report id in bol. Returns the offer export file itself as a CSV (comma separated values) document containing all offers — a raw file download, not a JSON object. Required: id (the unique identifier of the offer export file).
- **Create a Bol.com offers unpublished** (Create). Request an unpublished offer report from bol, asynchronously generating a file of all unpublished offers with their reasons. Returns a process status object including processStatusId, eventType, and status for polling. Processing is asynchronous (202 Accepted).
- **Get single Bol.com offers unpublished by ID** (Get). Retrieve an unpublished offer report from bol by report id, containing all unpublished offers and the reasons they are not published; the report is delivered as a CSV file. Required: id (the unpublished offer report id).
- **Bol.com offer prices bulk update** (Update). Update price(s) for a bol offer by id. Returns a process status for the asynchronously scheduled update, including processStatusId, entityId, eventType, status, createTimestamp, and links. Required: offer_id and a price payload.
- **Bol.com offer stocks bulk update** (Update). Update the stock of an offer in bol by id. The stock update is scheduled for asynchronous processing and returns a process status object including processStatusId, eventType, status, and createTimestamp. Required: offer_id and a stock update body.
- **List all Bol.com retailer orders** (List). List bol retailer orders in a paginated feed (50 per page). Returns: orders (each reduced order carrying its orderId). No parameters are required; results default to open (OPEN) orders fulfilled by the retailer (FBR).
- **Get single Bol.com retailer order by ID** (Get). Get a single bol order by id, including the quantities of shipped or cancelled items when the order is partially shipped or cancelled. Returns: orderId. Required: id (the bol order id).
- **Bol.com orders cancellations bulk update** (Update). Cancel an order item in bol, either to confirm a customer's cancellation request or to cancel an item you are unable to fulfil. Returns a ProcessStatus object including processStatusId, entityId, eventType, status, createTimestamp, and links. Requires a CancellationRequest request body; the request is scheduled for asynchronous processing (202 Accepted).
- **List all Bol.com products categories** (List). List the available bol product categories together with their subcategories. Returns category records with their id; the remaining record fields are defined by bol's ProductCategoriesResponse schema and are not enumerated in the available documentation. Categories are returned in Dutch by default.
- **List all Bol.com products lists** (List). List bol products matching a category, search term, or filters. Returns the list of matching products as reported by bol. Search criteria are supplied in the required JSON request body.
- **List all Bol.com products list filters** (List). Get the product list filters available in bol for a given category or search term. Returns the product list filters payload with category- and filter-specific fields. Required: productListFiltersRequest.
- **List all Bol.com product assets** (List). List the assets available for a bol product by EAN. Returns: assets — the collection of assets for the product, with each asset's fields as defined by the upstream bol Retailer API v10 schema. Required: ean.
- **List all Bol.com product offers** (List). List the competing offers available in the bol webshop for a product EAN, including offers from all retailers. Returns each offer with id, condition, and remaining offer attributes. Required: ean. Pages hold 50 items.
- **List all Bol.com product placements** (List). Get the product placement for a product by EAN in bol. Returns the list of categories and the URL where the product is placed in the webshop. Required: ean.
- **List all Bol.com product price star boundaries** (List). Get all price star boundaries for a specific product in bol by its EAN. Returns the PriceStarBoundaries response object whose fields are defined by the bol Retailer API v10 schema (not enumerated in the available documentation). Required: ean.
- **List all Bol.com product product IDS** (List). Get the bol.com specific product identifier and the related EANs for a product by EAN. Returns: productId, eans. Required: ean.
- **List all Bol.com product ratings** (List). Get product ratings in bol for the products associated with a given EAN. Returns: attributes (generic object; the ratings payload's field shape is defined by bol's ProductRatingsResponse schema). Required: ean.
- **List all Bol.com retailer promotions** (List). List bol promotions for the retailer. Returns promotion records with their id. Required: promotion-type (AWARENESS or PRICE_OFF). Max 50 items per page.
- **Get single Bol.com retailer promotion by ID** (Get). Get a single bol promotion by id. Returns the promotion including its id. Required: id.
- **List all Bol.com promotion products** (List). List the products included in a bol promotion by promotion id. Returns: products. Required: promotion_id. Paginated with a page size of 50 items per page.
- **List all Bol.com retailer replenishments** (List). List bol replenishments. Returns each replenishment's id and its attributes (record fields are defined in the upstream ReplenishmentsResponse schema of the bol Retailer API v10).
- **Create a Bol.com retailer replenishment** (Create). Create a replenishment in bol. Requires the replenishment request body (fields defined in the upstream CreateReplenishmentRequest schema). Returns an asynchronous process status with processStatusId, eventType, status, createTimestamp, entityId, and links.
- **Get single Bol.com retailer replenishment by ID** (Get). Get a bol replenishment by id. Returns the replenishment record with its id and attributes (record fields are defined in the upstream ReplenishmentResponse schema). Required: id.
- **Update a Bol.com retailer replenishment by ID** (Update). Update a bol replenishment by id. Requires the update request body (fields defined in the upstream UpdateReplenishmentRequest schema). Returns an asynchronous process status with processStatusId, eventType, status, createTimestamp, entityId, and links. Required: id.
- **List all Bol.com replenishments delivery dates** (List). List the available delivery dates for a bol replenishment. Returns a DeliveryDatesResponse payload whose per-date fields are schema-specific to bol's Retailer API v10 and not enumerated in the discovered source; consult bol's v10 API reference for the field-level breakdown. No required parameters.
- **Create a Bol.com replenishments pickup time slot** (Create). Retrieve available pickup time slots for a bol replenishment. Returns the pickup time slots response (upstream PickupTimeSlotsResponse schema); the source docs do not enumerate its individual fields. Requires a request body matching the PickupTimeSlotsRequest schema.
- **Create a Bol.com replenishments product destination** (Create). Request product destinations by EAN in bol. Schedules the request asynchronously and returns a 202 process status including processStatusId, eventType, description, status, createTimestamp, and links — poll the process status endpoint with processStatusId for completion. Requires a JSON body with the EANs to request destinations for.
- **Get single Bol.com replenishments product destination by ID** (Get). Get the product destinations for one or more products in bol by product destinations id. Returns the product-destinations record including its id and attributes with the destination details for the requested products. Required: id.
- **Create a Bol.com replenishments product label** (Create). Retrieve product labels in bol by posting a product label request. Returns the printable labels as a PDF document. Requires a ProductLabelsRequest JSON body.
- **List all Bol.com replenishment load carrier labels** (List). Get the load carrier labels for a replenishment in bol. Returns the labels as a printable PDF document (binary content). Required: replenishment_id.
- **List all Bol.com replenishment pick lists** (List). Get the pick list PDF for a bol replenishment by id. Returns the pick list as a binary PDF document (content type application/vnd.retailer.v10+pdf), not a JSON object. Required: replenishment_id.
- **Get single Bol.com retailer by ID** (Get). Get information about a single bol retailer by id — pass a retailer id, or 'current' to retrieve details for your own retailer account. Returns the retailer information record, including id. Required: id.
- **List all Bol.com retailer returns** (List). List bol retailer returns as a paginated collection with 50 returns per page; handled returns are sorted by date in descending order, unhandled returns in ascending order. Returns: id.
- **Create a Bol.com retailer return** (Create). Create a bol retailer return and automatically handle it with the provided handling result. Returns the process status including processStatusId, status, createTimestamp, and links; the resulting return id is provided in the process status entityId. Requires a request body (CreateReturnRequest). Processing is asynchronous.
- **Get single Bol.com retailer return by ID** (Get). Get a single bol retailer return by id. Returns: id. Required: id.
- **Update a Bol.com retailer return by ID** (Update). Handle a bol retailer return by id — either handle an open return or change the handlingResult of an already handled one. Returns the process status including processStatusId, status, createTimestamp, and links. Required: id (the integer RMA identifier — rma-id upstream) and handlingResult. Processing is asynchronous.
- **List all Bol.com retailer shipments** (List). List your bol shipments up to 3 months old, sorted by date in descending order. Filter by fulfilment-method (FBR or FBB) or order-id. Returns shipment records with id and shipment-specific attributes. Max 50 per page.
- **Create a Bol.com retailer shipment** (Create). Create a bol shipment for one or more order items of a customer order: supply shippingLabelId of a purchased shipping label (leaving transport empty), or omit shippingLabelId and fill in transport with the fields from GET shipping labels — the two are mutually exclusive. Returns an async ProcessStatus with processStatusId, eventType, description, status, createTimestamp, and links to poll for the…
- **Get single Bol.com retailer shipment by ID** (Get). Get a single bol shipment by id. Returns the shipment's id and its shipment-specific attributes object, including transport information. Required: id.
- **List all Bol.com invoices requests** (List). List paginated invoice requests initiated by customers in bol. Returns each invoice request with its id and attributes (item fields — including the request's state, e.g. OPEN or UPLOAD_ERROR — are defined by bol's InvoiceRequestsResponse schema).
- **Create a Bol.com shipments invoice** (Create). Upload an invoice file for a bol shipment. Returns a process status object including processStatusId, eventType, description, status, createTimestamp, and links for polling. Required: invoice_id (the id of the shipment associated with the invoice) and invoice (the invoice file). The upload is processed asynchronously and must be sent as multipart/form-data.
- **Create a Bol.com retailer shipping label** (Create). Create a shipping label in bol using a shipping label offer id obtained from the get delivery options endpoint. Returns the process status of the asynchronous create request, including processStatusId, eventType, status, createTimestamp, and links. Processing is asynchronous — poll the process status endpoint to confirm completion.
- **Get single Bol.com retailer shipping label by ID** (Get). Get a shipping label PDF from bol by id. Returns the label document as binary data (label_data), with label metadata delivered as response headers: track-and-trace code and transporter code. Required: id (the shipping label id). Send a HEAD request if you only need the metadata headers without the label data.
- **Get single Bol.com shipping labels delivery option by ID** (Get). Get all available delivery options in bol for a supplied configuration of order items that has to be shipped. Returns the delivery options payload (DeliveryOptionsResponse), from which a shipping label offer id is taken to create a shipping label. Required: a delivery options request body describing the order items to ship.
- **List all Bol.com retailer subscriptions** (List). List all bol event notification subscriptions configured for the retailer, including their event types and destination (a webhook URL or a GCP Pub/Sub topic). Returns: id, resources, url, subscriptionType, enabled.
- **Create a Bol.com retailer subscription** (Create). Create a bol event notification subscription for one or more event types, delivered either to a URL (WEBHOOK) or a topic name (GCP_PUBSUB). Returns a process status object with processStatusId, eventType, description, status, createTimestamp, and links; processing is asynchronous. Required: resources, url, subscriptionType.
- **Get single Bol.com retailer subscription by ID** (Get). Get a single bol event notification subscription by id, including its event types and destination (a webhook URL or GCP Pub/Sub topic). Returns: id, resources, url, subscriptionType, enabled. Required: id.
- **Update a Bol.com retailer subscription by ID** (Update). Update the event types and/or destination of a bol event notification subscription by id; the destination can be a URL (WEBHOOK) or a topic name (GCP_PUBSUB). Returns a process status object with processStatusId, entityId, eventType, status, createTimestamp, and links; processing is asynchronous. Required: id, resources, url, subscriptionType.
- **Delete a Bol.com retailer subscription by ID** (Delete). Delete a bol event notification subscription by id. Returns a process status object with processStatusId, eventType, description, status, createTimestamp, and links; the deletion is processed asynchronously. Required: id.
- **List all Bol.com subscriptions signature keys** (List). Retrieve the public keys used to validate the signature header of push notifications received from bol.com. Returns the key set containing the signing keys for push notification validation.
- **Create a Bol.com subscriptions test** (Create). Send a test push notification for a bol event notification subscription to verify the configured endpoints are working. The request is scheduled asynchronously and returns the process status object including processStatusId, eventType, status, and createTimestamp. Required: subscription_id.
- **Update a Bol.com retailer transport by ID** (Update). Add transport information to an existing transport in bol by id, which you can retrieve from the shipment list. Returns the process status for the scheduled change, including processStatusId, eventType, status, createTimestamp, and links. Required: id. The change is processed asynchronously.
- **List all Bol.com shared process status** (List). List bol process statuses for previously executed PUT/POST/DELETE requests, in descending order, by supplying an entity id and event type. Returns: description, status, links, content. Pages hold 50 items; statuses are retained for a limited period only. Required: entity_id, event_type.
- **Bol.com shared process status bulk get** (Get). Get the status of multiple bol asynchronous processes in one call by supplying an array of process status ids. Returns: processStatusId, entityId, eventType, status, createTimestamp, links. Statuses are only retained for a limited period after completion. Required: processStatusQueries.
- **Get single Bol.com shared process status by ID** (Get). Get a single bol process status by id, showing the outcome of a previously executed PUT/POST/DELETE request. Returns: description, status, links, content. Statuses are only retained for a limited period; afterwards a 404 is returned. Required: id.
