Skip to main content
Glama

Jumbo MCP Server

License: MIT MCP TypeScript

A Model Context Protocol (MCP) server for Jumbo Supermarkten.

Connect your AI assistant (Claude Desktop, Cursor, Antigravity, OpenClaw, …) to your personal Jumbo account to read digital receipts (kassabonnen), itemized prices and discounts, Extra's loyalty points, stores and products, and to manage your shopping list (lijstje).


Installation & Setup

Requires Node.js >= 18.

1. Clone & Build

git clone https://github.com/Robert-SD/jumbo-mcp.git
cd jumbo-mcp
npm install
npm run build

2. Authentication (One-time setup)

One-time login through Jumbo's official Auth0 page. The server stores a persistent refresh token locally in ~/.config/jumbo-mcp/tokens.json and renews access tokens automatically.

npm run login     # opens browser; paste redirected jumbo://callbacks/... URL back
npm run status    # verify active connection and loyalty points

Headless host (Docker, systemd, remote gateway): copy ~/.config/jumbo-mcp/tokens.json to the host, or set the environment variable directly:

JUMBO_REFRESH_TOKEN="your_refresh_token_here"

Related MCP server: rema-connector

Client Integration

Add the compiled server to your MCP client config:

{
  "mcpServers": {
    "jumbo": {
      "command": "node",
      "args": ["/ABSOLUTE/PATH/TO/jumbo-mcp/dist/index.js"]
    }
  }
}

Client

Config file

Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json (macOS)%APPDATA%\Claude\claude_desktop_config.json (Windows)

Cursor

~/.cursor/mcp.json

Other clients

the same mcpServers block

Run npm link inside the cloned directory to register jumbo-mcp globally on your system:

npm link

Then use:

{
  "mcpServers": {
    "jumbo": {
      "command": "jumbo-mcp"
    }
  }
}

Method 3: Docker Deployment

A multi-stage Dockerfile is included for containerized environments:

# Build Docker image
docker build -t jumbo-mcp .

Run with mounted credentials:

{
  "mcpServers": {
    "jumbo": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-v",
        "${HOME}/.config/jumbo-mcp:/root/.config/jumbo-mcp",
        "jumbo-mcp"
      ]
    }
  }
}

Tools

Tool

Description

Parameters

jumbo_login

Verify the connection and return the loyalty identity and points balance.

None

jumbo_get_profile

Loyalty profile: name, customer ID, Extra's card, receipt preferences.

None

jumbo_list_receipts

Recent receipts with timestamps, store and transaction IDs.

page (0), page_size (10, max 30)

jumbo_get_receipt_details

Full itemized lines, unit prices, discounts, total, payment method, VAT.

transaction_id (required)

jumbo_search_receipts

Find items bought across recent receipts by keyword (e.g. 'havermelk').

query (required), max_receipts (10)

jumbo_get_balance

Live Extra's loyalty points balance.

None

jumbo_get_shopping_list

The shopping list: isActive plus every item.

None

jumbo_add_shopping_list_items

Write. Add free-text items (e.g. ['eieren']); activates the list if needed.

items (required), ensure_active (true), dedupe (true)

jumbo_remove_shopping_list_items

Write. Remove items by id.

item_ids (required)

jumbo_set_shopping_list_item_completed

Write. Tick an item off or back on.

item_id, completed (both required)

jumbo_set_shopping_list_active

Write. Activate or deactivate the list.

active (required)

jumbo_search_stores

Nearby stores by city, address or coordinates: address, distance, hours.

query, latitude, longitude (all optional)

jumbo_search_products

Search the catalog: prices, promotions, unit prices, links, SKUs.

query (required), sort, limit (20, max 30)

jumbo_get_product_recommendations

Recommendations, alternatives, cross-sells, or weekly promotions.

sku, query, promotions_only (false)

jumbo_get_promo_digest

What's on offer among the things you actually buy (read-only).

days (90), min_times (2), limit (25), category

jumbo_get_basket

Current basket: lines, quantities, unit prices, promotions, subtotal.

None

jumbo_get_deposits

Statiegeld for one order: catalogue plus deposits returned.

order_id (required)

jumbo_get_stamps

