Check what to ask the user before a quote
clarify_requestUse when: the user's request is vague (no set named, no delivery country, only a city, a budget without a currency, or a budget that does not say whether shipping and duties are included), before estimate_total or request_quote. Do NOT use: to guess the answers yourself, or to send the order (use request_quote once status is ready). Returns: what is still missing, up to 2 questions to ask the user (in the request language: en, ko or ja) and the defaults to show without asking. status is ready or needs_info. If the user named only a city, send it as city: a known city fills the country (see filled); an unknown one is asked. If a budget amount has no currency, leave currency out and ask the returned currency question. Ask the questions as given; do not guess the delivery country or whether a budget includes shipping and duties. Approval before payment is never asked: show its shown_as text to the user. Sends no order; we keep one log line without personal data (field names and codes only). Returns trace_id: send it back in the next clarify_request and in request_quote. Send provenance (where each value came from); a value that is not just_confirmed comes back as a question with kind confirm: ask it as written. Example requests: "Send my friend in Toronto a nice Korean skincare set under 80." / "미국 사는 친구한테 10만 원 안쪽으로 한국 화장품 세트 보내 줘" / "友達に韓国のコスメセットを送りたい。予算は1万円くらい"
Tool call template
This tool declares no required parameters. Add optional parameters from the input schema as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {},
"name": "clarify_request"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| sku | No | one set (sets[].sku from list_sets) | |
| city | No | city the user named, when no country was said (e.g. Toronto) | |
| items | No | ||
| budget | No | ||
| trigger | No | ||
| category | No | kind of product if no set was named; send "" when the user only said something vague like "something good" | |
| language | No | language of the user, e.g. en, ko, ja | |
| quantity | No | ||
| trace_id | No | optional: the trace_id an earlier clarify_request returned, so the steps of one request link up. Not personal data. | |
| arrive_by | No | YYYY-MM-DD; send the words as said if they are not a date | |
| bundle_sku | No | ||
| provenance | No | Optional provenance: an object that says where each value came from, keyed by request field (sku or items, quantity, ship_country or city, arrive_by, budget), each one of just_confirmed (the user said or confirmed it in this conversation), known_before (from memory or an earlier conversation), assumed (you inferred it) or unknown. Send it on POST /api/order/v1/checkout-sessions or the MCP tool clarify_request. We treat a value as confirmed only when it is just_confirmed: any other value, or a firm-quote field left out of provenance, comes back as status needs_info with a question (kind confirm) to ask the user as written. Without provenance nothing changes, and the answer carries provenance_note. The order request (POST /api/order/intake, MCP request_quote) also takes provenance, keyed by bundle_sku or items, quantity and ship_country only: the request is still received, and any of those not just_confirmed comes back in unconfirmed with questions (kind confirm) to ask the user before our email arrives. | |
| ship_country | No | only if the user said it | |
| substitution | No | ||
| reference_order | No | earlier order id, or {} when the user means "the one from last time" without an id |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||