Skip to main content
Glama
adrian-baker

woolies-mcp

by adrian-baker

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
MCP_PATH_TOKENNoUnguessable path token for the HTTP MCP endpoint. Required when using the HTTP transport; generate with `openssl rand -hex 24`.
PUBLIC_BASE_URLNoPublic base URL for the server, used when publishing with Tailscale Funnel (e.g. https://<node>.<tailnet>.ts.net).

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
search_productsA

Search the Woolworths New Zealand catalogue by keyword. Returns products for this page, matchesAvailable for the whole query, and a coverage sentence saying whether this is everything — read it before answering cheapest/only/none questions. Extra query words are ANDed, including sizes, and the site's ranking pads pages with loosely related products, so check each name. unitPrice is a formatted string whose measure varies per product and is absent for many, so compare it only within a category. Prices and availability are per delivery location; call get_location to see the current one and set_location to change it.

get_product_labelA

Return the product's packaging photo as an image, for reading details the API does not publish — most importantly ingredients and allergens, which are frequently absent from get_product. Call this when get_product reports allergens or ingredients as 'notStated' and the answer matters. Images are token-expensive, so request them one product at a time and only when needed. A photo may still not show the panel, and reading a label from a photo is not a substitute for the physical packaging for allergy decisions.

search_products_batchA

Run several catalogue searches in one call and get the results grouped by query, so finding many products costs one round trip. Every group carries its own coverage sentence and the same caveats as search_products: the ranking pads results, extra query words are ANDed, and a truncated group cannot answer cheapest/only/none questions. Prices and availability are per delivery location; call get_location to see the current one and set_location to change it.

get_productA

Fetch one product by SKU, with its price, size, unit price (a formatted string whose measure varies per product, and absent for many), availability, category breadcrumb, description, ingredients, allergens, claims, nutrition, origins and health star rating. purchasingUnit ('Each' or 'Kg') is what the cart tools need for pricingUnit, and canBuyByWeight says whether 'Kg' with a decimal quantity is allowed. IMPORTANT: allergens and ingredients are often not published. When either reports status 'notStated' that means Woolworths said nothing, NOT that the product is free of allergens — products whose own ingredients are milk come back with allergens empty. Never present 'notStated' as an allergy assurance; use get_product_label to read the packaging, and say the data is unavailable. Prices and availability are per delivery location; call get_location to see the current one and set_location to change it.

list_categoriesA

The browse tree. With no argument, lists the 13 departments and their slugs. With a department slug, lists that department's aisles and shelves. Use the slugs it returns as the arguments to browse_category.

browse_categoryA

List the products in a department, aisle or shelf, using the slugs from list_categories. A narrower level needs the wider ones too. Returns one page: read coverage before answering anything about the cheapest, the best, or whether something exists, and page until a page comes back short if you need the full set. Prices and availability are per delivery location; call get_location to see the current one and set_location to change it.

get_specialsA

List products currently on special, optionally narrowed to one department. Each product carries wasPrice alongside the current price. Returns one page: read coverage before claiming anything is the best or only special available. Prices and availability are per delivery location; call get_location to see the current one and set_location to change it.

find_storesA

List Woolworths New Zealand pick-up locations, filtered by a name or address fragment. Read coverage: an unfiltered call returns only a sample, so do not conclude a town has no store without searching for it. Each store appears once, with every region it is listed under in areas. These are collection points; the delivery location that sets prices is separate and is managed with get_location and set_location.

get_locationA

Report the delivery location this session is shopping from: suburb, fulfilment method and store id. Every price and availability answer from the other tools is for this location, so check it before trusting a result.

set_locationA

Switch the session to a New Zealand suburb, which changes the serving store and therefore the prices and availability that search_products and get_product return. If the suburb name matches several places, the matches are returned instead and you should ask for a more specific name.

sign_inA

Report whether the session is signed in, and if not, how to sign it in. Sign-in is not performed here and cannot be: it happens in a real browser via npm run login on the machine running the server, because Auth0 challenges non-browser sign-ins. This tool never sends credentials and never touches the account.

auth_statusA

Report whether this session is signed in to a Woolworths account, and whether signing in is possible at all. The catalogue tools work signed out and are unaffected; the cart and purchase-history tools need a signed-in session.

get_cartA

List the trolley. Returns lines (one per distinct product), lineCount (how many distinct products), totalQuantity (the quantities summed, so 19 lines can be 23 items), and totals with the money as the site formats it: subtotal, savings, deliveryFees, bagFees and totalIncludingDeliveryFees. Needs a signed-in session; run npm run login where the server runs, or call sign_in for the details.

set_cart_quantityA

Set one product's trolley line to an exact quantity, adding it if absent. Quantity is absolute, not a delta: the value you pass becomes the line's new quantity, and 0 removes the line. For pricingUnit, use the product's purchasingUnit field from search_products or get_product verbatim — it is 'Each' or 'Kg'. Only pass 'Kg' with a decimal quantity when the product's canBuyByWeight is true; sending 'Kg' for a counted item orders a kilogram of it. Returns requestedQuantity and appliedQuantity separately, because Woolworths silently substitutes its own quantity for some products (0.3 Kg of loose bananas becomes 0.5 Kg). When adjusted is true, adjustment says what the site did instead — report the applied amount to the shopper, never the requested one. Also returns trolleyTotalQuantity (quantities summed across the whole trolley, not a line count). To change several products, use set_cart_quantities instead. Needs a signed-in session; run npm run login where the server runs, or call sign_in for the details.

remove_from_cartA

Remove a line from the trolley entirely, the same as setting its quantity to 0. No pricing unit is needed: a removal has none. Needs a signed-in session; run npm run login where the server runs, or call sign_in for the details.

set_cart_quantitiesA

Set many products' trolley lines in one call. Quantity is absolute, not a delta: the value you pass becomes the line's new quantity, and 0 removes the line. For pricingUnit, use the product's purchasingUnit field from search_products or get_product verbatim — it is 'Each' or 'Kg'. Only pass 'Kg' with a decimal quantity when the product's canBuyByWeight is true; sending 'Kg' for a counted item orders a kilogram of it. Each item is reported separately as written or failed with a reason; one failure never removes an item from the results, so check every entry. Written entries carry requestedQuantity and appliedQuantity: where adjusted is true the site substituted its own quantity and adjustment says how, so summarise what was actually added. Needs a signed-in session; run npm run login where the server runs, or call sign_in for the details.

get_past_purchasesA

Return the site's previously-purchased sections, kept separate and labelled. ONLY the section with isPurchaseHistory true reflects what this shopper actually bought; the other section is retailer advertising and must never be described as their purchases, habits or preferences. Read each section's coverage before concluding anything about what the shopper does or does not buy. Needs a signed-in session; run npm run login where the server runs, or call sign_in for the details.

get_order_historyA

List the account's past orders with their references, dates, fulfilment slots, statuses and totals. Read coverage: the site returns only its default recent window, so an order's absence is not evidence it was never placed. Needs a signed-in session; run npm run login where the server runs, or call sign_in for the details.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/adrian-baker/woolies-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server