Digital stamps, active saving (spaar) campaigns, buying-stamps balance.

None


Usage examples

"Show my last 5 receipts."                     → jumbo_list_receipts
"What did I pay for milk last month?"          → jumbo_search_receipts { "query": "melk" }
"How many Extra's points do I have?"           → jumbo_get_balance
"Add eggs and milk to my shopping list."       → jumbo_add_shopping_list_items
"What's on offer that I actually buy?"         → jumbo_get_promo_digest
"Which Jumbo is closest to Utrecht?"           → jumbo_search_stores { "query": "utrecht" }

Notes

  • Prices are returned as integer cents (e.g. 139 = €1.39).

  • The shopping-list tools are the only writes. Basket, deposits, stamps and promotion tools are read-only.

  • When Jumbo rejects a call, the tool returns an error payload with Jumbo's own reason and errorMessage rather than a generic message.


Local Development

Command

Purpose

npm run dev

Run the server via tsx (development mode)

npm test

Run the unit tests (mocked HTTP, no live Jumbo calls)

npm run login

Authentication CLI wizard

npm run status

Verify the live connection and token status

npm run build

Compile TypeScript to dist/


License

MIT License - Copyright (c) 2026 Robert Schulze Dieckhoff

Available Tools

18 tools
jumbo_add_shopping_list_itemsA

Add one or more free-text items to the user's Jumbo shopping list (e.g. ['eieren']). This WRITES to the user's real Jumbo account. If the list is inactive it is activated first (set ensure_active=false to skip). Never touches the basket, checkout, orders or payments.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesOne or more free-text item names to add, e.g. ['eieren', 'melk']
dedupeNoSkip terms already on the list (case-insensitive, trimmed). Set false to allow duplicates (default true)
ensure_activeNoActivate the shopping list first if it is inactive (default true)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden and does well: it flags that this WRITES to the user's real account, discloses the activation side effect for inactive lists and how to suppress it, and explicitly enumerates untouched resources. It omits auth/permission requirements and failure behavior, keeping it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, zero filler, with the write-to-real-account warning and the side effect front-loaded. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description covers the critical facts: it is a real write, it may activate the list, and it is scoped away from basket/checkout/orders/payments. Return-value expectations and error handling are not addressed, but the essentials are present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters (items, dedupe, ensure_active) are already documented in the schema. The description's 'free-text items' phrasing and mention of ensure_active confirm intent but add no syntax or format detail beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Add one or more free-text items to the user's Jumbo shopping list') with an example, and explicitly bounds scope against sibling concerns ('Never touches the basket, checkout, orders or payments'). An agent can distinguish it from jumbo_get_shopping_list, jumbo_remove_shopping_list_items and jumbo_get_basket without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context for when to use it (adding free-text items to the shopping list) and a concrete alternative behavior ('set ensure_active=false to skip' activation). It does not explicitly name sibling tools or when to prefer them, but the exclusions make the boundary unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jumbo_get_balanceB

Get customer's live Jumbo Extra's loyalty points balance.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. 'Live' hints at a real-time fetch and implies a read-only operation, but nothing is said about authentication (a jumbo_login sibling exists), rate limits, or what the returned balance represents or whether it can be stale.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler. Every word earns its place and the resource is named immediately after the verb.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter getter with no output schema, the description is minimally adequate but leaves the caller guessing about the authentication context and the shape/units of the returned balance. It says what it fetches but not enough about the surrounding requirements.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there are no parameter semantics to clarify. Baseline 4 applies; the description correctly implies the balance is implicitly scoped to the authenticated customer.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Get ... loyalty points balance'. This clearly separates it from siblings like jumbo_get_receipt_details or jumbo_search_products, though it doesn't explicitly distinguish itself from adjacent balance-like tools such as jumbo_get_stamps or jumbo_get_deposits.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus alternatives, no prerequisites, and no exclusions. The sibling set contains several other 'get' tools (jumbo_get_stamps, jumbo_get_deposits, jumbo_get_profile) and the description offers no routing help among them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jumbo_get_basketA

