{"id":10951,"plugin_id":"plugin_asdk_app_6a3779d9c3348191b5b7c418498bbdd1","kind":"skill","collection_source":null,"comparison_source":null,"observed_at":"2026-09-30T22:58:22.600Z","digest":"4ed799da624a03e54318b63431f1c8a5e2187078e19021453d9a43512a214c74","against":null,"payload":{"name":"sangria-shopping","description":"Buy real products with Sangria's prepaid credits. Use when the user wants to buy, order, or find a physical product (\"buy me X\", \"order Y\", \"find Z under $30\", or an Amazon product link), or asks about their Sangria balance or order status. Do not use for account setup, adding credits, payment methods, or shipping details — those happen on Sangria's dashboard, not in chat.","included_files":[],"skill_md_contents":"---\nname: sangria-shopping\ndescription: Buy real products with Sangria's prepaid credits. Use when the user wants to buy, order, or find a physical product (\"buy me X\", \"order Y\", \"find Z under $30\", or an Amazon product link), or asks about their Sangria balance or order status. Do not use for account setup, adding credits, payment methods, or shipping details — those happen on Sangria's dashboard, not in chat.\n---\n\n# Shopping with Sangria\n\nSangria buys real products on the user's behalf using their prepaid USD\ncredit balance. Every purchase is quoted first and nothing is bought until\nthe user approves a specific product at a specific price.\n\n## Workflow\n\n1. **Quote first.** Call `discover` to mint a short-lived, price-locked quote:\n   - The user described what they want → pass `intent` (a short product\n     description) and `reasoning` (why it fits their need). Add\n     `min_price_usd`/`max_price_usd` when they gave a budget.\n   - The user pasted an Amazon product link → pass `url` instead.\n   - Never pass both. If the request is too vague to search well\n     (\"get me a gift\"), ask one or two clarifying questions first.\n2. **Present the matches.** Show name, price (convert `price_microunits` to\n   dollars: 1 USD = 1,000,000 microunits), rating, and product link. Let the\n   user pick. Prices are locked only until the quote's `expires_at`.\n3. **Get explicit approval.** Never call `buy` until the user has approved a\n   specific match at its quoted price in this conversation. \"Find me X\" is\n   not approval to buy X.\n4. **Buy.** Call `buy` with the quote's `discovery_id` and the approved\n   match's `sku`. Report the returned `status`:\n   - `confirmed` — order placed; share the order id.\n   - `running` — checkout is in progress; the user can check later with `orders`.\n   - `failed` — explain `failure_code`/`failure_message` and the next step.\n5. **Follow up.** Use `balance` for remaining credit and `orders` for order\n   history and statuses (paginate with `next_cursor` when `has_more` is true).\n\n## Boundaries\n\n- **Never collect sensitive data in chat** — no payment cards, authorization\n  codes, credentials, government IDs, health data, phone numbers, or shipping\n  addresses. Purchases ship to the address already saved in the user's\n  Sangria dashboard.\n- **Setup lives on the dashboard.** Adding credits, payment methods, shipping\n  address, or phone all happen at https://getsangria.com/client/settings —\n  send the user there instead of asking for details.\n- **Restricted categories are not purchasable** (tobacco, weapons, drugs,\n  gambling, adult, counterfeit). Decline these without calling tools.\n- Spending is bounded by the user's prepaid balance and their spend caps;\n  `buy` is idempotent per (discovery_id, sku), so retrying a timed-out buy\n  with the same pair is safe and cannot double-charge.\n\n## On error\n\n| Error | What to do |\n| --- | --- |\n| `profile_setup_required` | Ask the user to finish delivery/contact setup at https://getsangria.com/client/settings, then retry. |\n| `dashboard_action_required` | Ask the user to add credits or a payment method at https://getsangria.com/client/settings, then retry. |\n| `restricted_data` | Remove the flagged sensitive detail from the request and retry with product terms only. |\n| `prohibited_goods` | Tell the user this category isn't supported; offer a different product. |\n| Expired or unknown `discovery_id` on `buy` | Quotes are short-lived — call `discover` again, reconfirm the price with the user, then buy with the fresh quote. |\n| `unauthorized` / `authenticated: false` | Ask the user to reconnect the Sangria connector and approve access. |\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}