Skip to main content
Glama
arnouthoebreckx

albert-heijn-be-mcp

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
AH_SITENoThe Albert Heijn site: be (ah.be) or nl (ah.nl, upstream's). Same as --site.be
AH_REMOTENoDon't open a browser on login; log in by copying the code instead. Same as --remote. Always on with streamable-http.false
AH_LOG_FILENoAlso append logs to this file. Logs always go to stderr.
AH_MCP_HOSTNoInterface the HTTP server listens on. Keep the default behind a reverse proxy.127.0.0.1
AH_MCP_PORTNoHTTP server port.3000
AH_ANONYMOUSNoSet to true to run without a login; same as --anonymous. Registers only tools that work without an account.false
AH_MCP_TOKENNoSecret for the HTTP transport, at least 32 characters; the transport doesn't start without it, except with --anonymous. Enter it on the OAuth login page; it also signs OAuth tokens.
AH_TOKENS_PATHNoWhere to store login tokens.
AH_API_BASE_URLNoReplaces the API host (https://api.ah.be or https://api.ah.nl). For tests only.
AH_MCP_BASE_URLNoPublic URL of the HTTP server. Set it on a server: OAuth clients are sent to this URL to log in.http://localhost:3000

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
ah_loginA

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.

ah_logoutA

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_profileA

Get your Albert Heijn member profile. Returns name, email (masked), and bonus_card_number (last 4 digits only).

ah_search_productsA

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. 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.

ah_get_productsA

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. When you mention a product or recipe from the result, link its name to its url.

ah_get_product_alternativesA

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.

ah_get_bonus_offersA

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.

ah_get_bonus_group_productsA

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.

ah_search_recipesA

Search Allerhande, Albert Heijn's recipe collection. Dutch search terms work best, e.g. 'pasta', 'vegetarisch', 'stamppot', 'kip curry'. Returns id, title, url, cook_minutes, servings, courses, nutri_score, rating. 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.

ah_get_recipeA

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.

ah_add_recipe_to_shopping_listA

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.

ah_search_storesA

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.

ah_get_last_chance_itemsA

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.

ah_get_shopping_listA

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.

ah_add_to_shopping_listA

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.

ah_add_free_text_to_shopping_listA

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'.

ah_remove_from_shopping_listA

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.

ah_clear_shopping_listA

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

ah_get_favorite_listsA

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.

ah_add_to_favorite_listA

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

ah_remove_from_favorite_listA

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

ah_create_favorite_listA

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.

ah_delete_favorite_listA

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

ah_get_cartA

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.

ah_update_cart_itemA

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).

ah_remove_from_cartA

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.

ah_clear_cartA

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

ah_get_delivery_slotsA

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'.

ah_get_ordersA

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.

ah_get_order_detailsA

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.

ah_get_frequent_itemsA

Get frequently ordered products by analysing order history. Fetches all fulfillments, expands each order's items, counts per product, and returns products ordered at least min_order_count times. Returns product_name, product_id, order_count, last_ordered_date. When you mention a product or recipe from the result, link its name to its url.

ah_get_receiptsA

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.

ah_get_receipt_detailsA

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

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4/5.0

Scored across 33 tools

Disambiguation4/5

Most tools target clearly distinct resources and actions, and descriptions explicitly separate easily confused concepts like shopping list vs. active delivery cart vs. order history. Minor overlaps remain, such as ah_update_cart_item with quantity=0 vs. ah_remove_from_cart, and bonus filtering in ah_search_products vs. ah_get_bonus_offers, but the descriptions guide correct selection.

Naming Consistency5/5

All tools use a consistent ah_ prefix with snake_case verb_noun naming (e.g., ah_search_products, ah_get_cart, ah_add_to_shopping_list). Variants like ah_add_recipe_to_shopping_list still follow the same predictable pattern.

Tool Count3/5

At 33 tools the surface is heavy, but the broad supermarket domain (auth, recipes, products, bonus, stores, shopping list, favorites, cart, delivery, orders, receipts) justifies many operations. Each subdomain has a small coherent set, yet the total count is well above the comfortable range.

Completeness4/5

Coverage is strong across shopping list, favorites, cart, orders, receipts, recipes, products, bonus, and stores, with full lifecycle support in most areas. Minor gaps exist around modifying/canceling orders and directly adding new items to the delivery cart, but core workflows are complete.

Maintenance

ActivityMaintained
ResponsivenessNo issues