Read-only view of the current Jumbo basket: lines with quantity, unit price, line total, promotions applied, and the basket subtotal. Uses the GraphQL ActiveBasket operation. No basket writes, no checkout, no order, no payment operations.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present the description carries the full burden, and it does disclose read-only semantics, the exact fields surfaced, and the backing GraphQL operation. It omits environment facts an agent might need, such as session/auth requirements (jumbo_login exists as a sibling) or behavior on an empty basket.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, front-loaded with the capability and followed by the return contract and the exclusion list. No filler or restatement of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully summarizes the returned shape (line fields plus subtotal), which is exactly what an agent needs for a zero-parameter read. Auth state and empty-basket/error behavior remain unstated, though complexity here is low.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline for a parameterless tool is 4. The description correctly implies no inputs are needed to retrieve the current basket.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Read-only view of the current Jumbo basket') and enumerates the payload (lines, quantity, unit price, line total, promotions, subtotal). This clearly separates it from the shopping-list, receipt, and store siblings, which operate on entirely different resources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit negative scope: 'No basket writes, no checkout, no order, no payment operations,' which tells the agent when not to expect mutation capability. It stops short of naming a sibling alternative for the write path (e.g., the add/remove shopping-list tools), so routing is informed but not fully directed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jumbo_get_depositsA

Read statiegeld (deposit) information for one order: the deposit catalogue and the deposits returned on that order, with the returned total. Requires an order_id — Jumbo's returned-deposits query is order-scoped.

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYesOrder id (from the order history / receipts)

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does disclose that this is a read-only, order-scoped query and describes the shape of the result (catalogue + returned deposits + returned total), which matters since there is no output schema. It omits auth requirements, rate limits, and behavior on an unknown order_id, so it falls short of fully transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler, with the resource and its contents front-loaded and the required-parameter constraint following. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read tool with no output schema and no annotations, the description covers what the tool does, what it returns, and the scoping rule. Auth/permission expectations and error behavior are not covered, but the core information an agent needs to call it correctly is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single order_id parameter, and the schema already notes it comes from order history/receipts. The description only restates that order_id is required and adds the rationale that the query is order-scoped, which is modest added value over the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Read) and resource (statiegeld/deposit information for one order) and enumerates exactly what the payload contains: the deposit catalogue, the returned deposits, and the returned total. No sibling tool covers deposits, so it is distinguishable from the rest of the jumbo_* family without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a prerequisite (order_id is required) and a scoping constraint (the returned-deposits query is order-scoped), which implies usage for a single known order. However, it names no alternative and states no when-not-to-use condition, so the guidance remains implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jumbo_get_product_recommendationsC

Get product recommendations, alternatives, and cross-sell suggestions for a product by SKU or search query, or retrieve current weekly promotional recommendations.

ParametersJSON Schema
NameRequiredDescriptionDefault
skuNoProduct SKU (e.g. '293407STK') to find direct brand alternatives and substitutes
queryNoSearch product keyword (e.g. 'havermelk', 'yoghurt', 'koffie') to find top products and their alternatives
promotions_onlyNoSet to true to retrieve current weekly promotional recommendations

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the returned content categories but says nothing about authentication needs, result limits, ordering, or how the three modes differ behaviorally (e.g., precedence if both sku and query are passed).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single well-formed sentence with the returned resource front-loaded. It is efficient and wastes no words, though the trailing promotions clause makes the sentence slightly dense.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description is the only source of behavioral context, and it covers the return content but omits usage routing and behavioral constraints. Adequate but with clear gaps for a three-mode tool with optional params.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the parameter descriptions already explain each mode (SKU vs query vs promotions_only) with examples. The description adds no syntax or semantic detail beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') with a clearly named resource ('product recommendations, alternatives, and cross-sell suggestions') and enumerates the three input modes (SKU, query, promotions). It is easy to grasp what the tool returns, though it never explicitly distinguishes itself from close siblings like jumbo_search_products or jumbo_get_promo_digest.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It hints at three usage modes (by SKU, by query, or promotions_only) but provides no when-to-use guidance, no prerequisites, and no naming of alternatives. An agent must infer from the schema alone whether this or jumbo_search_products / jumbo_get_promo_digest is the right call.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jumbo_get_profileB

