Skip to content
Agentmart
Submit a tool

Alza MCP

Unofficial MCP server for Alza.cz: catalog search plus token-guarded account and checkout.

Connector by lukabudik · GitHub account verified by the MCP Registry

IndexedLicense unknownLocal (stdio)★ 88
Write a review

Install

Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.

npx agentmarket install connector/lukabudik-alza-mcp

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Unofficial MCP server for Alza.cz: catalog search plus token-guarded account and checkout.

Use cases: ecommerce

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.

Runs code on install

Its package runs an install script (such as npm postinstall or setup.py code) as soon as you install it, before any tool is called. Read the script first.

Tools
36 read · 11 write · 17 delete
Secrets
None asked for
Install scripts
Runs code on install
Runs as
Node.js package

Tools by what they do 64

Read from the source code; the running server may list different tools.

Read 36 · Look things up without changing anything.

  • account_status
  • address_search
  • after_order_payments
  • auth_discovery
  • autocomplete
  • cart
  • chat_navigation
  • claim_detail
  • complaint_claims
  • contacts
  • delivery_options
  • find_pickup_points
Show 24 more tools
  • gdpr_info
  • get_deals
  • get_product
  • get_product_reviews
  • list_categories
  • list_category_filters
  • list_toolsets
  • mobile_read
  • order
  • order_archive
  • order_document
  • order_search
  • payment_methods
  • prepare_mutation
  • product
  • product_by_ean
  • profile
  • recommend_alternatives
  • report_issue
  • search_products
  • subscription_overview
  • watchdog_list
  • web_cart
  • web_pickup_places

Write 11 · Create, change, send or run things.

  • add_to_cart
  • auth_exchange
  • auth_start
  • chat_send
  • checkout_preview
  • review_submit
  • select_pickup_point
  • set_toolset
  • upload_attachment
  • watchdog_set
  • web_add_to_cart

Delete 17 · Delete, drop, revoke or wipe things.

  • address_delete
  • address_upsert
  • cancel_order
  • change_password
  • delete_account
  • email_change
  • mutate_list
  • pay_after_order
  • phone_change
  • place_order
  • register
  • subscription_activate
Show 5 more tools
  • subscription_update_installment
  • two_factor_set
  • watchdog_delete
  • web_pay_after_order
  • web_place_order

Network hosts it talks to 24

  • accounts.google.com · found in code
  • alza.at · found in code
  • alza.co.uk · found in code
  • alza.cz · found in code
  • alza.de · found in code
  • alza.hu · found in code
  • alza.sk · found in code
  • api.alza.cz · found in code
  • apkcombo.com · found in code
  • cdn.alza.cz · found in code
  • chatbotapi.alza.cz · found in code
  • cursor.com · found in code
  • github.com · found in code
  • i.alza.cz · found in code
  • i18n.alza.cz · found in code
  • identity.alza.cz · found in code
  • image.alza.cz · found in code
  • insiders.vscode.dev · found in code
  • logapi.alza.cz · found in code
  • login.kb.cz · found in code
  • m.alza.cz · found in code
  • nominatim.openstreetmap.org · found in code
  • pdf.alza.cz · found in code
  • webapi.alza.cz · found in code

Files it touches

  • /home/dev/.pi/agent/mcp.json
  • /home/dev/Development/alza-mcp/dist/index.js
  • /tmp/alza-probe-product.html
  • /tmp/alza-product-real.html
  • /tmp/pi-headless-1.log
  • /tmp/pi-headless-2.log
  • /tmp/pi-headless-3.log
  • /tmp/pi-headless.log
  • /tmp/pi-headless2.log
  • /usr/share/fonts/truetype/dejavu/DejaVuSansMono-Bold.ttf
  • /usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf
  • Your home directory (~)

