What this connector receives, returns and keeps · last updated 30 September 2026
This privacy policy covers this app for AI assistants: the connector that lets a shopper browse a Shopify store's catalogue, fill a cart and reach the store's own checkout from an assistant such as ChatGPT or Claude. It is operated by Curless. It is installed by a merchant onto their own store, and what happens with THAT shop - the purchase, the payment, the delivery address - is governed by the shop's own privacy policy, published on their storefront.
No name, postal address, phone number or payment details are collected, and the rest of the conversation is never sent here.
To show the shop's catalogue and stock, keep the cart, build the link to the shop's own checkout, recognise the order that checkout creates, look up the one order a shopper asks about, and protect the service from abuse with rate limits. Nothing is sold, used for advertising or used to build a profile.
Shopify, the shop's e-commerce platform, for the catalogue, the order lookup and the checkout; the shop, which sees on an order placed through a checkout link the three attributes described below; and Amazon Web Services, which hosts the servers in Singapore. No one else.
A shopper can empty the cart at any time, on the card or by asking the assistant, and what it held is gone with it. Rights over an order - access, correction, deletion - are exercised with the shop you bought from; this connector keeps no shopper record to correct or delete. About the connector itself, write to Curless at ops@curless.ai.
Only what a shopper types or taps as tool arguments: a search term, an option value, a product and a quantity for the cart, the checkout reference the card sends back while the shopper pays, or an order number and the email the order was placed with. The rest of the conversation is never sent.
The email is used to match and is never returned. A lookup answers only when the order number and the email both match; a wrong email and an order that does not exist give the same answer, so the tool cannot be used to confirm that an order exists.
list_products, get_product and
get_checkout_link return catalogue data only — products, options, prices,
stock, images — which is personal to nobody.
get_store_policies returns what the shop publishes on its own website —
its returns, shipping, privacy and terms policies and its FAQ and contact pages — and takes
nothing but an optional topic.
The cart tools — add_to_cart, view_cart and
clear_cart — return the cart. These are its fields in full, and the
same fields ride beside every answer so the card can show the cart:
cartId — An unguessable id for this cart, so the storefront card can name it on its own callscount — How many items are in the cartsubtotal — What they cost at today's pricescheckoutUrl — The Shopify cart link that buys every line that can be boughtcheckoutRef — A random reference for that checkout, described belowdropped — Products the shop stopped listing, taken out of the cartlines — One entry per variant in the cartlines.variantId — Shopify's id for the variantlines.handle — The product's handle in the shoplines.title — Product namelines.variantTitle — Variant name - a size, a prescriptionlines.options — The options chosen, each as a name and a valuelines.spec — The shop's own line of specification for the product, e.g. a pack sizelines.quantity — How manylines.available — Whether the shop can sell it right nowlines.unitPrice — Price of onelines.lineTotal — Price of the linelines.imageUrl — Product picturelines.url — The product's page on the shop's own sitepromotions — The shop's own automatic offers, for the line under the subtotal - public shop data about the shop, not about the buyer. Only offers for every buyer, active nowpromotions.title — The offer's name, as the merchant wrote it when it reads as words - otherwise the same as its labelpromotions.label — What the offer does, in words made from the shop's Shopify discount settings - "Buy 2, get 1 free · 1 Month"promotions.scope — Which items the offer is on, by their collection or product namespromotions.buyScope — Buy X get Y: which items count towards the buy, when they are not the samepromotions.combinesWith — Which other kinds of discount it can be used with, as Shopify sayspromotions.combinesWith.orderDiscounts — Whether it combines with order discountspromotions.combinesWith.productDiscounts — Whether it combines with product discountspromotions.combinesWith.shippingDiscounts — Whether it combines with shipping discountspromotions.summary — Shopify's own one-line description of the offerpromotions.automatic — Always true: it applies at checkout with no code to typepromotions.percentOff — A percentage off, when the offer is onepromotions.amountOff — An amount off, when the offer is onepromotions.minQuantity — The number of items the offer needs, when it needs a numberpromotions.minSubtotal — The spend the offer needs, when it needs onepromotions.buyQuantity — Buy X get Y: how many items to buypromotions.buyAmount — Buy X get Y: or how much to spendpromotions.getQuantity — Buy X get Y: how many items get the discountpromotions.getPercentOff — Buy X get Y: the percentage off them, 100 being freepromotions.getAmountOff — Buy X get Y: or the amount off thempromotions.endsAt — When the offer ends, when it doescheck_checkout_status is asked by the card while the shopper pays, and
returns only:
status — "waiting" until the shop has an order carrying the checkout reference, then "confirmed"; "unknown" for a reference this cart was never givenorder — Present once confirmedorder.name — The order number the shop gave itorder.total — The order totalorder.payment — How it was paid, in words - for example Shopify Paymentsorder.itemCount — How many items the order holdsorder.financialStatus — Shopify's payment status for the orderorder.lines — What the order holds, line by line (the first four)order.lines.title — The product nameorder.lines.spec — The shop's own line of specification for the product, e.g. a pack sizeorder.lines.options — The options chosen, each as a name and a valueorder.lines.variantTitle — The variant nameorder.lines.quantity — How manyorder.lines.image — The product picture, through this connector's image proxy where it has oneorder.lines.imageCdn — The same picture at Shopify's CDNorder.lineCount — How many lines the order has, where that is more than fourorder.shipping — The shipping in the order total, as Shopify gives itorder.tax — The tax in the order total, as Shopify gives itEvery answer also carries view, merchant, logoUrl, toolNames, vocab —
which screen to draw, the shop's name and logo, and this connector's own tool names and
words.
lookup_order returns one order, and these are its fields in full:
name — the order number as the merchant writes it, e.g. #1052createdAt — when the order was placedcurrency — the currency it was placed intotalMinor — the order total, in minor unitssubtotalMinor — the items in that total, in minor units, as they stand now - after any discount or refund, before shipping and taxshippingMinor — the shipping in that total, in minor units, as it stands now - after any refundtaxMinor — the tax in that total, in minor units, as the order gives itfinancialStatus — Shopify's own word for the payment — PAID, REFUNDED, PARTIALLY_REFUNDED…fulfillmentStatus — UNFULFILLED / FULFILLED, or absent when Shopify reports nonestatus — the same in the words Shopify's own order page uses for a buyer: Confirmed, On its way, Delivered, Canceled …lines — one entry per item, each with the fields belowtitle — the product namevariantTitle — the chosen options, when the product has anyoptions — the same options, each as a name and a value, while the variant still existsproductHandle — the product's handle in the shop, while it existsspec — the shop's own line of specification for the product, e.g. a pack sizequantity — how many were orderedcurrentQuantity — how many there are now - refunded and removed ones left outpriceMinor — the price of one unit of that line, before any discount, in minor unitsimageUrl — the product image, from Shopify's CDNtrackingUrls — the carrier's tracking links, once the merchant has shipped and entered themstatusUrl — Shopify's own status page for this orderNo name, no address, no phone number, no email and no payment details are returned — not because they are filtered out afterwards, but because the server never asks Shopify for them.
trackingUrls and statusUrl are links to Shopify and to the
carrier. Opening one shows more than this connector does — a status page carries
the delivery address — so they are handed over as links for the shopper to open, and
their contents never pass through here.
No shopper record is written. Nothing is sold, shared for advertising, or used to build a profile, and there is no account to sign in to.
Two hosts, both Shopify's: for the catalogue, the single
order lookup, the order a checkout reference points to and the policies the shop publishes
on its website, and cdn.shopify.com
for product images. A checkout link carries three cart attributes, which Shopify copies onto
the order it creates: Source (always Curless), Assistant (which
AI assistant, when the client says) and CurlessRef (a random reference). The
merchant sees them on the order, and the reference is how the card learns that the order
was paid. Nothing is sent to any
other third party. Our servers are in Singapore, hosted on Amazon Web
Services.
Exercise them with the shop you bought from — they hold the order, and this connector holds no shopper record to correct or delete.
About the connector itself, Curless is reachable at ops@curless.ai.
How it works · the shop’s own privacy policy and terms of sale are on their storefront