Get customer loyalty profile, name, customer ID, Extra's card details, and digital receipt preferences.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full behavioral burden, yet it only lists return fields. It does not state authentication requirements (notable given a jumbo_login sibling exists), whether the call is read-only, error behavior, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with the resource and returned data enumerated; no filler or redundancy. Every clause maps to actual payload content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully enumerates returned fields (profile, name, customer ID, card details, receipt preferences), which is the right place for that information. The main omission is auth/ownership context in a tool set that includes jumbo_login.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there are no parameter semantics to explain; the baseline for a 0-param tool applies. The description correctly adds no spurious parameter discussion.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get') and resource ('customer loyalty profile') and enumerates the data returned (name, customer ID, Extra's card details, receipt preferences). This is clearly distinguishable from siblings like jumbo_get_balance or jumbo_list_receipts, though it never names an alternative explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no when-to-use guidance, prerequisites, or alternative tools to consider. It implicitly suggests calling it when profile data is needed, but nothing is stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jumbo_get_promo_digestA

Answer "of the things I actually buy, what is on offer right now?". Mines recent receipts for purchase frequency, resolves each frequent item to a current assortment product, and reports the offer price (was/now), discount, promo type, validity window and unit price for everything currently promoted. Read-only: no writes, no basket, no checkout, no order or payment operations.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoHow many days of receipts to mine (default 90)
limitNoMaximum offers to return (default 25)
categoryNoOptional category filter (case-insensitive substring of the product category)
min_timesNoMinimum times a product must have been bought to count as frequent (default 2)

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it explicitly declares 'Read-only: no writes, no basket, no checkout, no order or payment operations' — a genuinely useful safety disclosure. It stops short of mentioning auth requirements (there is a jumbo_login sibling), rate limits, or behavior when no receipts exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the user-facing question, then the mechanism, then the safety profile. No restatement of the tool name and no filler; every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, but the description enumerates the returned fields (was/now price, discount, promo type, validity window, unit price), which compensates well. Combined with the read-only disclosure, the picture is nearly complete, with only auth/precondition detail missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds conceptual meaning: 'mines recent receipts' clarifies what days governs and 'purchase frequency' clarifies what min_times governs. It does not explain the category substring matching or how limit interacts with resolution of frequent items, so it stays just above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a concrete verb chain (mine receipts → resolve to assortment product → report offers) against a named resource, and it is framed by the exact user question it answers. It is clearly distinguishable from siblings like jumbo_get_product_recommendations and jumbo_search_products, which do not combine purchase history with current promotions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'of the things I actually buy, what is on offer right now?' framing gives an agent a clear condition for selecting this tool over a generic product search. However, it never names an alternative tool or states when NOT to use it (e.g. for browsing promotions on items you have never bought).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jumbo_get_receipt_detailsB

Get detailed line items, unit prices, discounts, total, payment method, and Extra's points for a specific Jumbo receipt.

ParametersJSON Schema
NameRequiredDescriptionDefault
transaction_idYesThe transactionId of the receipt (from jumbo_list_receipts)

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. 'Get' implies a read, and it usefully discloses the fields returned, but it says nothing about authentication, what happens when a transaction_id is not found, or any rate/error behavior. For a simple getter this is adequate but leaves real gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence with zero waste; the enumerated return fields earn their place because there is no output schema to convey them elsewhere.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Because there is no output schema, the description correctly compensates by listing the returned fields, and with only one required parameter the input side is simple. However, with no annotations and no mention of failure or auth behavior, it stops short of being fully complete for an unannotated tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter with 100% schema description coverage, so the schema already documents transaction_id and its source. The description adds no format, prefix, or validation detail beyond what the schema supplies, making this the baseline case.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get') and resource ('receipt details') and even enumerates the returned fields (line items, unit prices, discounts, total, payment method, Extra's points), which lets an agent distinguish it from jumbo_list_receipts and jumbo_search_receipts. It does not name those siblings explicitly, so differentiation is only implied by the 'specific Jumbo receipt' scoping.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus jumbo_list_receipts or jumbo_search_receipts. The only hint about provenance lives in the schema ('from jumbo_list_receipts'), not in the description, so the agent must infer the retrieval workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jumbo_get_shopping_listA

