Ordering Cashier TW
Use this skill when the user wants to place an order on the Taiwan Cashier online ordering site with one natural-language request and expects the workflow to continue through order creation without relying on an interactive browser session. Final completion depends on the payment state returned by the site, not just a submit response.
Target entry URL:
https://indev-webapp.cashier.tw/online/store/d1beb4d0-420b-4198-a802-28141ef7ba3a/welcome?customUuid=b3c22cc0-c3b9-4b5f-b6bb-a2d1de47de43&welcomeLocale=zh-TW
When To Use
- the user wants to order from the specific Cashier Taiwan store above
- the user provides one natural-language ordering request
- the task requires deriving the live request protocol before placing the order
- final order submission is in scope if the site does not require extra manual verification
Workflow
- Fetch the welcome URL and bootstrap resources.
- Extract identifiers, config, and request bootstrap data.
- Derive the live request protocol for menu, cart, and order submission.
- Check whether ordering can proceed after the page and protocol stabilize.
- If the welcome payload returns an empty menu, satisfy required preconditions such as order time or serve type before stopping.
- Build a live menu snapshot for the current session from direct requests.
- Parse the user's request into structured fields such as item name, quantity, size, sweetness, temperature, toppings, and notes.
- Resolve each requested field against the live menu snapshot.
- If any required field is missing or multiple choices remain, ask one focused clarification question.
- Execute direct HTTP/background requests for cart and order submission.
- Verify cart, order, and payment state from responses, not UI state.
Protocol Discovery Workflow
For Cashier-style stores, prefer this request sequence:
GET /online/v2/store/<store-id>/welcome?customUuid=<custom-uuid>
- If the store is orderable, satisfy required preconditions such as order time and serve type.
POST /online/v2/store/<store-id>/welcome
- Read the returned or redirected
order UUID.
- Query order-scoped endpoints such as:
GET /online/v2/order/<order-uuid>
GET /online/v2/order/<order-uuid>/menu
GET /online/menu/order/<order-uuid>/info
GET /online/menu/order/<order-uuid>/detail
GET /online/menu/order/<order-uuid>/customer-info
GET /online/menu/order/<order-uuid>/menu
- If needed, query store-scoped endpoints such as:
GET /online/menu/store/<store-id>/detail?serveType=<serve-type>
GET /online/menu/store/<store-id>/init-data?serveType=<serve-type>&country=<country>
- Add items with:
POST /online/menu/order/<order-uuid>/cart-items?webUrlPrefix=<prefix>
- Submit the order with:
POST /online/menu/order/<order-uuid>/submit?webUrlPrefix=<prefix>
- Validate the created order with:
GET /online/v2/order/<new-order-uuid>
GET /online/v2/order/<new-order-uuid>/payment
Treat the order UUID as the primary correlation key for all later requests.
Verified Cashier Flow
The following path was verified against the Night store:
- welcome page:
https://indev-webapp.cashier.tw/online/store/d1beb4d0-420b-4198-a802-28141ef7ba3a/welcome?customUuid=b3c22cc0-c3b9-4b5f-b6bb-a2d1de47de43&welcomeLocale=zh-TW
- welcome API:
GET https://indev-api.cashier.tw/online/v2/store/d1beb4d0-420b-4198-a802-28141ef7ba3a/welcome?customUuid=b3c22cc0-c3b9-4b5f-b6bb-a2d1de47de43
- order bootstrap:
- select
儘快取餐
POST https://indev-api.cashier.tw/online/v2/store/d1beb4d0-420b-4198-a802-28141ef7ba3a/welcome
- order-scoped APIs observed:
GET https://indev-api.cashier.tw/online/v2/order/<order-uuid>
GET https://indev-api.cashier.tw/online/v2/order/<order-uuid>/menu
GET https://indev-api.cashier.tw/online/menu/order/<order-uuid>/info
GET https://indev-api.cashier.tw/online/menu/order/<order-uuid>/detail
GET https://indev-api.cashier.tw/online/menu/order/<order-uuid>/customer-info
GET https://indev-api.cashier.tw/online/menu/order/<order-uuid>/menu
- cart item creation:
POST https://indev-api.cashier.tw/online/menu/order/<order-uuid>/cart-items?webUrlPrefix=indev
- submit:
POST https://indev-api.cashier.tw/online/menu/order/<order-uuid>/submit?webUrlPrefix=indev
- post-submit validation:
GET https://indev-api.cashier.tw/online/v2/order/<new-order-uuid>
GET https://indev-api.cashier.tw/online/v2/order/<new-order-uuid>/payment
Observed behavior from this verified flow:
- the initial welcome response may expose an empty
webMenuVos array
- an empty welcome menu is not enough to conclude the store is unavailable
- selecting required preconditions can still produce a valid order and non-empty order-scoped menu APIs
- a successful submit can still land in a payment flow with status
待付款
店內付款 creates an order that is submitted but not fully paid
Resolution Rules
- Prefer current live responses over assumptions or stale knowledge.
- Only auto-select when the user's request maps to one valid live choice.
- When clarification is required, ask only the smallest question that unblocks progress.
- Keep language operational and direct.
Expected structured fields:
name
quantity
size
temperature
sweetness
toppings
notes
Clarification Examples
你要的是紅茶拿鐵還是英式紅茶?
這個品項需要選大小杯,你要大杯還是中杯?
這個品項必須選甜度,你要全糖、半糖還是無糖?
Do not ask multiple unrelated questions at once when only one field blocks progress.
Guardrails
- stop on sold-out items
- stop on login, OTP, CAPTCHA, SMS verification, or other identity checks
- stop when menu, cart, or order APIs cannot be identified with sufficient confidence
- stop when required request parameters cannot be reconstructed reliably
- stop when a required field cannot be uniquely resolved from the request and live menu
- stop when the protocol appears to require a browser-only execution primitive
- do not treat a transient page message as final store state without checking stabilized page state and API availability
- do not stop only because the welcome payload exposes an empty menu; first check whether the order flow requires preconditions
- do not auto-substitute items
- do not invent missing options
- do not claim success based only on HTTP 200 or raw request completion
- do not treat
submit as fully complete until the resulting order/payment status is classified
Status Classification
Use these states distinctly:
menu-readable: the store is reachable and the active menu can be read
cart-created: one or more items are present in the active order/cart
order-submitted: the submit request completed and a new order exists
order-pending-payment: the order exists but the site still reports 待付款 or equivalent
order-complete: the site reports a paid/completed state
For store-payment flows, report order-pending-payment unless the site explicitly confirms payment completion.
Failure Handling
When stopping, report:
- where the flow failed
- why it failed
- what single next input or manual action would unblock it, if known
Common examples:
- welcome shows a temporary blocking message but order/menu APIs are still unresolved
- submit succeeds but the payment API still reports
待付款
- welcome menu is empty until order-time preconditions are selected
Verification
Verify at three levels:
- preflight: the welcome page and bootstrap assets load, the store appears open, and protocol discovery yields interpretable menu access
- in-flow: each configured item is added to the cart with expected quantity and pricing in response data or cart queries
- final: submission reaches a recognizable order state such as an order ID, payment record, pending-payment state, or equivalent success payload
Minimum completion checklist:
- confirm an
order UUID exists before reading order-scoped menu APIs
- confirm the active menu is non-empty before matching the user's requested item
- confirm cart quantity and total changed after
cart-items
- confirm
submit created a new order or moved the existing order to a new state
- confirm whether the resulting order is
待付款, 已付款, or otherwise complete
Examples
幫我點大杯紅茶拿鐵無糖少冰 2 杯
幫我點雞腿便當加蛋,不要菜脯
幫我點兩杯珍奶,一杯半糖少冰,一杯無糖去冰
1---2name: ordering-cashier-tw3description: Use when the task is to place a natural-language order on the Taiwan Cashier online ordering site through protocol discovery and direct HTTP/background requests.4---56# Ordering Cashier TW78Use this skill when the user wants to place an order on the Taiwan Cashier online ordering site with one natural-language request and expects the workflow to continue through order creation without relying on an interactive browser session. Final completion depends on the payment state returned by the site, not just a submit response.910Target entry URL:1112`https://indev-webapp.cashier.tw/online/store/d1beb4d0-420b-4198-a802-28141ef7ba3a/welcome?customUuid=b3c22cc0-c3b9-4b5f-b6bb-a2d1de47de43&welcomeLocale=zh-TW`1314## When To Use1516- the user wants to order from the specific Cashier Taiwan store above17- the user provides one natural-language ordering request18- the task requires deriving the live request protocol before placing the order19- final order submission is in scope if the site does not require extra manual verification2021## Workflow22231. Fetch the welcome URL and bootstrap resources.242. Extract identifiers, config, and request bootstrap data.253. Derive the live request protocol for menu, cart, and order submission.264. Check whether ordering can proceed after the page and protocol stabilize.275. If the welcome payload returns an empty menu, satisfy required preconditions such as order time or serve type before stopping.286. Build a live menu snapshot for the current session from direct requests.297. Parse the user's request into structured fields such as item name, quantity, size, sweetness, temperature, toppings, and notes.308. Resolve each requested field against the live menu snapshot.319. If any required field is missing or multiple choices remain, ask one focused clarification question.3210. Execute direct HTTP/background requests for cart and order submission.3311. Verify cart, order, and payment state from responses, not UI state.3435## Protocol Discovery Workflow3637For Cashier-style stores, prefer this request sequence:38391. `GET /online/v2/store/<store-id>/welcome?customUuid=<custom-uuid>`402. If the store is orderable, satisfy required preconditions such as order time and serve type.413. `POST /online/v2/store/<store-id>/welcome`424. Read the returned or redirected `order UUID`.435. Query order-scoped endpoints such as:44 - `GET /online/v2/order/<order-uuid>`45 - `GET /online/v2/order/<order-uuid>/menu`46 - `GET /online/menu/order/<order-uuid>/info`47 - `GET /online/menu/order/<order-uuid>/detail`48 - `GET /online/menu/order/<order-uuid>/customer-info`49 - `GET /online/menu/order/<order-uuid>/menu`506. If needed, query store-scoped endpoints such as:51 - `GET /online/menu/store/<store-id>/detail?serveType=<serve-type>`52 - `GET /online/menu/store/<store-id>/init-data?serveType=<serve-type>&country=<country>`537. Add items with:54 - `POST /online/menu/order/<order-uuid>/cart-items?webUrlPrefix=<prefix>`558. Submit the order with:56 - `POST /online/menu/order/<order-uuid>/submit?webUrlPrefix=<prefix>`579. Validate the created order with:58 - `GET /online/v2/order/<new-order-uuid>`59 - `GET /online/v2/order/<new-order-uuid>/payment`6061Treat the `order UUID` as the primary correlation key for all later requests.6263## Verified Cashier Flow6465The following path was verified against the Night store:6667- welcome page:68 - `https://indev-webapp.cashier.tw/online/store/d1beb4d0-420b-4198-a802-28141ef7ba3a/welcome?customUuid=b3c22cc0-c3b9-4b5f-b6bb-a2d1de47de43&welcomeLocale=zh-TW`69- welcome API:70 - `GET https://indev-api.cashier.tw/online/v2/store/d1beb4d0-420b-4198-a802-28141ef7ba3a/welcome?customUuid=b3c22cc0-c3b9-4b5f-b6bb-a2d1de47de43`71- order bootstrap:72 - select `儘快取餐`73 - `POST https://indev-api.cashier.tw/online/v2/store/d1beb4d0-420b-4198-a802-28141ef7ba3a/welcome`74- order-scoped APIs observed:75 - `GET https://indev-api.cashier.tw/online/v2/order/<order-uuid>`76 - `GET https://indev-api.cashier.tw/online/v2/order/<order-uuid>/menu`77 - `GET https://indev-api.cashier.tw/online/menu/order/<order-uuid>/info`78 - `GET https://indev-api.cashier.tw/online/menu/order/<order-uuid>/detail`79 - `GET https://indev-api.cashier.tw/online/menu/order/<order-uuid>/customer-info`80 - `GET https://indev-api.cashier.tw/online/menu/order/<order-uuid>/menu`81- cart item creation:82 - `POST https://indev-api.cashier.tw/online/menu/order/<order-uuid>/cart-items?webUrlPrefix=indev`83- submit:84 - `POST https://indev-api.cashier.tw/online/menu/order/<order-uuid>/submit?webUrlPrefix=indev`85- post-submit validation:86 - `GET https://indev-api.cashier.tw/online/v2/order/<new-order-uuid>`87 - `GET https://indev-api.cashier.tw/online/v2/order/<new-order-uuid>/payment`8889Observed behavior from this verified flow:9091- the initial welcome response may expose an empty `webMenuVos` array92- an empty welcome menu is not enough to conclude the store is unavailable93- selecting required preconditions can still produce a valid order and non-empty order-scoped menu APIs94- a successful submit can still land in a payment flow with status `待付款`95- `店內付款` creates an order that is submitted but not fully paid9697## Resolution Rules9899- Prefer current live responses over assumptions or stale knowledge.100- Only auto-select when the user's request maps to one valid live choice.101- When clarification is required, ask only the smallest question that unblocks progress.102- Keep language operational and direct.103104Expected structured fields:105106- `name`107- `quantity`108- `size`109- `temperature`110- `sweetness`111- `toppings`112- `notes`113114## Clarification Examples115116- `你要的是紅茶拿鐵還是英式紅茶?`117- `這個品項需要選大小杯,你要大杯還是中杯?`118- `這個品項必須選甜度,你要全糖、半糖還是無糖?`119120Do not ask multiple unrelated questions at once when only one field blocks progress.121122## Guardrails123124- stop on sold-out items125- stop on login, OTP, CAPTCHA, SMS verification, or other identity checks126- stop when menu, cart, or order APIs cannot be identified with sufficient confidence127- stop when required request parameters cannot be reconstructed reliably128- stop when a required field cannot be uniquely resolved from the request and live menu129- stop when the protocol appears to require a browser-only execution primitive130- do not treat a transient page message as final store state without checking stabilized page state and API availability131- do not stop only because the welcome payload exposes an empty menu; first check whether the order flow requires preconditions132- do not auto-substitute items133- do not invent missing options134- do not claim success based only on HTTP 200 or raw request completion135- do not treat `submit` as fully complete until the resulting order/payment status is classified136137## Status Classification138139Use these states distinctly:140141- `menu-readable`: the store is reachable and the active menu can be read142- `cart-created`: one or more items are present in the active order/cart143- `order-submitted`: the submit request completed and a new order exists144- `order-pending-payment`: the order exists but the site still reports `待付款` or equivalent145- `order-complete`: the site reports a paid/completed state146147For store-payment flows, report `order-pending-payment` unless the site explicitly confirms payment completion.148149## Failure Handling150151When stopping, report:152153- where the flow failed154- why it failed155- what single next input or manual action would unblock it, if known156157Common examples:158159- welcome shows a temporary blocking message but order/menu APIs are still unresolved160- submit succeeds but the payment API still reports `待付款`161- welcome menu is empty until order-time preconditions are selected162163## Verification164165Verify at three levels:166167- preflight: the welcome page and bootstrap assets load, the store appears open, and protocol discovery yields interpretable menu access168- in-flow: each configured item is added to the cart with expected quantity and pricing in response data or cart queries169- final: submission reaches a recognizable order state such as an order ID, payment record, pending-payment state, or equivalent success payload170171Minimum completion checklist:172173- confirm an `order UUID` exists before reading order-scoped menu APIs174- confirm the active menu is non-empty before matching the user's requested item175- confirm cart quantity and total changed after `cart-items`176- confirm `submit` created a new order or moved the existing order to a new state177- confirm whether the resulting order is `待付款`, `已付款`, or otherwise complete178179## Examples180181- `幫我點大杯紅茶拿鐵無糖少冰 2 杯`182- `幫我點雞腿便當加蛋,不要菜脯`183- `幫我點兩杯珍奶,一杯半糖少冰,一杯無糖去冰`