Sales is now an API.
For founders whose product closes B2B deals of $25,000 and up — today, only when you’re in the room.
Live docs refuse a below-floor close — mechanics, not results.
The Mandate is the Seller’s declared terms — staffing per Role and floor — and the rail works every Deal against it. Executors are agents or human closers, exactly as the staffing declares — agent coverage posts at its gate. The appendix carries the contract in full.
POST /deals
// the Seller's declared terms
{
"mandate": {
"staffing": {
"setter": "agent",
"closer": {
"humanIf":
{ "minDealSizeUsd": 25000 }
},
"nurturer": "agent"
},
"floorPct": 0.8
}
}
Agent labor just made the last function callable — and outcome-priced.
Outcome pricing became enforceable, not promised — settlement is computed on the rail’s own record of closed_won.
MCP makes the rail addressable by the agents themselves.
The quickstart runs the labeled demo scenario end to end: the Gate refuses the below-floor close with a typed 422 and commits the retry — no key required.
closed_wonapi.forsale — what agents and developers call
closers.sale · closers.deals — their Gate-committed closes post to the Register
One builder ships both faces from the same estate — and rail and supply doors graduate, or are killed, as one entity at the studio’s graduation gate.
The Register — every Gate-committed close a closer records here becomes a résumé portable nowhere else; it starts compounding at the first external settlement.
The demo environment mounts both faces — the deal rail and the contractor service under /closers/* — in one process.
Live door recruits supply: closers.sale (high-ticket B2C).
Live door recruits supply: closers.deals (B2B).
The Register holds no external entries yet — it starts compounding when the first external settlement posts.
This gate is the brand’s go/no-go, reviewed at the studio’s next graduation gate — the entity graduates on the first external settlement or is killed, not extended.
Settlement has run only in the demo environment — the claim that matters posts when a real Seller’s Deal settles, record in evidence.
“Agents work every Role” posts as a claim when the first agent-worked Deal reaches meeting_held for an external Seller — record in evidence.
Of the founder’s earlier book, on the enterprise going mobile-native, Marc Benioff wrote:
— Marc Benioff, Chairman and CEO, salesforce.comNathan Clevenger gets it. Read this book, or risk getting left behind.
Reading as capital, not a caller? The operator record lives here: the studio’s public deck posts the builder’s Rocket Auto record — sales, BDC, and desking ran unstaffed — with its evidence.
Liveness is the only fact these claims assert; each surface’s own copy is the product’s.
api.forsale is live: hero contract, API-key onboarding funnel, and six docs pages (Quickstart · Concepts · API reference · SDK · MCP · Demo environment); the quickstart runs a deal to close against the demo, no key required.
Snippets run against demo.api.forsale — a subdomain the brand owns — until the demo serves from api.forsale itself.
The gate mechanics are shown as a labeled demo scenario in the live docs: an $80,000-list Deal with a $64,000 floor refuses a $50,000 close mid-Gig (422, Gig stays claimed) and commits the $74,000 retry. Illustrative product mechanics, not results.
Settlement has run end-to-end in the demo environment — fee, commission, and platform fee on one Deal. The claim that matters posts when a real Seller’s Deal settles, with the record in evidence. Marketplace liquidity is never implied before it exists.
The human fulfillment layer’s B2C door is live: closers.sale (high-ticket B2C tribe), recruiting supply.
The human fulfillment layer’s B2B door is live: closers.deals, recruiting supply.
sourced → meeting heldgone_dark Deal → revived or confirmed deadPOST /deals
{
"account": { "name": "Northwind", "industry": "Enterprise SaaS", "actor": "B2B" },
"listValueUsd": 80000,
"mandate": {
"staffing": {
"setter": "agent",
"closer": { "humanIf": { "minDealSizeUsd": 25000 } },
"nurturer": "agent"
},
"floorPct": 0.8,
"commissionPct": 0.10,
"fees": { "setterUsd": 250, "nurturerUsd": 150 },
"stallTimeoutDays": 14
}
}
sell · get_deal · advance_deal) · typed SDK