A price list you keep in your head is not a catalog. A Notion doc is not a catalog. A tweet that says “critiques from $150” is not a catalog. Those are notes. Notes are for you. Catalogs are for buyers—including buyers that are software.
People Google “how to get paid by AI agents” and then paste an address into ChatGPT. That’s not a price list. That’s a hope. Machine-readable means a buyer (human or agent) can resolve: what is for sale, what it costs, who gets paid, and what “paid” looks like after.
The four fields that make it real
- Id — stable. “svc_critique_60” not “the usual one”
- Title — a human would say it out loud. “1:1 design critique · 60 min”
- Amount — locked. Not “from,” not “DM for quote” if you want an agent to settle
- Receipt — a credit on your balance with that offering attached
Optional but useful: duration, memo, whether it’s a session or a metered call. Not useful: chain names, gas disclaimers, a second price for “AI buyers.”
If the price changes, it changes once. Humans and agents read the same row.
Catalog grader
Run this against whatever you currently send clients. Yes/no. No half credit.
- Can a stranger find the offering without asking you in chat?
- Is the amount fixed, or does it still say “starts at”?
- Could an HTTP client fetch the price without rendering your landing page?
- When someone pays, does activity name the offering—or just “transfer”?
- If you raise the price tomorrow, is there one place to edit?
Zero to two: you have a brochure. Three to four: humans can pay; agents still bounce. Five: you have Collect-shaped inbound.
How this shows up on Vybe
Your service page is the human view of the catalog. Collect is the same offerings, payable by agents via HTTP 402. Wallet holds the credit. You don’t maintain a CSV for bots and a Carrd for people.
Start with one row. A 60-minute session is enough to prove the shape. Then add the package. Then the API SKU if you have one. The grader above is the free tool; the desk is where the live list lives.



