Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
AH_REMOTENoDon't open a browser on login. Use on servers (same as --remote).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_MCP_TOKENNoSecret required on every HTTP request, as Authorization: Bearer … or ?token=…. Required for the HTTP transport, which doesn't start without it.
AH_TOKENS_PATHNoWhere to store login tokens. Defaults to a per-OS location: macOS ~/Library/Application Support/ah-mcp/tokens.json, Linux ~/.config/ah-mcp/tokens.json, Windows %AppData%\ah-mcp\tokens.json.
AH_MCP_BASE_URLNoPublic URL of the HTTP server. Set it on a server: for a non-local URL, the localhost-only Host check is turned off so a reverse proxy can forward requests.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 in two steps. 1) Call without arguments: returns the AH login link and instructions to show the user. 2) After the user logs in, the browser shows 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.

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

A3.9/5.0

Scored across 33 tools

Disambiguation4/5

Most tools target clearly distinct resources and actions, and the descriptions explicitly distinguish tricky areas like shopping list vs. cart vs. orders. Minor overlap remains: update_cart_item can remove an item via quantity=0 while remove_from_cart exists, and add_to_shopping_list vs. add_recipe_to_shopping_list could blur for some workflows.

Naming Consistency5/5

All tools use a consistent ah_ prefix with snake_case and a predictable verb_noun or verb_object pattern. Long names like ah_add_free_text_to_shopping_list are still readable and fit the same convention.

Tool Count2/5

33 tools is high, and the set exceeds the rubric's 25+ threshold for being too large. Although the Albert Heijn domain is broad, many adjacent lifecycle operations could be consolidated or kept behind fewer tools.

Completeness4/5

Coverage is strong across auth, lists, cart, orders, products, bonuses, recipes, stores, delivery slots, and receipts. Minor gaps exist: there is no explicit add-to-cart for an active order, no checkout/order-placement operation, and delivery slot booking is intentionally unsupported.

Maintenance

ActivityMaintained
ResponsivenessNo issues