The publish gate
Publishing an Offer emits every way to buy it, computes tax, and refuses an Offer that loses money on its median Customer.
Offer.publish is where a Startup's business compiles. One call emits every way to buy on the Startup's Publication, computes tax, and refuses an Offer that loses money on its median Customer.
What it emits
| Buy link | Who buys through it |
|---|---|
| Hosted checkout | A person paying by card, on the Startup's Domain. |
| Payment link | A Lead who said yes: one link takes the money. |
| Pricing table component | A Visitor on the Startup's Sites and Apps. |
| Portal entry | A Customer changing or canceling a Subscription. |
MCP buy tool | An Agent buying from a chat or coding tool. |
| HTTP 402 endpoint | An Agent that pays per call. |
prices.json, linked from agents.json, lists every Offer, Price and Meter for Agents that read before they buy.
Stripe is the rail. Each charge runs through the Startup's own Stripe account, and Stripe Tax computes tax on every Order, because the Startup is the seller of record.
The contribution floor
Before it writes, Offer.publish runs one Guard. The Guard reads the Cost per Verb of each Entitlement the Offer grants.
It starts from the Portfolio's prior and shrinks toward the Startup's own readings as they arrive. The floor is the lowest Price that keeps the Startup's target margin: Cost ÷ (1 − target margin).
- When the median Customer falls below the floor, the call is refused with
below-contribution-floor, which names the floor Price. - When the median clears it and the 95th-percentile Customer does not, the Offer publishes with a usage Limit at break-even. The Offer's
atBoundbehavior applies there.
Example
A $29 monthly Offer transcribes audio at $0.02 a minute; its median Customer uses 450 minutes ($9) and its 95th-percentile Customer 2,050 ($41). At a 60% target margin the floor is $9 ÷ 0.4 = $22.50, so the Offer publishes. The heavy Customer outspends the Price, so the Offer gains a Limit of 1,450 minutes, where Cost meets $29.