Get the user's Jumbo shopping list ('lijstje'): whether it is active and every item (id, term, sku, completed).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full disclosure burden, and it does add value by spelling out the exact return contents (active status plus per-item fields). It remains silent on auth/permission requirements despite a jumbo_login sibling, and on error or empty-list behavior, so it 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that front-loads the verb and resource and then lists return contents without waste. The Dutch alias ('lijstje') is a cheap, useful disambiguation for a domain-specific name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description correctly takes on the job of describing the return payload, which it does thoroughly. Only minor gaps remain: no statement of auth requirements or behavior when the list is empty or inactive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, which is the baseline-4 case; the description correctly implies no filtering or identifier input is needed. There is nothing further for it to document.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get the user's Jumbo shopping list') and goes further by enumerating the returned payload (active flag, item id/term/sku/completed), which makes its role as the read-side counterpart to the add/remove/set siblings obvious. It never names those siblings explicitly, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no when-to-use, when-not-to-use, or alternative tool guidance. An agent can infer it is the read operation for the shopping list, but nothing states prerequisites (e.g. that jumbo_login may be required) or when a different listing tool is preferable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jumbo_get_stampsA

Read the user's digital stamps: per-campaign stamp counts, active saving (spaar) campaigns, and the buying-stamps balance.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It implicitly establishes a read-only, non-mutating operation and discloses the shape of the returned data, but says nothing about authentication requirements (a jumbo_login sibling exists), error conditions, or whether results are cached/live. Adequate, 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with the action first and the returned data enumerated after the colon. Every clause earns its place and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates well by naming the three categories of data returned, which is exactly what an agent needs to decide whether to call it. The only missing piece is the auth/prerequisite context implied by the presence of jumbo_login.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is no parameter semantics to explain and the baseline of 4 applies. The description cannot and need not add anything about inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb ('Read') and resource ('digital stamps') and then enumerates exactly what is returned: per-campaign stamp counts, active saving (spaar) campaigns, and the buying-stamps balance. This enumeration distinguishes it from adjacent read tools like jumbo_get_balance and jumbo_get_deposits without needing to name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the verb 'Read' — an agent can infer this is the retrieval tool for stamp data. There is no explicit statement of when to prefer this over siblings such as jumbo_get_balance, nor any prerequisite (e.g. login) noted, so the guidance is adequate but thin.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jumbo_list_receiptsB

List recent Jumbo supermarket store receipts (kassabonnen) with date, store location, and transaction ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default 0)
page_sizeNoNumber of receipts to return (default 10)

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full behavioral burden. It names the returned fields (date, store location, transaction ID), which is genuinely useful, but says nothing about authentication/loyalty-account requirements (a jumbo_login sibling exists), sort order, or rate limits. 'List' weakly implies a safe read, but that is inference, not disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence, front-loaded with the verb and resource, with zero filler. Even the parenthetical '(kassabonnen)' earns its place by matching Dutch-language queries.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, zero-required-parameter read tool, the description plus a fully documented schema is close to sufficient, and with no output schema the description usefully enumerates returned fields. It still omits default ordering, pagination limits beyond the schema, and any hint that login may be required.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for both parameters (page, page_size) including defaults and min/max bounds, so the schema does all the work. The description adds no pagination or page-size semantics, which is the expected baseline when coverage is complete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (Jumbo supermarket store receipts) with a scope qualifier ('recent'), so the agent knows this is an unfiltered recent-receipts listing. It does not, however, distinguish itself from the sibling jumbo_search_receipts, leaving the list-vs-search split implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Recent' hints at browsing recent receipts with no query filters, which implies search_receipts is for targeted lookups, but this is never stated. No when-not conditions, prerequisites (login?), or named alternatives are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jumbo_loginA

