firestarter_approve
Approve and pay for an order awaiting confirmation, shipping to the buyer's default address with the chosen delivery speed to complete the purchase.
Instructions
Confirm and place an order that is awaiting approval — this is the step that actually BUYS and pays. Lifecycle: firestarter_execute (or a listing_id buy) returns options awaiting approval → firestarter_approve places and pays for the order → the buyer can then get a receipt (firestarter_receipt) and follow delivery (firestarter_track_order). The buyer's SAVED DEFAULT address is used automatically (the execute/approve responses show a masked view of the ship-to); a delivery_address (or a saved address_id from firestarter_addresses) applies only when the buyer has no saved address or wants THIS order shipped somewhere else. By default it approves the pre-selected (best purchasable) option; a different one is selected with option_id (each purchasable option prints its own option_id:; it identifies the product itself rather than a position that can shift between display and approval, which makes it the more reliable selector) or, as a positional fallback, selected_option. Delivery speed is the buyer's choice: the option shows a numbered 'Delivery options' menu (Standard / Express / Same-Day with prices + ETAs) — shipping_option_index (the [number] from that menu) selects a specific speed, and omitting it uses the cheapest. Only Firestarter-purchasable options can be approved — browse-only results (external listings, or Firestarter listings that are not buyable right now) are rejected with a view link instead. When execution_id is omitted (e.g. the user just says "approve"/"confirm"/"yes" without naming an order), the tool resolves the single pending purchase automatically, and lists the candidates when several are pending. A PRICE_CHANGED result means the total changed since the options were shown; placing the order at the new price requires the buyer's explicit confirmation of the exact updated total, expressed as a repeat call with confirm_total set to that exact value AND consent_nonce set to the one-time nonce PRICE_CHANGED returned, verbatim (it is single-use and cannot be guessed). If no address is saved and none is passed, approval of physical goods is rejected.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| option_id | No | Exact option id (e.g. 'opt_abc123') to approve — PREFERRED over selected_option, because it identifies the product itself rather than a position that can shift. Each purchasable option in firestarter_execute / firestarter_status output prints its own `option_id:`; copy that value verbatim. Takes precedence over selected_option. | |
| address_id | No | A saved address id (addr_...) to ship this order to, from firestarter_addresses. Optional — omit to use the buyer's default saved address. Pass only to ship somewhere other than their default. | |
| execution_id | No | The execution ID to approve (e.g. 'exec_abc123'). Omit when the user simply replied "approve": the tool then approves the one execution awaiting approval, surfaces payment-setup guidance if the order is parked awaiting a payment method, or lists the candidates if several are pending. | |
| confirm_total | No | Exact updated total in USD from a prior PRICE_CHANGED response. Pass only after showing that total to the buyer and receiving a new explicit confirmation; never guess or pre-fill it on the first approval. | |
| consent_nonce | No | The single-use consent_nonce string from a prior PRICE_CHANGED response. Pass it VERBATIM together with confirm_total when re-approving a price change. It is one-time-use and cannot be guessed — never fabricate it; only echo the exact value the last PRICE_CHANGED returned. | |
| selected_option | No | 0-based POSITIONAL index into the options list as displayed (the option shown as '1.' is index 0). Prefer option_id: this index is resolved against a fresh read of the execution, and the option order can change if the order was re-quoted or refined with firestarter_message since you displayed it. Omit both to approve the pre-selected best option. | |
| delivery_address | No | Optional — pass EITHER a single-line string (e.g. "123 Main St, Austin, TX 78701, US") OR an object { name?, street1, street2?, city, state?, zip?, country? }. The buyer's saved default address is used automatically; only pass a NEW address here to ship this order elsewhere, or when the buyer has no saved address. A partial or odd-shaped address is accepted (never rejected for shape); a complete one (ZIP + state for US/CA/AU) is required only at the pay boundary. On a first order with no saved address, the address you pass is saved as their default for next time. | |
| shipping_option_index | No | 0-based index of the delivery speed to use, taken from the numbered 'Delivery options' menu shown for the option (in firestarter_execute / firestarter_status output, or firestarter_shipping_options). Omit to use the cheapest rate; the order total is recalculated server-side for the chosen speed and included in what the buyer approves. |