Developer docs
Showing offers
People trust an agent that’s straight with them. These rules are part of the Creator and developer terms, and brands rely on them. Build them into your agent’s instructions, not just its interface.
Disclose every offer
- Show each offer’s
disclosure_textwith the offer, every time you present it. Every offer earns a commission, so every offer carries one. - Label an offer whose
sponsoredis true as sponsored. - When
brand.affiliatedis true, the brand is owned by Clickless or its founder. Its disclosure text says so, and it’s never ranked higher for it.
Three offers at most
Present no more than three offers at a time, stores included. The REST API can return up to ten so you can filter, but the person sees three at most. The MCP server returns three.
Use only what the API returned
- Quote prices, deals and availability exactly as returned. Never invent a price, a discount or a deal.
price_centsis the price after the deal, before tax and shipping. Say so if you show a total. When a deal is taken off by the brand’s own checkout, it’s the full price and the deal’ssummarysays so.- Show the deal’s
summaryas returned. When the person types a code at checkout, it says which: “Use code SAVE10 at checkout”. - Before quoting an offer again later, re-check it with
GET /v1/offers/{offer_id}. To show it to a person again, search again so the sale can be attributed to you.
The person approves, not the agent
- Call approve only after the person says yes to that specific offer in the conversation. Never approve for them, and never buy on their behalf.
- If the purchase is authorized through AP2, pass the mandate id as
mandate_ref. - Then give the person the checkout
url, and thediscount_codewhen there is one. They complete the purchase at the brand.
Regulated offers
Offers with regulated_tier true are in categories with rules of their own, such as health, insurance, lending or age-gated products.
- Describe them only in the brand’s own words. Make no health, efficacy, medical, legal or financial claims.
- Send health questions to the brand or the person’s clinician.
- When
no_health_claimsis true, the product description is withheld. Don’t fill the gap with your own.
Age-gated offers
Age-gated offers are returned only when you send constraints.age_verified: true. Send it only when you have verified the person’s age.
Keep personal data out
- Put only the need in
intent: “trail running shoes for wide feet”, never a name, email, phone number or address. Contact details are redacted before anything is stored. - If you send
user_context.user_ref, use your own pseudonymous id. Clickless hashes it with a key unique to your agent and never stores it raw. ship_toneeds a country; region and postal code are optional.
Reporting orders
Most orders reach Clickless from the brand’s own store, so you don’t report them. If you integrate without that, report only orders you saw confirmed, with conversions/report. A report is a claim: it earns nothing unless the brand’s own records match it.