Check authentication status or establish session with Jumbo. The MCP server uses persistent pre-configured Auth0 tokens, so this verifies active connection and returns user loyalty identity.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full behavioral burden and does well: it discloses that the server uses persistent pre-configured Auth0 tokens (so no credential parameter is expected), that it verifies an active connection, and that it returns a user loyalty identity. Failure/expiry behavior is not described, but the auth model is clearly communicated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the primary action and followed by the mechanism/return context. No filler, though the second sentence is slightly packed with two ideas (auth model and return value).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-parameter, no-annotation, no-output-schema tool, the description supplies the key missing context: the auth mechanism and what the call returns. It is nearly sufficient, missing only error/expiry handling that an agent might want to know.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, so per the rubric the baseline is 4. The description correctly implies no input is needed, and nothing about parameter meaning is left ambiguous.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb-and-resource pair ('check authentication status' / 'establish session with Jumbo'), which clearly distinguishes it from all the data-retrieval siblings in the list. Its purpose is unambiguous, though it does not explicitly contrast itself against any named sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: an agent should call this to verify connectivity or start a session. There is no explicit when-to-use or when-not-to-use framing, and no ordering guidance (e.g. call before other tools), so the agent must infer the trigger condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jumbo_remove_shopping_list_itemsA

Remove one or more items from the user's Jumbo shopping list by item id (ids come from jumbo_get_shopping_list). This WRITES to the user's real Jumbo account. Shopping list only.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idsYesOne or more shopping-list item ids to remove

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does important work: it flags that this WRITES to the user's real Jumbo account – a critical disclosure for a destructive operation. It doesn't cover reversibility or auth requirements, hence not a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact sentences, front-loaded with the action and resource, with the write warning and scope constraint earning their place. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a single-parameter mutation tool with no output schema and no annotations, the description covers action, source of ids, write semantics, and scope. It stops short of noting what happens on failure or which account is affected, but is nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single parameter item_ids is fully documented in the schema, so the description needn't add param detail. The description does note ids come from jumbo_get_shopping_list, which is useful but minor; baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (remove) and resource (Jumbo shopping list items) with the identifier source. It clearly distinguishes itself from the inverse sibling jumbo_add_shopping_list_items and from read-only list tools like jumbo_get_shopping_list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names the source of ids (jumbo_get_shopping_list) and scopes the tool to the shopping list only, giving the agent clear context. It doesn't state explicit exclusions or alternatives for edge cases, so it falls just short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jumbo_search_productsA

Search the entire Jumbo supermarket grocery catalog by keyword. Returns matching products with prices, active discounts, unit prices, web links, and SKUs.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoOptional sort order: 'PRICE_ASC' (cheapest first) or 'PRICE_DESC' (most expensive first)
limitNoMaximum number of products to return (default: 20, max: 30)
queryYesGrocery product keyword to search for (e.g. 'koffie', 'havermelk', 'biologische bananen')

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It does disclose the shape of the response (prices, active discounts, unit prices, web links, SKUs), which is genuinely useful, but it says nothing about authentication requirements, rate limits, pagination behavior, or empty-result handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly written sentences with the purpose front-loaded and the return payload summarized second. There is no filler or repetition of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, but the description compensates by enumerating the fields returned, and the limit parameter bounds the result size in place of documented pagination. Only auth/permission context is missing, which is minor for a public catalog search.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters (query, limit, sort) are already documented in the schema, including the enum values for sort and the min/max for limit. The description adds no parameter-level detail beyond that, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (search) and resource (the entire Jumbo supermarket grocery catalog) scoped by keyword, and enumerates the returned fields. It is clearly distinguishable from siblings like jumbo_search_stores or jumbo_get_product_recommendations by resource, though it never explicitly names or contrasts them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: 'search ... by keyword' tells the agent this is the finder for products, but there is no guidance on when to prefer it over jumbo_get_product_recommendations, jumbo_search_stores, or jumbo_get_basket, and no exclusions or prerequisites are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jumbo_search_receiptsA

