# Albert Heijn (npm · albert-heijn-mcp)

Unofficial Albert Heijn server: products, bonus deals, recipes, shopping list, orders and receipts.

- Trust score: 90/100 (high trust)
- Change this week: +2
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- npm · `albert-heijn-mcp`: 90/100 (this document), [markdown](https://verifymcp.io/servers/olekpuchka-albert-heijn-mcp/albert-heijn-mcp.md), [page](https://verifymcp.io/servers/olekpuchka-albert-heijn-mcp/albert-heijn-mcp)

## Channel facts

- Registry: `npm`
- Package: `albert-heijn-mcp`
- Version: `1.9.0`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Supply Chain Security**: 98/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - 30 of 92 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 97/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to olekpuchka/albert-heijn-mcp).
  - Clear OSI-approved license (Apache-2.0).
  - Actively maintained (last published 0 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 75/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 4842 tokens (~130/item across 37 items; 37 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 70/100
  - Stability observed for 21 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (68% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - All 5 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
  - An AI judge read all 38 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the Albert Heijn MCP server?

Albert Heijn runs locally as an npm package, launched with npx -y albert-heijn-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add olekpuchka-albert-heijn-mcp -- npx -y albert-heijn-mcp
```

### Cursor

```json
{
  "mcpServers": {
    "olekpuchka-albert-heijn-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "albert-heijn-mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "olekpuchka-albert-heijn-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "albert-heijn-mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add olekpuchka-albert-heijn-mcp -- npx -y albert-heijn-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "olekpuchka-albert-heijn-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "albert-heijn-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add olekpuchka-albert-heijn-mcp --command npx --arg -y --arg albert-heijn-mcp
```

### Hermes

```yaml
mcp_servers:
  olekpuchka-albert-heijn-mcp:
    command: "npx"
    args: ["-y", "albert-heijn-mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "olekpuchka-albert-heijn-mcp": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "albert-heijn-mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add olekpuchka-albert-heijn-mcp -t stdio -c npx -a -y albert-heijn-mcp
```

### Other

```json
{
  "mcpServers": {
    "olekpuchka-albert-heijn-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "albert-heijn-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-04 (score 90, +16)

- [security regression] Tool safety: pass → unverified
- [security regression] Stability: 0.63 → unverified
- [security improvement] Malware scan: unverified → pass
- [functional regression] Schema quality: 4375 → 4842
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional] Package version: 1.8.0 → 1.9.0

### 2026-11-03 (score 74, −15)

- [security regression] Malware scan: pass → unverified
- [functional regression] Schema quality: 3768 → 4375
- [functional] Package version: 1.7.2 → 1.8.0

### 2026-11-02 (score 89, +10)

- [security improvement] Known CVEs: unverified → pass
- [functional improvement] Dependency health: unverified → 0.85

### 2026-11-01 (score 79, −9)

- [security regression] Stability: 0.53 → unverified
- [security regression] Known CVEs: pass → unverified
- [security regression] Tool safety: pass → unverified
- [functional regression] Capabilities: pass → unverified
- [functional regression] Dependency health: 0.85 → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional] Package version: 1.7.1 → 1.7.2

### 2026-10-29 (score 88, +1)

No change was recorded against any check on this day. Stability & Change Management went from 43 to 47. That category is still filling its 30-day observation window: 13 days of observed history at the previous scan, 14 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-27 (score 87, +1)

No change was recorded against any check on this day. Stability & Change Management went from 37 to 40. That category is still filling its 30-day observation window: 11 days of observed history at the previous scan, 12 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-25 (score 86, +1)

No change was recorded against any check on this day. Stability & Change Management went from 30 to 33. That category is still filling its 30-day observation window: 9 days of observed history at the previous scan, 10 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-23 (score 85, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

## MCP tools (37)

### `ah_login` (~175 tokens)

Albert Heijn: Log In

Log in to Albert Heijn. Call without arguments to start. On the user's own computer this usually opens a login window that finishes the login by itself. Otherwise it returns the AH login link and step-by-step instructions: show them to the user as given, in order (the developer console must be open before they log in). The user then copies a link like appie://login-exit?code=...; call ah_login again with code set to that link (or just the code) to finish. Codes are single-use and expire quickly. If already logged in, returns the account name; to switch accounts, call ah_logout first.

Input parameters:

- `code` (string): The appie://login-exit?code=... link the user copied after logging in, or just the code. Omit to start a login.

### `ah_logout` (~41 tokens)

Albert Heijn: Log Out

Log out of Albert Heijn by deleting the stored tokens. Use this to switch accounts or reset a broken session. After logout, call ah_login to authenticate again.

### `ah_get_member_profile` (~73 tokens)

Albert Heijn: Member Profile

Get your Albert Heijn member profile and savings. Returns name, email (masked), bonus_card_number (last 4 digits only), koopzegels (savings stamps: stamps saved, full booklets, euros invested, interest earned, and payout_value they are worth now), and the air_miles balance.

Output parameters:

- `air_miles` (number)
- `air_miles_error` (string)
- `bonus_card_number` (string)
- `email` (string)
- `koopzegels` (object)
- `name` (string)
- `savings_error` (string)

### `ah_search_products` (~451 tokens)

Albert Heijn: Search Products

Search Albert Heijn (Dutch supermarket) products by keyword. Pass one or more queries (max 10) to search for several products in one call. Prefer Dutch search terms for best results: e.g. 'melk' (milk), 'kaas' (cheese), 'brood' (bread), 'kip' (chicken), 'appel' (apple). Set bonus=true to return only products currently on promotion. filters narrows results to products matching all of them, e.g. ['organic', 'gluten_free']: organic, prijsfavoriet (AH's budget label), new, frozen, a diet (vegan, vegetarian, low_sugar, low_fat, low_salt), or free from an allergen (gluten_free, lactose_free, milk_free, egg_free, nut_free, peanut_free, soy_free, fish_free, shellfish_free, sesame_free, celery_free, mustard_free, lupin_free, sulphite_free). sort orders results: relevance (default), price_low_high, price_high_low, most_bought (by this user), nutriscore. category_id (from ah_get_categories) limits results to one category; with category_id, queries may be left out to list the category itself, e.g. the cheapest products in it. Returns, per query: id, title, price, bonus_price, unit, is_bonus, bonus_mechanism, image_url. When you mention a product or recipe from the result, link its name to its url.

Input parameters:

- `bonus` (boolean): Return only products currently on bonus/promotion
- `category_id` (integer): Only products in this category, from ah_get_categories
- `filters` (array): Only products matching all of these, e.g. ["organic", "vegan"]
- `limit` (integer): Maximum results per query (default 10 for one query, 5 for several; max 30)
- `queries` (array): Search queries in Dutch or English, e.g. ["melk"] or ["melk", "kaas", "brood"] (max 10)
- `sort` (string): Result order (default relevance)

Output parameters:

- `searches` (array)

### `ah_get_products` (~244 tokens)

Albert Heijn: Product Details

Get detailed information about one or more Albert Heijn products by ID (max 20). Returns title, brand, category, description, price, unit size, bonus info, NutriScore, property icons. Set include_nutritional_info=true to also return calories, fat, protein, etc. Get product IDs from ah_search_products, or pass barcodes: the EAN number under a product's barcode (8, 12, 13 or 14 digits, e.g. read from a photo of the pack). A barcode AH doesn't sell returns an error for it. When you mention a product or recipe from the result, link its name to its url.

Input parameters:

- `barcodes` (array): Barcode (EAN) numbers, e.g. ["8710400058519"]; counted in the max of 20 products (max 50 barcodes)
- `include_nutritional_info` (boolean): Include nutritional values (default false)
- `product_ids` (array): Product IDs from ah_search_products, e.g. [123456] or [123456, 789012]; at most 20 products are fetched per call (max 50 ids)

Output parameters:

- `products` (array)

### `ah_get_product_alternatives` (~116 tokens)

Albert Heijn: Product Alternatives

Get products Albert Heijn suggests instead of a given product: similar products and substitutes, e.g. when it is sold out or to find a cheaper or organic option. Returns the same fields as ah_search_products. When you mention a product or recipe from the result, link its name to its url.

Input parameters:

- `limit` (integer): Maximum number of alternatives (default 10, max 30)
- `product_id` (integer, required): Product ID, e.g. from ah_search_products or ah_get_shopping_list

Output parameters:

- `products` (array)

### `ah_get_categories` (~92 tokens)

Albert Heijn: Product Categories

List Albert Heijn's product categories (the aisles of ah.nl), e.g. 'Groente, aardappelen' or 'Kaas'. Without parent_id returns the top-level categories; with a parent_id, its subcategories. Pass a category id as category_id to ah_search_products to search or list products in it.

Input parameters:

- `parent_id` (integer): Category id whose subcategories to list

Output parameters:

- `categories` (array)

### `ah_get_bonus_offers` (~286 tokens)

Albert Heijn: Bonus Offers

Get Albert Heijn bonus/promotional offers. Use this (not ah_search_products) when the user asks what is on bonus/sale/discount. Returns this week's bonus by default; set period='next' for next week's bonus, which AH publishes a few days before the new bonus week starts. Supports optional keyword filter to find e.g. cheese on bonus: set query='kaas'. Set previously_bought=true for offers on products the user bought before (AH's 'Eerder gekocht'). Group deals (e.g. '2+1 gratis', 'Alle yoghurt 25% korting') have no id but a bonus_segment_id — pass that to ah_get_bonus_group_products to see the individual products in the group. Returns id, bonus_segment_id, title, original_price, bonus_price, discount_percentage, bonus_mechanism. When you mention a product or recipe from the result, link its name to its url.

Input parameters:

- `limit` (integer): Maximum number of results to return (default 20)
- `period` (string): Which bonus week to return: 'current' (default) or 'next'
- `previously_bought` (boolean): Only offers on products the user bought before
- `query` (string): Optional keyword filter (Dutch or English) applied client-side, e.g. 'kaas', 'vlees', 'bier'

Output parameters:

- `offers` (array)

### `ah_get_bonus_group_products` (~152 tokens)

Albert Heijn: Bonus Group Products

Get all individual products belonging to a specific Albert Heijn bonus promotion group. Use this to drill into a deal like '2+1 gratis kaas' or 'Alle yoghurt 25% korting'. Get segment_id from the bonus_segment_id field in ah_get_bonus_offers results. For an offer from next week's bonus, set period='next'. Returns the same fields as ah_search_products. When you mention a product or recipe from the result, link its name to its url.

Input parameters:

- `period` (string): Bonus week of the offer: 'current' (default) or 'next'
- `segment_id` (string, required): Bonus segment ID from the bonus_segment_id field in ah_get_bonus_offers

Output parameters:

- `products` (array)

### `ah_get_personal_offers` (~183 tokens)

Albert Heijn: Personal Offers

Get the user's personal Albert Heijn offers (the Bonus Box, 'persoonlijke bonus'): deals picked for this member that only apply after they are activated. Returns max_activations (how many offers the member may activate this week), activated_count, and per offer: id, title, status ('activated' or 'available'), original_price, bonus_price, discount_percentage, unit, and product_id when the offer covers one product. For an offer on several products, pass its id as segment_id to ah_get_bonus_group_products to list them. Activate offers with ah_activate_personal_offer. Set period='next' for next week's offers once AH publishes them. When you mention a product or recipe from the result, link its name to its url.

Input parameters:

- `period` (string): Which bonus week: 'current' (default) or 'next'

Output parameters:

- `activated_count` (number)
- `max_activations` (number)
- `offers` (array)

### `ah_activate_personal_offer` (~135 tokens)

Albert Heijn: Activate Personal Offer

Activate one or more of the user's personal Albert Heijn offers (Bonus Box) so the discount applies in the store and online. Get offer ids from ah_get_personal_offers. AH allows only a limited number of activations per week (max_activations) and an activation cannot be undone, so only activate the offers the user chose. Offers that are already active are skipped.

Input parameters:

- `offer_ids` (array, required): Offer ids from ah_get_personal_offers, e.g. ["575604"]
- `period` (string): Bonus week of the offers: 'current' (default) or 'next'

Output parameters:

- `activated` (array)
- `activated_count` (number)
- `already_active` (array)
- `failed` (array)
- `max_activations` (number)

### `ah_search_recipes` (~312 tokens)

Albert Heijn: Search Recipes

Search Allerhande, Albert Heijn's recipe collection. Dutch search terms work best, e.g. 'pasta', 'stamppot', 'kip curry'; a recipe matches when it has all the words. filters narrows results to recipes matching all of them, e.g. ['vegetarian', 'quick', 'italian']: a label (easy, quick, budget, healthy, light), course (main_course, lunch, dessert, ...), dish (pasta, soup, salad, ...), main ingredient (meat, fish, ...), diet (vegan, gluten_free, ...), occasion, season, cooking method (oven, airfryer, ...) or cuisine (italian, asian, ...). query may be left out to browse by filters alone. sort orders results: relevance (default), newest, popular. Returns id, title, url, cook_minutes, servings, courses, nutri_score, rating, and corrected_query when AH fixed a typo. Use the id with ah_get_recipe for ingredients and steps. When you mention a product or recipe from the result, link its name to its url.

Input parameters:

- `filters` (array): Only recipes matching all of these, e.g. ["vegetarian", "quick"]
- `limit` (integer): Maximum number of results (default 10, max 30)
- `query` (string): Search text, e.g. 'pasta zalm'
- `sort` (string): Result order (default relevance)

Output parameters:

- `corrected_query` (string)
- `recipes` (array)
- `total` (number)

### `ah_get_recipe` (~107 tokens)

Albert Heijn: Recipe

Get an Allerhande recipe by id: ingredients, preparation steps, and nutrition per serving. Set servings to scale the ingredient quantities. To shop for it, search the ingredients with ah_search_products and add them with ah_add_to_shopping_list. When you mention a product or recipe from the result, link its name to its url.

Input parameters:

- `recipe_id` (integer, required): Recipe id from ah_search_recipes
- `servings` (integer): Number of servings to scale the ingredients to

Output parameters:

- `cook_minutes` (number)
- `courses` (array)
- `cuisines` (array)
- `description` (string)
- `id` (number)
- `ingredients` (array)
- `nutri_score` (string)
- `nutrition_per_serving` (object)
- `rating` (string)
- `servings` (string)
- `steps` (array)
- `title` (string)
- `url` (string)

### `ah_add_recipe_to_shopping_list` (~227 tokens)

Albert Heijn: Add Recipe to Shopping List

Put the ingredients of an Allerhande recipe on the shopping list in one step. Each ingredient is matched to the AH product whose name fits it best (among equally good matches, one on bonus unless prefer_bonus=false); one unit of each product is added. Water is always skipped; pass skip for anything the user already has (e.g. olive oil, salt). Set dry_run=true to show the matches without adding them. Returns the added, skipped and unmatched ingredients, and any whose search failed (worth retrying). When you mention a product or recipe from the result, link its name to its url.

Input parameters:

- `dry_run` (boolean): Only show the matches; don't add anything
- `prefer_bonus` (boolean): Prefer a matching product on bonus (default true)
- `recipe_id` (integer, required): Recipe id from ah_search_recipes
- `servings` (integer): Number of servings, as in ah_get_recipe
- `skip` (array): Ingredients to leave out, matched by name, e.g. ["olijfolie", "zout"]

Output parameters:

- `added` (array)
- `dry_run` (boolean)
- `failed` (array)
- `not_found` (array)
- `recipe` (string)
- `skipped` (array)

### `ah_get_meal_plan` (~166 tokens)

Albert Heijn: Meal Plan

Get the user's meal plan from the Albert Heijn app's weekplanner, per day from today (about two weeks): planned Allerhande recipes, their own recipes, products and notes. Use the recipe_id of a planned Allerhande recipe with ah_get_recipe or ah_add_recipe_to_shopping_list, e.g. to shop for the week's dinners; the user's own recipes (own_recipe_id) can't be opened with those tools. incomplete=true means AH failed on some days or entries, so some may be missing or shown as type other. Planning recipes is done in the AH app. When you mention a product or recipe from the result, link its name to its url.

Input parameters:

- `include_empty_days` (boolean): Also list days with nothing planned (default false)

Output parameters:

- `days` (array)
- `incomplete` (boolean)

### `ah_search_stores` (~85 tokens)

Albert Heijn: Search Stores

Find Albert Heijn stores near a Dutch postal code. If no postal_code is given, automatically uses the address from the member profile. Returns store id (use this for ah_get_last_chance_items), name, type, and address.

Input parameters:

- `postal_code` (string): Dutch postal code, e.g. '1234AB'. Optional — falls back to member address.

Output parameters:

- `stores` (array)

### `ah_get_last_chance_items` (~151 tokens)

Albert Heijn: Last-Chance Items

Get last-chance / vandaag-af / clearance items from an Albert Heijn store. Requires a store_id (use ah_search_stores to find stores, or provide postal_code to find the nearest store). Uses the dedicated bargainItems GraphQL endpoint which returns today-only markdown deals. When you mention a product or recipe from the result, link its name to its url.

Input parameters:

- `limit` (integer): Maximum number of results to return (default 20)
- `postal_code` (string): Dutch postal code (e.g. '1234AB') to find the nearest store when store_id is not known.
- `store_id` (integer): AH store ID. Required to retrieve bargain items.

Output parameters:

- `items` (array)

### `ah_get_shopping_list` (~99 tokens)

Albert Heijn: View Shopping List

Get the contents of the Albert Heijn shopping list (boodschappenlijst). In the AH app this is the basket the user fills while shopping; choosing a delivery slot moves its products into an order, after which the list is unavailable until the order is done (use ah_get_cart then). Returns item names, quantities, and product IDs. When you mention a product or recipe from the result, link its name to its url.

Output parameters:

- `items` (array)

### `ah_add_to_shopping_list` (~80 tokens)

Albert Heijn: Add to Shopping List

Add one or more products to your Albert Heijn shopping list. Pass an array of items, each with product_id (int) and quantity (int). Returns confirmation listing the names of successfully added products.

Input parameters:

- `items` (array, required): Items to add, e.g. [{"product_id": 123456, "quantity": 2}]

### `ah_add_free_text_to_shopping_list` (~98 tokens)

Albert Heijn: Add Free-Text to Shopping List

Add a free-text item to the Albert Heijn shopping list (no product ID needed). Use for reminders like 'verse bloemen', 'any good wine', or items not found in search. Free-text items have no quantity: put amounts in the text, e.g. '2 bossen bloemen'.

Input parameters:

- `name` (string, required): Free-text item description, e.g. 'verse bloemen', 'goede rode wijn'

### `ah_remove_from_shopping_list` (~108 tokens)

Albert Heijn: Remove from Shopping List

Remove one or more items from the Albert Heijn Boodschappenlijst. For product items pass product_ids; for free-text items pass names. Get product_ids from ah_get_shopping_list.

Input parameters:

- `names` (array): Free-text item names to remove, e.g. ["verse bloemen"]. Use for items without a product ID.
- `product_ids` (array): Product IDs to remove, e.g. [123456, 789012]. Use for product items.

### `ah_clear_shopping_list` (~45 tokens)

Albert Heijn: Clear Shopping List

Remove ALL items from the Albert Heijn shopping list. Irreversible — requires confirm="yes".

Input parameters:

- `confirm` (string, required): Must be "yes" to confirm

### `ah_get_favorite_lists` (~54 tokens)

Albert Heijn: View Favourite Lists

List all Albert Heijn favorite/saved shopping lists with their names and item counts. Use the returned list ID with ah_add_to_favorite_list, ah_remove_from_favorite_list or ah_delete_favorite_list.

Output parameters:

- `lists` (array)

### `ah_add_to_favorite_list` (~87 tokens)

Albert Heijn: Add to Favourite List

Add products to a named Albert Heijn favorite list. Get list_id from ah_get_favorite_lists.

Input parameters:

- `items` (array, required): Items to add, e.g. [{"product_id": 123456, "quantity": 1}]. Quantity 0 is treated as 1.
- `list_id` (string, required): Favorite list ID from ah_get_favorite_lists

### `ah_remove_from_favorite_list` (~73 tokens)

Albert Heijn: Remove from Favourite List

Remove products from a named Albert Heijn favorite list. Get list_id from ah_get_favorite_lists.

Input parameters:

- `list_id` (string, required): Favorite list ID from ah_get_favorite_lists
- `product_ids` (array, required): Product IDs to remove, e.g. [123456, 789012]

### `ah_create_favorite_list` (~72 tokens)

Albert Heijn: Create Favourite List

Create a new, empty Albert Heijn favorite list with the given name; AH drops some punctuation, such as '-'. Returns its id; add products with ah_add_to_favorite_list.

Input parameters:

- `name` (string, required): Name of the list, e.g. 'Weekend' or 'Pasta night'

Output parameters:

- `id` (string)
- `item_count` (number)
- `name` (string)
- `updated_at` (string)

### `ah_delete_favorite_list` (~73 tokens)

Albert Heijn: Delete Favourite List

Delete an Albert Heijn favorite list and everything on it. Irreversible — requires confirm="yes". Get list_id from ah_get_favorite_lists.

Input parameters:

- `confirm` (string, required): Must be "yes" to confirm
- `list_id` (string, required): Favorite list ID from ah_get_favorite_lists

### `ah_get_cart` (~98 tokens)

Albert Heijn: View Order Cart

View the items in the active Albert Heijn delivery order (the order cart). An order only exists after the user has chosen a delivery or pick-up slot; the products the user is collecting before that are on the shopping list (use ah_get_shopping_list). Returns the order state, items with names and quantities, total price, and total discount. When you mention a product or recipe from the result, link its name to its url.

Output parameters:

- `order` (object)

### `ah_update_cart_item` (~119 tokens)

Albert Heijn: Update Order Item

Set the quantity of a product in the active Albert Heijn delivery order. Requires an order (started by choosing a delivery slot in the AH app or on ah.nl, which moves the shopping list into it); to collect products before that, use ah_add_to_shopping_list. Use product_id from ah_search_products or ah_get_cart. Set quantity=0 to remove the item (or use ah_remove_from_cart).

Input parameters:

- `product_id` (integer, required): Numeric product ID
- `quantity` (integer, required): New quantity (0 removes the item)

### `ah_remove_from_cart` (~60 tokens)

Albert Heijn: Remove from Order

Remove a single product from the active Albert Heijn delivery order. Use product_id from ah_get_cart. To remove products from the shopping list, use ah_remove_from_shopping_list.

Input parameters:

- `product_id` (integer, required): Numeric product ID to remove

### `ah_clear_cart` (~54 tokens)

Albert Heijn: Clear Order

Remove ALL items from the active Albert Heijn delivery order (not the shopping list). Irreversible — requires confirm="yes" to prevent accidental use.

Input parameters:

- `confirm` (string, required): Must be "yes" to confirm

### `ah_get_delivery_slots` (~85 tokens)

Albert Heijn: Delivery Slots

List the delivery time windows Albert Heijn offers at the member's address, per day (Dutch time). Booking a slot is only possible in the AH app or on ah.nl; this shows when delivery is possible. Returns date and windows like '15:00-17:00'.

Input parameters:

- `days` (integer): Number of days with slots to return (default 7)

Output parameters:

- `days` (array)
- `postal_code` (string)

### `ah_get_orders` (~94 tokens)

Albert Heijn: Orders

List Albert Heijn online delivery orders. By default returns upcoming orders (with a modifiable flag); set past=true for delivered orders. Returns id, date, time_window, total_price, status. Use the returned id with ah_get_order_details to see the items.

Input parameters:

- `limit` (integer): Maximum number of orders to return (default 10)
- `past` (boolean): Return delivered orders instead of upcoming ones

Output parameters:

- `orders` (array)

### `ah_get_order_details` (~79 tokens)

Albert Heijn: Order Details

Get the full item list for a specific Albert Heijn delivery order by its ID. Returns all products with names, quantities, and prices. Get order_id from ah_get_orders. When you mention a product or recipe from the result, link its name to its url.

Input parameters:

- `order_id` (integer, required): Numeric order ID from ah_get_orders

Output parameters:

- `id` (number)
- `items` (array)
- `state` (string)
- `total_discount` (number)
- `total_price` (number)

### `ah_get_frequent_items` (~215 tokens)

Albert Heijn: Frequently Bought Items

Get the products the user buys most often, counted over their Albert Heijn delivery orders and in-store receipts (kassabonnen) of the last few months. purchase_count is the number of orders and store visits that included the product, split into online_count and in_store_count. Use it to suggest a shopping list or spot staples that are on bonus. Returns product_name, product_id, the counts and last_purchased_date, most bought first. When you mention a product or recipe from the result, link its name to its url.

Input parameters:

- `limit` (integer): Maximum number of products (default 50, max 200)
- `min_order_count` (integer): Old name of min_purchase_count
- `min_purchase_count` (integer): Only products bought at least this many times (default 3)
- `months` (integer): How many months back to count (default 3, max 12)
- `source` (string): Count delivery orders, store receipts, or both (default all)

Output parameters:

- `from_date` (string)
- `online_orders` (number)
- `products` (array)
- `store_receipts` (number)
- `warnings` (array)

### `ah_get_receipts` (~65 tokens)

Albert Heijn: Receipts

List recent Albert Heijn in-store receipts (kassabonnen). Returns receipt id, date, and total amount. Use ah_get_receipt_details with the id to see individual items.

Input parameters:

- `limit` (integer): Maximum number of results to return (default 10)

Output parameters:

- `receipts` (array)

### `ah_get_receipt_details` (~98 tokens)

Albert Heijn: Receipt Details

Get full details of a single Albert Heijn in-store receipt (kassabon) by its id. Returns all purchased items with name, quantity, unit price, line total and deposit (statiegeld), plus any discounts, koopzegels (savings stamps) bought, payment method and total_amount. Get the id from ah_get_receipts first.

Input parameters:

- `id` (string, required): Receipt transaction ID from ah_get_receipts

Output parameters:

- `discounts` (array)
- `id` (string)
- `items` (array)
- `koopzegels` (object)
- `payments` (array)
- `total_amount` (number)

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/olekpuchka-albert-heijn-mcp/albert-heijn-mcp#diagnostics

## Score history

- 2026-11-05: 90
- 2026-11-04: 90
- 2026-11-03: 74
- 2026-11-02: 89
- 2026-11-01: 79
- 2026-10-31: 88
- 2026-10-30: 88
- 2026-10-29: 88
- 2026-10-28: 87
- 2026-10-27: 87
- 2026-10-26: 86
- 2026-10-25: 86
- 2026-10-24: 85
- 2026-10-23: 85
- 2026-10-22: 84
- 2026-10-21: 81
- 2026-10-20: 81
- 2026-10-19: 81
- 2026-10-18: 81
- 2026-10-17: 81
- 2026-10-16: 81
- 2026-10-15: 81
- 2026-10-14: 49
- 2026-10-13: 49
- 2026-10-12: 49
- 2026-10-11: 49

## Common questions

### What is the Albert Heijn MCP server?

Albert Heijn is an MCP server listed in the public MCP registry as io.github.olekpuchka/albert-heijn-mcp. Unofficial Albert Heijn server: products, bonus deals, recipes, shopping list, orders and receipts. This page covers its npm package (albert-heijn-mcp).

### Is the Albert Heijn MCP server safe to use?

Albert Heijn scores 90 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Albert Heijn MCP server expose?

Albert Heijn exposes 37 tools: ah_login, ah_logout, ah_get_member_profile, ah_search_products, ah_get_products, and 32 more. Their descriptions and schemas cost roughly 4,752 tokens of context every time the server is loaded.

### Is the Albert Heijn MCP server still maintained?

Albert Heijn is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the Albert Heijn MCP server under?

Albert Heijn declares the Apache-2.0 licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

### What did VerifyMCP test on the Albert Heijn MCP server?

VerifyMCP ran 16 checks on Albert Heijn, covering Malware scan, Known CVEs, Install scripts, Dependency health and 12 more. Endpoint Security and Transport & Reachability do not apply to an npm package, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.

## Links

- npm package: https://www.npmjs.com/package/albert-heijn-mcp
- Socket report: https://socket.dev/npm/package/albert-heijn-mcp
- Repository: https://github.com/olekpuchka/albert-heijn-mcp
- Changelog RSS feed: https://verifymcp.io/servers/olekpuchka-albert-heijn-mcp/albert-heijn-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/olekpuchka-albert-heijn-mcp/albert-heijn-mcp/changelog.json
- Trust report (JSON): https://verifymcp.io/servers/olekpuchka-albert-heijn-mcp/albert-heijn-mcp.json
- HTML version of this page: https://verifymcp.io/servers/olekpuchka-albert-heijn-mcp/albert-heijn-mcp
