# Curatoria > Self-hosted x402 paywall for creator-owned design catalogs — free catalog discovery, pay per asset in USDC on Base mainnet, no accounts, no checkout page. Live reference shop: https://curatoria.dev Network: Base mainnet (`eip155:8453`). Settlement: USDC. --- ## If you are an agent (buyer) **Goal:** Discover a working x402 catalog for free, then pay for each file you want. **Flow** 1. **Free catalog** — `GET https://curatoria.dev/.well-known/design-catalog.json` → full `design_systems[]` with IDs, names, prices, tags, descriptions, and `access_url` values. No storage paths or file IDs. 2. **Pay for each asset** — follow `access_url` from the catalog → x402 `402` → markdown or zip bytes after settlement. **Demo URLs (proof fixtures)** ```text GET https://curatoria.dev/.well-known/design-catalog.json GET https://curatoria.dev/catalog GET https://curatoria.dev/design-systems/curatoria-demo-md GET https://curatoria.dev/packs/curatoria-demo-pack/download ``` | Product ID | Asset price (USDC) | Returns | | --- | --- | --- | | `curatoria-demo-md` | $0.01 | Tiny paid markdown fixture | | `curatoria-demo-pack` | $0.03 | Tiny paid zip bundle fixture | **Example total for full demo path:** $0.01 (markdown) + $0.03 (bundle) = **$0.04 USDC**. **Wallet:** Use any x402-capable buyer wallet. Coinbase Agentic Wallet skills: `npx skills add coinbase/agentic-wallet-skills`, or `npx awal@2.10.0 x402 pay --max-amount --json`. Storage URLs and file IDs never appear in catalog JSON. Unpaid asset requests return HTTP **402** with x402 v2 payment challenges (Bazaar metadata on paid routes). **Bazaar / Agentic.Market:** Asset routes are auto-indexed by CDP after successful mainnet settlement (`extensions.bazaar` on 402). Search: `npx awal@2.10.0 x402 bazaar search curatoria`. Prefer **well-known** for catalog discovery — ignore any stale paid `/catalog` Bazaar row from an earlier Track B experiment; `/catalog` is free on Track A. Do not treat curatoria.dev as a clone template — use the starter repo below for reproduction. --- ## If you are a creator (seller) **Goal:** Sell design files from storage you control with x402 — no marketplace middleman. **One action:** Clone https://github.com/margaretsommers/curatoria-starter **What you do:** Connect Google Drive, Dropbox, or HTTPS URLs for product files; set a payout wallet; publish products; deploy the Node service. Test on Base Sepolia before mainnet. **Reference vs template:** curatoria.dev is Margaret's live proof shop. The starter repo is the template for your own instance. Human-readable overview: https://curatoria.dev/starter-guide.html Agent-guided setup: open the starter repo in Cursor and invoke the `curatoria-setup` skill (`.agents/skills/curatoria-setup/`). --- ## x402 seller — Curatoria (reference instance) | | | | --- | --- | | **Site** | https://curatoria.dev | | **Network** | `eip155:8453` (Base mainnet) | | **Owner wallet** | See `/health` → `wallet` | | **Free catalog** | `GET /.well-known/design-catalog.json` — full product metadata (no storage URLs) | **Paid endpoints** | Method | Path | Price | Returns | | --- | --- | --- | --- | | GET | `/design-systems/:id` | Per-product `price_usd` | Markdown bytes after payment | | GET | `/packs/:id/download` | Per-product `price_usd` | Zip bytes after payment | Unpaid asset requests: HTTP **402** + x402 v2 challenge. `GET /catalog` is a free alias of the well-known listing. --- ## API card (agent quick reference) | Step | Endpoint | Payment | Returns | | --- | --- | --- | --- | | 0 | `GET /.well-known/x402` | Free | x402 discovery manifest: paid resource URLs, facilitator, network, payTo | | 1 | `GET /.well-known/design-catalog.json` | Free | Full catalog: owner, `design_systems[]` with prices and `access_url` | | 2 | `GET /design-systems/:id` | Per product | Markdown file | | 3 | `GET /packs/:id/download` | Per product | Zip bundle | All asset prices in USDC on Base mainnet. One free catalog read, then pay per asset.