Search for specific grocery items purchased across recent Jumbo receipts by keyword (e.g. 'havermelk', 'bio ei', 'skyr').

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesProduct keyword to search for
max_receiptsNoMaximum number of recent receipts to inspect (default 10)

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden, and this is a low-risk read operation. It adds the meaningful qualifier that the search is limited to 'recent' receipts, but says nothing about authentication (jumbo_login exists as a sibling), result limits, matching semantics, or what happens when nothing matches.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that front-loads the verb and resource and spends its remaining words on scope and examples. Every clause earns its place and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter read tool with no annotations and no output schema, the description covers what is searched but not the shape of the result (matching line items vs. receipts, whether matches are aggregated per receipt, or ordering). The output schema does not exist to fill that gap, leaving moderate incompleteness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented in the schema, establishing the baseline of 3. The description's examples do clarify that the query accepts Dutch product keywords and multi-word phrases, which is a modest addition over 'Product keyword to search for', but it says nothing extra about max_receipts.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('search ... receipts') with a clear scope: grocery items purchased across recent Jumbo receipts by keyword. The examples ('havermelk', 'bio ei', 'skyr') pin down what a query looks like. It differentiates itself implicitly from jumbo_list_receipts and jumbo_get_receipt_details, but never names a sibling to make the distinction explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: an agent can infer this is for finding whether/where an item was bought, as opposed to looking up a single receipt. There is no explicit when-to-use, when-not-to-use, or comparison against jumbo_search_products (catalog) or jumbo_list_receipts (chronological listing).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jumbo_search_storesA

Search nearby Jumbo supermarket stores by city name, address, or geographic coordinates (latitude, longitude). Returns address, distance, opening hours, and facilities.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoDutch city, address, or postal code (e.g. 'Amsterdam', 'Utrecht', '1011NG')
latitudeNoOptional latitude (e.g. 52.3702)
longitudeNoOptional longitude (e.g. 4.8952)

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it partially meets it by naming the return fields (address, distance, opening hours, facilities). It omits behavior that matters here: all three parameters are optional, so nothing explains what happens on an empty call, whether authentication is required, or how far 'nearby' extends.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero filler: purpose and accepted inputs come first, return contents second. Every clause earns its place and nothing is repeated from the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-annotation, no-output-schema tool, the description is adequate: it covers input modes and return fields. It leaves gaps an agent would want filled — behavior when no arguments are supplied, auth requirements, and any limit on the number of stores or the search radius.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the basline is 3: the schema already documents query as a Dutch city/address/postal code and gives coordinate examples. The description only restates the coordinate pair as latitude/longitude and adds no format, radius, or precedence rules for combining query with coordinates.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Search nearby Jumbo supermarket stores') plus the three search modalities (city name, address, coordinates), so an agent can immediately tell this apart from the product/receipt/shopping-list siblings. No ambiguity about what the tool returns or what it operates on.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the usage context (locating stores via one of three inputs) and no sibling tool competes for that job, so the alternative is implicit. However, it never states when to prefer query-based search versus coordinate search, nor that a query is unnecessary when coordinates are supplied. Guidance is implied, not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jumbo_set_shopping_list_activeA

Activate or deactivate the user's Jumbo shopping list ('lijstje'). This WRITES to the user's real Jumbo account; it does not add or remove items.

