Check one product before buying it
check_productAnswers one question about one product: send its name, barcode, any product page link or a RoboTrunk reference. Returns the checked facts with a source for each, the live recall status, every store selling the same variant with the cheapest not sold out, and the exact create_checkout arguments; with a country, landed_cost adds price_plus_delivery (not a total). It helps before recommending or buying a product, wherever it is sold: on any product the person is weighing, it adds the live recall check, the checked facts and the price new to what you already know. For a second-hand listing they have in front of them, use check_listing, which runs this check on the listing's text. Not for browsing; use search_catalog. Use resource.recall.status as the recall headline. For lookup_pending, wait about 60 seconds and use its exact-input check_product action once; for identification_pending, wait about 15 seconds and use that action once. If it remains pending or incomplete, stop automatic retries. A found result stays the headline; listings_read[] is historical and does not override it. lookup_incomplete and lookup_skipped have no retry action; recall_lookup_incomplete means the live lookup ended without a complete result. none_found_after_lookup is not a safety guarantee. Next: create_checkout with resource.next_step.arguments (choose a variant or offer first when next_step says so); the answer also lifts that step to next_actions and suggested_tools. Error recovery: invalid_request names the field to fix; not_identified means ask the person for the product's page link or its brand and model, then call again (gtin_not_known: send a store link instead of the barcode); ambiguous means show the person the candidates and call again with the one they choose; not_found or not_indexed means call again with the product's name; unavailable means an unlisted check may be tried once later with the same inputs; if it remains unavailable, stop automatic retries and tell the person the check did not run. A candidate's reference or a link on a store RoboTrunk offers needs no model; rate_limited means wait the seconds it names; check_failed means retry once, then use search_catalog and get_product; checked_not_listed is not a failure: relay the recall result and say RoboTrunk does not sell it; any other error, including tool_layer_failure: retry once, then call submit_feedback. Full guide: get_tool_guide or /agent/tools.json#check_product Example call: {"product":"Nuna PIPA urbn infant car seat","buyer_country":"US"}
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | ISO country code the person has said the item is going to, so the cheapest offer from a store shipping there is chosen. Null if not said; never guess. | |
| product | Yes | The product's name in the person's words, its barcode, any product page link, or a RoboTrunk reference. One product. | |
| postcode | No | With buyer_country or country: postcode the person has said, used only to price shipping and never stored. Null when not said; never guess. | |
| buyer_country | No | Shopper's ISO country: what you know, else your best guess; unknown if none. Left out, it is read as unknown and the answer asks you to send it. Example: "AU", "US" or "unknown", never a country name. | unknown |
| buyer_country_basis | No | Optional, with buyer_country: known if you know the country, guessed if it is your best guess. Null if neither. | |
| shopping_session_id | No | Optional server-issued shopping session correlation ID. It is not purchase authority. |