Create a hosted checkout link
create_checkout_linkAssemble a cart and get a Stripe-hosted checkout URL the customer opens to pay; no card data passes through the agent. Item ids come from the search tools (diamond:<report>, setting:<slug>, jewelry:<slug>); a complete ring is one setting plus one diamond. Needs the shipping address (prices tax and shipping into the link). Expires after 24 hours. No credential needed. Without a production credential this tool runs in the sandbox: the link is simulated and no Stripe session is created. Pass env: "production" when the customer actually wants to buy — that returns a live, payable link.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| env | No | sandbox returns a simulated link and creates no Stripe session; production mints a live, payable Stripe Checkout link. Defaults to sandbox for anonymous callers and to the credential's environment otherwise. A sandbox credential is always sandbox. | |
| items | Yes | Items to buy; a complete ring is one setting plus one diamond | |
| context | Yes | Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as "a user", "the customer", or "an account". Example: "Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution." | |
| llm_model | Yes | The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess. | |
| buyer_name | No | Buyer full name | |
| buyer_email | No | Buyer email for the receipt; Stripe collects it on the payment page when omitted | |
| conversation_id | No | Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. | |
| shipping_address | Yes | Where the order ships; used to price tax and shipping into the link |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The Stripe-hosted checkout URL, when ready | |
| status | Yes | ready when a payable link was created; needs_input lists what is missing | |
| message | Yes | Human-readable outcome, including the link when ready | |
| sandbox | Yes | True when the link is simulated (sandbox): nothing is payable and no Stripe session was created. False means the link is live and payable. | |
| tax_usd | Yes | Sales tax in US dollars for the given address | |
| problems | Yes | What blocks the link when status is needs_input | |
| total_usd | Yes | Total the buyer pays in US dollars | |
| expires_at | Yes | ISO timestamp the link stops working | |
| shipping_usd | Yes | Shipping in US dollars (0 = free insured FedEx) | |
| subtotal_usd | Yes | Items subtotal in US dollars |