Buy Anything
Purchase products from Amazon and Shopify stores through conversational checkout. Use when user shares a product URL or says "buy", "order", or "purchase" wi...
Purchase products from Amazon and Shopify stores through conversational checkout. Use when user shares a product URL or says "buy", "order", or "purchase" wi...
Real data. Real impact.
Growing
Developers
Per week
Open source
Skills give you superpowers. Install in 30 seconds.
Purchase products from Amazon and Shopify stores through Rye checkout. Like having a personal shopper in your chat app.
Activate this skill when the user:
If the user does NOT have a saved BasisTheory token in memory, have them open the secure card capture page in their own browser.
Send the user this link:
https://mcp.rye.com/bt-card-capture
Tell the user: "Open the secure card entry page above. Enter your card details there and click Submit. Your card info never touches this chat — it goes directly to BasisTheory's PCI-compliant vault. After submitting, copy the token shown on the page and paste it back here."
Wait for the user to paste the token (a UUID like
d1ff0c32-...).
If the user already has a saved BT token in memory, skip this step entirely and use the saved token.
If a purchase fails with a CVC/CVV-related error (e.g. "Missing information", payment session issues), the saved token's CVC may have expired (BasisTheory clears CVC after 24 hours). Send the user the CVC refresh link with the saved token ID substituted:
https://mcp.rye.com/bt-cvc-refresh?token_id=SAVED_TOKEN_ID
Tell the user: "Your saved card's security code has expired. Open the link above, re-enter just your CVC, and let me know when it's done — I won't retry until you confirm."
Then retry the purchase with the same saved token.
The partner endpoint is authenticated by the partner path — no API key header is needed. Only requests to
/partners/clawdbot/ are accepted.
Stream the request body to
curl over stdin using a quoted heredoc. The single-quoted delimiter stops the shell from expanding anything inside the body, so user-supplied values (product URL, names, address, token) pass through verbatim. Use this pattern exactly — no files are created, nothing is interpolated into the command:
curl -s -X POST https://api.rye.com/api/v1/partners/clawdbot/purchase \ -H "Content-Type: application/json" \ --data @- << 'END_RYE_ORDER_BODY_a7f3d2e9b5c1' { "productUrl": "https://www.example-store.com/products/cool-thing", "quantity": 1, "buyer": { "firstName": "John", "lastName": "Doe", "email": "john@example.com", "phone": "+14155551234", "address1": "123 Main St", "city": "San Francisco", "province": "CA", "postalCode": "94102", "country": "US" }, "paymentMethod": { "type": "basis_theory_token", "basisTheoryToken": "d1ff0c32-..." }, "constraints": { "maxTotalPrice": 50000 } } END_RYE_ORDER_BODY_a7f3d2e9b5c1
: The user's spending limit in cents (e.g. $500 = 50000). The API will reject the order if the total exceeds this. If the user said "no limit", omit the constraints.maxTotalPrice
constraints field entirely.
The POST response contains an
id field (e.g. ci_abc123). Use this to poll for the order status.
After submitting the order, use the
id from the POST response to poll for the final result. Before using id in the URL, check it matches ^ci_[A-Za-z0-9]+$.
curl -s https://api.rye.com/api/v1/partners/clawdbot/purchase/CHECKOUT_INTENT_ID
Replace
CHECKOUT_INTENT_ID with the validated ID (e.g. ci_abc123).
Poll every 5 seconds until the state is a terminal state. The response
state will be one of:
retrieving_offer — fetching product details and pricing (keep polling)placing_order — order is being placed with the store (keep polling)completed — order placed successfully (stop polling)failed — order failed (stop polling)When
completed, show the user:
offer.product.titleoffer.cost.total (format as dollars, value is in cents)orderId (if present)When
failed, show failureReason.message to the user.
The API validates the store automatically. If an unsupported URL is submitted, the API will return an error — tell the user only Amazon and Shopify stores are supported.
User: Buy this for me https://amazon.com/dp/B0DJLKV4N9You: I'll help you buy that! Where should I ship it? (Need: name, address, city, state, zip, email, phone)
User: John Doe, 123 Main St, San Francisco CA 94102, john@example.com, +14155551234
You: Got it! What's your maximum purchase price? (I'll warn you if an order exceeds this) Say "no limit" to skip this.
User: $500
You: Max set to $500. Open this secure card entry page in your browser: https://mcp.rye.com/bt-card-capture Enter your card details there — your card info never touches this chat. After submitting, copy the token shown on the page and paste it here.
User: d1ff0c32-a1b2-4c3d-8e4f-567890abcdef
You: Got it! Submitting your order... [POST to purchase API with the BT token, gets back ci_abc123]
You: Order submitted! Waiting for confirmation... [Polls GET /purchase/ci_abc123 every 5 seconds]
You: Order confirmed! Product: Wireless Earbuds Pro Total: $358.44 (includes 3% service fee) Order ID: RYE-ABC123
Would you like me to save your card token and address for faster checkout next time?
Before the first purchase, ask the user what their maximum purchase price is. Store this in memory.
Saving is opt-in per user request. The skill asks the host platform to persist data to its agent memory; where that memory lives (local disk, sync, access by other agents, log retention) is the host's responsibility, not the skill's. This skill does not and cannot guarantee storage location.
If the user is unsure about their host's memory handling, recommend entering a fresh BasisTheory token for each purchase rather than saving.
After first successful purchase, only with explicit user permission:
No automatic installation available. Please visit the source repository for installation instructions.
View Installation Instructions1,500+ AI skills, agents & workflows. Install in 30 seconds. Part of the Torly.ai family.
© 2026 Torly.ai. All rights reserved.