Tools (64)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • account_statusCheck mobile API auth statusread-only

    Report whether a mobile API access token is loaded in this server process, and when it expires (`expiresAt`, `expired`) if that is known. An expired token is refreshed automatically before the next account call when a refresh token is loaded. Use as a first check before account-scoped tools (`cart`, `profile`, `order`, `add_to_cart`), or to diagnose "not authenticated" failures. If no token is loaded, run `auth_start`, have the user complete the browser sign-in, then `auth_exchange`. Read-only; no network call.

  • add_to_cartAdd a product to the account cart

    Add one product to the mobile-API cart (`restservice.svc/v2/basket/add`) by its Alza product code (the `code` from `search_products`/`get_product`, e.g. `RI054b1` — not the numeric id). Use when the user wants a product put into their Alza account; pass `quantity` (default 1, max 99). Side effect: mutates the cart — the item stays there until removed or ordered (there is no basket-remove tool). Do not use for the separate HATEOAS web checkout cart — that is `web_add_to_cart` (does not share state with this tool; see its description). LIVE NOTE (2026-09-26): despite the usual auth prerequisite,…

  • address_deleteDelete a delivery addresscan change or delete data

    Delete a delivery address from the Alza account by executing the per-address delete action from the `profile` response. Destructive: removes the address (id=`address_id`) from the account's address book. Use only with explicit user confirmation, after showing which address will be deleted. Requires a one-time token from `prepare_mutation` (action=`address_delete`).

  • address_searchSearch delivery addressesread-only

    Search Alza's zip/city database. Use to suggest a valid address before `address_upsert`, or to verify a zip/city combination. Without `action` it uses the live-verified zip-code lookup (`getZipCodes`, no token needed). If a `profile` response carries an `addressSearchAction`, you may pass that object verbatim as `action` instead — never hand-craft it. Read-only; no confirmation token required.

  • address_upsertCreate or edit a delivery addresscan change or delete data

    Create or edit a delivery address on the Alza account by executing the server-provided address form action from `profile` (createAddressAction for create, the address's editAction for edit) with typed fields. Use when the user wants to add a new shipping address or fix an existing one. Mutating: requires a one-time token from `prepare_mutation` (action=`address_create` or `address_edit`); `kind=edit` additionally requires `address_id`. Side effect: persists the address to the account's address book.

  • after_order_paymentsList after-order payment optionsread-only

    List the after-order payment options for an unpaid order part (mobile API getafterorderpayments). An `err:1` answer (e.g. the order does not exist) is returned as an error carrying Alza's message. Use when the user has an unpaid order (see `order`) and wants to pay it through the mobile API; pass the returned payment id to `pay_after_order`. Do not use for legacy web WCF orders — that path is `web_pay_after_order` (list ids via `mobile_read` operation=`web_after_payment_dialog`). Requires a loaded mobile API access token — check `account_status` first; if none is loaded, run `auth_start`, have…

  • auth_discoveryRead Alza OAuth discoveryread-only

    Read the live OpenID Connect discovery document that the Alza mobile app uses (issuer, authorization endpoint, token endpoint). Use only when debugging the OAuth flow or verifying which identity endpoints Alza exposes before calling `auth_start`. Do not use for everyday shopping — it returns a configuration document, not account data, and changes nothing. Read-only; no credentials are ever sent.

  • auth_exchangeExchange Alza OAuth code

    Complete the OAuth 2.0 PKCE sign-in: exchange the authorization code for mobile API tokens and load them into this server. Use immediately after the user finishes the `auth_start` flow in the browser. Pass the whole `alza://identity?code=...&state=...` redirect URL as `code` (state is then read from it), or the bare `code` plus `state` — never a password and never a refresh token here. Fails if the state does not match a pending `auth_start` session (start over from `auth_start` in that case). Side effect: replaces the token set currently loaded in this process; afterwards account tools such a…

  • auth_startStart Alza mobile API OAuth

    Start an OAuth 2.0 PKCE sign-in for the Alza mobile API: returns an authorization URL plus a state value. Use when `account_status` reports no loaded token, or when account tools start failing with authentication errors. Flow: open the returned authorization URL in a browser, sign in to Alza, the app redirects to `alza://identity?code=...&state=...` — then call `auth_exchange` with that redirect URL (or its code and this state). Desktop browsers cannot open the `alza://` scheme, so the page appears to stall and after ~40 s shows "Při přihlášení došlo k chybě." — that message is a client-side t…

  • autocompleteAlza search suggestionsread-only

    Cheap search-box suggestions (plain HTTP, no page render): suggested query phrases plus matching categories, brands and products with ids/codes. Use it to refine a messy Czech query before a full `search_products` — pass a category `id` as `category_id`, or a product code to `get_product`.

  • cancel_orderCancel an order (OR11)can change or delete data

    Cancel an order part via Alza's HATEOAS cancel flow (OR11): reads the `cancelForm` (validating the order/part/hash are cancellable), then commits the cancellation with the given `reason`. Live-verified against a real `web_place_order`-created order (2026-09-26): pass `hash` from that order's `?x=` link (`order_detail_link`/`GetOrderDetailAction.webLink`) and `part_id` from the order detail's `parts[].self.href`. High-impact, money-relevant side effect: cancels a real order — use only after explicit user confirmation. A 202 response means the cancellation was accepted; the order may briefly sho…

  • cartRead the Alza account cartread-only

    Read the authenticated user's Alza shopping cart: item lines with quantities and prices, applied discounts, vouchers, and the basket/order identifiers later checkout steps need. Use to verify an `add_to_cart` worked, to inspect coupon/voucher state, or to collect ids for `mutate_list` (e.g. `coupon_remove.couponId`) and `basket_update`. Do not use for the anonymous web/visitor cart — that is `web_cart`. Requires a loaded mobile API access token — check `account_status` first; if none is loaded, run `auth_start`, have the user complete the browser sign-in, then `auth_exchange` with the returned…

  • change_passwordChange the account passwordcan change or delete data

    Change the Alza account password (row A14, `POST /v2/account/password`): submit the current password and the new password twice (new + confirm). Credential mutation: requires a one-time token from `prepare_mutation` (action=`change_password`). Before anything is sent, `user_id` is checked against the signed-in account with a fresh `user_data` read; a different id, or a session whose user id cannot be read, is refused.Side effect: on success Alza logs the user out of every device — the current access token stops working, so re-run `auth_start`/`auth_exchange` with the new password.

  • chat_navigationRead the chatbot HATEOAS navigationread-only

    Read the live chatbotapi.alza.cz navigation for the current visitor (row W18): chatbotInitializeChatAction / chatbotReinitializeChatAction / metadata / rating actions with their server-provided hrefs and parameters. Use when inspecting what Alza's live chatbot offers for a page, or before `chat_send` to discover the current actions. The `country` query field is required by the server (defaults to the configured storefront, ALZA_BASE_URL). Read-only; no token required.

  • chat_sendOpen/continue an Alza chatbot session

    Open or continue an Alza chatbot session via chatbotapi.alza.cz /v1/chat (row W18): returns the chat configuration (configId, teamName, welcomeText, messages, allowTextInput) and showChat. Use to start a support-style conversation with page context (product detail, checkout steps). Pass `page_type` per the 2026-09-09 capture: 1=product detail, 5=Order1, 6=Order2, 24=Order4; `initial_input` carries the user's first message. Session-scoped, visitor-keyed write — no account state and no token required (like `web_add_to_cart`). Example: `chat_send({page_type: 1, initial_input: 'Is this in stock?'}…

Show 49 more tools
  • checkout_previewPreview mobile checkout

    Run the read-side of the mobile checkout (sendOrder1 + delivery/payment-group reads) and return a one-time checkout token plus totals. Use after `delivery_options`/`select_pickup_point` to preview fees and the final order shape before committing, and to obtain the token that `place_order` requires. This never submits the order. Not read-only: it runs Alza's first checkout step (`sendOrder1`, which starts the server-side checkout state that `place_order` continues) and replaces any earlier checkout token (valid 5 minutes). Requires a non-empty cart. Requires a loaded mobile API access token — c…

  • claim_detailRead a warranty claim detailread-only

    Read the detail of a single warranty claim/complaint (row K2) by following that claim's `detailAction`, copied verbatim from a `complaint_claims` list response. Use to show the full claim state, message banners, and complaint items for one claim. Pass the `action` object verbatim — never hand-craft it; plain links (`{href}`) must point at the account's `.../v1/warrantyClaims/...` routes. Read-only; no confirmation token. Requires a loaded mobile API access token — check `account_status` first; if none is loaded, run `auth_start`, have the user complete the browser sign-in, then `auth_exchange`…

  • complaint_claimsList warranty claimsread-only

    List the account's warranty claims (row K1): `GET /api/users/{user_id}/v1/warrantyClaims/{scope}` — `scope` `active` (default) or `archive`. Use to show the user their claims before filing or attaching evidence (see `upload_attachment`); each claim's `detailAction` goes to `claim_detail`. Pass `user_id` (the numeric id from `profile`). Alternatively pass a warranty-claims link or AppAction verbatim from a prior response as `action`. Requires a loaded mobile API access token — check `account_status` first; if none is loaded, run `auth_start`, have the user complete the browser sign-in, then `au…

  • contactsRead Alza account contactsread-only

    Read the authenticated user's Alza contact list (mobile API v4/contacts endpoint). Use to list or search the account's saved contacts, e.g. for complaint/claim context. Do not use for the catalog category tree — that is `list_categories`. Requires a loaded mobile API access token — check `account_status` first; if none is loaded, run `auth_start`, have the user complete the browser sign-in, then `auth_exchange` with the returned code and state. Read-only.

  • delete_accountDelete the Alza accountcan change or delete data

    Delete the Alza account and its personal data (row A18, `DELETE /v1/account` with `acknowledgeAndDelete`). Irreversible: the account, invoices, e-library, and claims are removed. Use only on a disposable account with the user's explicit double confirmation — never the standing E2E account. Requires a one-time token from `prepare_mutation` (action=`delete_account`). Before anything is sent, `user_id` is checked against the signed-in account with a fresh `user_data` read; a different id, or a session whose user id cannot be read, is refused.

  • delivery_optionsList delivery & payment optionsread-only

    List the delivery and payment option groups for the current Alza account cart (AlzaShop pickup, AlzaBox lockers, courier, payment methods) from the mobile API. Use after items are in the cart and before `checkout_preview`, to show the user delivery/payment choices and to obtain the `selected_delivery_option_id` that later steps may require. Do not use on an empty cart — Alza answers with validation errors. Pass `selected_delivery_option_id` to re-fetch the groups anchored on a specific delivery choice. Requires a loaded mobile API access token — check `account_status` first; if none is loaded,…

  • email_changeChange the contact emailcan change or delete data

    Change the account's contact email (row A16 bonus, `PATCH /v1/account` → `/email`): the address that receives invoices and order/claim notifications. Requires a one-time token from `prepare_mutation` (action=`email_change`). Before anything is sent, `user_id` is checked against the signed-in account with a fresh `user_data` read; a different id, or a session whose user id cannot be read, is refused.

  • find_pickup_pointsFind AlzaBox lockers and Alza showroomsread-only

    Find AlzaBox parcel lockers and AlzaShop showrooms near a Czech/Slovak postal code: name, address, GPS, distance and opening hours, sorted nearest first. The postal code is geocoded with the public OpenStreetMap Nominatim service (nominatim.openstreetmap.org): the normalised code and the country are sent to that third party, not to Alza. Use when the user asks where the nearest AlzaBox or Alza store is, or where they could pick up an order. No cart or login needed. Lockers come from Alza's public locker map and are cached; each has a `parcelShopId`. Locker hours vary (many are nonstop, mall lo…

  • gdpr_infoRead the GDPR section and export dialogread-only

    Read the account's GDPR section (row A17, APK `PersonalGdprDetails`): the `gdprInfoAction` (export request), the `deleteAccountAction`, and the export dialog (`AccountGdprDialog`: title, description, `emailInfo` with the login email the export is sent to, and the `sendGdprInfoForm`). Use before `prepare_mutation`/`mutate_list` with action `gdpr_export` to show the user where their data will be sent. Pass `user_id` — the numeric Alza user id from the `user_data`/`profile` read. Requires a loaded mobile API access token — check `account_status` first; if none is loaded, run `auth_start`, have th…

  • get_dealsFind discounted Alza productsread-only

    Find currently discounted products on Alza.cz or Alza.sk (the storefront set by ALZA_BASE_URL), with the price you can pay now, the shelf (list) price, an older crossed-out price, promo codes and AlzaPlus+ member prices, and a discount % COMPUTED from the observed prices (never from marketing badges). Per deal: `priceNow` (the price with the promo code when the card has one, e.g. Alza dni 'Kúpiť s kódom ALZADNI15'), `promoCode`/`promoPercent` (the code's trailing number), `priceList` (shelf price, also `price`), `priceOriginal` (the older crossed-out price on 'Zľavnené -N %' cards), `savings` …

  • get_productGet product detailsread-only

    Fetch details for a single product by its Alza code (the `code` from `search_products`, e.g. 'WEXOA002B0' — not the numeric id): name, price (with the original price when discounted), availability, rating, brand, category, primary image, URL, and the spec table when the product page carries one (up to 30 rows, merged from both the DOM spec table and the JSON-LD `additionalProperty` list some page templates use instead — fixed 2026-09-27 after a product with only the latter returned no params at all). Use after `search_products` to compare shortlisted candidates in depth, and to get the canonic…

  • get_product_reviewsGet product reviewsread-only

    Fetch reviews for a single product by its Alza code: the aggregate rating and review count plus up to `limit` individual reviews (author as Alza displays it, date, rating, body, pros/cons) from Alza's reviews API, newest first. `reviewCount` is the product page's aggregate; the reviews list can contain more items than it, apparently because the API also returns reviews from other storefronts (Slovak-language reviews have been seen; the API has no market field to confirm it) — the response text says so when that happens. Use after `get_product` when the user wants real-world feedback before dec…

  • list_categoriesList Alza categoriesread-only

    Browse the Alza category tree one level at a time. Useful for narrowing a product search — find the right category id, then pass it to `search_products` as `category_id`. Without arguments, returns top-level categories.

  • list_category_filtersList a category's filtersread-only

    List the brands and attribute filters (facets) Alza defines for a category, with real ids and product counts. The attribute set differs per category (laptops have CPU/RAM facets, monitors have panel/resolution facets, …). Pass `brands[].valueId` to `search_products` as `producer_ids` (brand filtering works in every category), and `filterable: true` groups' `param_id`/`value_id` pairs as `filters`. Checkbox values are only honoured when Alza has an SEO landing page for that exact value (HDMI ports, for example); many others, notably panel type and resolution on monitors, are redirected to the u…

  • list_toolsetsList available toolsetsread-only

    List every toolset this server groups its tools into: id, title, description, member tool names, and whether it's currently enabled. Only `catalog` and `auth` are enabled by default to keep the visible tool list small — use `set_toolset` to turn on the group a task actually needs (e.g. `basket_and_checkout` before placing an order). If your client does not refresh its tool list after `set_toolset` (it ignores `notifications/tools/list_changed`), the operator can start the server with `ALZA_TOOLSETS=basket_and_checkout,orders_and_payments` (or `all`) so those tools are visible from the start. C…

  • mobile_readRead a raw Alza mobile API operationread-only

    Read-only escape hatch for Alza mobile API operations that have no dedicated tool. Prefer the typed tool when one exists — `cart` (operation `basket_info`), `profile` (`user_data`), `contacts` (`contacts`), `search_products` (`search`), `list_categories` (`category`), `order` (`user_order` {order_id, user_id} — the numeric user id from `profile`, not a 0/1 flag) — and use `mobile_read` for the rest. High-value operations: `router_product` {product_id} returns the full product envelope including the `parameterGroups` spec sheet (product_id is the numeric `d########` id from the product URL, e.g…

  • mutate_listExecute a whitelisted Alza mutationcan change or delete data

    Execute one low-risk, APK-confirmed mutation using a one-time token from `prepare_mutation`. Use for shopping-list operations (`create`/`rename`/`delete`/`add`/`remove`/`move`), account settings (`set_country`, `set_isic`), `add_gift`, `add_order_service`, `send_feedback`, `submit_discussion`, `rate_discussion`, coupons (`coupon_add` takes `{coupon: "CODE"}`; `coupon_remove` takes `{couponId: <int>}` — the id from a prior `cart` read), basket flags (`basket_update` takes `{basket_id, flag?, is_delayed_payment?}`; `basket_unlock`), and the GDPR data export (`gdpr_export` takes `{user_id}` — que…

  • orderRead an Alza orderread-only

    Read an authenticated user's Alza order: lines, parts, milestones/tracking, and invoice document references; with `part_id`, the part detail as well. Use to check order status, delivery tracking, or to collect the order/part ids needed by `after_order_payments`/`pay_after_order`. Pass `user_id` — the numeric Alza user id from the `profile`/`user_data` read (`user_id` field); the read is `GET /api/users/{user_id}/v1/orders/{order_id}`. Requires a loaded mobile API access token — check `account_status` first; if none is loaded, run `auth_start`, have the user complete the browser sign-in, then `…

  • order_archiveRead the account's archived ordersread-only

    Read the authenticated user's archived orders (row OR7 — the `archiveOrders` section of the orders navigation): returns `{self, paging, value[]}` — the same order shape as `order_search` results (status, phase, price, created, invoice `documents[]` for `order_document`). `hide_cancelled_orders` mirrors the app's 'Skrýt zrušené' (hide cancelled) toggle: default `false` includes cancelled orders; `true` hides them. Pass `user_id` — the numeric Alza user id from the `user_data`/`profile` read (`user_id` field). Requires a loaded mobile API access token — check `account_status` first; if none is l…

  • order_documentDownload an order invoice/documentread-only

    Download an order invoice or document (row OR10) by following the server-provided `self.href` of a `Document`/`Attachment` object copied verbatim from a prior MCP response (e.g. the `documents[]` entries of `order_search` results or an order detail). The href is origin-validated to Alza's host family (invoices serve from `pdf.alza.cz`) — no arbitrary URLs. Returns the content in structuredContent as UTF-8 `text` (JSON/XML/text) or `base64` (PDF/binary), with `contentType` and `byteLength` (max 8 MiB); the text reply carries only the metadata (plus a capped preview of text documents), never the…

  • order_searchSearch the account's ordersread-only

    Search the authenticated user's Alza orders by term (row OR6 — the `userOrdersSearch` form from the orders navigation): order number/fragment or product term; returns matching `orders[]` (status, phase, price, created, and `documents[]` invoice refs) plus `commodities[]`. Use to find an order the user remembers partially (e.g. part of the order number) and to collect its invoice `documents[]` for `order_document`. Pass `user_id` — the numeric Alza user id from the `user_data`/`profile` read (`user_id` field). Requires a loaded mobile API access token — check `account_status` first; if none is …

  • pay_after_orderExecute an after-order payment (mobile API)can change or delete data

    Execute an after-order payment on an unpaid mobile-API order (AfterOrderRequestBody: order id, invoice number, payment id from `after_order_payments`, optional stored-card id and device fingerprint). High-impact, money movement: requires a one-time token from `prepare_mutation` (action=`after_order_payment`) and explicit user confirmation. Do not use for legacy web WCF orders — that is `web_pay_after_order`. Requires a loaded mobile API access token — check `account_status` first; if none is loaded, run `auth_start`, have the user complete the browser sign-in, then `auth_exchange` with the ret…

  • payment_methodsList available payment methodsread-only

    List the payment-method groups available for the current Alza account cart (mobile API getDeliveryPaymentGroups payment projection). Use after `delivery_options` and before order submission, to show the user payment choices and to obtain the `payment_id` needed by `web_place_order` (e.g. 103 proforma) or the mobile checkout. Requires a non-empty cart. Requires a loaded mobile API access token — check `account_status` first; if none is loaded, run `auth_start`, have the user complete the browser sign-in, then `auth_exchange` with the returned code and state. Read-only.

  • phone_changeChange the contact phone numbercan change or delete data

    Change the account's contact phone number (row A16, `PATCH /v1/account` → `/phone`): the number that receives pickup codes and 2FA SMS. Requires a one-time token from `prepare_mutation` (action=`phone_change`). Before anything is sent, `user_id` is checked against the signed-in account with a fresh `user_data` read; a different id, or a session whose user id cannot be read, is refused.Side effect: the new number becomes the SMS destination for the account.

  • place_orderSubmit an order (mobile API)can change or delete data

    Submit an order through the mobile API's multi-step sequence using a checkout token from `checkout_preview` plus the three explicit payloads (`delivery_payment`, `user_info`, `complete_order`) copied from the preview/delivery responses. Use only when the user has explicitly confirmed the purchase. High-impact, money-relevant side effect: creates a real Alza order. Known issue: the mobile `sendOrder3` step currently returns HTTP 500 (https://github.com/lukabudik/alza-mcp-community/blob/main/docs/gap-analysis.md G1/G5) — for a known-working submission path prefer `web_place_order` (legacy web WC…

  • prepare_mutationPrepare an Alza mutationread-only

    Description is built at runtime.

  • productAlza product by code

    Fetch full product details as JSON for a given Alza product code.

  • product_by_eanLook up catalog products by barcode (EAN)read-only

    Look up Alza catalog products by EAN/barcode (row AT3 — the app's camera barcode-scan API, APK `cz.alza.base.{api,lib,android}.vision`): `POST /services/restservice.svc/v1/getProductByEANlist` with `{eanList}`. Returns the matching product data on success, or `err:1` with `msg` ("No products found.") for codes not in the catalog. Accepts 1-20 barcodes (6-14 digits, EAN-8/13/14). No account required; read-only.

  • profileRead Alza user profile and address bookread-only

    Read the authenticated user's Alza profile: personal data, the delivery-address book with per-address HATEOAS actions (create/edit/delete/search), and account sections. Use to inspect the account, to confirm the account binding (`user_id`, email), and to obtain the per-address `action` objects required by `address_upsert` and `address_delete` (present only when the account has saved addresses; `address_search` works without one). The numeric `user_id` is the input for the user-scoped reads (`order`, `order_archive`, `order_search`, `complaint_claims`, `subscription_overview`). Requires a loade…

  • recommend_alternativesRecommend alternative productsread-only

    Find alternatives to one product ("something like this but cheaper / better / same brand"). Candidate pool = Alza's own alternatives list for the product (mobile API, keyed by the numeric commodity id taken from the product URL); if that list is empty, or nothing in it survives the mode filter, falls back to a same-category `search_products` (`poolSource` says which was used). Heuristics: `cheaper` = strictly lower price, cheapest first; `same-brand` = brand match (source brand vs. the candidate's name), then rating desc, price asc; `better-specs` = rating >= source rating (unrated dropped), t…

  • registerRegister a new Alza accountcan change or delete data

    Register a new Alza account (mobile API CreateUser): submit email, phone, and password plus an optional verification code. High-impact, credential-bearing side effect: creates a real Alza account the user will have to manage. Use only with explicit user confirmation; requires a one-time token from `prepare_mutation` (action=`register`) passed as `confirmation_token`. Do not use to sign in an existing account — that is the `auth_start`/`auth_exchange` flow.

  • report_issueDraft a GitHub issue about alza-mcp-communityread-only

    Draft a bug report or feature request for the alza-mcp-community project (github.com/lukabudik/alza-mcp-community). Use it when a tool fails unexpectedly, returns data that is clearly wrong, Alza changed something and a tool broke, or the user needs something no tool can do. Not for the user's own mistakes (invalid arguments, a product that doesn't exist) or for problems with an Alza order — those go to Alza support. This tool files nothing: it returns a redacted Markdown draft with version and environment details and this session's recent tool errors, a `gh` command to search for duplicates, …

  • review_submitSubmit a product review

    Submit a product review (1–5 rating plus optional text) by executing the server-provided review form action from the product detail (writeReviewAction/onSubmitReview or the rating form). Use when the user wants to publish a review for a product they bought. Mutating: the review becomes public on the product page — requires a one-time token from `prepare_mutation` (action=`review_submit`) and explicit user confirmation. Optional `values` carries extra typed form fields verbatim from the form response.

  • search_productsSearch Alza productsread-only

    Search the Alza.cz catalog by keyword. Use this for product discovery — finding what's available, comparing options, or starting research. Returns a list with product code, name, price, stock (from the card's purchase CTA), and rating. Each result's `price` is the shelf price; when the card offers a promo code the lowest price payable is `priceNow` with its `promoCode` (and `alzaPlusPrice` for members) — quote those, not just `price`. Results with `condition` ('opened' = Rozbalené, 'used') are previously sold goods with a `newPrice` reference: never compare their price with new goods or call t…

  • select_pickup_pointDelivery → payment associations (does NOT pick a pickup point)

    Despite the name, this tool does not select an AlzaBox or pickup point. It POSTs a delivery selection to the mobile `getDeliveryAssociations` route and returns the payment methods that work with that delivery, each with the resulting delivery price (`data[]`: payment `id` such as 103/143/144/203, `price`, `paymentPrice`, `isLowCredit`, `isHidden`). This was re-tested live on 2026-10-06 against an authenticated cart. All 127 entries in `delivery_options` (115 deliveries across 2 groups plus 12 payments) had null `beforeSelectAction`/`afterSelectAction`, so the server never provides a pickup-poi…

  • set_toolsetEnable or disable a toolset

    Enable or disable every tool in one toolset (or `all` for every toolset) at once, so only the tools relevant to the current task are visible. Call `list_toolsets` first to see the available ids. Changing this fires the standard MCP tools-list-changed notification; clients that ignore it keep their old tool list — then the operator should set `ALZA_TOOLSETS` (see `list_toolsets`) and restart the server instead. No Alza-side effect — this only changes which tools this MCP server currently exposes to you.

  • subscription_activateActivate AlzaSubscriptioncan change or delete data

    Activate AlzaSubscription by executing the server-provided activateAction form. High-impact: starts a paid, recurring subscription — use only with explicit user confirmation after showing the terms from `subscription_overview`. Requires a one-time token from `prepare_mutation` (action=`subscription_activate`). Optional `values` carries the payment/installment fields verbatim from the form response.

  • subscription_overviewRead AlzaSubscription overviewread-only

    Read the account's subscription section — the resource Alza's authenticated navigation links as `userSubscription` (`GET https://webapi.alza.cz/api/users/{user_id}/v1/subscription?country=CZ`). Use to show the user their subscription state before `subscription_activate` or `subscription_update_installment`. Caveat: the link is observed live but its response has not been verified yet, so treat the returned shape as unverified (row S1). Pass `user_id` (the numeric id from `profile`), or pass the `userSubscription` link / an AppAction verbatim as `action`. Requires a loaded mobile API access toke…

  • subscription_update_installmentUpdate AlzaSubscription installment plancan change or delete data

    Change the AlzaSubscription installment plan by executing the server-provided updateInstallmentAction form. High-impact: changes the payment schedule of a paid subscription — use only with explicit user confirmation. Requires a one-time token from `prepare_mutation` (action=`subscription_update_installment`). Optional `values` carries the installment fields verbatim from the form response.

  • two_factor_setEnable or disable SMS two-factorcan change or delete data

    Turn SMS two-factor on or off (row A15, `PATCH /v1/account` → `/2faEnabled`): `enabled=true` to activate, `false` to deactivate. 2FA sends a code by SMS to the account's contact phone, so set the phone first if it is wrong. Requires a one-time token from `prepare_mutation` (action=`two_factor_set`). Before anything is sent, `user_id` is checked against the signed-in account with a fresh `user_data` read; a different id, or a session whose user id cannot be read, is refused.

  • upload_attachmentUpload complaint/claim attachments

    Upload 1–5 image attachments (base64 data URLs, whitelisted image MIME types, max 10 MiB each) by executing the server-provided multipart action (uploadImageAction / complaint attachment actions) — typically for a warranty claim from `complaint_claims`. Use when the user needs to attach photos (damage, label, invoice) to a claim or complaint. Mutating: requires a one-time token from `prepare_mutation` (action=`attachment_upload`) and user confirmation. Optional `values` carries extra typed form fields verbatim from the form response.

  • watchdog_deleteDelete a price/stock watchdogcan change or delete data

    Delete one Alza watchdog (row B9b). Pass `watchdog_id` (from `watchdog_list`), or pass `commodity_id` and the tool looks up the watchdog on that product through Alza's own delete action. Use when the user no longer wants alerts for a product, or before `watchdog_set` to change an existing watchdog's conditions. Account write: confirm with the user, then get a one-time token from `prepare_mutation` (action=`watchdog_delete`). Requires a loaded mobile API access token — check `account_status` first; if none is loaded, run `auth_start`, have the user complete the browser sign-in, then `auth_excha…

  • watchdog_listList price/stock watchdogsread-only

    List the price/stock watchdogs set on the user's Alza account. Alza calls the feature "Hlídací pes" (row B9a). Each entry has `watchdog_id`, `commodity_id`, name, current price, availability, `is_tracking_stock`, and `max_price` (the alert fires when the price drops below this; null means price is not watched). Use it to answer "what am I watching?", to find the `watchdog_id` for `watchdog_delete`, or to check before `watchdog_set`, which refuses a product that already has a watchdog. Pass `user_id`, the numeric Alza user id from `profile`. Requires a loaded mobile API access token — check `ac…

  • watchdog_setSet a price/stock watchdog

    Create an Alza watchdog for one product (row B9). Alza emails the account's login address when the product is back in stock (`track_stock`) and/or when its price drops below `max_price` (CZK incl. VAT, must be below the current price). Alza stores and runs the watchdog, so nothing is kept on the MCP side. Use for requests like "tell me when this drops under 5000 Kč" or "let me know when it's back in stock". If the product already has a watchdog, this call refuses. To change the conditions, delete it with `watchdog_delete` first and then set it again. Persistent account write: confirm with the …

  • web_add_to_cartAdd a product to the web visitor cart

    Add a product to the anonymous (visitor-keyed) Alza HATEOAS web cart via the live m.alza.cz basket/v1 API, using the numeric `commodity_id` (e.g. 7229946) from `search_products`/`get_product`. Use for the web checkout flow (row W5) instead of the account cart — this basket is keyed to the visitor (Balancer-Guid), not to an Alza login. The response carries the basket id; pass it to `web_cart` to read this same HATEOAS cart. IMPORTANT — separate cart, live-verified 2026-09-26: `web_place_order` does NOT read this basket. It runs the legacy WCF pipeline (`EShopService.svc`), which shares its cart…

  • web_cartRead the web visitor cartread-only

    Read the anonymous (visitor) Alza web checkout cart by `basket_id` (obtained from `web_add_to_cart`): the HATEOAS cart state (maxStep, itemsAction, emptyCartAction) plus item lines (productId, count, basketItemId, updateQuantityAction). Use to verify a `web_add_to_cart` worked or to inspect this HATEOAS cart's contents. Note: this is a different cart than the one `web_place_order` submits (that pairs with `add_to_cart`, not `web_add_to_cart`) — see `web_add_to_cart`'s description. Do not use for the authenticated account cart — that is `cart`. Read-only; no token required.

  • web_pay_after_orderExecute a web after-order payment (working path)can change or delete data

    Execute the after-order payment for an unpaid legacy-web order through the live-verified EShopService.svc CreateAfterPayment chain (the recorded real-payment path: e.g. MojePlatba 144 → KB SSO gateway). Use when the user needs to pay a web-placed order that is still unpaid. First list the available payment ids via `mobile_read` with operation=`web_after_payment_dialog` (GetAfterPaymentDialog). High-impact, money movement: requires a one-time token from `prepare_mutation` (action=`web_after_order_payment`) and explicit user confirmation.

  • web_pickup_placesList web pickup places (AlzaBox, branches, 24/7)read-only

    List Alza pickup places from the live m.alza.cz personalPickup/v1 API: the type-availability form (AlzaBox/branches/24-7/showroom counts), a paginated place list, and — with `place_id` — a single place's detail (deliveryId, parcelShopId, isFree, typeText, opening hours). Use to find where the user can collect or pick up, or to obtain the `deliveryId`/`parcelShopId` that `web_place_order` needs. Unlike `delivery_options`, this is visitor-readable — no account token required. IMPORTANT (live-verified 2026-09-26): `order_id`/`group_id` are typed optional but the live API 400s without both (`{"Ord…

  • web_place_orderPlace an order (legacy web WCF — working path)can change or delete data

    Place an order through the live-verified legacy web WCF checkout pipeline (EShopService.svc: SaveOrder2 → SaveOrder3 → SaveAndConfirmOrder2 with the documented AlzaPlus 113-gate retry → CheckOrder4 → SendOrder4). This is the currently-working order-submission path — the mobile `place_order` (sendOrder3) returns HTTP 500 (https://github.com/lukabudik/alza-mcp-community/blob/main/docs/gap-analysis.md G1/G5). Cart note (live-verified 2026-09-26): this submits whatever is in the cart populated by `add_to_cart` (mobile `restservice.svc/v2/basket/add`) — NOT the separate HATEOAS cart from `web_add_t…

Signals

Stars
88
Forks
14
Open issues
3
Contributors
9
Last commit
Oct 20, 2026 (8 days ago)
Last release
Oct 7, 2026 (21 days ago)

From GitHub (fetched Oct 24, 2026).

Details

Registry name
io.github.lukabudik/alza-mcp
Version
0.5.0
Auth
No auth
Packages
npm alza-mcp
License
License unknown
First seen
Oct 24, 2026
Last checked
Oct 24, 2026
Cite this page

Alza MCP. Agent Mart. https://agentmart.dev/connectors/lukabudik-alza-mcp (last updated 2026-10-24)