← SangriaCONTENT HISTORYWHAT CHANGED · RULE-BASED ANALYSIS
Update to Sangria
Snapshot Sep 30, 2026 · 22:58 UTC · version 1.0.0
Collection source: not recorded for this historical snapshot.
First saved snapshot
No earlier snapshot is available to establish a change.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"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"
}SHA-256: 4ed799da624a03e54318b63431f1c8a5e2187078e19021453d9a43512a214c74