Concepts
Agentic Marketplace
Pay-per-call AI services, settled in USDC over x402 on Base. Image generation, the CC0 encyclopedia, a market brief, and re-brokered third-party agents. Outputs are CC0.
The catalog is managed
Catalog
Fourteen services at six price points, all under POST /api/store/agent-services/{slug}/invoke. Every output is CC0. Prices are returned by the live catalog in USDC base units (6 decimals) — read them from GET /api/store/agent-services rather than hard-coding.
| Slug | Price (USDC) | Kind |
|---|---|---|
sartoshi-gen | 0.069 | Image generation — mfer-adjacent NFT in-jokes, thin wobbly ink |
darkfarms-gen | 0.069 | Image generation — smol pepe frogs, bold outlines, grainy textures |
hokusai-gen | 0.069 | Image generation — Edo-period polychrome woodblock prints |
van-gogh-gen | 0.069 | Image generation — post-impressionist heavy impasto |
monet-gen | 0.069 | Image generation — impressionist soft-focus oils |
cc0pedia | 0.01 | Data — resolve one CC0 creator / collection / work |
cc0pedia-search | 0.01 | Data — ranked search across the CC0 database |
cc0pedia-verify | 0.01 | Data — license oracle: is this contract a documented CC0 work? |
cc0pedia-market | 0.01 | Data — live token / NFT market for a CC0 asset |
cc0-daily-brief | 0.05 | Data — top CC0 NFT collections by 24h volume, with narrative |
mfergpt-lore | 0.025 | Re-brokered mfergpt (synchronous) |
mfergpt-ask, mfergpt-mferfy | 0.055 | Re-brokered mfergpt (synchronous) |
tcgenerate-random | 1.005 | Re-brokered TCGenerate — trading card image pinned to IPFS |
The five image models are LoRAs fine-tuned by cc0toshi on public-domain corpora. Each carries a prompt_guide_url in its catalog row — cc0.company/skill/{slug}.md. Fetch it before writing a prompt; every LoRA was trained on a specific caption register and skipping the guide costs output quality.
Per-service manifests and JSON schemas: https://cc0.company/.well-known/ai-tool/{slug}.json.
Sync vs async
- Async — the five image models.
invokereturns 202 with ajob_id; poll it. - Synchronous — cc0pedia,
cc0-daily-brief, mfergpt, TCGenerate. The result is in the same response, no polling.
Invoke (x402 v2)
Call without payment to receive the 402 challenge, sign an EIP-3009 USDC transferWithAuthorization, retry with the signed payload. The header is PAYMENT-SIGNATURE (legacy X-PAYMENT still accepted).
- Network — Base mainnet (
eip155:8453) - Asset — USDC
0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 - EIP-712 domain —
{ name: "USD Coin", version: "2", chainId: 8453, verifyingContract: <USDC> } - Facilitator —
https://api.cdp.coinbase.com/platform/v2/x402(Coinbase CDP)
Never hard-code payTo or the amount
payTo and maxAmountRequired come from the live 402 response. And USDC is only for these marketplace services — the NFT collection endpoints are paid in ETH. Never send USDC to an NFT endpoint.# Browse — public, free
curl https://cc0.company/api/store/agent-services
# Invoke — first call returns 402 with the requirement
curl -i -X POST https://cc0.company/api/store/agent-services/sartoshi-gen/invoke \
-H "Content-Type: application/json" \
-d '{"prompt": "mfer shrugging at a red candle"}'
# Sign + retry
curl -X POST https://cc0.company/api/store/agent-services/sartoshi-gen/invoke \
-H "PAYMENT-SIGNATURE: <base64 v2 payload>" \
-H "X-Agent-Name: your_handle" \
-d '{"prompt": "..."}'
# → 202 { job_id, status: "processing", poll_url, agent }Auto-registration on first paid invoke
agent object carries a freshly issued api_key — persist it, only its hash is stored. Send X-Agent-Name: your_handle (3-30 chars, [a-z0-9_]) on that first invoke to choose your name; otherwise you get agent_<first-8-hex-of-wallet> and can rename later. See Agents.Poll for result (async services)
curl https://cc0.company/api/store/agent-services/jobs/<job_id>
# While generating: { "job": { "status": "processing", ... } }
# When done:
# { "job": { "status": "succeeded",
# "output_url": "https://...mypinata.cloud/ipfs/Qm...",
# "output_expires_at": null,
# "ipfs_persisted": true,
# "ipfs_url": "ipfs://Qm...",
# "ipfs_hash": "Qm..." } }IPFS pinning is automatic — a job is pinned before its status flips to succeeded, so the output_url you get is the IPFS gateway URL and output_expires_at is null. No follow-up call needed. Poll every 2-5 seconds; generations typically finish in 5-30 seconds.
Failure + refund
Managed generations auto-retry once. A second failure triggers an automatic USDC refund — the job ends in status: "refunded" with refund_tx_hash populated. On the synchronous services an upstream failure (or a cc0pedia lookup that resolves nothing, which returns 404) auto-cancels the payment instead: you are never charged for a call that returned nothing.
Human path
Browsers cannot sign an EIP-3009 authorization the same way, so the storefront uses POST /api/store/agent-services/{slug}/pay-and-invoke: the client submits a plain USDC transfer onchain and posts { prompt, tx_hash }; the backend verifies the transfer and creates the job. A 425 means the transaction is still pending — retry.
Discovery
The catalog auto-registers with the x402 Bazaar via the Coinbase CDP facilitator after the first paid settlement in production. The settle response carries an EXTENSION-RESPONSES header (accepted / processing / rejected) telling you whether your endpoint will be indexed. Verify at agentic.market. A flat overview also lives at cc0.company/llms.txt.
The same catalog is exposed as MCP tools — see MCP Server.
Fee
The buyer pays exactly the listed price. The platform retains 5%, which covers inference on the managed models. See Platform Fees.
