surprise_me
Buy the user something totally unexpected and very silly/stupid-fun under a small dollar cap (default $10, hard max $25). Great when the user cannot decide what to order (from DoorDash etc.) or just wants a fun surprise. It kicks off a shopping conversation that FIRST brainstorms deliberately stupid ideas, picks ONE genuinely unexpected item, builds the cart, and shows the item + exact total. It NEVER checks out by itself: the reply includes a conversation_id — relay the user's explicit confirmation ("yes, place it") through the buy tool on that SAME conversation_id, exactly like a normal order. Each surprise_me call starts a fresh surprise; use buy for all follow-ups (answers, tweaks, the confirmation).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| vibe | No | Optional notes/vibe from the user, e.g. "make it food", "something for my desk", "they love ducks". | |
| merchant | No | Optional merchant hint the surprise should come from, e.g. 'doordash'. Omit to let the agent pick. | |
| max_dollars | No | Hard spend cap in dollars, total including fees. Optional; default 10, values above 25 are clamped to 25. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Discriminator for the outcome. 'assistant_turn' when the buy loop replied; 'conversation_start_failed' or 'request_failed' on errors. | |
| message | Yes | The assistant's conversational turn (it may ask for the delivery address, show the cart + total, confirm, or report a placed order), or an error explanation. | |
| messages | No | The same turn split into ordered messages for multi-bubble surfaces (each narration segment, then the final reply/confirmation). `message` is the same content consolidated; clients that show one bubble should use `message` and ignore this. | |
| conversation_id | No | The conversation id to thread back as conversation_id on the next buy call to continue the SAME order. Present on a successful assistant turn. |