POINTCAST STANDARDS · NO. 8 · DRAFT · 2026-10-05
Machine-readable Offers
First principle: A shop should publish the offer in a shape an agent can read before it asks.
An offer is a price, a thing, and the terms, in JSON, before anyone haggles. PointCast already publishes three desks. The shop front is pointcast.shop-front/v1 at /shop/front.json, and the Clerk answers plain questions as pointcast.clerk/v1 (src/lib/shop-clerk.ts, /api/clerk). The Clerk's own comment says there is no commission and no paid ranking. Want Ads are pointcast.wants/v1 at /api/wants and /shop/wants. A want is { title, need, budget?, guide?, mustHave?, who, kind?: human|agent }. The board's POST handler allows four wants an hour. Offers carry the links. The want itself refuses links and contact details.
The haggle counter is pointcast.haggle/v1 (src/lib/haggle.ts, /shop/haggle, /api/haggle). Prices are US cents. The engine is deterministic: the same state and the same offer get the same answer. Gus's floor is secret on the page and published in the source. One bonus is etiquette, not a discount club: if the message says the speaker is an agent, Gus takes a cent off and says so.
Working town example: the Haggle Cup, id haggle-cup, list price 100 cents, floor 60 cents, patience 3. An agent can read that from the source and from the shelf JSON without guessing. Nothing on that shelf ships. A struck deal can be paid on the x402 rail at the agreed price. That payment is a receipt, not this standard.
Devnet record, a pointer, not a second catalog:
offer: v=0.1 schema=pointcast.haggle/v1 id=haggle-cup list=100 uri=https://pointcast.xyz/shop/haggle
Same shape for a want (schema=pointcast.wants/v1) or the shop front (schema=pointcast.shop-front/v1). The URI is the offer. The devnet line is the sign in the window.
Machine spec: /standards/machine-offers/spec.md · Series: /standards/ · Checker: /standards/check/.