ParametersJSON Schema
NameRequiredDescriptionDefault
activeYestrue to activate the shopping list, false to deactivate

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does disclose the key trait: this WRITES to the user's real Jumbo account. However, it omits auth/login prerequisites, whether the toggle is reversible, and any confirmation or side-effect details, so important behavioral context is still missing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with zero filler; the core action is front-loaded and the clarifying exclusion follows immediately. Nothing redundant or padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-boolean toggle with no output schema and no annotations, the description covers the action, the target account, and the negative scope, which is nearly everything needed. Only the write's prerequisites and result behavior are left unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single boolean parameter with 100% schema description coverage ('true to activate, false to deactivate'), so the schema already does the work. The description restates the activate/deactivate meaning but adds no syntax or edge-case detail beyond it, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb pair (activate/deactivate) and resource (the user's Jumbo shopping list / 'lijstje'), which cleanly separates it from jumbo_get_shopping_list, jumbo_add_shopping_list_items and jumbo_remove_shopping_list_items. The parenthetical alias also helps an agent map it to the user-facing term.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear usage context (toggle the list on/off) and an explicit when-not ('it does not add or remove items'), which steers the agent away from the item-mutation siblings. It stops short of naming those alternative tools, so routing is inferred rather than spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jumbo_set_shopping_list_item_completedA

Tick an item on the user's Jumbo shopping list off (completed=true) or back on (completed=false). This WRITES to the user's real Jumbo account.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYesShopping-list item id (from jumbo_get_shopping_list)
completedYestrue to tick off, false to un-tick

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden, and it does disclose the most important behavioral trait: this WRITES to the user's real Jumbo account, with capitalization for emphasis. It also clarifies both directions of the operation (toggle on and off). It does not cover auth requirements, idempotency, or error behavior, so it falls short of a complete disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences, front-loaded with the action and its two modes, followed by the critical write disclosure. No filler text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter tool with full schema coverage and no output schema, the description covers the action, both parameter meanings, and the account-write risk. Remaining gaps (auth/permission requirements) are modest given the schema already points to jumbo_get_shopping_list as the source of item_id.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and both parameters are documented there, including where item_id comes from. The description's mapping of completed=true to 'tick off' and false to 'un-tick' restates the schema rather than adding new semantics, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb ('tick off / back on') on a specific resource ('an item on the user's Jumbo shopping list'), with the boolean semantics stated inline. It is clearly distinguishable from siblings like jumbo_add_shopping_list_items and jumbo_remove_shopping_list_items, which modify the list rather than an item's completion state.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the toggle semantics, but there is no explicit when-to-use guidance relative to siblings (e.g., 'use jumbo_get_shopping_list first to obtain item_id', or how this differs from removing/adding items). No prerequisites or exclusions are stated in the description itself.

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.

  1. 18 tool updatesv0.1.0
    • First observedjumbo_add_shopping_list_items
    • First observedjumbo_get_balance
    • First observedjumbo_get_basket
    • First observedjumbo_get_deposits
    • First observedjumbo_get_product_recommendations
    • First observedjumbo_get_profile
    • First observedjumbo_get_promo_digest
    • First observedjumbo_get_receipt_details
    • First observedjumbo_get_shopping_list
    • First observedjumbo_get_stamps
    • First observedjumbo_list_receipts
    • First observedjumbo_login
    • First observedjumbo_remove_shopping_list_items
    • First observedjumbo_search_products
    • First observedjumbo_search_receipts
    • First observedjumbo_search_stores
    • First observedjumbo_set_shopping_list_active
    • First observedjumbo_set_shopping_list_item_completed

TDQS

A3.6/5.0

Scored across 18 tools

Disambiguation4/5

Most tools target a clearly distinct resource+action (stores, products, receipts, shopping list, basket, deposits). However there is real overlap between jumbo_get_balance (Extra's points) and jumbo_get_stamps (stamps/balance), between jumbo_list_receipts and jumbo_search_receipts, and between jumbo_get_product_recommendations (which includes weekly promo recommendations) and jumbo_get_promo_digest. These are recoverable from the descriptions but could cause misselection.

Naming Consistency5/5

All 18 tools use a uniform jumbo_ prefix with snake_case verb_noun structure (jumbo_search_stores, jumbo_get_receipt_details, jumbo_add_shopping_list_items, jumbo_set_shopping_list_active). The only mild deviation is jumbo_login being a bare verb, but it still fits the pattern predictably.

Tool Count4/5

18 tools is reasonable for a full grocery domain covering stores, catalog, receipts, loyalty, shopping list and promos. It leans slightly heavy, with the shopping list alone consuming five tools (get/add/remove/set_active/set_item_completed), but each still earns its place.

Completeness3/5

Coverage spans discovery, receipts, loyalty and shopping list CRUD well, but there is a notable asymmetry: the shopping list is fully writable while the basket is explicitly read-only, with no add-to-cart, checkout, order placement or order-history tools. Also no product-detail-by-SKU operation, which limits deeper workflows.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI assistants to interact with Picnic online supermarket for grocery shopping, meal planning, cart management, delivery tracking, and budget-conscious shopping in Netherlands and Germany.
    103 npm
    113
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to access REMA 1000 data for personal accounts, including product searches with prices, personal offers, campaigns, receipts, and shopping list management.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to search the catalog, manage a cart and usual orders, find delivery slots, and handle favorites, shopping lists, past orders, and item remarks through the store's API, with login and payment left to the user on the website.
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables shopping at Albert Heijn through an AI assistant by searching products, finding bonus deals and recipes, managing a shopping list and delivery order, and reading order history and receipts. It connects to the same API as the AH mobile app and handles login, token storage, and local stdio or remote HTTP transport.
    33
    371 npm
    1
    Apache 2.0