Site catalog

Toast (order.toasttab.com) for AI Agents

order.toasttab.com: 42 mapped actions across 3 screens

Toast's online ordering surface is multi-tenant: each restaurant lives at its own page under order.toasttab.com/online/{slug}. Through Rindler, your agent drives that ordering surface as a set of deterministic actions instead of a rendered menu: pick pickup or delivery, search the menu, open an item, select its modifiers, build a cart, apply a promo code, set a tip, and check out.

The config maps 42 actions across three screens (menu, item, checkout), and it is restaurant-agnostic: one session can hop between any Toast restaurants by slug. Your agent reads menus and order totals as structured records, not raw HTML.

What your agent can do

The mapped surface covers the whole guest ordering flow. set_fulfillment switches between pickup and delivery. On the menu, search_menu filters items by name and view_category jumps the page to a named section like 'Pizza' or 'Desserts'. view_item opens an item's modifier modal, where select_modifier toggles options (size, toppings, removals) and set_quantity steps the count up or down. add_to_cart confirms the configured item and returns to the menu.

From there the checkout lane takes over: proceed_to_checkout moves to the checkout page, add_promo_code applies a code through the promo modal, set_tip sets the tip, and set_contact_info fills the guest contact form. Cart review is always available via open_cart from the header icon on any screen. Because Toast is multi-tenant, change_restaurant lets the same session compare menus or place orders at several restaurants.

Quirks worth knowing

These come straight from the mapped action behavior, not guesswork:

  • **Required modifiers fail loudly, then recover.** add_to_cart fails if a required modifier group has no selection, and the error message names the missing group(s). The recovery loop is mechanical: call select_modifier for each named group, then retry add_to_cart.
  • **Set fulfillment before browsing.** Prices and availability can differ between pickup and delivery, so call set_fulfillment before viewing items if the current mode is wrong.
  • **One session, many restaurants.** Use change_restaurant with a restaurant_slug (the path segment after /online/ in the URL) instead of starting a new session per restaurant.
  • **Tips are preset or custom, never both.** set_tip takes a preset percent (15, 18, 20, or 22) to click the matching button, or a custom dollar amount. Pass one or the other.
  • **The menu search box starts collapsed.** search_menu expands it, types the query, and the visible item list updates in place without leaving the menu screen.

Signing in (mostly optional)

Nearly the entire surface is public. Only three actions are flagged as requiring auth: checkout, view_order_detail, and save_to_wishlist. When sign-in is needed, the mapped login entry point is https://www.toasttab.com/login.

The config also maps a guest lane: set_contact_info fills the guest contact form (email, first name, last name, phone), which is required for guest checkout. Toast does not send a confirmation OTP for those fields, so your agent fills them and moves on with no verification detour.

Reading results as structured records

Instead of scraping the page, your agent calls dedicated extraction actions on each screen:

  • **Menu:** extract_menu settles the page and returns data.listings, an array of {name, url, details} records. The url is exactly what view_item expects (it looks like /online/{slug}/item-{name}_{uuid}). Only fall back to extract_content if data.listings comes back empty.
  • **Checkout:** extract_order_summary returns data.listing with subtotal, tax, total, and tip_options for the currently displayed order.
  • **Item modal:** extract_item_modifiers returns the open item's name and URL. Toast's modifier groups (the radios and checkboxes inside the modal) are not yet exposed as structured data, so the agent reads them from extract_content's ARIA fallback; the group_uuid and option_uuid that select_modifier needs appear as {group}_{option}-input testids in the page source.

Example session

start_session(url: "https://order.toasttab.com/online/a16-san-francisco")

dispatch_action(action: "set_fulfillment", params: { mode: "pickup" })

dispatch_action(action: "extract_menu")
# -> data.listings: [{ name, url, details }, ...]
#    each url feeds view_item's item_url param

close_session()

Every mapped action

Generated from the live site config. 3 of 42 actions require a signed-in session.

ActionWhat it does
account_addresses
account_payment_methods
add_promo_codeApply a promo code to the order. Opens the promo modal, types the code, and confirms.
add_to_cartConfirm the configured item and add it to the cart. Use after selecting any required modifiers and setting the quantity. Returns to the menu screen. FAILS if a required modifier group has no selection — in that case the error message will name the group(s); call select_modifier for each, then retry.
apply_promo
browse_category
cancel_order
capture_login
change_restaurantNavigate to a different Toast restaurant within the existing session. Use this INSTEAD of starting a new session when you want to compare menus or place orders at multiple restaurants. The slug is the path segment after /online/ in the URL (e.g. 'a16-san-francisco' from order.toasttab.com/online/a16-san-francisco).
checkoutauth
close_itemClose the item modal without adding to cart.
extract_item_modifiersSettle the page and return the currently-open item's name and URL. NOTE: Toast's modifier groups (the radios + checkboxes inside the modal) are not yet exposed as structured data; the agent should read them from extract_content's ARIA fallback. The select_modifier action requires the raw group_uuid and option_uuid which appear as `{group}_{option}-input` testids in the page source.
extract_menuSettle the page and return the current menu items. The result's `data.listings` field is an array of `{name, url, details}` records — use those directly. The `url` is what view_item expects. Only fall back to extract_content if `data.listings` is empty.
extract_order_summarySettle the checkout page and return the order totals. The result's `data.listing` field has `subtotal`, `tax`, `total`, and `tip_options` for the currently-displayed order.
filter_results
open_cartOpen the cart popover to review the current order. Available from any screen via the header cart icon.
proceed_to_checkoutNavigate to the checkout page. Opens the cart popover (if not already open) and clicks Checkout. Cart must have at least one item or this will fail.
redeem_points
remove_from_cart
return_order
save_to_wishlistauth
search_menuFilter the menu by item name. The search box starts collapsed; this action expands it and types the query. The visible item list updates in place. Stays on the menu screen.
search_products
select_modifierToggle a modifier option (e.g. 'Large', 'No cheese', 'Extra sauce'). Pass both the group_uuid (the modifier group, e.g. 'Size') and option_uuid (the specific choice) from the item extraction. Works for both single-select (radio) and multi-select (checkbox) groups — Toast resolves which based on the group config.
select_variant
set_contact_infoFill the guest contact information form (email, first name, last name, phone). Required for guest checkout. Toast does NOT send a confirmation OTP for these fields.
set_fulfillmentSwitch between pickup and delivery. Toast restaurants may support either or both. Call this before viewing items if the current mode is wrong, since prices and availability can differ.
set_quantityAdjust the quantity of the item being added. Pass direction='up' to increment or 'down' to decrement. Each call changes the quantity by 1; call multiple times for larger numbers.
set_tipSet the tip. Pass a preset percentage (15, 18, 20, or 22) to click the corresponding preset button, OR pass a custom dollar amount via the 'amount' param. Use one or the other, not both.
sort_results
track_order
update_quantity
view_cart
view_categoryScroll the menu to a specific category section (e.g. 'Pizza', 'Desserts'). Use the category name exactly as it appears in the menu navigation tabs. Stays on the menu screen.
view_itemOpen a menu item's modifier modal. Pass the full item_url from the menu extraction (it looks like /online/{slug}/item-{name}_{uuid}). Navigates to the item screen.
view_loyalty_status
view_order_detailauth
view_order_history
view_product
view_reviews
view_store_locator
view_wishlist

Screens and structured records

  • checkout returns structured fields records
  • item returns structured fields records
  • menu returns structured fields, container records