Connect any MCP-compatible client (Claude.ai, Claude Desktop, Cursor, custom agent) to this endpoint to let an LLM search products across every merchant in the Aztrix commerce super-graph and surface FastCheckout buy URLs.
POST https://aztrix.io/mcp Content-Type: application/json
search_products — Search products across every merchant in the Aztrix commerce super-graph. Each offer has a buy_url the user can open directly to complete the order, regardless of the merchant backend (Shopify, Magento, etc.). Transaction-ready merchants route to a real hosted checkout (card payment via Stripe/Mollie); the rest route to the PostNL FastCheckout demo checkout. buy_url is null when the merchant cannot take orders through Aztrix or the offer is sold out (its availability is https://schema.org/OutOfStock); do not offer that product for purchase. A product grouped on its barcode carries gtin, and gs1_verified.licensee_name when GS1 confirms the company the barcode is registered to. Each offer carries the shop's own brand, mpn and spec_attributes when the shop provides them. An offer carries verified_by_aztrix when Aztrix itself checked facts about that merchant: each fact has its date (verified_at) and its sentence (text); a fact that was not verified is not listed, and demo: true marks a demonstration store that is not a real business. A q of 12 to 14 digits with a valid GS1 check digit is read as a barcode and matched on the GTIN (the response then carries matched_on: "gtin"); get_product_by_gtin is the dedicated barcode tool. Use this when a user wants to find or buy a product without being told which store to visit.get_product_by_gtin — Look up one product by its barcode (GTIN-8, UPC-12, EAN-13 or GTIN-14) and get every merchant in the Aztrix commerce super-graph that sells it, with price, availability and a buy_url, cheapest buyable offer first. Use this instead of search_products whenever you have the barcode digits: from a photo of the product or its label, from a product page's gtin13, or from the user. result is found, not_found (no shop in the network sells it, with the carrier given if any) or restricted_code (an in-store, coupon or receipt code, not a product). An invalid code (wrong length or check digit) is an error: if the digits came from a photo, read them again or confirm them with the user before saying the product does not exist. buy_url is null when the merchant cannot take orders through Aztrix or the offer is sold out (availability https://schema.org/OutOfStock); do not offer that product for purchase. gs1_verified is present when GS1 confirms the company the barcode is registered to (licensee_name), with the brand GS1 holds for it. Each offer carries the shop's own brand, mpn and spec_attributes when the shop provides them. An offer carries verified_by_aztrix when Aztrix itself checked facts about that merchant: each fact has its date (verified_at) and its sentence (text); a fact that was not verified is not listed, and demo: true marks a demonstration store that is not a real business.search_services — Search services (not products) across every merchant in the Aztrix network: repairs, treatments, lessons, installations and other work a business does for a buyer. Each result has the service (title, description, price or price range when the merchant gives one, duration_minutes), the merchant (name, city, country) and next_step, what an agent can do: request_quote or request_appointment (action.request_url: give it to the buyer, or call start_service_request to prefill a message), book_external (action.booking_url, the merchant's own booking page) or call (action.phone). action.type is none when the merchant has no phone on file and takes no requests; then only action.website is available. response_hours, when set, is how fast the merchant says it replies to a request. For a request step, questions lists what the merchant asks every buyer ({key, label, type, required, options for a choice, asked_on_page}): ask the buyer these, then pass the answers to start_service_request as answers, by key. Leave out the asked_on_page ones (an address, for example): the buyer answers those on the request page, never through you. Use search_products for things to buy.start_service_request — Prepare a quote or appointment request to a merchant from search_services and get request_url, the page where the buyer finishes it. This tool sends and stores nothing, and takes no buyer personal data: on request_url the buyer reads the message, enters their name and email (phone optional) and confirms that their details are shared with the merchant. The merchant then replies by email, within response_hours when the merchant set one. Refused with requests_not_enabled when the merchant does not take requests through Aztrix (use the booking link or phone from search_services instead), and with item_invalid when service_id is not one of that merchant's services. When the service has questions (search_services questions), pass the buyer's answers as answers, keyed by question key; a required question you could not answer is listed in missing_required and the page asks the buyer.create_checkout partner-gated — Open a UCP checkout session for a product on a specific super-graph merchant and return a pay URL (pay_url). Use after search_products: pass that offer's merchant_domain and the product title as `item`. The order is assembled on the super-graph and routed to PostNL fulfillment; the buyer opens pay_url, the merchant's checkout page, to enter the delivery address, pick the shipping method and pay. The agent does not collect the address or card details. PARTNER-GATED: requires Authorization: Bearer get_checkout partner-gated — Fetch the current state of a UCP checkout session opened via create_checkout — status, totals, pay URL, and order_id once paid. Poll this after handing the buyer the pay_url to confirm the order completed. PARTNER-GATED.get_postnl_gap_report partner-gated — Return the PostNL FastCheckout sales-pipeline gap report for a country. PARTNER-GATED: requires Authorization: Bearer find_postnl_pickup — Find the nearest PostNL pickup points (pakketpunten) for a given postcode. Open access — no partner token required (Locations API data is public). Wraps PostNL's live Locations API via Aztrix (with 24h DB-cache for quota efficiency). Returns name, address, distance (km), today's opening hours, delivery options, sustainability rating, lat/lon. Use when a user asks "where can I pick up my package near {postcode}" or wants to compare delivery options across PostNL's network. NL + BE supported.track_postnl_shipment — Look up the live delivery status of a PostNL shipment by barcode. Open access — no partner token required (consumers track their own packages). Wraps PostNL's live Shipping Status API via Aztrix. Returns current phase (collected / sorted / in transit / out for delivery / delivered), status code + description, last-updated timestamp, and optional event history (detail=true). Use when a user asks "where is my package, barcode {barcode}" or "track shipment {barcode}". Barcodes are typically 13 chars (e.g. "3STBJG123456789" for NL, "3SBOLB123456789" for bol.com). NL + BE supported.search_products is open. get_postnl_gap_report requires a partner bearer token (contact karel@aztrix.me). Once issued, pass via Authorization: Bearer <token> on the MCP POST.
curl -sS https://aztrix.io/mcp -X POST \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_PARTNER_TOKEN' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Same data, different front-ends: /search (human) · /discover (graph) · /mcp (agent — you are here).