bol-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@bol-mcpShow my open orders from last week"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
bol-mcp
Een Model Context Protocol (MCP) server voor de bol.com Retailer API. Beheer bestellingen, aanbiedingen, verzendingen, retouren, facturen en commissies — allemaal via natuurlijke taal in je AI-app.
Let op: Dit is een onofficieel, community-onderhouden project en is niet verbonden aan of goedgekeurd door bol.com.
A community-built Model Context Protocol (MCP) server for the bol.com Retailer API. Manage orders, offers, shipments, returns, invoices, and commissions — all through natural language via any MCP-compatible AI client.
Note: This is an unofficial, community-maintained project and is not affiliated with or endorsed by bol.com.
Snel starten
Je hoeft deze repo niet te clonen.
Zorg dat Node.js 20+ is geïnstalleerd (je AI-app draait
npxop je machine)Haal bol.com API-gegevens op (zie Authentication)
Voeg de server toe als MCP server in je AI-app (kopieer onderstaande configuratie)
Stel vragen in gewoon Nederlands (zie Voorbeelden)
Related MCP server: wefact-mcp
Quick Start (Non-Developers)
You do not need to clone this repo.
Make sure Node.js 20+ is installed (your AI app will run
npxon your machine)Get bol.com API credentials (see Authentication)
Add the server to your AI app as an MCP server (copy/paste config below)
Ask in plain language (see Example Usage)
Add To Claude Desktop (Also Works In Cowork)
Cowork runs inside Claude Desktop and uses the same connected MCP servers and permissions.
Open your Claude Desktop MCP config file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\\Claude\\claude_desktop_config.json
Add this server entry (or merge it into your existing
mcpServers):
{
"mcpServers": {
"bol-mcp": {
"command": "npx",
"args": ["-y", "bol-mcp"],
"env": {
"BOL_CLIENT_ID": "your-client-id",
"BOL_CLIENT_SECRET": "your-client-secret"
}
}
}
}Restart Claude Desktop
Add To Other AI Apps
Most MCP apps have a screen like "Add MCP Server" where you can fill in:
Command:
npxArgs:
-y bol-mcpEnv:
BOL_CLIENT_ID=your-client-idandBOL_CLIENT_SECRET=your-client-secret
If your app wants JSON, paste this and adapt the top-level key name to your client (common ones are mcpServers, servers, or context_servers):
{
"<servers-key>": {
"bol-mcp": {
"command": "npx",
"args": ["-y", "bol-mcp"],
"env": {
"BOL_CLIENT_ID": "your-client-id",
"BOL_CLIENT_SECRET": "your-client-secret"
}
}
}
}Troubleshooting
Error:
Missing required env vars: BOL_CLIENT_ID, BOL_CLIENT_SECRETFix: add both env vars to the MCP server config and restart your app.
Error:
npx: command not foundor server fails to startFix: install Node.js 20+ and restart your app.
You can connect, but API calls fail with
401/403Fix: verify client ID/secret are correct and active in the bol.com Seller Dashboard.
API Coverage
bol.com exposes several APIs for different purposes. This MCP server covers the Retailer API v10 and the Shared API — the core APIs for marketplace sellers managing their day-to-day operations.
API | Status | Description |
Retailer API v10 | Covered | Core seller operations: orders, offers, shipments, returns, invoices, commissions, products, inventory, promotions, replenishments, subscriptions, and more |
Shared API v10 | Covered | Cross-API utilities for tracking asynchronous process statuses |
Offer API v11 | Not covered | Next-generation offer management (v11 successor to the Retailer API offer endpoints) |
Advertiser API v11 | Not covered | Sponsored product campaigns, ad groups, keywords, budgets, and performance reporting |
Economic Operators API | Not covered | Economic operator information and regulatory compliance data |
The Retailer API v10 offer endpoints included in this MCP are fully functional. The Offer API v11 is a newer version with an updated endpoint structure — support may be added in a future release.
Features
76 tools across 17 categories covering the bol.com Retailer API v10
Order management — list, inspect, and cancel orders with status and fulfilment filtering
Offer CRUD — create, update, delete offers with price/stock management and export reports
Shipment handling — create shipments with partial quantity support and invoice requests
Return processing — list, inspect, create, and handle returns
Invoice access — retrieve invoices by period with full UBL detail and specifications
Commission calculator — single and bulk commission rates by EAN, condition, and price
Product catalog — browse categories, search products, view competing offers, ratings, and assets
Product content — manage catalog content, upload reports, and chunk recommendations
Insights — offer visits, buy box %, performance indicators, product ranks, sales forecasts, and search terms
Inventory — LVB/FBB inventory levels with filtering
Promotions — list and inspect promotions and their products
Replenishments — full FBB replenishment lifecycle: create, update, delivery dates, pickup slots, labels
Retailers — retailer account information
Shipping labels — delivery options and label creation
Subscriptions — webhook/pubsub/SQS event subscriptions with signature key management
Transports — update transport tracking information
Process status — track asynchronous operations by ID, entity, or in bulk
OAuth2 authentication with automatic token refresh
Input validation via Zod schemas on every tool for safe, predictable operations
Response caching with configurable TTL and automatic invalidation on writes
Rate limit handling with exponential backoff and
Retry-Afterheader supportToolset filtering to expose only the tool categories you need
Docker support for containerized deployment
Actionable error messages with context-aware recovery suggestions
Supported Clients
This MCP server is not tied to one coding agent. It works with any MCP-compatible client or agent runtime that can start a stdio MCP server.
Client / runtime | Docs |
Claude Code | |
Anthropic API (Messages API) | |
Codex CLI (OpenAI) | |
Gemini CLI (Google) | |
VS Code (Copilot) | |
Claude Desktop | |
Cursor | |
Windsurf | |
Cline | |
Zed | |
Any other MCP host | Use command/args/env from Generic MCP Server Config |
Claude Ecosystem Notes
Claude currently has multiple MCP-related concepts that are easy to mix up:
Local MCP servers (Claude Desktop): defined in
claude_desktop_config.jsonand started on your machine (docs).Cowork: reuses the MCP servers connected in Claude Desktop (docs).
Connectors: remote MCP integrations managed in Claude (docs).
Cowork plugins: Claude-specific workflow packaging (instructions + tools/data integrations) (docs). Useful in Claude, but not portable as a generic MCP server config for other agent clients.
Verified against vendor docs on 2026-03-05.
Setup (Power Users)
If Quick Start worked in your client, you can skip this section. These are additional per-client setup options and CLI one-liners.
Generic MCP Server Config
Use this as the baseline in any host:
Command:
npxArgs:
["-y", "bol-mcp"]Required env vars:
BOL_CLIENT_ID,BOL_CLIENT_SECRETOptional env vars:
BOL_CACHE_TTL,BOL_MAX_RETRIES,BOL_TOOLSETS(see Configuration)
Minimal JSON (adapt the top-level key to your host):
{
"<servers-key>": {
"bol-mcp": {
"command": "npx",
"args": ["-y", "bol-mcp"],
"env": {
"BOL_CLIENT_ID": "your-client-id",
"BOL_CLIENT_SECRET": "your-client-secret"
}
}
}
}Host key mapping:
Host | Top-level key | Notes |
VS Code |
| Add |
Claude Desktop / Cursor / Windsurf / Cline |
| Same command/args/env block |
Zed |
| Same command/args/env block |
Codex CLI (TOML) |
| Uses TOML, shown below |
Claude Code
claude mcp add --scope user bol-mcp \
--env BOL_CLIENT_ID=your-client-id \
--env BOL_CLIENT_SECRET=your-client-secret \
-- npx -y bol-mcpCodex CLI (OpenAI)
codex mcp add bol-mcp \
--env BOL_CLIENT_ID=your-client-id \
--env BOL_CLIENT_SECRET=your-client-secret \
-- npx -y bol-mcp~/.codex/config.toml alternative:
[mcp_servers.bol-mcp]
command = "npx"
args = ["-y", "bol-mcp"]
env = { "BOL_CLIENT_ID" = "your-client-id", "BOL_CLIENT_SECRET" = "your-client-secret" }Gemini CLI (Google)
gemini mcp add bol-mcp -- npx -y bol-mcpSet BOL_CLIENT_ID and BOL_CLIENT_SECRET in ~/.gemini/settings.json.
VS Code (Copilot)
Open Command Palette (Cmd+Shift+P / Ctrl+Shift+P) > MCP: Add Server > Command (stdio), or use .vscode/mcp.json with top-level key servers and the canonical command/args/env block from Generic MCP Server Config.
Claude Desktop + Cowork / Cursor / Windsurf / Cline / Zed
Cowork runs inside Claude Desktop and uses the same connected MCP servers and permissions. Configure once in Claude Desktop, then the server is available in Cowork.
Use the canonical config block and place it in the host file below with the matching top-level key.
Client | Config location | Top-level key |
Claude Desktop (macOS) |
|
|
Claude Desktop (Windows) |
|
|
Cursor (project) |
|
|
Cursor (global) |
|
|
Windsurf |
|
|
Cline | MCP settings UI |
|
Zed (macOS/Linux) |
|
|
Docker
docker run -i --rm \
-e BOL_CLIENT_ID=your-client-id \
-e BOL_CLIENT_SECRET=your-client-secret \
ghcr.io/bartwaardenburg/bol-mcpOther MCP Clients
Use the values from Generic MCP Server Config.
Terminology
What is portable across hosts:
MCP server runtime settings (
command,args,env)Transport model (
stdiocommand server)Tool names and tool schemas exposed by this server
What is host/vendor-specific (not portable as-is):
Host config key names (
servers,mcpServers,context_servers,mcp_servers)Host UX/workflows for adding servers (CLI commands, UI menus, settings paths)
Anthropic-specific concepts such as Claude Desktop local MCP servers, Claude Connectors via remote MCP, and Claude Code plugins used in Cowork workflows
Security Notes
Trust model: Any prompt or agent allowed to call this MCP server can execute bol.com API actions with the configured credentials.
Least-privilege credentials: Use separate bol.com API credentials per environment/team/use case and rotate/revoke when access changes.
Write-action approvals: Enable host-side approvals for mutating tools (
create_*,update_*,delete_*,cancel_*,handle_return, shipment/replenishment actions).Team config governance: Keep shared MCP config in version control, require review for changes to command/args/env/toolset filtering, and keep secrets in a vault or host secret manager (not in plain-text repo files).
Configuration
Required
Variable | Description |
| Your bol.com API client ID |
| Your bol.com API client secret |
Generate your credentials in the bol.com Partner Platform under Settings > API Settings.
Optional
Variable | Description | Default |
| Response cache lifetime in seconds. Set to |
|
| Maximum retry attempts for rate-limited (429) requests with exponential backoff. |
|
| Comma-separated list of tool categories to enable (see Toolset Filtering). | All toolsets |
Authentication
This server authenticates with the bol.com Retailer API using the OAuth2 client credentials flow. It automatically obtains and refreshes access tokens — you only need to provide your client ID and secret.
For full details, see the official bol.com authentication documentation.
Creating Your Credentials
Log in to the bol.com Seller Dashboard
Navigate to Settings > Services > API Settings
Provide technical contact details (required before creating credentials)
Create a new API credential set
Copy the Client ID and Client Secret
How It Works
The server exchanges your credentials for a short-lived access token via the bol.com token endpoint:
Endpoint:
POST https://login.bol.com/tokenAuth: HTTP Basic with
base64(clientId:clientSecret)Grant type:
client_credentialsToken lifetime: ~5 minutes (299 seconds)
Tokens are automatically reused and refreshed before expiry — no manual token management required.
Security Best Practices
See Security Notes. bol.com-specific credential hygiene:
Never share your client ID or client secret, and don't hardcode them in source files
Use environment variables or host secret stores to pass credentials
Revoke and replace credentials immediately if compromise is suspected
Available Tools
Orders
Tool | Description |
| List orders with optional status and fulfilment method filtering |
| Get detailed order information by order ID |
| Cancel order items with a reason code |
Offers
Tool | Description |
| Get offer details by offer ID |
| Create a new offer (EAN, condition, price, stock, fulfilment method) |
| Update offer details (reference, onHoldByRetailer, unknown product title, fulfilment) |
| Delete an offer permanently |
| Update the pricing for an offer |
| Update the stock level for an offer |
| Request a CSV export of all offers |
| Download a previously requested offer export |
| Request a report of unpublished offers |
| Download a previously requested unpublished offer report |
Shipments
Tool | Description |
| List shipments with optional order ID and fulfilment method filtering |
| Get shipment details by shipment ID |
| Create a shipment for order items (supports partial quantities) |
| List invoice requests for shipments |
Returns
Tool | Description |
| List returns with optional handled status and fulfilment method filtering |
| Get return details by RMA ID |
| Handle/process a return (accept, reject, repair, etc.) |
| Create a return for an order item |
Invoices
Tool | Description |
| List invoices by date period (max 31 days, format: YYYY-MM-DD) |
| Get full invoice details by invoice ID |
| Get detailed invoice specification/line items |
Commissions
Tool | Description |
| Calculate the commission for a product by EAN, condition, and unit price |
| Calculate commissions for multiple products at once |
Products
Tool | Description |
| Browse product categories |
| Search and browse products by category or search term |
| Get available product list filters |
| Get product images and assets by EAN |
| Get competing offers for a product by EAN |
| Get product placement information |
| Get price star boundaries for a product |
| Get product identifiers by EAN |
| Get product ratings and reviews |
Product Content
Tool | Description |
| Get catalog product details by EAN |
| Create or update product content |
| Get product content upload report |
| Get product content recommendations |
Insights
Tool | Description |
| Get offer visit and buy box insights |
| Get retailer performance indicators |
| Get product search and browse rankings |
| Get sales forecast for an offer |
| Get search term volume data |
Inventory
Tool | Description |
| Get LVB/FBB inventory with filtering by stock level, state, and EAN |
Promotions
Tool | Description |
| List available promotions by type |
| Get promotion details |
| Get products in a promotion |
Replenishments
Tool | Description |
| List FBB replenishments with filtering |
| Get replenishment details |
| Create a new FBB replenishment |
| Update or cancel a replenishment |
| Get available FBB delivery dates |
| Get pickup time slots for a delivery date |
| Request product warehouse destinations |
| Get product warehouse destinations |
Retailers
Tool | Description |
| Get retailer account information |
Shipping Labels
Tool | Description |
| Get available shipping/delivery options for order items |
| Create a shipping label for order items |
Subscriptions
Tool | Description |
| List all event subscriptions |
| Get subscription details |
| Create an event subscription (webhook, GCP Pub/Sub, or AWS SQS) |
| Update an event subscription |
| Delete an event subscription |
| Send a test notification to a subscription |
| Get public keys for webhook signature validation |
Transports
Tool | Description |
| Update transport/tracking information |
Process Status
Tool | Description |
| Get the status of an asynchronous process by process status ID |
| Get process statuses by entity ID and event type |
| Get the status of multiple processes by their IDs (up to 1000) |
Toolset Filtering
Reduce context window usage by enabling only the tool categories you need. Set the BOL_TOOLSETS environment variable to a comma-separated list:
BOL_TOOLSETS=orders,offersToolset | Tools included |
| Order listing, details, and cancellation |
| Full offer CRUD, price/stock management, export reports |
| Shipment listing, details, creation, and invoice requests |
| Return listing, details, creation, and handling |
| Invoice listing, details, and specifications |
| Single and bulk commission calculation |
| Product categories, search, assets, competing offers, ratings, placement |
| Catalog products, content creation, upload reports, recommendations |
| Offer insights, performance indicators, product ranks, sales forecasts, search terms |
| LVB/FBB inventory levels |
| Promotion listing and product details |
| FBB replenishment lifecycle, delivery dates, pickup slots, destinations |
| Retailer account information |
| Delivery options and shipping label creation |
| Event subscription management and signature keys |
| Transport tracking updates |
| Asynchronous process status tracking (by ID, entity, or bulk) |
When not set, all toolsets are enabled. Invalid names are ignored; if all names are invalid, all toolsets are enabled as a fallback.
Voorbeelden
Eenmaal verbonden kun je in gewoon Nederlands vragen stellen:
"Toon al mijn openstaande bestellingen"
"Geef de details van bestelling 1234567890"
"Maak een aanbieding voor EAN 9781234567890 voor 19,99 EUR met 50 stuks op voorraad"
"Werk de voorraad bij voor aanbieding abc-123 naar 25 stuks"
"Verzend orderitems voor bestelling 1234567890 met transportcode TNT"
"Toon alle onbehandelde retouren"
"Wat is de commissie op EAN 9781234567890 bij 29,99 EUR?"
"Toon mijn facturen van januari 2025"
Example Usage
Once connected, you can interact with the bol.com API using natural language:
"List all my open orders"
"Show me the details of order 1234567890"
"Create an offer for EAN 9781234567890 at 19.99 EUR with 50 units in stock"
"Update the stock for offer abc-123 to 25 units"
"Ship order items for order 1234567890 with transport code TNT"
"Show me all unhandled returns"
"What's the commission on EAN 9781234567890 at 29.99 EUR?"
"List my invoices for January 2025"
Community
Support: SUPPORT.md
Security reporting: SECURITY.md
Contributing guidelines: CONTRIBUTING.md
Bug reports and feature requests: Issues
Development
# Install dependencies
pnpm install
# Run in development mode
pnpm dev
# Build for production
pnpm build
# Run tests
pnpm test
# Type check
pnpm typecheckProject Structure
src/
index.ts # Entry point (stdio transport)
server.ts # MCP server setup and toolset filtering
bol-client.ts # bol.com API HTTP client with OAuth2, caching, and retry
cache.ts # TTL-based in-memory response cache
types.ts # TypeScript interfaces for bol.com API v10
tool-result.ts # Error formatting with recovery suggestions
update-checker.ts # NPM update notifications
tools/
orders.ts # Order listing, details, and cancellation
offers.ts # Offer CRUD, pricing, stock, and export reports
shipments.ts # Shipment listing, details, creation, and invoices
returns.ts # Return listing, details, creation, and handling
invoices.ts # Invoice listing, details, and specifications
commissions.ts # Single and bulk commission calculation
products.ts # Product catalog, search, competing offers, ratings
product-content.ts # Catalog content management and recommendations
insights.ts # Offer insights, performance, ranks, forecasts
inventory.ts # LVB/FBB inventory management
promotions.ts # Promotion listing and products
replenishments.ts # FBB replenishment lifecycle
retailers.ts # Retailer account information
shipping-labels.ts # Delivery options and label creation
subscriptions.ts # Event subscription management
transports.ts # Transport tracking updates
process-status.ts # Asynchronous process status trackingRequirements
Node.js >= 20
A bol.com seller account with API credentials
License
MIT - see LICENSE for details.
Available Tools
76 toolscancel_order_itemCancel Order ItemADestructive
Cancel an order item by order item ID. Can be used to confirm a customer cancellation request or to cancel an item you cannot fulfil. Returns a process status — the cancellation is processed asynchronously. Always review the order with get_order before cancelling.
| Name | Required | Description | Default |
|---|---|---|---|
| orderItemId | Yes | The order item ID to cancel. | |
| reasonCode | Yes | The reason for cancellation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond annotations by stating that the cancellation is processed asynchronously and returns a process status. Annotations already indicate destructiveHint=true, which is consistent. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the main purpose. Each sentence adds unique value: purpose, use cases, and behavioral note with prerequisite. No wasted words.
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?
The description covers purpose, usage, behavioral notes (async processing), and a prerequisite (review order). Given the tool's simplicity (2 params) and lack of output schema, this is complete and leaves no major gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage with descriptions for both parameters. The description adds value by linking the reasonCode to the use cases (e.g., confirming cancellation vs unable to fulfill), giving semantic meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (cancel an order item) and the resource (order item by ID). It distinguishes itself from siblings like handle_return and other actions by specifying two specific use cases (confirming customer cancellation or canceling due to inability to fulfill).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool (for customer cancellation requests or when unable to fulfill) and advises reviewing the order with get_order before canceling. It lacks explicit when-not-to-use guidance but provides sufficient context for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_offerCreate OfferA
Create a new offer on bol.com. Requires EAN, condition, pricing (at least one bundle price with quantity 1), stock, and fulfilment method. Returns a process status — the offer is created asynchronously. Use get_process_status to check completion.
| Name | Required | Description | Default |
|---|---|---|---|
| ean | Yes | EAN (European Article Number) barcode of the product. | |
| condition | Yes | Product condition. | |
| reference | No | Your internal reference for this offer (max 100 chars). | |
| onHoldByRetailer | No | Put the offer on hold (not visible on bol.com). | |
| unknownProductTitle | No | Title for products not yet known by bol.com. | |
| economicOperatorId | No | Identifier referring to the Economic Operator entity for EU compliance. | |
| pricing | Yes | Pricing with bundle prices. | |
| stock | Yes | Stock information. | |
| fulfilment | Yes | Fulfilment method and delivery code. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the asynchronous nature ('Returns a process status — the offer is created asynchronously') and the follow-up action. Annotations provide basic hints but no contradiction; this adds significant behavioral context beyond 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?
Three well-structured sentences: purpose, requirements+async note, and follow-up. No redundancy; concise and 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?
Given the complexity (9 params, nested objects, async, no output schema), the description covers the key action, prerequisites, and async flow. It could mention the process status structure or error responses, but it's sufficient for use.
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 description adds limited value. It reiterates required fields and highlights the bundle price rule (quantity 1). This is useful but does not delve into parameter format or constraints beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a new offer on bol.com' and lists essential requirements (EAN, condition, pricing, stock, fulfilment), making the tool's purpose unambiguous. It distinguishes from sibling tools like update_offer or delete_offer by specifying creation.
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 explains when to use (creating an offer) and what prerequisites are needed, plus directs to get_process_status for checking completion. It implicitly contrasts with update/delete siblings, but lacks explicit '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.
create_product_contentCreate Product ContentB
Create or update product content for a given EAN. Provide product attributes such as title, description, brand, etc. Returns a process status — the content is created asynchronously. Use get_process_status to check completion.
| Name | Required | Description | Default |
|---|---|---|---|
| language | Yes | Language for the product content (e.g. 'nl', 'nl-BE', 'fr-BE'). | |
| attributes | Yes | Product attributes with id and values. | |
| assets | No | Product assets (images). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are present (readOnlyHint=false, destructiveHint=false, idempotentHint=false) and the description adds that the operation is asynchronous and returns a process status. However, it doesn't clarify side effects like whether existing content is overwritten or merged.
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?
Description is concise with two sentences. The first sentence states purpose; the second explains async nature and follow-up. No redundant 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?
The description references an EAN parameter that is not present in the input schema, leaving a critical gap. Additionally, no output schema or return structure details are provided beyond mentioning a process status.
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 mentions 'attributes such as title, description, brand' but doesn't add value beyond the schema. No additional parameter-specific guidance.
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?
Description clearly states the tool creates or updates product content for a given EAN using attributes and assets. However, it omits specifying that the EAN is not in the input schema, causing potential confusion.
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?
No explicit guidelines on when to use this tool versus alternatives. The only hint is to use get_process_status to check completion, but no when-not-to-use or comparison with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_replenishmentCreate FBB ReplenishmentA
Create a new FBB (Fulfilled by bol.com) replenishment. Provide a reference, delivery date, and lines with EAN and quantity. Returns a process status — the replenishment is created asynchronously. Use get_process_status to check completion.
| Name | Required | Description | Default |
|---|---|---|---|
| reference | Yes | Your reference for this replenishment. | |
| labelingByBol | Yes | Whether bol.com should label the products. | |
| numberOfLoadCarriers | Yes | Number of load carriers (1-66). | |
| deliveryInfo | No | Delivery information (required when not using pickup appointment). | |
| pickupAppointment | No | Pickup appointment details. | |
| lines | Yes | Lines with EAN and quantity to replenish. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=true. The description adds value by explicitly stating the async creation behavior and the return of a process status, which is not fully captured by 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 very concise: three sentences, front-loaded with the main purpose, then key inputs, then the async behavior and follow-up step. Every sentence adds value without unnecessary detail.
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?
The description covers the main points but lacks clarification on the alternative between deliveryInfo and pickupAppointment, which is hinted in the schema but not in the description. For a complex tool with nested objects and no output schema, this is a moderate 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%, so the schema already describes all parameters well. The description summarizes a few key parameters ('reference, delivery date, lines') but adds no new meaning beyond the schema, and it omits mention of the optional deliveryInfo vs pickupAppointment choice.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('Create a new FBB replenishment'), the resource ('replenishment'), and the key inputs ('reference, delivery date, lines with EAN and quantity'). It distinguishes itself from sibling tools like update_replenishment by focusing on creation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context by mentioning the asynchronous nature and directing the user to use get_process_status to check completion. However, it does not explicitly tell when to choose this tool over alternatives like update_replenishment or other create tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_returnCreate ReturnA
Create a return and automatically handle it with the provided handling result. When successfully created, the resulting return ID is provided in the process status. Returns a process status — the return is created asynchronously.
| Name | Required | Description | Default |
|---|---|---|---|
| orderItemId | Yes | The order item ID to create a return for. | |
| quantityReturned | Yes | The quantity of items returned. | |
| handlingResult | Yes | How the return should be handled. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate non-destructive and non-idempotent, but do not cover asynchronous behavior or the return ID in process status. The description adds these important behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loads the action, and has no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema, the description adequately explains the return value (process status) and asynchronous nature, though it could mention potential failure modes.
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?
All three parameters have descriptions in the schema (100% coverage), so the description adds little new semantic meaning beyond what is already structured.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a return and auto-handles it, with a specific mention of returning a process status and asynchronous creation. It distinguishes from sibling 'handle_return' by focusing on creation.
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 use for creating returns but does not explicitly provide when-to-use guidance or contrast with alternatives like 'handle_return'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_shipmentCreate ShipmentA
Create a shipment for one or more order items. You must provide the order item IDs and optionally transport details (transporter code and track & trace). Returns a process status — the shipment is created asynchronously. Use get_process_status to check completion. Always verify the order item IDs with get_order before creating a shipment.
| Name | Required | Description | Default |
|---|---|---|---|
| orderItems | Yes | Order items to include in the shipment. | |
| shipmentReference | No | Your reference for this shipment. | |
| shippingLabelId | No | Shipping label ID if using bol.com shipping labels. | |
| transport | No | Transport details. Required for FBR shipments. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds beyond annotations: it states the tool returns a process status and that shipment creation is asynchronous. It references get_process_status for completion. No contradictions with annotations (readOnlyHint=false, destructiveHint=false).
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 sentences that front-load the main action and immediately follow with key requirements and usage notes. No redundant information. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers essential aspects: required parameters, optional transport, async behavior, verification step. Could explain FBR meaning, but not critical. Without an output schema, the description sufficiently sets expectations for return value and next steps.
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 baseline is 3. The description adds an example of transporter codes and reiterates key points like 'omit quantity to ship full ordered quantity'. It provides context about transport being required for FBR shipments, adding value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Create), the resource (shipment), and the scope (for one or more order items). It distinguishes this tool from siblings like create_return, create_replenishment, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear guidance: must provide order item IDs, optionally transport details. Advises to verify order item IDs with get_order before using. Mentions asynchronous nature and checking process status. Could explicitly mention when not to use, but current guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_shipping_labelCreate Shipping LabelA
Create a shipping label for one or more order items. Requires a shippingLabelOfferId from get_delivery_options. Returns a process status — the label is created asynchronously. Use get_process_status to check completion.
| Name | Required | Description | Default |
|---|---|---|---|
| orderItems | Yes | Order items to create the shipping label for. | |
| shippingLabelOfferId | Yes | The shipping label offer ID from get_delivery_options. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond annotations by revealing asynchronous behavior and recommending a follow-up tool (get_process_status). Annotations already indicate non-read-only, non-destructive, non-idempotent, and open-world hints. The description does not contradict annotations and provides additional context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the core action, and every sentence conveys necessary information without redundancy. It is clear and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 2-parameter tool with no output schema, the description covers the essential flow: purpose, prerequisite, async behavior, and follow-up. Missing details like error handling or process status content, but overall adequate for an agent to invoke 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 coverage is 100%, so both parameters are well-described in the schema. The description only adds that shippingLabelOfferId comes from get_delivery_options, which is helpful but minimal. With high schema coverage, baseline is 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 explicitly states the action ('create a shipping label'), the target resource ('shipping label for one or more order items'), and the prerequisite (shippingLabelOfferId from get_delivery_options). It clearly distinguishes from sibling tools like get_shipping_label and get_process_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: it requires a shippingLabelOfferId from get_delivery_options, and the label is created asynchronously, so use get_process_status to check completion. It does not explicitly state when not to use this tool, but the context is sufficient for an AI agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_subscriptionCreate SubscriptionA
Create a new event subscription. Subscribe to events like PROCESS_STATUS, SHIPMENT, PRICE_STAR_BOUNDARY, COMPETING_OFFER, OFFER_FOR_SALE, OFFER_NOT_FOR_SALE. Supports WEBHOOK, GCP_PUBSUB, and AWS_SQS subscription types.
| Name | Required | Description | Default |
|---|---|---|---|
| resources | Yes | Event types to subscribe to. | |
| url | Yes | The endpoint URL for receiving notifications. | |
| subscriptionType | Yes | Subscription type: WEBHOOK, GCP_PUBSUB, or AWS_SQS. | |
| enabled | No | Whether the subscription is enabled. Defaults to true. | |
| identity | No | AWS ARN for AWS_SQS subscriptions. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a mutative operation (readOnlyHint=false) and open world hint. The description adds the list of event types and subscription types but does not disclose behavioral details such as permission requirements, rate limits, or side effects beyond creation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, and contains no redundant information. Every word contributes to understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 parameters, 3 required, no output schema), the description covers all key aspects. However, it does not mention post-creation steps like testing, which a sibling tool handles.
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 descriptions for all parameters. The description repeats some enum values but does not add significant new meaning beyond the schema. 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?
The description clearly states the tool's action ('Create a new event subscription') and lists the specific event types and subscription types supported. This distinguishes it from sibling tools like delete_subscription, update_subscription, and list_subscriptions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on what events and subscription types are supported, but does not explicitly specify when to use this tool versus alternatives like test_subscription. However, the purpose is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_offerDelete OfferADestructive
Delete an offer from bol.com. This permanently removes the offer — it cannot be undone. Always confirm with the user before calling this tool.
| Name | Required | Description | Default |
|---|---|---|---|
| offerId | Yes | The bol.com offer ID to delete. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly states the destructive nature and irreversibility ('permanently removes the offer — it cannot be undone'), which aligns with the destructiveHint=true annotation and adds valuable behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action, followed by irreversibility warning and user confirmation instruction. Every sentence adds value 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?
For a simple single-parameter destructive tool, the description covers purpose, effect, and usage caution. No output schema needed, and annotations are consistent. Complete and effective.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides a description for offerId ('The bol.com offer ID to delete'), and the tool description does not add additional meaning beyond that. With 100% schema coverage, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Delete an offer from bol.com', specifying the action (delete) and resource (offer), distinguishing it from siblings like update_offer or create_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?
While it does not explicitly compare to alternatives, it instructs to 'Always confirm with the user before calling this tool', implying caution and appropriate usage context. It could mention when to use vs other offer-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_subscriptionDelete SubscriptionADestructive
Delete an event subscription. This permanently removes the subscription — it cannot be undone. Always confirm with the user before calling this tool.
| Name | Required | Description | Default |
|---|---|---|---|
| subscriptionId | Yes | The subscription ID to delete. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide destructiveHint=true and readOnlyHint=false. The description adds the key behavioral trait that the deletion is permanent and cannot be undone, which goes beyond annotations and is critical for safe invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main action and then the permanent nature and warning. Every sentence adds value without redundancy, making it concise and well-structured.
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 single-parameter, no-output-schema destructive tool, the description covers the purpose, permanence, and user-confirmation requirement. It does not specify the return value (void? confirmation message?), but this is acceptable for a delete operation. The description is complete enough for its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for the subscriptionId parameter (described as 'The subscription ID to delete'). The description does not add any additional parameter semantics beyond what the schema already provides, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Delete an event subscription' with a specific verb and resource, and it distinguishes itself from siblings like create_subscription, update_subscription, and list_subscriptions by focusing on deletion and permanence.
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 includes an explicit guideline: 'Always confirm with the user before calling this tool,' which tells the agent when to use it (only after confirmation). It does not explicitly mention alternatives or when not to use, but the requirement is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_bulk_commissionsGet Bulk CommissionsARead-only
Get commissions and possible reductions for multiple products in bulk. Provide EAN, unit price, and optionally condition for each product.
| Name | Required | Description | Default |
|---|---|---|---|
| commissionQueries | Yes | List of commission queries (max 100). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint and openWorldHint, so the description carries low burden. It adds that the tool returns 'commissions and possible reductions' but omits details like response structure, performance, or side effects. No contradictions.
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 sentences, no redundant words. The purpose and required inputs are conveyed efficiently. Ideal length for a straightforward tool.
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 bulk retrieval tool with one well-defined array parameter, the description covers the core use case. Lack of output schema is mitigated by mentioning return type (commissions and reductions). Minor gap: no details on rate calculation logic.
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 description repeats parameter info (EAN, unit price, condition) already in the schema. It adds no significant new meaning beyond the structured fields. Baseline score 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 clearly states the verb 'Get' and the resource 'commissions and possible reductions' for multiple products in bulk, distinguishing it from single-product 'get_commission' and rate-focused 'get_commission_rates'.
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 tells users to provide EAN, unit price, and optionally condition, but does not explicitly state when to use this bulk tool versus alternatives like 'get_commission' for single products. The context is implied but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_catalog_productGet Catalog ProductARead-only
Get catalog product details by EAN, including product attributes, titles, and other catalog information.
| Name | Required | Description | Default |
|---|---|---|---|
| ean | Yes | EAN (European Article Number) barcode of the product. | |
| language | No | Language for product content. Defaults to nl. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description does not need to emphasize safety. It adds value by specifying the inputs (EAN) and outputs (attributes, titles, other info), giving the agent a clear behavioral expectation beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the core function. Every word serves a purpose, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides enough context for a simple get-by-key tool: it names the identifier and the types of data returned. While an output schema would be ideal, the description compensates by listing key fields. The lack of an output schema is noted but does not severely hinder completeness for this low-complexity 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?
Both parameters are fully described in the schema (100% coverage). The description only paraphrases the purpose of the EAN parameter without adding new meaning. Therefore, it meets the baseline but does not exceed it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (Get), resource (catalog product), and key identification method (by EAN). It also enumerates returned content (product attributes, titles, other catalog info). This distinguishes it from sibling tools like get_offer or get_product_list, which target different resources.
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 does not provide explicit guidance on when to use this tool versus alternatives. While the sibling list includes many get_* tools, there is no explanation of trade-offs or typical use cases, leaving the agent to infer context from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_chunk_recommendationsGet Product Content RecommendationsCRead-only
Get product content recommendations (chunk recommendations) for a given EAN. Provides suggestions for improving product content.
| Name | Required | Description | Default |
|---|---|---|---|
| attributes | Yes | Product attributes to get chunk recommendations for. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly and openWorld hints. Description adds no behavioral context beyond a vague 'suggestions for improving product content'. No disclosure of output format, pagination, or potential changes.
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 sentences, but the first sentence nearly repeats the title. While short, it could be more information-dense and 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?
No output schema exists, but the description fails to explain what a 'chunk recommendation' is or what format the suggestions take. With a misleading mention of EAN, the description is incomplete for an agent to use 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?
Description coverage of schema is 100% but the description introduces 'EAN' which is not in the schema, potentially misleading the agent. It does not add useful meaning beyond the schema's own description.
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 it provides product content recommendations, but inaccurately mentions 'for a given EAN' while the schema requires 'attributes'. This undermines clarity for an agent comparing with schema.
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?
No guidance on when to use this tool versus alternatives among many sibling get_ tools. No conditions, prerequisites, or exclusions provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_commissionGet CommissionARead-only
Get the commission for a product based on EAN, condition, and unit price. Returns the fixed amount, percentage, total cost, and any active reductions.
| Name | Required | Description | Default |
|---|---|---|---|
| ean | Yes | EAN (European Article Number) barcode of the product. | |
| condition | No | Product condition. Defaults to NEW. | |
| unitPrice | Yes | Unit price of the product with two decimals precision. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and openWorldHint=true. The description adds behavioral context by listing the specific return components (fixed amount, percentage, total cost, active reductions), which aligns with and expands on annotations. No contradictions.
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?
Single sentence front-loads the purpose and key parameters, followed by output summary. No unnecessary words. Highly concise and structured.
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 3 parameters, no output schema, and moderate annotations, the description covers the essential: inputs, outputs, and read-only nature. It lacks mention of error handling or default condition, but generally sufficient for reliable invocation.
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 good parameter descriptions. The description reaffirms the inputs (EAN, condition, unit price) but adds no new semantic detail beyond the schema. 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?
The description explicitly states 'Get the commission for a product' with specific inputs (EAN, condition, unit price) and outputs (fixed amount, percentage, total cost, active reductions). It clearly distinguishes from sibling tools like get_bulk_commissions and get_commission_rates by focusing on a single product.
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 usage for single product commission lookup but lacks explicit guidance on when to use this vs alternatives (e.g., get_bulk_commissions for batch). No when-not-to-use or prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_commission_ratesGet Commission Rates (BETA)ARead-only
Get a list of all commission rates by EAN. Returns commission rate tables with price ranges and conditions. This is a BETA endpoint.
| Name | Required | Description | Default |
|---|---|---|---|
| products | Yes | List of products by EAN (max 100). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and openWorldHint=true. The description adds that it returns 'commission rate tables with price ranges and conditions', providing extra context about the response format. No contradictions.
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 concise sentences: one for the action and one for the output and beta status. No wasted words, information is 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 one parameter and full schema coverage, the description adequately explains the input (by EAN) and output (rate tables with details). The beta status is noted. For a simple read tool, it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% coverage, and the description mentions 'by EAN' which aligns with the 'products' parameter. The description adds no new meaning beyond what the schema provides, but the baseline is met.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves commission rates by EAN, specifying the verb 'get' and the resource 'commission rates'. It distinguishes from siblings like 'get_commission' and 'get_bulk_commissions' by focusing on rate tables by EAN.
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 does not provide guidance on when to use this tool versus alternatives such as 'get_commission' or 'get_bulk_commissions'. It only states it is a BETA endpoint, lacking explicit when-to-use or when-not-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_competing_offersGet Competing OffersARead-only
Get competing offers for a product by EAN. Shows offer details including pricing, condition, and seller information.
| Name | Required | Description | Default |
|---|---|---|---|
| ean | Yes | EAN (European Article Number) barcode of the product. | |
| page | No | Page number (default 1). | |
| countryCode | No | Country code. | |
| bestOfferOnly | No | Only return the best offer. | |
| condition | No | Filter by product condition. | |
| includeRefurbishedConditions | No | Whether to include refurbished conditions in the results. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and openWorldHint=true, so the description adds limited behavioral context beyond stating the return details. It does not disclose potential issues like pagination limits, data latency, or how filtering parameters affect behavior. The description aligns with annotations but doesn't add significant transparency.
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 sentence that conveys core purpose and output details without unnecessary words. It is front-loaded with the primary action. However, it could be slightly more structured (e.g., mentioning pagination) without adding length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description partially compensates by mentioning return fields (pricing, condition, seller information). However, it does not explain how parameters like bestOfferOnly and condition interact, nor does it describe pagination behavior. For a tool with 6 parameters and many siblings, more context would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of parameters with descriptions (e.g., ean, page, countryCode, condition). The description does not add new semantic meaning beyond the schema, but it does not need to since schema descriptions are adequate. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Get), resource (competing offers), and identifier (by EAN). It also lists the type of details returned (pricing, condition, seller information), making the tool's purpose unambiguous. It is distinct from sibling tools like get_offer which retrieves a single 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?
The description does not provide explicit guidance on when to use this tool versus alternatives, nor does it mention when not to use it. While the purpose is clear, the presence of many sibling tools (e.g., get_offer, get_catalog_product) could benefit from context on distinguishing use cases. Usage is implied but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_delivery_datesGet FBB Delivery DatesARead-only
Get available delivery dates for FBB (Fulfilled by bol.com) replenishments.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and open world. Description adds no behavioral detail beyond verb and resource.
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?
Single clear sentence, no wasted words. Front-loaded with 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?
Sufficient for a simple 0-param read-only tool. Could differentiate further from siblings but not necessary.
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?
No parameters; baseline 4 applies. Description adds no param info but schema coverage is 100%.
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?
Clearly states verb 'get', resource 'delivery dates', and context 'FBB replenishments'. Distinct from siblings like 'get_delivery_options'.
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?
No explicit guidance on when to use or when to avoid. Does not mention alternatives or conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_delivery_optionsGet Delivery OptionsARead-only
Get available delivery and shipping options for one or more order items. Shows available shipping methods with prices. Use the shippingLabelOfferId from the results when creating a shipping label.
| Name | Required | Description | Default |
|---|---|---|---|
| orderItems | Yes | Order items to get delivery options for. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds minimal behavioral context beyond stating it shows available options and hints at downstream use. No extra disclosure of side effects, rate limits, or data freshness.
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 short sentences, front-loaded with the core purpose, no wasted words. Every sentence adds value.
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?
The description adequately conveys what the tool returns (shipping methods with prices) and how to use the result (shippingLabelOfferId). Given the lack of output schema and simple parameters, this is reasonably 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%, so the schema already documents the sole parameter. The description does not add new semantic information beyond restating 'one or more order items'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets delivery options for order items and shows shipping methods with prices. It distinguishes itself among siblings by its specific resource and action.
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?
While the description hints at when to use (before creating a shipping label), it does not explicitly state when not to use or mention alternatives like get_delivery_dates. Implicit usage but no exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_inventoryGet InventoryARead-only
Get LVB/FBB inventory list from bol.com. Returns inventory items with EAN, title, regular stock, and graded stock. Filter by quantity range, stock level, state, or search by EAN/product title.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (1-based). | |
| quantity | No | Filter by quantity range, e.g. "0-10", "10-20". | |
| stock | No | Filter by stock level: SUFFICIENT or INSUFFICIENT. | |
| state | No | Filter by inventory state: REGULAR or GRADED. | |
| query | No | Filter by EAN or product title. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true. Description adds that inventory is from bol.com and returns specific fields, but does not disclose additional behavioral traits like pagination, rate limits, or list mutability.
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 sentences: first states core function and return fields, second lists filter capabilities. No waste, front-loaded with key 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, description specifies return fields (EAN, title, regular stock, graded stock), but does not mention pagination, total counts, or response format, leaving some gaps for an agent.
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 covers 100% of parameters with descriptions. The tool description lists filters but adds no new meaning beyond what the schema provides (e.g., quantity filter example is already in 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?
Description clearly states the tool retrieves an inventory list from bol.com, specifying it returns EAN, title, regular stock, and graded stock. This distinguishes it from other get_ tools in siblings which target orders, shipments, etc.
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?
Description lists filtering options (quantity range, stock level, state, search), implying when to use each filter, but does not explicitly state when to use this tool over alternatives or provide exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_invoiceGet Invoice DetailsARead-only
Get detailed information about a specific invoice.
| Name | Required | Description | Default |
|---|---|---|---|
| invoiceId | Yes | The bol.com invoice ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and openWorldHint=true. The description adds no behavioral traits beyond these annotations, such as authentication requirements or response characteristics. 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 a single concise sentence that efficiently conveys the tool's purpose without any unnecessary words or repetition.
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 tool with one parameter, annotations present, and no output schema, the description is largely sufficient. It could hint at the richness of the response given the openWorldHint, but overall it fits the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage (the parameter is described as 'The bol.com invoice ID.'). The description does not add any semantic information beyond what the schema 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 clearly states the verb 'Get', the resource 'invoice', and specifies 'specific invoice', which distinguishes it from sibling tools like list_invoices that return a list of invoices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as list_invoices or get_invoice_specification. It does not mention any prerequisites or contextual hints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_invoice_requestsGet Invoice RequestsARead-only
Get a list of invoice requests initiated by customers for shipments. Filter by shipment ID or state (OPEN, UPLOAD_ERROR, ALL).
| Name | Required | Description | Default |
|---|---|---|---|
| shipmentId | No | Filter by shipment ID. | |
| page | No | Page number (1-based). | |
| state | No | Filter by invoice request state: OPEN (requires action), UPLOAD_ERROR, or ALL. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description adds value by specifying that requests are 'initiated by customers'. It does not contradict annotations. However, it does not disclose further behavioral traits such as pagination behavior or rate limits. With annotations covering safety, this is acceptable but not exceptional.
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 sentence, front-loading the purpose and including filters. Every word is necessary; no fluff. Highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple nature of the tool (3 optional params, no output schema), the description adequately covers what the tool does and how to filter. It does not describe the response structure, but for a list tool, the return is somewhat implied. Minor gap but overall sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds meaning beyond schema by explaining the state enum values: 'OPEN (requires action)', 'UPLOAD_ERROR', or 'ALL'. This provides helpful context for choosing filter values.
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 it gets a list of invoice requests initiated by customers for shipments, with filtering options. The verb 'get a list' and specific noun 'invoice requests' make the purpose unambiguous. It distinguishes from sibling tools like 'get_invoice' and 'upload_shipment_invoice'.
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 this tool—when needing to retrieve invoice requests with optional filters by shipment ID or state. However, it does not explicitly mention alternatives or when not to use it, so it lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_invoice_specificationGet Invoice SpecificationARead-only
Get an invoice specification with a paginated list of its transactions. The specification contains detailed line items for the invoice.
| Name | Required | Description | Default |
|---|---|---|---|
| invoiceId | Yes | The bol.com invoice ID. | |
| page | No | Page number (max 25,000 lines per page). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint and openWorldHint. The description adds that transactions are paginated, but does not disclose rate limits, data size implications, or other behavioral traits beyond what annotations already cover.
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 sentences, immediately states purpose, no redundant information. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, no output schema), the description is complete enough. It explains what the specification contains (detailed line items) and mentions pagination. Minor improvement could be noting that it returns a list.
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 description adds limited meaning beyond schema. It reiterates 'paginated list' for page parameter but does not provide additional semantics for invoiceId. 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?
The description clearly states it retrieves an invoice specification with a paginated list of transactions. It uses specific verb 'get' and resource 'invoice specification', distinguishing it from sibling 'get_invoice' which likely gets the invoice header.
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 that for detailed line items, use this tool, but does not explicitly state when to use it over alternatives like 'get_invoice'. No exclusion criteria or context for when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_load_carrier_labelsGet Load Carrier LabelsARead-only
Get load carrier labels for a replenishment. Returns label data (PDF).
| Name | Required | Description | Default |
|---|---|---|---|
| replenishmentId | Yes | The replenishment ID. | |
| labelType | No | Label type: WAREHOUSE or TRANSPORT. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so no additional safety disclosure needed. The description adds value by specifying the return format (PDF), which is beyond 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?
Single sentence of 8 words, perfectly front-loaded with the core action and value-add (returns PDF). No wasted words.
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 good schema and annotations, the description suffices for a simple retrieval tool. It lacks details like whether labels cover all load carriers, but completeness is adequate.
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 both parameters have descriptions. The description does not add further meaning beyond the schema, so baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get', the resource 'load carrier labels', and the context 'for a replenishment', distinguishing it from siblings like get_replenishment or get_shipping_label.
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?
No guidance on when or when not to use this tool versus alternatives among many sibling get tools, nor any prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_offerGet Offer DetailsARead-only
Get detailed information about a specific offer including EAN, pricing, stock, fulfilment method, and condition.
| Name | Required | Description | Default |
|---|---|---|---|
| offerId | Yes | The bol.com offer ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and openWorldHint=true, signaling safe read operation. Description adds value by specifying the data fields returned (EAN, pricing, stock, etc.), which goes beyond the annotation hints.
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?
Single sentence, front-loaded with action and resource, lists key fields. No redundancy or wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a single parameter and no output schema, the description adequately explains what the tool returns. Could mention error handling or that it returns full details, but overall sufficient for its simplicity.
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% (one parameter with a description). The tool description does not add additional meaning to the parameter beyond the schema's description of 'offerId'. 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?
Description clearly states the tool retrieves detailed information about a specific offer, listing specific fields like EAN, pricing, stock, fulfilment method, and condition. It distinguishes from siblings such as get_competing_offers or get_offer_insights.
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?
Description provides clear context (retrieving a specific offer) but does not include when to use this tool versus alternatives, nor any exclusions or prerequisites. No explicit guidance on when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_offer_exportGet Offer ExportARead-only
Retrieve an offer export file by report ID. The report ID is obtained from the process status after requesting an export.
| Name | Required | Description | Default |
|---|---|---|---|
| reportId | Yes | The report ID from the offer export request. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint. The description adds that it retrieves a file, which aligns with readOnlyHint. No contradictions; the description adds workflow context but no new behavioral traits beyond what annotations imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short, front-loaded sentences with no wasted words. It efficiently communicates purpose and source of the input.
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?
The description lacks details about the return format (e.g., file content vs. download link, possible error conditions) despite no output schema being present. This omission leaves the agent uncertain about what to expect from the 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?
The schema covers the parameter with a basic description. The tool description adds value by stating that the report ID is obtained from the process status after requesting an export, which gives context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves an offer export file using a report ID, distinguishing it from sibling tools like request_offer_export (which creates the export) and other get tools. It specifies the key resource and input.
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 explains that the report ID comes from the process status after requesting an export, providing clear context on when to use this tool. However, it does not explicitly exclude usage in other scenarios (e.g., before export completion) or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_offer_insightsGet Offer InsightsARead-only
Get offer visit and buy box insights for a specific offer. Returns data like product visits or buy box percentage over the specified time period.
| Name | Required | Description | Default |
|---|---|---|---|
| offerId | Yes | The bol.com offer ID. | |
| period | Yes | The time period granularity. | |
| numberOfPeriods | Yes | Number of periods to retrieve. | |
| name | Yes | The type of insight to retrieve. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint and openWorldHint. The description adds that data is returned 'over the specified time period', which provides some behavioral context but does not disclose potential side effects, rate limits, or data freshness.
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 no unnecessary words. It efficiently conveys the tool's purpose and key details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 required parameters and no output schema, the description provides a basic idea of return values but lacks specifics on output format (e.g., single value vs. array). Annotations (readOnlyHint, openWorldHint) partly compensate, but overall it could be more 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%, so the baseline is 3. The description paraphrases some parameter values (e.g., 'product visits or buy box percentage') but does not add new semantic details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'offer insights', and lists the specific data types (product visits, buy box percentage). It effectively distinguishes from sibling tools like get_offer and get_offer_export.
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 does not provide any guidance on when to use this tool versus alternatives, nor does it mention any prerequisites or exclusions. It only describes the tool's function without context cues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_orderGet Order DetailsARead-only
Get detailed information about a specific order including order items, shipping details, billing details, and fulfilment status.
| Name | Required | Description | Default |
|---|---|---|---|
| orderId | Yes | The bol.com order ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint and openWorldHint, so description doesn't need to restate safety. However, description adds no behavioral details beyond schema (e.g., no mention of authorization, response format, or potential errors). This is adequate but not enhanced.
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?
Single sentence directly states purpose and scope without redundant words. Efficient and well-structured for quick comprehension.
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 read tool with one parameter and no output schema, description adequately covers what details are returned. However, it omits mention of error cases or required permissions, which could be helpful. Still, it is mostly complete given low complexity.
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?
Only one parameter (orderId) with schema description 'The bol.com order ID.' Description does not add extra semantics beyond the schema, so baseline score applies with 100% schema coverage.
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?
Description clearly states the tool retrieves detailed order information, listing specific components (items, shipping, billing, fulfilment). It uniquely identifies the resource as an order, distinguishing it from sibling tools like get_shipment or 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?
No explicit guidance on when to use this tool versus alternatives (e.g., list_orders for multiple orders, get_shipment for shipments). Context implies usage for a single order, but lacks direct when-to-use instructions or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_performance_indicatorsGet Performance IndicatorsARead-only
Get retailer performance indicators for a specific week. Returns scores and details for metrics like cancellations, fulfilment, phone availability, etc.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The performance indicator to retrieve. | |
| year | Yes | The year (e.g. '2024'). | |
| week | Yes | The week number (e.g. '10'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it as read-only and open-world. The description adds that it returns scores and details, but doesn't disclose additional behavioral traits like pagination, data freshness, or authorization requirements. With annotations covering the main safety profile, the description adds minimal new behavioral insight.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that immediately conveys the purpose and scope. No redundant or unnecessary words.
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 read tool with all parameters documented in the schema and annotations covering readOnlyHint, the description sufficiently explains what the tool does. It could mention output format or lack thereof, but completeness is adequate given the tool's simplicity.
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% (all parameters fully described with types and constraints). The description adds no additional meaning beyond listing example metrics, which are already in the enum values. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Get), resource (retailer performance indicators), and context (for a specific week). It distinguishes from sibling tools like get_commission or get_offer because it is the only tool focused on performance metrics.
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?
No guidance is provided on when to use this tool versus alternatives, nor any conditions or exclusions. The user must infer from the name and description that it's for retrieving performance data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pick_listGet Pick ListARead-only
Get the pick list for a replenishment. Returns pick list data (PDF).
| Name | Required | Description | Default |
|---|---|---|---|
| replenishmentId | Yes | The replenishment ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds the return format (PDF) but does not provide additional behavioral context such as error conditions or authentication needs. It does not contradict 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?
Two concise sentences with no wasted words. The purpose is front-loaded and the return format is immediately stated. Every sentence adds value.
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 single-parameter retrieval tool, the description covers the action and output. It might benefit from mentioning that the pick list is generated after a replenishment status, but it is adequate.
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 the parameter 'replenishmentId' described as 'The replenishment ID.' The description does not add any extra meaning or context about the parameter, so it meets the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'get' and the resource 'pick list for a replenishment', and specifies that the output is PDF. This distinguishes it from sibling tools like get_replenishment which would return replenishment data.
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 does not explicitly state when to use this tool versus alternatives. While the purpose is clear, there is no guidance on prerequisites or scenarios where this tool is appropriate versus other get_* tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pickup_time_slotsGet Pickup Time SlotsARead-only
Get available pickup time slots for a given address and number of load carriers.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Pickup address. | |
| numberOfLoadCarriers | Yes | Number of load carriers (1-66). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the main behavioral traits are covered. The description adds that the tool returns 'available pickup time slots' but does not disclose other behaviors like authentication needs, rate limits, or how results are structured. With annotations present, the description provides minimal extra value.
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 sentence that efficiently conveys the purpose without any extraneous words. It is front-loaded and perfectly concise.
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?
The tool has two parameters (address object and numberOfLoadCarriers) with full schema coverage. The description is sufficient for a straightforward read-only query, but could be slightly improved by hinting at the structure of the response (e.g., list of time slots). Overall, it is complete enough for its simplicity.
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% with all parameters described in the input schema. The description does not add any additional meaning or context beyond what the schema already provides, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'available pickup time slots', with constraints 'for a given address and number of load carriers'. It distinguishes itself from sibling tools which are mostly about other resources like orders, offers, or shipments.
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 does not provide explicit guidance on when to use this tool versus alternatives, nor does it mention any prerequisites, scenarios, or exclusions. Usage is implied but not clarified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_price_star_boundariesGet Price Star BoundariesARead-only
Get the price star boundaries for a product by EAN. Shows the price ranges that correspond to different star ratings.
| Name | Required | Description | Default |
|---|---|---|---|
| ean | Yes | EAN (European Article Number) barcode of the product. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the description need not repeat that. It adds that the tool shows price ranges, which is basic behavioral context. However, no additional traits (e.g., data freshness, dependencies) are mentioned, so the description adds limited value beyond 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?
Two succinct sentences with no unnecessary words. All content is relevant and front-loaded: the first sentence states the action and input, the second explains the output. Every sentence serves a 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?
Given the tool's simplicity (one required parameter, no output schema, and annotations indicating safe read), the description sufficiently explains what it does and returns. It could mention if the range is inclusive or the format, but it's not essential for correct invocation.
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 description only mentions 'by EAN', which restates the schema's parameter description. It does not add format details, constraints, or examples beyond what the schema provides, so 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?
The description uses specific verbs and resources: 'Get price star boundaries for a product by EAN' and explains the output ('price ranges that correspond to different star ratings'). It clearly distinguishes from sibling tools like get_product_ratings or get_commission by focusing on price ranges for star ratings.
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 does not explicitly state when to use this tool versus alternatives (e.g., get_product_ratings) or provide any context about when not to use it. While the purpose is clear, there is no guidance for an agent to differentiate usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_process_statusGet Process StatusARead-onlyIdempotent
Get the status of an asynchronous process by its process status ID. All PUT/POST/DELETE requests return a process status ID that can be used here to check completion.
| Name | Required | Description | Default |
|---|---|---|---|
| processStatusId | Yes | The process status ID returned by a previous request. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, non-destructive, idempotent, and open-world traits. The description adds valuable context about the source of the process ID and its role in checking completion.
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 sentences efficiently convey purpose and usage without redundancy. Information is front-loaded and each sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with one parameter and no output schema, the description is mostly complete. It could mention what the response contains (e.g., status states), but the tool name and purpose imply the return value.
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 describes the parameter well. The description adds meaning by linking the parameter to previous mutation requests, enhancing understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves the status of an asynchronous process using a process status ID, distinguishing it from sibling tools like get_process_status_bulk or get_process_status_by_entity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs that the process status ID comes from PUT/POST/DELETE requests, guiding when to use this tool. However, it does not mention alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_process_status_bulkGet Process Status (Bulk)ARead-onlyIdempotent
Get the status of multiple asynchronous processes by their process status IDs. Up to 1000 IDs can be queried in a single request.
| Name | Required | Description | Default |
|---|---|---|---|
| processStatusIds | Yes | Array of process status IDs to look up (max 1000). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true, indicating a safe, idempotent read operation. The description adds the batch limit (1000) but no further behavioral traits. No contradiction.
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 sentence that is concise, front-loaded with the action, and contains no unnecessary words. It efficiently conveys the purpose and key constraint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple input (1 param) and rich annotations, the description covers the main purpose and constraint. Missing details on response format, but for such a straightforward tool it is adequate.
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% for the single parameter 'processStatusIds'. The description does not add meaning beyond the schema's description (array of IDs, max 1000). 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?
The description clearly states the action (Get), resource (status of multiple asynchronous processes), and constraints (by process status IDs, up to 1000). It distinguishes from siblings like 'get_process_status' (singular) and 'get_process_status_by_entity'.
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 mentions a key constraint (up to 1000 IDs), implying use for bulk queries. It does not explicitly state when not to use or contrast with alternatives, but the sibling list provides context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_process_status_by_entityGet Process Status by EntityARead-onlyIdempotent
Get the status of asynchronous processes by entity ID and event type. The entity ID can be an order item ID, transport ID, return number, replenishment ID, etc. Results are returned in descending order.
| Name | Required | Description | Default |
|---|---|---|---|
| entityId | Yes | The entity ID (e.g. order item ID, transport ID, return number). | |
| eventType | Yes | The event type associated with the entity. | |
| page | No | Page number (50 items per page). Defaults to 1. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and idempotent behavior. Description adds that results are in descending order, but no additional context on side effects or other behaviors beyond what annotations provide.
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 sentences, front-loaded with main purpose. No redundant information; each word adds value.
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 three-parameter read tool with no output schema, the description adequately covers purpose, parameters, and ordering. Lacks pagination details but they are in 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 coverage is 100% with descriptions for all parameters. Description adds example entity IDs and implies event type enum, but does not significantly extend beyond schema details.
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?
Clearly states the tool retrieves process status by entity ID and event type, with examples of valid entity IDs, distinguishing it from sibling tools like get_process_status and get_process_status_bulk.
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?
No explicit guidance on when to use this tool over siblings (e.g., get_process_status, get_process_status_bulk). Does not mention when not to use or context for choosing this specific endpoint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_product_assetsGet Product AssetsBRead-only
Get product assets (images) for a product by EAN. Optionally filter by usage type.
| Name | Required | Description | Default |
|---|---|---|---|
| ean | Yes | EAN (European Article Number) barcode of the product. | |
| usage | No | Filter assets by usage type. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true. The description adds that assets are images and filtering by usage type is possible, but it does not disclose additional behavioral traits like pagination, rate limits, or authorization requirements.
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, lean sentence that conveys the essential information without any superfluous words. It is effectively 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?
The tool is simple with 2 parameters and no output schema. The description partially compensates by indicating the resource type (images), but it does not describe the return format (e.g., list of URLs or metadata). For a read operation without an output schema, the description could be more 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%, so the baseline is 3. The description's mention of 'Optionally filter by usage type' is redundant with the schema's enum and description. No extra semantic value is added beyond what the schema 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 clearly states the verb 'Get', the resource 'product assets (images)', and the key parameter 'by EAN' with an optional filter. It distinguishes the tool from siblings that operate on other product-related entities like catalog or 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?
No guidance is provided on when to use this tool versus alternatives such as get_catalog_product or other get tools. The description does not mention scenarios where it would be inappropriate or suggest sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_product_categoriesGet Product CategoriesARead-only
Get the list of product categories available on bol.com. Returns categories with their IDs and names.
| Name | Required | Description | Default |
|---|---|---|---|
| language | No | Language for the category names. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, covering safety. Description adds that it returns IDs and names, which is useful but minimal beyond 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?
Two sentences, front-loaded with action and resource. No wasted words.
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 list tool with no output schema, the description covers what returns (IDs and names). It is complete enough given context signals.
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 parameter description 'Language for the category names.' Description does not add further meaning, so baseline 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?
Description clearly states the action (get list), resource (product categories on bol.com), and output (IDs and names). It distinguishes from sibling tools that handle orders, offers, etc.
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?
Description does not provide when-to-use or when-not-to-use guidance. It's a simple retrieval tool; context is implied but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_product_destinationsGet Product DestinationsARead-only
Get product warehouse destinations by product destinations ID. Use after requesting destinations with request_product_destinations.
| Name | Required | Description | Default |
|---|---|---|---|
| productDestinationsId | Yes | The product destinations ID from request_product_destinations. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already include readOnlyHint=true and openWorldHint=true, indicating a safe, read-only operation with dynamic behavior. The description adds no further behavioral details (e.g., pagination, rate limits), so it provides no additional value beyond 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?
Two sentences, no redundant information, and the key point (prerequisite action) is front-loaded. Every word adds value.
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 retrieval tool with one parameter and no output schema, the description adequately covers purpose and prerequisite. It does not describe the return format, but given the tool's simplicity and the annotations, it is reasonably 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?
Input schema coverage is 100%, and the schema's description for productDestinationsId is clear. The tool description does not add any new semantic information about the parameter, making the baseline score of 3 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?
Description states 'Get product warehouse destinations by product destinations ID', which clearly identifies the action (get) and resource (product warehouse destinations). It distinguishes from the sibling tool request_product_destinations by indicating this is the retrieval step after requesting.
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 'Use after requesting destinations with request_product_destinations', providing clear sequential context. While it doesn't list when not to use or alternatives, the dependency is clearly communicated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_product_idsGet Product IDsBRead-only
Get the product identifiers for a product by EAN. Returns various IDs associated with the product.
| Name | Required | Description | Default |
|---|---|---|---|
| ean | Yes | EAN (European Article Number) barcode of the product. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint and openWorldHint; description adds 'returns various IDs' but lacks details on error handling or specific 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?
Single sentence effectively communicates the core purpose, though it could benefit from more structure or bullet points.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple parameter set and annotation coverage, the description is minimally adequate but lacks specifics on what 'various IDs' are returned.
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%; description merely restates the EAN use without additional semantics beyond what the schema 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?
Description clearly states the tool retrieves product identifiers using an EAN, but does not differentiate it from sibling tools like get_catalog_product or get_product_assets.
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?
No guidance on when to use this tool versus alternatives; no mention of prerequisites, limitations, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_product_listGet Product ListARead-only
Search or browse products on bol.com by category or search term. Returns a list of products with EAN and title.
| Name | Required | Description | Default |
|---|---|---|---|
| countryCode | No | Country code. | |
| categoryId | No | Category ID to browse products in. | |
| searchTerm | No | Search term to find products. | |
| page | No | Page number (default 1). | |
| sort | No | Sort order for the product list. | |
| filterRanges | No | Filter ranges to apply. | |
| filterValues | No | Filter values to apply. | |
| language | No | Language for the response (Accept-Language header). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond annotations (readOnlyHint, openWorldHint) by specifying the output includes EAN and title. It does not contradict annotations. However, it could mention pagination or that either categoryId or searchTerm is needed.
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 sentences, front-loaded with purpose and action. No wasted words. Efficiently communicates core functionality.
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?
The description is adequate but could be more complete: no mention of pagination, required parameter combos, or result structure beyond EAN and title. With no output schema, the description should cover typical usage aspects.
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 baseline is 3. The description only adds meaning for category and search term ('by category or search term') but not for other parameters like filters, sort, or language.
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 it searches or browses products on bol.com by category or search term, and returns a list with EAN and title. This distinguishes it from sibling tools like get_catalog_product (single product) or get_product_list_filters (filters only).
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 use when needing a list of products, but lacks explicit guidance on when to prefer this over siblings like get_search_terms or get_product_placement. No when-not or alternative tools mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_product_list_filtersGet Product List FiltersARead-only
Get the available filters for browsing or searching products on bol.com.
| Name | Required | Description | Default |
|---|---|---|---|
| countryCode | No | Country code. | |
| searchTerm | No | Search term to get filters for. | |
| categoryId | No | Category ID to get filters for. | |
| language | No | Language for filter labels. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint. The description adds no further behavioral context such as authentication needs, rate limits, or data variability. It provides minimal added value beyond 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 a single, front-loaded sentence with no wasted words. It efficiently conveys the core 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 and four optional parameters, the description does not hint at what the response contains (e.g., list of filter categories). Agents cannot infer the structure of returned data. Incomplete for a tool that returns a complex object.
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 clear parameter descriptions. The tool description adds no additional explanation of how parameters interact or which combinations are valid. 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?
The description clearly states the verb 'get' and the resource 'available filters', specifying the context 'for browsing or searching products on bol.com'. This distinguishes it from sibling tools that focus on different aspects like product lists or commissions.
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 usage when browsing or searching products, but does not explicitly state when to use this tool versus alternatives like get_product_list or get_search_terms. No exclusions or when-not-to-use guidance provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_product_placementGet Product PlacementARead-only
Get product placement information for a product by EAN.
| Name | Required | Description | Default |
|---|---|---|---|
| ean | Yes | EAN (European Article Number) barcode of the product. | |
| countryCode | No | Country code. | |
| language | No | Language for the response. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and openWorldHint=true, and the description adds no additional behavioral context, earning a baseline score.
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 with zero wasted words; highly concise and effective.
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?
Minimal description for a simple tool; lacks details about what 'product placement information' includes, but is adequate given 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?
All parameters are fully described in the input schema (100% coverage), so the description adds no value beyond the schema, resulting in a 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 'Get product placement information for a product by EAN' uses a specific verb and resource, clearly distinguishing it from sibling tools like get_catalog_product or 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?
No guidance on when to use this tool versus alternatives; no context on prerequisites or limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_product_ranksGet Product RanksARead-only
Get product search and browse ranking data for a specific EAN on a given date. Shows how a product ranks in search results and category browsing.
| Name | Required | Description | Default |
|---|---|---|---|
| ean | Yes | The EAN of the product. | |
| date | Yes | The date in YYYY-MM-DD format. | |
| type | No | Filter by ranking type: SEARCH or BROWSE. | |
| page | No | Page number for pagination. | |
| language | No | Language filter for results. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it as read-only and open world. Description adds that it shows ranking in search and category browsing, which is consistent but does not disclose further behavior (e.g., what happens for missing data, rate limits, or authorization needs).
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 sentences, front-loaded with purpose. Every word adds value, 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?
For a tool with 5 parameters and no output schema, the description is minimal. It does not explain pagination (page parameter), the language filter, or the return format. More detail would be helpful for an agent to use it effectively.
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 covers 100% of parameters with descriptions. The description adds no additional semantic detail beyond what the schema provides, so 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?
Clearly states it retrieves search and browse ranking data for a specific EAN on a given date. This distinguishes it from sibling tools like get_product_ratings or get_product_placement, which focus on ratings or placement data.
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?
No guidance on when to use this tool versus alternatives (e.g., get_product_ratings for ratings, get_search_terms for search terms). Does not mention when not to use it or any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_product_ratingsGet Product RatingsBRead-only
Get ratings and reviews summary for a product by EAN. Shows the average rating and total number of reviews.
| Name | Required | Description | Default |
|---|---|---|---|
| ean | Yes | EAN (European Article Number) barcode of the product. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint and openWorldHint, which the description does not contradict. The description adds specifics about output (average rating, total reviews) but does not disclose any additional behavioral traits (e.g., rate limits, data freshness). This is adequate for a simple read operation.
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, properly front-loaded sentence with no unnecessary words. Every part (action, resource, output specifics) earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (single param, no output schema), the description provides essential information: what it does and what it returns. It omits error handling or data format details, but for a straightforward read tool this is sufficient to invoke 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?
The input schema has 100% coverage for the single parameter 'ean', so the schema already documents its meaning. The description adds no further detail beyond restating 'by EAN', resulting in no added value beyond baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get ratings and reviews summary') and the resource ('for a product by EAN'). It specifies outputs (average rating, total reviews) which distinguishes it from sibling tools like get_catalog_product or get_offer, though it does not explicitly contrast them.
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?
No guidance on when to use this tool versus alternatives. The description simply states what it does without mentioning prerequisites, exclusions, or related tools. The agent must infer usage from context signals and sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_promotionGet PromotionARead-only
Get detailed information about a specific promotion including its type, dates, and conditions.
| Name | Required | Description | Default |
|---|---|---|---|
| promotionId | Yes | The bol.com promotion ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description is consistent with readOnlyHint annotation but adds no behavioral details beyond what annotations already provide.
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?
Single sentence, front-loaded with purpose, no extra words.
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 retrieval tool with one parameter and no output schema, description adequately covers what the tool returns. Minor omission: no mention of response format.
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 description of promotionId. Tool description does not add additional meaning beyond what is 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?
Description clearly states the verb 'Get' and resource 'promotion', and specifies information included (type, dates, conditions), distinguishing it from other get_* 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?
No guidance on when to use this tool vs alternatives like list_promotions or get_promotion_products. No when-not-to-use or prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_promotion_productsGet Promotion ProductsBRead-only
Get the list of products participating in a specific promotion.
| Name | Required | Description | Default |
|---|---|---|---|
| promotionId | Yes | The bol.com promotion ID. | |
| page | No | Page number (1-based). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and openWorldHint=true. Description merely restates the obvious without adding any behavioral details (e.g., pagination handling, rate limits, or result completeness).
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?
Single, well-structured sentence that immediately conveys the tool's purpose. No extraneous 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?
Lacks details on return value fields and pagination behavior, which is relevant given the openWorldHint annotation and the page parameter. Adequate for a simple list but could be more informative.
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?
Input schema covers all parameters with descriptions, achieving 100% coverage. Description adds no extra meaning beyond the schema's parameter definitions.
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?
Description clearly states action ('Get'), resource ('list of products'), and scope ('participating in a specific promotion'), distinguishing it from siblings like list_promotions and get_promotion.
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?
No guidance on when to use this tool versus alternatives (e.g., list_promotions or get_promotion). The description does not mention any prerequisites or conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_replenishmentGet Replenishment DetailsARead-only
Get detailed information about a specific FBB replenishment including lines, state, delivery info, and load carriers.
| Name | Required | Description | Default |
|---|---|---|---|
| replenishmentId | Yes | The bol.com replenishment ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and openWorldHint=true, so the description does not need to restate these. It adds value by listing the output content but does not disclose additional behavioral traits such as authentication requirements 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 sentence that efficiently conveys the purpose and output scope. It is not overly verbose, though the list of included elements could be more structured (e.g., bullet points) for easier parsing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is a simple read operation with one parameter and no output schema, the description adequately lists the key output components (lines, state, delivery info, load carriers). It does not cover potential conditional availability or error cases, but it is mostly complete for its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with a description for 'replenishmentId' ('The bol.com replenishment ID.'). The tool description does not add further meaning (e.g., format, example, or constraints) beyond what the schema 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 clearly states the tool gets detailed information about a specific FBB replenishment, listing included elements (lines, state, delivery info, load carriers). This distinguishes it from sibling tools like list_replenishments (which lists summaries) and update_replenishment (which modifies).
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?
While the context (getting details for a specific replenishment) is clear, the description does not explicitly state when to use this tool versus alternatives like list_replenishments or search tools. No 'when not to use' guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_retailer_informationGet Retailer InformationARead-only
Get retailer information. Provide a retailer ID to look up a specific retailer, or omit it to get your own account information.
| Name | Required | Description | Default |
|---|---|---|---|
| retailerId | No | The retailer ID. Omit or use 'current' to get your own account information. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and openWorldHint=true. The description adds behavioral context by revealing the dual behavior depending on parameter presence, which goes beyond 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 two concise sentences with no redundant information. It is front-loaded with the core action and immediately provides usage instructions.
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?
The tool is simple with one optional parameter and no output schema. The description covers the essential behavior given readOnlyHint. It could be improved by mentioning what is returned (e.g., retailer details), but it is sufficient for a retrieval 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?
The input schema covers the parameter with 100% description coverage. The description adds value by explicitly mentioning the alternative value 'current' and clarifying the behavior when omitted. Thus it adds meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves retailer information and specifies the two usage modes: with a retailer ID for a specific retailer, or omitted for own account. It distinguishes itself from sibling get_* tools as none are for retailer information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear guidance on when to provide the retailer ID vs omit it. It does not explicitly name alternative tools but the sibling list provides context that no other tool retrieves retailer information, making the usage context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_returnGet Return DetailsARead-only
Get detailed information about a specific return including return items, reasons, tracking, and processing results.
| Name | Required | Description | Default |
|---|---|---|---|
| returnId | Yes | The bol.com return ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds context by enumerating return items, reasons, tracking, and processing results, which goes beyond the annotations but does not contradict them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently communicates the tool's purpose and contents. No redundant or filler words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one parameter and no output schema, the description adequately covers what the tool does and what information it returns. Could mention edge cases like invalid return ID, but overall complete for a simple retrieval 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% with a single required parameter (returnId) described as 'The bol.com return ID.' The description does not add additional meaning or format details beyond the schema, so score is baseline 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 clearly states the verb 'Get' and resource 'return', specifying included details (return items, reasons, tracking, processing results). This distinguishes it from sibling tools like list_returns (listing) and handle_return (action).
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 usage for retrieving a single return's details but does not explicitly state when to use this tool vs alternatives like list_returns or handle_return. No 'when-not-to-use' or alternative names provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sales_forecastGet Sales ForecastARead-only
Get sales forecast for a specific offer. Returns predicted sales volume for the specified number of weeks ahead (1-12).
| Name | Required | Description | Default |
|---|---|---|---|
| offerId | Yes | The bol.com offer ID. | |
| weeksAhead | Yes | Number of weeks to forecast (1-12). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, indicating safety and no side effects. The description adds that it returns predicted sales volume, which is behavioral information beyond the annotations. It does not contradict annotations, and the additional context is valuable.
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 extremely concise with two sentences that front-load the purpose. Every word adds value—no fluff, no irrelevant details. It efficiently conveys the tool's core function and constraints.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 simple params, no output schema, no nested objects), the description is largely complete. It states what the tool does and what it returns. It lacks details on error handling or return format, but for a read-only forecasting tool with clear parameters, it covers the essential context.
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 clear descriptions for both parameters. The tool description reiterates the schema but adds no new semantic meaning for the parameters themselves (e.g., format of offerId, specific range details for weeksAhead). Baseline is 3 since 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?
The description clearly specifies the action ('Get') and resource ('sales forecast for a specific offer'), and it distinguishes itself from sibling tools by focusing on forecasting. The mention of returning predicted sales volume for a specified number of weeks adds clarity. The tool is unique among siblings, so no confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives or when not to use it. While the purpose is clear, there is no mention of prerequisites, edge cases, or comparisons to similar tools like get_offer_insights. Usage is implied but not directly addressed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_search_termsGet Search TermsARead-only
Get search term volume data from bol.com. Returns how often a search term is used over the specified time period, optionally including related search terms.
| Name | Required | Description | Default |
|---|---|---|---|
| searchTerm | Yes | The search term to look up. | |
| period | Yes | The time period granularity. | |
| numberOfPeriods | Yes | Number of periods to retrieve. | |
| relatedSearchTerms | No | Whether to include related search terms in the response. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint. The description adds that it returns frequency and optionally related terms, but does not disclose additional behavioral traits like pagination, limits, or data freshness. Consistent with 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?
Two sentences, front-loaded with the verb 'get', and no wasted words. Every sentence adds value.
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, but the description gives a high-level idea of the return value. For a simple lookup tool, this is adequate. However, more detail on the exact response structure could improve completeness.
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. The description does not add significant meaning beyond the schema; it only mentions the optional inclusion of related search terms, which is already 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?
The description clearly states it gets search term volume data from bol.com, specifies the output (how often a term is used), and optionally includes related terms. This distinguishes it from sibling tools focused on products, orders, etc.
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 explains the tool's purpose but provides no explicit guidance on when to use it vs. alternatives. No exclusions or comparisons to sibling tools are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_shipmentGet Shipment DetailsARead-only
Get detailed information about a specific shipment including items, transport/tracking info, and shipping details.
| Name | Required | Description | Default |
|---|---|---|---|
| shipmentId | Yes | The bol.com shipment ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint. The description adds behavioral detail on what the tool returns (items, transport/tracking, shipping details), complementing annotations without contradiction.
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?
Single sentence, front-loaded with purpose, no redundant words. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given low complexity (1 param, no output schema), the description sufficiently explains the tool's output. Could mention response format but not necessary for basic agent usage.
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 clear description of shipmentId. The tool description adds no extra meaning to the parameter beyond the schema, meeting baseline but not exceeding.
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 verb ('get') and resource ('shipment'), explicitly listing included details (items, transport/tracking, shipping details). It clearly distinguishes from sibling tools like list_shipments (list) and create_shipment (create).
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 usage when detailed shipment info is needed, but provides no explicit when-to-use or when-not-to-use guidance, nor mentions alternatives like list_shipments for broader queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_shipping_labelGet Shipping LabelARead-only
Download a shipping label by its ID. Returns the label data (PDF).
| Name | Required | Description | Default |
|---|---|---|---|
| shippingLabelId | Yes | The shipping label ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. The description adds minimal behavioral context beyond returning PDF data. It does not discuss potential size limits, timeouts, or authentication requirements, which would be helpful for a download tool.
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 exceptionally concise: two short sentences that directly convey purpose and output format. Every word adds value 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?
The description adequately covers the tool's action and output for a simple retrieval tool with one required parameter. It could mention that the label ID must exist, but overall it is sufficiently complete given the annotations and 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 coverage is 100% for the one parameter 'shippingLabelId', with a clear description in the schema. The tool description adds no extra meaning for the parameter beyond restating 'by its ID', 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?
The description clearly states 'Download a shipping label by its ID', specifying the verb (download) and resource (shipping label). This distinguishes it from sibling tools like create_shipping_label and other get_* functions.
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 use when needing to retrieve an existing shipping label, but does not provide explicit guidance on when to avoid this tool (e.g., if the label needs to be created first) or mention alternatives like create_shipping_label.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_signature_keysGet Signature KeysARead-only
Get the public keys used for webhook signature validation. Use these to verify that incoming webhook notifications are from bol.com.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the description adds value by explaining the purpose (webhook validation). No contradiction.
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 extremely concise with two sentences that convey the purpose and usage without unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and no output schema, the description provides sufficient context for an agent to understand and use the 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?
No parameters are defined; the baseline for 0 parameters is 4. The description does not need to add parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'public keys used for webhook signature validation', which is specific and distinct from any sibling 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 explicitly states when to use the tool ('to verify that incoming webhook notifications are from bol.com'), providing clear context but not excluding alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_subscriptionGet Subscription DetailsARead-only
Get detailed information about a specific event subscription.
| Name | Required | Description | Default |
|---|---|---|---|
| subscriptionId | Yes | The subscription ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, indicating safe read operations. The description adds minimal behavioral context beyond the purpose, but does not contradict 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?
Single, concise sentence that is front-loaded and contains no unnecessary words.
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 read-by-ID tool with one parameter and strong annotations, the description is mostly adequate. However, it does not clarify what 'detailed information' includes, which could be expanded for richer context.
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 the subscriptionId parameter described. The description adds no additional meaning beyond what the schema provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get detailed information about a specific event subscription,' using a specific verb and resource. It distinguishes from sibling tools like list_subscriptions that retrieve multiple subscriptions.
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?
No guidance on when to use this tool versus alternatives such as list_subscriptions or other 'get' tools. The description only states what it does without context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_unpublished_offer_reportGet Unpublished Offer ReportARead-only
Retrieve an unpublished offer report by report ID. Contains all unpublished offers and reasons.
| Name | Required | Description | Default |
|---|---|---|---|
| reportId | Yes | The report ID from the unpublished offer report request. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description confirms it is a read operation. It adds that the report contains 'all unpublished offers and reasons,' which is helpful. However, it does not disclose potential pagination, size limits, or whether the report is generated synchronously/asynchronously. With annotations, the bar is lower, but the description could provide more behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences that immediately convey purpose and content. No extraneous words, front-loaded with the action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (one parameter, no output schema), the description covers basic purpose and content. However, it omits context such as the relationship to 'request_unpublished_offer_report', potential error states, or how to interpret the report output, leaving gaps for an agent unfamiliar with the process.
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 description of the parameter ('The report ID from the unpublished offer report request') adds minimal meaning beyond the schema's own description. Baseline 3 is appropriate as the schema already documents the parameter adequately.
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?
Description clearly states the tool retrieves an unpublished offer report by ID and specifies its content ('all unpublished offers and reasons'). The verb 'retrieve' is precise, and the resource 'unpublished offer report' is unambiguous, distinguishing it from sibling tools that retrieve other entities.
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?
No explicit guidance on when to use this tool versus alternatives. The description implies it should be used after obtaining a report ID, but does not reference the related tool 'request_unpublished_offer_report' or mention prerequisites. Usage context is left to the agent's inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_upload_reportGet Upload ReportARead-only
Get a product content upload report by upload ID. Shows the status and any validation errors for a content upload.
| Name | Required | Description | Default |
|---|---|---|---|
| uploadId | Yes | The upload ID from a product content creation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint and openWorldHint. The description adds context about showing status and errors, but does not disclose additional behavioral traits like error handling or rate limits. No contradictions.
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 one concise sentence with no wasted words. It efficiently conveys the tool's purpose and inputs.
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 tool with one parameter and no output schema, the description adequately covers what it does and what it returns (status and errors). However, it could be slightly more detailed about the response format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'uploadId' has a clear schema description. The tool description does not add further meaning beyond the schema, but with 100% schema coverage, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get', the resource 'upload report', and specifies the input 'by upload ID' and output 'status and validation errors'. It distinguishes from sibling tools like 'get_unpublished_offer_report' by focusing on content uploads.
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 usage after creating a content upload but does not explicitly state when to use it or provide alternatives. No when-not-to-use guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
handle_returnHandle ReturnAIdempotent
Handle/process a return item by its RMA ID. The RMA ID can be found in the return items from get_return. Set the handling result and quantity returned. Valid handling results: RETURN_RECEIVED, EXCHANGE_PRODUCT, RETURN_DOES_NOT_MEET_CONDITIONS, REPAIR_PRODUCT, CUSTOMER_KEEPS_PRODUCT_PAID, STILL_APPROVED. Returns a process status — the return is handled asynchronously. Always review the return details with get_return before handling.
| Name | Required | Description | Default |
|---|---|---|---|
| rmaId | Yes | The RMA ID of the return item (found in return items from get_return). | |
| handlingResult | Yes | How the return was handled. | |
| quantityReturned | Yes | Number of items returned. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (idempotentHint=true, readOnlyHint=false), the description reveals async behavior: 'returns a process status — the return is handled asynchronously.' No contradictions with 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?
Three concise sentences: purpose, key inputs, and usage guideline. No wasted words; easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description mentions returning a process status and async handling. Could mention polling via get_process_status, but the current info is sufficient for basic use with good annotations.
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?
Input schema covers all three parameters with descriptions (100% coverage). The description adds value by listing the valid handling results and emphasizing the RMA ID source, but largely repeats schema info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Handle/process a return item by its RMA ID.' It specifies the key actions (setting handling result and quantity) and distinguishes this from other return-related tools like get_return.
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 instructs to 'Always review the return details with get_return before handling,' providing clear when-to guidance. It lists valid handling results but does not explicitly state when not to use the tool or compare to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_invoicesList InvoicesARead-only
List invoices from bol.com. Optionally filter by date range using period start and end dates (format: YYYY-MM-DD). The date range must not exceed 31 days.
| Name | Required | Description | Default |
|---|---|---|---|
| periodStartDate | No | Start date for the invoice period (YYYY-MM-DD). | |
| periodEndDate | No | End date for the invoice period (YYYY-MM-DD). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint true, openWorldHint true) are consistent. Description adds the 31-day range limit, providing behavioral insight beyond structured fields.
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 efficient sentences, front-loaded with key action, no superfluous words.
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?
Sufficient for a simple list tool with 2 optional params and no output schema. Could mention return format or pagination, but not essential.
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 covers parameter descriptions (100%), but description adds the 31-day range constraint not in schema, enhancing understanding.
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?
Clearly states verb 'list' and resource 'invoices from bol.com', with optional date range filter. Distinct from sibling tools like get_invoice and get_invoice_requests.
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?
Explains optional filter with date format and a 31-day constraint. Does not explicitly contrast with siblings, but context is sufficient for typical list operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_ordersList OrdersARead-only
List recent orders from bol.com. Returns orders with their items, shipping details, and status. Use the fulfilmentMethod filter to show only FBR (fulfilled by retailer), FBB (fulfilled by bol.com), or ALL orders. Use the status filter to show OPEN (awaiting shipment/cancellation), SHIPPED, or ALL orders.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (1-based). | |
| fulfilmentMethod | No | Filter by fulfilment method: FBR (fulfilled by retailer), FBB (fulfilled by bol.com), or ALL. | |
| status | No | Filter by order status: OPEN (needs handling), SHIPPED (shipped), or ALL. | |
| changeIntervalMinute | No | Filter order items by most recent change within this number of minutes. | |
| latestChangeDate | No | Filter on the date of latest change to an order item (up to 3 months history). | |
| vvbOnly | No | Filter to include only VVB orders. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description aligns with annotations (readOnlyHint, openWorldHint) and adds that the tool returns orders with items, shipping details, and status. No contradictions or negative behaviors disclosed, which is appropriate given the read-only nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at four sentences, front-loading the purpose and then explaining filters. Every sentence adds value, and there is no fluff.
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?
While the description covers key filters, it omits mention of pagination (page parameter), changeIntervalMinute, latestChangeDate, and vvbOnly. Given the schema provides descriptions, the description is adequate but could be more complete for a tool with 6 optional parameters.
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 description adds context for the fulfilmentMethod and status parameters by explaining the enum values (e.g., OPEN means awaiting shipment/cancellation). This adds value beyond the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists recent orders from bol.com and returns orders with items, shipping details, and status. It distinguishes from siblings by specifying the resource and scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on using the fulfilmentMethod and status filters, indicating when to use them. However, it does not explicitly mention when not to use this tool or alternatives like get_order for single order details.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_promotionsList PromotionsARead-only
List available promotions on bol.com. Filter by promotion type: AWARENESS (visibility promotions) or PRICE_OFF (discount promotions).
| Name | Required | Description | Default |
|---|---|---|---|
| promotionType | Yes | Type of promotion: AWARENESS (visibility) or PRICE_OFF (discount). | |
| page | No | Page number (1-based). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint. Description adds filter details but no extra behavioral traits like pagination 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?
Single, front-loaded sentence with no fluff. Every word serves a 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?
For a simple list tool with annotations and complete schema, description covers filtering but omits mention of pagination behavior (e.g., page size) or response structure.
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?
100% schema coverage; description adds context (e.g., 'visibility promotions' for AWARENESS) beyond enum values, aiding agent understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb 'List' and resource 'promotions on bol.com'. Distinguishes from siblings like get_promotion by being a list operation.
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?
No explicit when-to-use or when-not-to guidance, nor mention of alternatives. The simple filter hint provides minimal context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_replenishmentsList FBB ReplenishmentsCRead-only
List FBB (Fulfilled by bol.com) replenishments. Optionally filter by reference, EAN, date range, or state.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (1-based). | |
| reference | No | Filter by replenishment reference. | |
| ean | No | Filter by EAN. | |
| startDate | No | Filter by start date (YYYY-MM-DD). | |
| endDate | No | Filter by end date (YYYY-MM-DD). | |
| states | No | Filter by replenishment states. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, but description adds no extra behavioral details like pagination or sorting beyond basic listing.
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 concise sentence with clear front-loading of purpose and filter options, no wasted words.
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?
Lacks details on pagination, response format, or ordering; incomplete for a list tool with 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 coverage is 100%, and description summarizes filters but adds no new meaning beyond existing parameter descriptions.
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 it lists FBB replenishments with optional filters. It distinguishes from siblings by resource name, but does not explicitly differentiate 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?
No guidance on when to use this tool vs siblings like get_replenishment or create_replenishment; only implied that listing is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_returnsList ReturnsARead-only
List returns from bol.com. Filter by handled status and fulfilment method. Unhandled returns require action — use handle_return to process them.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (1-based). | |
| handled | No | Filter by handled status. true = handled, false = unhandled. | |
| fulfilmentMethod | No | Filter by fulfilment method. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds that unhandled returns require action, but does not disclose pagination behavior, response format, or rate limits. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loads the purpose, and includes a actionable tip. Every sentence adds value 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?
The tool has 3 parameters, all documented in the schema, and no output schema. The description covers the main use case and filtering options, and provides a usage guideline. It could mention pagination defaults but is mostly complete for a 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 coverage is 100%, so the schema itself documents all parameters. The description mentions filters for handled and fulfilmentMethod, adding no new semantic meaning beyond what is already 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?
The description clearly states the verb 'List' and the resource 'returns' from bol.com, and distinguishes itself from sibling tools like handle_return by noting that unhandled returns require action and directing to that tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to use this tool (list returns, filter by status/fulfilment method) and when to use an alternative (use handle_return to process unhandled returns), providing clear context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_shipmentsList ShipmentsARead-only
List shipments from bol.com. Optionally filter by order ID to see shipments for a specific order.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (1-based). | |
| orderId | No | Filter shipments by order ID. | |
| fulfilmentMethod | No | Filter by fulfilment method: FBR (fulfilled by retailer) or FBB (fulfilled by bol.com). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and openWorldHint=true. The description adds that it lists shipments and allows filtering, which aligns with the read-only behavior. However, it does not disclose pagination behavior or other potential traits beyond what is in the schema and 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 extremely concise, consisting of two efficient sentences. Every word adds value, with no fluff or 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?
For a list tool with 3 parameters and no output schema, the description covers basic functionality but does not explain pagination behavior or the structure of returned data. It is adequate but could be more complete given the absence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with each parameter having a description in the input schema. The description only repeats the optional filtering aspect for orderId, adding no new semantic meaning. Baseline 3 is appropriate given high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'list' and resource 'shipments' from bol.com, and mentions optional filtering. It distinguishes from siblings like get_shipment (single) but does not explicitly contrast with other list tools (e.g., list_returns).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some guidance on when to use the tool—mentioning optional filtering by order ID—but does not specify when not to use it or compare with alternative tools like get_shipment. Implied usage but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_subscriptionsList SubscriptionsARead-only
List all event subscriptions. Shows configured webhooks, GCP Pub/Sub, and AWS SQS subscriptions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no behavioral context beyond what annotations already provide (readOnlyHint=true, openWorldHint=true). It simply restates the action without additional details like pagination or response format.
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 concise sentences, front-loaded with purpose, no wasted words. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, no output schema), the description fully captures necessary context: what it does and what types of subscriptions are included.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, so the schema coverage is complete. The description does not add parameter information, but the baseline is 4 for zero-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all event subscriptions and specifies the types (webhooks, GCP Pub/Sub, AWS SQS), distinguishing it from sibling tools like create_subscription or delete_subscription.
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 usage for listing all subscriptions but does not provide explicit guidance on when to use this vs. get_subscription for a specific one or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_offer_exportRequest Offer ExportA
Request an offer export file containing all offers. Returns a process status — use get_process_status to get the report ID, then retrieve with get_offer_export.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | The file format for the export. | CSV |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate that the tool is not read-only, not destructive, not idempotent, and open-world. The description adds value by explaining the asynchronous nature (returns a process status) and the subsequent steps needed. No contradictions found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, consisting of two sentences that front-load the purpose and then provide the workflow. Every sentence is necessary and adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (one parameter, no output schema), the description covers the essential context: what it does, what it returns (process status), and the subsequent steps to retrieve the export. It is complete for an agent to invoke 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?
The input schema has 100% coverage with one optional parameter (format) and an enum. The description does not add any additional meaning beyond what the schema already provides, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Request an offer export file containing all offers.' It specifies the action (request), the resource (offer export file), and the scope (all offers), distinguishing it from siblings like 'get_offer_export'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear workflow: requesting the export, then using 'get_process_status' to get the report ID, and finally 'get_offer_export' to retrieve the file. It does not explicitly state when not to use or mention alternatives, but the guidance is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_product_destinationsRequest Product DestinationsA
Request product warehouse destinations for the given EANs. Returns a process status — use the product destinations ID to retrieve results with get_product_destinations.
| Name | Required | Description | Default |
|---|---|---|---|
| eans | Yes | List of EANs to request destinations for. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate not read-only, not destructive, not idempotent. Description adds context that it returns a process status and requires a follow-up call, which is useful beyond 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?
Two sentences, no fluff, key information front-loaded. Every sentence adds value.
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 tool with one parameter, description is complete: explains the request, the return type (process status), and the follow-up action needed.
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?
Parameter eans has a description in the schema, and the description does not add additional semantics beyond that. With 100% schema coverage, 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?
Clearly states it requests product warehouse destinations for given EANs and distinguishes from its sibling get_product_destinations by noting the async nature and the need to retrieve results using the returned ID.
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 tells when to use this tool (to request destinations for EANs) and directs the user to use get_product_destinations to retrieve results, providing clear guidance on the workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_product_labelsRequest Product LabelsARead-only
Request product labels for FBB products. Returns label data (PDF). Specify the label format and products with EAN and quantity.
| Name | Required | Description | Default |
|---|---|---|---|
| labelFormat | Yes | Label format. | |
| products | Yes | Products with EAN and quantity. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint: true indicating safe to call multiple times without side effects. Description adds 'Returns label data (PDF)' which is consistent, but no further behavioral details like concurrency or resource consumption.
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 sentences, front-loaded with key information. Every word serves a purpose; 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?
Given 2 parameters, full schema coverage, and no output schema, the description covers the essentials. Slightly opaque about 'FBB' but overall adequate for a focused 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 baseline is 3. Description mentions 'label format and products with EAN and quantity', aligning with parameters but adding no new semantic detail beyond schema descriptions.
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?
Clearly states verb 'Request', resource 'product labels for FBB products', and output 'Returns label data (PDF)'. Distinct from sibling tools like create_shipping_label or get_shipping_label.
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?
No explicit guidance on when to use or alternatives. The mention 'FBB products' implies a specific context, but no when-not-to-use or distinctions from similar tools are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_unpublished_offer_reportRequest Unpublished Offer ReportA
Request a report of all unpublished offers and reasons. Returns a process status — use get_process_status to get the report ID, then retrieve with get_unpublished_offer_report.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no contradiction; description adds that it returns a process status. However, no details about async behavior or timing beyond what annotations cover.
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 sentences: first states purpose, second gives follow-up steps. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and no output schema, description adequately explains workflow and references needed sibling tools. Lacks details on async nature but sufficient for a request 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?
No parameters in schema; description adds meaning by explaining the request returns a process status. Baseline 4 as schema covers all.
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?
Clearly states the tool requests a report of all unpublished offers and reasons. Distinguishes from siblings like get_unpublished_offer_report by describing the workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to use get_process_status for the report ID, then retrieve with get_unpublished_offer_report. Provides clear when-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
test_subscriptionTest SubscriptionAIdempotent
Send a test notification to a subscription endpoint. Use this to verify that your subscription is correctly configured.
| Name | Required | Description | Default |
|---|---|---|---|
| subscriptionId | Yes | The subscription ID to test. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotency and non-destructiveness. The description adds that it sends a test notification, but does not elaborate on behavior like error handling or response details beyond what annotations provide.
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 sentences with no extraneous information; front-loaded with the primary action and followed by the usage purpose. Highly concise.
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 tool with one required parameter, good annotations, and no output schema, the description sufficiently covers the action and usage context.
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 description does not add additional meaning beyond the schema's description of 'subscriptionId'. 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?
The description clearly states the action ('send a test notification') and the resource ('subscription endpoint'), distinguishing it from CRUD siblings like create_subscription or delete_subscription.
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 'Use this to verify that your subscription is correctly configured' provides clear context for when to use this tool, but does not explicitly state when not to use it or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_offerUpdate OfferAIdempotent
Update an existing offer's reference, on-hold status, product title, or fulfilment settings. To update pricing or stock, use update_offer_price or update_offer_stock instead. Returns a process status — changes are applied asynchronously.
| Name | Required | Description | Default |
|---|---|---|---|
| offerId | Yes | The bol.com offer ID to update. | |
| reference | No | Your internal reference for this offer (max 100 chars). | |
| onHoldByRetailer | No | Put the offer on hold (not visible on bol.com). | |
| unknownProductTitle | No | Title for products not yet known by bol.com. | |
| economicOperatorId | No | Identifier referring to the Economic Operator entity for EU compliance. | |
| fulfilment | Yes | Fulfilment method and delivery code. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds that returns a process status and changes are applied asynchronously, which goes beyond annotations. No contradictions; annotations already indicate idempotent and non-destructive.
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 sentences with no wasted words. Front-loaded with the core action and immediate guidance on sibling tools.
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?
Covers purpose, usage boundaries, and async behavior. Lacks mention of partial updates, but the schema covers parameter details. Adequate for this mutation 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 baseline is 3. The description does not add significant new meaning beyond summarizing which parameters exist; the schema already provides detailed descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Update' and lists specific resources: reference, on-hold status, product title, or fulfilment settings. It also distinguishes from sibling tools update_offer_price and update_offer_stock.
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 when to use this tool (to update reference, on-hold, product title, fulfilment) and when not to use it (for pricing/stock, use alternatives).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_offer_priceUpdate Offer PriceAIdempotent
Update the pricing for an existing offer. Provide bundle prices with at least one entry for quantity 1. Returns a process status — changes are applied asynchronously.
| Name | Required | Description | Default |
|---|---|---|---|
| offerId | Yes | The bol.com offer ID. | |
| pricing | Yes | New pricing with bundle prices. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that changes are applied asynchronously and returns a process status, adding value beyond annotations. Annotations already indicate it's not read-only or destructive, but the description adds the async 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?
Two sentences: first states purpose, second gives key requirement and mentions async/return. No wasted words, front-loaded with essential info.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the moderate complexity (2 required params, nested object) and no output schema, the description covers the async nature and return type. It could mention prerequisites like having an existing offer, but is mostly 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 coverage is 100%, so the description adds minimal value beyond reiterating the requirement for quantity 1, which is already enforced by the schema. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Update the pricing for an existing offer', which clearly identifies the verb and resource. It does not explicitly differentiate from sibling tools like 'update_offer', but the specificity to pricing is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a requirement ('Provide bundle prices with at least one entry for quantity 1') but does not specify when to use this tool versus alternatives or when not to use it. The async behavior is noted but no exclusions or alternatives are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_offer_stockUpdate Offer StockAIdempotent
Update the stock level for an existing offer. Returns a process status — changes are applied asynchronously.
| Name | Required | Description | Default |
|---|---|---|---|
| offerId | Yes | The bol.com offer ID. | |
| amount | Yes | New stock amount. | |
| managedByRetailer | Yes | Whether stock is managed by the retailer. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds value beyond annotations by noting asynchronous application and return of process status. No contradiction with 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?
Two concise sentences, front-loaded with key purpose, no wasted words.
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?
Adequate for a simple update tool; mentions return type and async nature. Could add prerequisites or error handling, but not required for basic understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already provides full parameter descriptions (100% coverage). Description adds no extra meaning beyond what schema offers.
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?
Clearly states it updates stock level for an existing offer, using specific verb and resource. Distinguishes from sibling tools like update_offer_price by focusing on stock.
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?
Description implies usage for updating stock, but lacks explicit when-to-use or when-not-to-use guidance compared to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_replenishmentUpdate ReplenishmentAIdempotent
Update a replenishment, for example to cancel it or update delivery info and load carriers. Returns a process status — changes are applied asynchronously.
| Name | Required | Description | Default |
|---|---|---|---|
| replenishmentId | Yes | The bol.com replenishment ID to update. | |
| state | No | Set the replenishment state (e.g. CANCELLED). | |
| deliveryInfo | No | Updated delivery information. | |
| numberOfLoadCarriers | No | Number of load carriers (1-66). | |
| loadCarriers | No | Load carriers with SSCC codes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate mutability (readOnlyHint=false) and idempotency (idempotentHint=true). The description adds the key fact that changes are applied asynchronously and returns a process status, which is not in 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?
Two sentences front-load the main action and examples. No wasted words; every sentence adds value.
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?
The description adequately covers the operation for a mutation tool with rich schema and annotations. It informs about the asynchronous nature and process status return. Could elaborate on return values, but given no output schema, it is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all parameters. The description briefly references the update examples linking to state, deliveryInfo, and loadCarriers, but adds minimal extra meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Update' and the resource 'replenishment', and provides specific examples (cancel, update delivery info, load carriers), distinguishing it from sibling tools like create_replenishment or cancel_order_item.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives examples of when to use it but does not explicitly state when not to use or compare with alternatives like create_replenishment or cancel_order_item. No guidance on prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_subscriptionUpdate SubscriptionAIdempotent
Update an existing event subscription. You can change the resources, URL, type, enabled status, and identity.
| Name | Required | Description | Default |
|---|---|---|---|
| subscriptionId | Yes | The subscription ID to update. | |
| resources | Yes | Event types to subscribe to. | |
| url | Yes | The endpoint URL for receiving notifications. | |
| subscriptionType | Yes | Subscription type: WEBHOOK, GCP_PUBSUB, or AWS_SQS. | |
| enabled | No | Whether the subscription is enabled. | |
| identity | No | AWS ARN for AWS_SQS subscriptions. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide safety profile (idempotent, non-destructive). Description adds no extra behavioral context beyond 'update'.
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?
Single sentence, no fluff, effectively communicates purpose and changable fields.
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?
Lacks details on return value, error conditions, or update behavior (e.g., partial updates). Adequate but incomplete for a 6-param tool with 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 covers all parameters with descriptions; description merely reiterates them. No added value beyond 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?
Description clearly states it updates an existing subscription and lists changable fields. Distinguishes from create, delete, get, list siblings.
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?
Implied usage for modifying existing subscriptions, but no explicit when-to-use or when-not-to-use guidance. No alternatives mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_transportUpdate TransportAIdempotent
Update transport/tracking information for a shipment. Provide a track and trace code and optionally a transporter code. Returns a process status — the update is applied asynchronously. Use get_process_status to check completion.
| Name | Required | Description | Default |
|---|---|---|---|
| transportId | Yes | The transport ID to update. | |
| trackAndTrace | Yes | Track and trace code from the transporter. | |
| transporterCode | No | Transporter code (e.g. 'TNT', 'DHL', 'POSTNL', 'DPD', 'BPOST_BE'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that update is applied asynchronously and returns a process status, complementing annotations (idempotentHint=true, destructiveHint=false). No contradictions with 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?
Two sentences, no redundancy. First sentence states purpose, second provides parameter guidance and async behavior. Highly efficient and 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?
Lacks output schema but describes return type (process status) and references get_process_status for completion. Adequate for a simple update tool with good annotations.
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 descriptions. Description adds context by specifying which parameters are required (trackAndTrace) and optional (transporterCode), and explains overall purpose.
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?
Clearly states it updates transport/tracking information for a shipment. Specific verb 'update' and resource 'transport/tracking information' with clear scope. Differentiates from sibling tools like update_offer or update_replenishment.
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?
Tells agent to provide track and trace code and optionally transporter code. Also mentions async behavior and suggests using get_process_status to check completion. No explicit exclusions but clear usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_shipment_invoiceUpload Shipment InvoiceA
Upload an invoice for a specific shipment. Provide the shipment ID and the invoice content. Returns a process status — the upload is processed asynchronously.
| Name | Required | Description | Default |
|---|---|---|---|
| shipmentId | Yes | The bol.com shipment ID. | |
| invoice | Yes | The invoice content to upload. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate it is a write operation (readOnlyHint=false) and not destructive. The description adds that the upload is asynchronous and returns a process status, providing behavioral context beyond the annotations. No contradictions.
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 extremely concise with only two sentences, directly addressing the purpose, inputs, and outcome. Every word adds value, and the most important information is 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?
Given the input schema covers the parameters adequately, the description covers the essential context: what the tool does, required inputs, and that it is asynchronous. However, it does not explain what the 'process status' means or how to handle it, leaving 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%, so the schema already fully describes both parameters. The description merely restates the parameter names without adding new semantics like format constraints or size limits, meeting the baseline but not exceeding it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Upload an invoice for a specific shipment,' specifying the verb and resource. It distinguishes from sibling tools like get_invoice or create_shipment, making its unique purpose obvious.
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 tells the user to provide shipment ID and invoice content, and mentions the asynchronous behavior. However, it does not offer explicit guidance on when to use this tool versus alternatives, nor does it state when not to use it.
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.
76 tool updates
v0.3.0- First observed
cancel_order_item - First observed
create_offer - First observed
create_product_content - First observed
create_replenishment - First observed
create_return - First observed
create_shipment - First observed
create_shipping_label - First observed
create_subscription - First observed
delete_offer - First observed
delete_subscription - First observed
get_bulk_commissions - First observed
get_catalog_product - First observed
get_chunk_recommendations - First observed
get_commission - First observed
get_commission_rates - First observed
get_competing_offers - First observed
get_delivery_dates - First observed
get_delivery_options - First observed
get_inventory - First observed
get_invoice - First observed
get_invoice_requests - First observed
get_invoice_specification - First observed
get_load_carrier_labels - First observed
get_offer - First observed
get_offer_export - First observed
get_offer_insights - First observed
get_order - First observed
get_performance_indicators - First observed
get_pick_list - First observed
get_pickup_time_slots - First observed
get_price_star_boundaries - First observed
get_process_status - First observed
get_process_status_bulk - First observed
get_process_status_by_entity - First observed
get_product_assets - First observed
get_product_categories - First observed
get_product_destinations - First observed
get_product_ids - First observed
get_product_list - First observed
get_product_list_filters - First observed
get_product_placement - First observed
get_product_ranks - First observed
get_product_ratings - First observed
get_promotion - First observed
get_promotion_products - First observed
get_replenishment - First observed
get_retailer_information - First observed
get_return - First observed
get_sales_forecast - First observed
get_search_terms - First observed
get_shipment - First observed
get_shipping_label - First observed
get_signature_keys - First observed
get_subscription - First observed
get_unpublished_offer_report - First observed
get_upload_report - First observed
handle_return - First observed
list_invoices - First observed
list_orders - First observed
list_promotions - First observed
list_replenishments - First observed
list_returns - First observed
list_shipments - First observed
list_subscriptions - First observed
request_offer_export - First observed
request_product_destinations - First observed
request_product_labels - First observed
request_unpublished_offer_report - First observed
test_subscription - First observed
update_offer - First observed
update_offer_price - First observed
update_offer_stock - First observed
update_replenishment - First observed
update_subscription - First observed
update_transport - First observed
upload_shipment_invoice
TDQS
Scored across 76 tools
Each tool targets a distinct resource and action (e.g., get_commission vs get_commission_rates vs get_bulk_commissions). Descriptions are specific and clarify boundaries, making it easy for an agent to select the correct tool.
All tool names follow a consistent verb_noun pattern using snake_case (e.g., create_offer, get_order, list_returns). Even longer names like get_process_status_by_entity adhere to this pattern. No mixing of conventions.
76 tools is very high for a single server. While the domain is broad (bol.com marketplace), the number exceeds typical scoping. Many tools could be consolidated or are too fine-grained, making the set overwhelming.
The tool set covers the main seller workflows: offers, orders, shipments, returns, replenishments, invoices, promotions, and product content. Minor gaps exist (e.g., no direct messaging), but core operations are well-supported.
Maintenance
Related MCP Connectors
MCP server for Boson Protocol — on-chain agentic commerce for physical & digital goods.
Unified MCP server for 70+ eCommerce platforms: products, orders, customers, and more.
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
Hosted Amazon Seller and Vendor MCP server for Claude, ChatGPT, Cursor, Codex, Gemini, Copilot.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceMCP Server that enables interaction with GoDaddy's Orders API using natural language, auto-generated from the OTE GoDaddy Orders OpenAPI specification.-
- AlicenseCqualityCmaintenanceEnables natural language interaction with the WeFact invoicing platform, allowing users to manage debtors, invoices, products, subscriptions, and perform various administrative tasks via MCP-compatible clients.181AGPL 3.0
- FlicenseNot gradedqualityAmaintenanceMCP server for the Steuerboard API, enabling interaction with Steuerboard services through natural language.71-
- AlicenseCqualityDmaintenanceMCP server for Shopify Admin API. Enables product, order, customer, and inventory management via natural language.14191MIT