answer_question
ChatGPTWidget only: validate the listed answer and save it on this message branch. Never accept client prices or product facts.
bookmark_create
ChatGPTWidget only: create a private named bookmark list.
bookmark_delete
ChatGPTWidget only: delete one private bookmark list and revoke its shared links after confirmation.
bookmark_open
ChatGPTWidget only: show current checked offers for the exact products in a private list.
bookmark_read
ChatGPTWidget only: read private named bookmark lists.
bookmark_revoke
ChatGPTWidget only: revoke a public bookmark-list snapshot.
bookmark_share
ChatGPTWidget only: explicitly publish a snapshot of one named bookmark list.
bookmark_toggle
ChatGPTWidget only: save or remove an exact verified variant in a named list.
continue_discovery
ChatGPTWidget only: continue the same saved discovery job within its original deadline.
find_products
ChatGPTUse this for every shopping request: find, compare or show new electronics by need, budget or exact model in the Netherlands or United States. One call searches and shows the answer in the widget: product cards with checked shop offers, one needed question, or a plain no-result or pre-order answer. Do not call another tool to display the result. Read the request for product type, brand and model, price range, exact variant, shops, delivery date or postcode, and intended use. Put each stated detail in its own field; keep exact names and numbers, and never invent missing details. Budget, cheap or goedkoop: set purpose budget (cheapest suitable first). We compare delivery only; a request to collect in a store gets delivery offers. A refinement in chat ("onder 500", "alleen Coolblue", another brand) is a new find_products call with all choices that still apply. Then reply as structuredContent.instruction says, using summary; never invent prices, stock, performance or compatibility.
live_offers
ChatGPTWidget only: refresh the offers of the current answer from the shops, live. Never call this from chat.
prepare_purchase
ChatGPTRecheck the exact current offer before opening the retailer. Changed terms require confirmation. Never purchases or reserves anything.
question_action
ChatGPTWidget only: Back reopens the last answered question. Skip clears an optional field only. Show choices stops optional questions and hands the saved brief to the model when product selection is still needed.
record_widget_timing
ChatGPTWidget only: report elapsed times after cards are painted. Never call this from the assistant.
recover_result
ChatGPTWidget only: restore this message saved choices and recheck its offers. Never use client prices or links.
refine_search
ChatGPTOlder name: use find_products and show_products instead. Refines the choices behind stateToken; then call show_products with the returned displayToken.
refine_shopping
ChatGPTRefine the current shopping state. Omitted fields stay unchanged; null clears a constraint. Use the current token and revision from the widget context. Return cards only.
search_catalogue
ChatGPTProduct photos, variants and specifications only, when the shopper asks what a product is or looks like. Not for price, deals, delivery or where to buy: use search_products for those. Let the widget show the answer without an introduction or repeated list.
search_products
ChatGPTOlder name: use find_products and show_products instead. Pass the shopper's own words as query; then call show_products with the returned displayToken. No assistant text: the widget is the answer.
set_question
ChatGPTAsk one useful typed question on the existing saved shopping branch. Preserve its answers and constraints. Use only when a necessary choice is missing; do not force a fixed wizard. Question appears alone in the widget. Do not ask supplied or deliberately skipped fields again unless the shopper asks to reopen them. Prefer listed common program/game controls over a free-text prompt when useful.
show_more
ChatGPTWidget only: reveal the next checked batch from this message selected products. Keep market and all filters. Never add unselected IDs.
show_products
ChatGPTNot for new searches: find_products already shows its cards, questions and empty answers. Do not call show_products after find_products. Use it only to reopen a displayToken from an older chat, to show an explicit list of productIds the shopper asked for, a gift list (items with productId, SKU and recipient label plus one totalBudget), or a bundle comparison (bundle {url, mainSku} from find_products bundleForSku). Repeat the shopper's price, shop, date, variant, purpose and uses choices. Never invent performance or compatibility.