bol.com MCP by usefulapi
Read bol orders, returns, offers and inventory; update an offer’s stock, price or sale status.
사용해야 할까요
품질 및 안전성
발견 사항 (3)
- HIGH
- MEDIUMbol_get_performance_indicator에서
- LOWbol_get_offer_not_for_sale_reasons에서
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"bol-com": {
"url": "https://bol-com.usefulapi.io/mcp"
}
}
}원격 엔드포인트
https://bol-com.usefulapi.io/mcpstreamable-http할 수 있는 일
도구 목록
도구 (18)
🟢bol_list_orders(status, fulfilment_method, change_interval_minute, latest_change_date, page)
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.
입력 스키마
{
"type": "object",
"properties": {
"status": {
"description": "Order status (default OPEN).",
"type": "string",
"enum": [
"OPEN",
"SHIPPED",
"ALL"
]
},
"fulfilment_method": {
"description": "Fulfilled by the retailer (FBR, default), by bol (FBB) or both (ALL).",
"type": "string",
"enum": [
"FBR",
"FBB",
"ALL"
]
},
"change_interval_minute": {
"description": "Only order items changed in the last N minutes (1-60).",
"type": "integer",
"minimum": 1,
"maximum": 60
},
"latest_change_date": {
"description": "Only order items last changed on this date, yyyy-mm-dd (up to 3 months back).",
"type": "string"
},
"page": {
"description": "Page number, from 1 (default 1). Use the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢bol_get_order(order_id)
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}.
입력 스키마
{
"type": "object",
"properties": {
"order_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,64}$",
"description": "The bol order id (from bol_list_orders)."
}
},
"required": [
"order_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢bol_list_shipments(order_id, fulfilment_method, page)
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.
입력 스키마
{
"type": "object",
"properties": {
"order_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,64}$",
"description": "Only the shipments of this order."
},
"fulfilment_method": {
"description": "FBR or FBB (ignored when order_id is given).",
"type": "string",
"enum": [
"FBR",
"FBB"
]
},
"page": {
"description": "Page number, from 1 (default 1). Use the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢bol_get_shipment(shipment_id)
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}.
입력 스키마
{
"type": "object",
"properties": {
"shipment_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,64}$",
"description": "The shipment id (from bol_list_shipments)."
}
},
"required": [
"shipment_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢bol_list_returns(handled, fulfilment_method, page)
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.
입력 스키마
{
"type": "object",
"properties": {
"handled": {
"description": "true = handled returns, false = returns still to handle. Set it explicitly.",
"type": "boolean"
},
"fulfilment_method": {
"description": "FBR or FBB.",
"type": "string",
"enum": [
"FBR",
"FBB"
]
},
"page": {
"description": "Page number, from 1 (default 1). Use the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢bol_get_return(return_id)
One return by id: return items, reasons, handling results, the customer's details (personal data). GET /retailer/returns/{return-id}.
입력 스키마
{
"type": "object",
"properties": {
"return_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,64}$",
"description": "The return id (from bol_list_returns)."
}
},
"required": [
"return_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢bol_list_offers(offer_ids, eans, reference, for_sale, last_modified_since, ...)
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).
입력 스키마
{
"type": "object",
"properties": {
"offer_ids": {
"description": "Only these offer ids (UUIDs).",
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
"description": "An offer id."
}
},
"eans": {
"description": "Only these EANs.",
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"pattern": "^\\d{8,14}$",
"description": "EAN (8 to 14 digits)."
}
},
"reference": {
"description": "Only offers with this seller reference.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"for_sale": {
"description": "true = only offers currently for sale, false = only those not for sale.",
"type": "boolean"
},
"last_modified_since": {
"description": "Only offers modified since this UTC time, e.g. 2026-10-01T08:00:00Z.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
},
"page_size": {
"description": "Offers per page, 1-100.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "The next_cursor of the previous reply.",
"type": "string",
"minLength": 1,
"maxLength": 2000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢bol_get_offer(offer_id)
One offer by id (Offers API v11): condition, price bundles, stock, fulfilment, countries, product. GET /retailer/offers/{offer-id} (v11).
입력 스키마
{
"type": "object",
"properties": {
"offer_id": {
"type": "string",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
"description": "The offer id (UUID, from bol_list_offers)."
}
},
"required": [
"offer_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢bol_get_offer_not_for_sale_reasons(offer_id)
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).
입력 스키마
{
"type": "object",
"properties": {
"offer_id": {
"type": "string",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
"description": "The offer id (UUID)."
}
},
"required": [
"offer_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴bol_update_offer(offer_id, on_hold, reference, prices, stock_amount, ...)
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).
입력 스키마
{
"type": "object",
"properties": {
"offer_id": {
"type": "string",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
"description": "The offer id (UUID)."
},
"on_hold": {
"description": "true = take the offer off sale (hold), false = list it for sale again.",
"type": "boolean"
},
"reference": {
"description": "Your own reference for the offer (max 100 chars; empty clears it).",
"type": "string",
"maxLength": 100
},
"prices": {
"description": "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.",
"minItems": 1,
"maxItems": 4,
"type": "array",
"items": {
"type": "object",
"properties": {
"quantity": {
"type": "integer",
"minimum": 1,
"maximum": 24
},
"unit_price": {
"type": "number",
"minimum": 1,
"maximum": 9999
}
},
"required": [
"quantity",
"unit_price"
]
}
},
"stock_amount": {
"description": "Stock in your own warehouse (not FBB stock).",
"type": "integer",
"minimum": 0,
"maximum": 1000000
},
"stock_managed_by_retailer": {
"description": "true = you manage stock levels; false = bol corrects stock for open orders.",
"type": "boolean"
}
},
"required": [
"offer_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢bol_list_inventory(query, stock, state, quantity, page)
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.
입력 스키마
{
"type": "object",
"properties": {
"query": {
"description": "EAN or product title.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"stock": {
"description": "Stock level filter.",
"type": "string",
"enum": [
"SUFFICIENT",
"INSUFFICIENT"
]
},
"state": {
"description": "Stock type filter.",
"type": "string",
"enum": [
"REGULAR",
"GRADED"
]
},
"quantity": {
"description": "Quantity range \"min-max\", e.g. \"0-10\".",
"type": "string",
"pattern": "^\\d+-\\d+$"
},
"page": {
"description": "Page number, from 1 (default 1). Use the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢bol_list_invoices(period_start_date, period_end_date)
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.
입력 스키마
{
"type": "object",
"properties": {
"period_start_date": {
"description": "Period start, yyyy-mm-dd (give both dates, max 31 days apart).",
"type": "string"
},
"period_end_date": {
"description": "Period end, yyyy-mm-dd.",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢bol_get_invoice_specification(invoice_id, page)
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.
입력 스키마
{
"type": "object",
"properties": {
"invoice_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,64}$",
"description": "The invoice id (from bol_list_invoices)."
},
"page": {
"description": "Page number, from 1 (default 1). Use the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
}
},
"required": [
"invoice_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢bol_get_commissions(products)
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.
입력 스키마
{
"type": "object",
"properties": {
"products": {
"minItems": 1,
"maxItems": 100,
"type": "array",
"items": {
"type": "object",
"properties": {
"ean": {
"type": "string",
"pattern": "^\\d{8,14}$",
"description": "EAN (8 to 14 digits)."
},
"unit_price": {
"type": "number",
"minimum": 0,
"maximum": 9999,
"description": "Selling price per unit incl. VAT."
},
"condition": {
"description": "Offer condition (default NEW).",
"type": "string",
"enum": [
"NEW",
"AS_NEW",
"GOOD",
"REASONABLE",
"MODERATE"
]
}
},
"required": [
"ean",
"unit_price"
]
},
"description": "The products to calculate."
}
},
"required": [
"products"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢bol_get_competing_offers(ean, country_code, best_offer_only, condition, page)
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.
입력 스키마
{
"type": "object",
"properties": {
"ean": {
"type": "string",
"pattern": "^\\d{8,14}$",
"description": "EAN (8 to 14 digits)."
},
"country_code": {
"description": "Webshop country (default NL).",
"type": "string",
"enum": [
"NL",
"BE"
]
},
"best_offer_only": {
"description": "true = only the best offer.",
"type": "boolean"
},
"condition": {
"description": "Offer condition filter.",
"type": "string",
"enum": [
"ALL",
"BAD",
"MODERATE",
"REASONABLE",
"GOOD",
"AS_NEW",
"NEW",
"REFURBISHED_A",
"REFURBISHED_B",
"REFURBISHED_C"
]
},
"page": {
"description": "Page number, 1-200.",
"type": "integer",
"minimum": 1,
"maximum": 200
}
},
"required": [
"ean"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢bol_get_performance_indicator(name, year, week)
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.
입력 스키마
{
"type": "object",
"properties": {
"name": {
"type": "string",
"enum": [
"CANCELLATIONS",
"FULFILMENT",
"PHONE_AVAILABILITY",
"RESPONSE_TIME",
"CASE_ITEM_RATIO",
"TRACK_AND_TRACE",
"RETURNS",
"REVIEWS"
],
"description": "The indicator."
},
"year": {
"type": "integer",
"minimum": 2000,
"maximum": 2100,
"description": "Year, e.g. 2026."
},
"week": {
"type": "integer",
"minimum": 1,
"maximum": 53,
"description": "ISO week number, 1-53."
}
},
"required": [
"name",
"year",
"week"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢bol_get_sales_forecast(offer_id, weeks_ahead)
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.
입력 스키마
{
"type": "object",
"properties": {
"offer_id": {
"type": "string",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
"description": "The offer id (UUID)."
},
"weeks_ahead": {
"type": "integer",
"minimum": 1,
"maximum": 12,
"description": "Weeks ahead, 1-12."
}
},
"required": [
"offer_id",
"weeks_ahead"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢bol_get_process_status(process_status_id)
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}.
입력 스키마
{
"type": "object",
"properties": {
"process_status_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,64}$",
"description": "The process status id."
}
},
"required": [
"process_status_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}커뮤니티
증거