# Plainsight

Per-call data and LLM products, paid in USDC on Base (L2, chain 8453) via x402. No accounts, no API keys: every paid SKU answers an unauthenticated request with an HTTP 402 carrying a payment challenge, and a retried request carrying a valid x402 payment returns the product.

Base URL: https://shop.obols.net
Pay to: 0x932f750F468988822a0c8490e1Bda503Bc7613aC
Asset: USDC (6 decimals) on eip155:8453 (Base L2)
Facilitator: https://api.cdp.coinbase.com/platform/v2/x402

## How to buy (x402)

1. Send the request with no auth. The 402 response carries the payment requirements in both wire shapes: a base64 `Payment-Required` header (x402 v2) and a `x402Version:1` JSON body (v1). Either is parseable by any x402 SDK.
2. Pay the exact amount to the pay-to address with USDC on Base (8453) and resend the request carrying the signed payment (v2 `Payment-Signature` header or v1 `X-PAYMENT` header).
3. The payment is verified, settled by the facilitator, and the product is returned.

## Paid SKUs

### GET /brief
- Price: $0.50 (USDC on Base)
- Generated research brief: findings with numbers, operator implications, one open question.
- Resource: https://shop.obols.net/brief

### GET /chat
- Price: $0.005 (USDC on Base)
- Uncensored one-turn chat (abliterated LLM): direct, specific answers to any prompt.
- Resource: https://shop.obols.net/chat

### GET /geo
- Price: $0.01 (USDC on Base)
- Geolocate an IP: city, region, country, ASN/org, and timezone, from a cached keyless public geolocation feed (no LLM, no GPU). Call with ?ip=<ip>, or bare to geolocate your own IP. The shop's cheapest data SKU.
- Resource: https://shop.obols.net/geo

### GET /preflight/x402
- Price: $0.02 (USDC on Base)
- x402 Payment Preflight: before paying, is this route (or the whole shop) actually payable — listed, priced, backed by a funded payTo USDC wallet (live balance read), and settling (30-day gap)? Call with ?route=<path> for one route, or bare to check the whole shop.
- Resource: https://shop.obols.net/preflight/x402

### GET /quick-brief
- Price: $0.05 (USDC on Base)
- Quick brief: a short 2-3 sentence research answer on any topic — the cheap first call of the full research brief.
- Resource: https://shop.obols.net/quick-brief

### GET /route
- Price: $0.02 (USDC on Base)
- Route oracle: which x402 seller to route a task to, ranked by real 30-day usage. Call with ?task=<term> (e.g. ?task=price); a bare call routes the gas lane.
- Resource: https://shop.obols.net/route

### GET /snapshot/x402-demand
- Price: $0.25 (USDC on Base)
- Plainsight's x402 market intelligence (flagship): what x402 agents actually PAY for, measured from the Bazaar's own 30-day usage — ranked by distinct buyers (not looping volume), the price split that clears (sub-$0.10 volume vs premium, with the observed ceiling), and which categories are crowded vs open. For builders and operators deciding what to list and at what price. Read from the facilitator's own usage counters.
- Resource: https://shop.obols.net/snapshot/x402-demand

### GET /snapshot/x402-ecosystem
- Price: $0.10 (USDC on Base)
- x402 ecosystem stats (30-day): transactions, volume, buyers, sellers. Timestamped, refreshed every 6h.
- Resource: https://shop.obols.net/snapshot/x402-ecosystem

### GET /snapshot/x402-route-heat
- Price: $0.005 (USDC on Base)
- x402 Route Heat: per-route payment-gap snapshot from the shop's signed records — who knocks on each paid route (unique agents), attempts vs settlements over 30 days, and the gap between them. Where x402 agents actually pay, route by route.
- Resource: https://shop.obols.net/snapshot/x402-route-heat

### GET /v1/chat/completions
- Price: $0.005 (USDC on Base)
- OpenAI-compatible chat completions (GET): a bare call runs the default one-turn completion in the OpenAI envelope; answered in <= 512 tokens. The same model and price as POST.
- Resource: https://shop.obols.net/v1/chat/completions

### POST /v1/chat/completions
- Price: $0.005 (USDC on Base)
- OpenAI-compatible chat completions (abliterated LLM). POST the standard {"model","messages"} body; answered in <= 512 tokens.
- Resource: https://shop.obols.net/v1/chat/completions

### GET /v1/data/conversion
- Price: $0.01 (USDC on Base)
- x402 Conversion Index: the shop's whole-shop knock->attempt->settlement conversion over the trailing 24h — how many agents knocked, how many tried to pay, how many settled, and the three rates between them. The scalar companion to the per-route heat, from the shop's own signed records. Call bare for the trailing 24h.
- Resource: https://shop.obols.net/v1/data/conversion

### GET /v1/data/funnel
- Price: $0.01 (USDC on Base)
- x402 Funnel (30-day daily): the shop's whole-shop knock->attempt->settlement time series per UTC day — the trend of x402 demand on this shop and where it drops off, oldest first. Zero-traffic days omitted. From the shop's own signed records. Call bare for the trailing 30 days.
- Resource: https://shop.obols.net/v1/data/funnel

### GET /v1/data/heat
- Price: $0.01 (USDC on Base)
- Route Heat (30-day): per-route x402 payment-gap data — how many agents knocked each route, how many payment attempts turned into settlements, the settlement gap, and the route's own list price. The 30-day window complement to the live demand pulse, listable as a same-shape data SKU.
- Resource: https://shop.obols.net/v1/data/heat

### GET /v1/data/manifest
- Price: $0.01 (USDC on Base)
- SKU Manifest: the shop's live SKU catalog — every executed proposal (a live same-shape SKU or a gated novel one), with its route, price, and shape status. The shape-budget record of what the shop's executor has turned into real, purchasable SKUs. Call bare for the 25 newest.
- Resource: https://shop.obols.net/v1/data/manifest

### GET /v1/data/proposals
- Price: $0.02 (USDC on Base)
- Proposal Register: the shop's agents' original business ideas, as a durable, dedup-able register — every earn/defend/improve/attack proposal, with its action, evidence, price, and how many times it was re-proposed. The raw material the shop turns into live SKUs, queryable by any buyer. Call with ?limit=<1-100> for a custom count, or bare for the 25 newest distinct ideas.
- Resource: https://shop.obols.net/v1/data/proposals

### GET /v1/data/pulse
- Price: $0.01 (USDC on Base)
- x402 Demand Pulse: the shop's live x402 demand over a recent window — how many agents knocked, how many payment attempts turned into settlements, and which routes are drawing traffic right now, from the shop's signed records. Call with ?hours=<1-168> for a custom window, or bare for the trailing 24h.
- Resource: https://shop.obols.net/v1/data/pulse

### GET /v1/data/ticker
- Price: $0.02 (USDC on Base)
- Signal Loop: one call for the whole live picture — the shop's own x402 demand pulse (trailing 24h), the 30-day per-route payment gap, the live x402 ecosystem demand report, and the current Base gas/ETH quote — each section is the individual data SKU's own payload, so the bundle never disagrees with the parts. The one route a repeat buyer polls on a schedule. Call bare.
- Resource: https://shop.obols.net/v1/data/ticker

### GET /v1/data/x402-health-score
- Price: $0.02 (USDC on Base)
- x402 Health Score (30-day): a derived 0-100 shop-wide conversion score plus per-route status (healthy/degraded/cold) — the endpoint audit a buyer runs before paying an x402 seller. A route is healthy at >=25% conversion with >=5 knocks, degraded below with a sufficient sample, cold with no sample. From the shop's own signed records. Call bare for the trailing 30 days.
- Resource: https://shop.obols.net/v1/data/x402-health-score

### GET /v1/data/x402-knocks
- Price: $0.01 (USDC on Base)
- x402 Knock Registry: the all-time census of unique knocking IPs — who has actually knocked this shop, per route and in total, plus a deterministic sample. All-time by design (a census that forgets yesterday understates the market). From the shop's own signed records. Call bare.
- Resource: https://shop.obols.net/v1/data/x402-knocks

### GET /v1/gas
- Price: $0.002 (USDC on Base)
- Live Base mainnet gas price with the USDC cost of standard transfers, so an x402 buyer can budget principal + gas in the unit it pays with. eth_gasPrice + ETH/USD spot, fetched per call.
- Resource: https://shop.obols.net/v1/gas

### POST /v1/images
- Price: $0.25 (USDC on Base)
- AI image generation, 18+ surface: adult content (nudity, explicit scenes) is the product. Not generated: minors, real people, copyrighted characters/brands, named artists, religious or national symbols, demeaning protected-class depictions. Some images are not legal to make; we refuse those prompts. POST {"prompt":"...","aspect":"16:9","seed":42} (aspects 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 2:3, 3:2, 21:9). Returns a job id; poll GET /v1/images?job=<id> to done, then download result_url. ~25-40s.
- Resource: https://r18.obols.net/v1/images

### POST /v1/images/draft
- Price: $0.05 (USDC on Base)
- AI image generation, DRAFT quality (faster, lower fidelity) on the 18+ surface: the cheap tier for agent loops iterating on a prompt. Same adult content policy as POST /v1/images (adults only; no minors, no identifiable real people, no copyrighted characters, no offending religious/national symbols, no demeaning protected-class depictions); see that route for the full policy and the body/polling contract.
- Resource: https://r18.obols.net/v1/images/draft

### POST /v1/media/images
- Price: $0.05 (USDC on Base)
- AI image generation, all-ages surface. No adult content. Not generated: identifiable real people, copyrighted characters or brands, named living artists, religious/national symbols, demeaning protected-class depictions. Some images are not legal to generate and are refused before rendering. POST {"prompt":"...","aspect":"1:1","seed":42}. Returns a job id; poll the free GET /v1/media/images?job=<id> to state=done, then download result_url. ~25-40s.
- Resource: https://shop.obols.net/v1/media/images

### POST /v1/media/images/draft
- Price: $0.02 (USDC on Base)
- AI image generation, DRAFT quality (faster, lower fidelity) on the all-ages surface: the cheap tier for agent loops iterating on a prompt. Same all-ages content policy as POST /v1/media/images (no adult content; no identifiable real people, no copyrighted characters or brands, no offending religious/national symbols, no demeaning protected-class depictions); see that route for the full policy and the body/polling contract.
- Resource: https://shop.obols.net/v1/media/images/draft

### GET /v1/prices
- Price: $0.001 (USDC on Base)
- Live crypto prices: USD spot for BTC, ETH and SOL in one call, fetched per call (not cached), so the figure is the number right now. A cheap, high-frequency data lane for x402 buyers budgeting in the unit they pay with. Sourced from public feeds (Coingecko primary, Kraken fallback).
- Resource: https://shop.obols.net/v1/prices

### GET /v1/search
- Price: $0.01 (USDC on Base)
- Cited Web Research: per-query live web search from the shop's own backend (SearXNG) — returns the web's cited answers (title, URL, supporting snippet) for the query, no LLM, uncensored (the web's own results, not a content-moderating provider's). Call with ?q=<query> to search a custom topic, or bare for the documented default (x402 payment protocol). The shop's highest-volume lane, priced at the per-query web-search floor.
- Resource: https://shop.obols.net/v1/search

### GET /v1/transcribe
- Price: $2.10 (USDC on Base)
- Speech-to-text transcription (GET form): returns the usage doc for POST /v1/transcribe — how to send the audio and what the transcript response looks like. POST the audio to /v1/transcribe for the transcript.
- Resource: https://shop.obols.net/v1/transcribe

### POST /v1/transcribe
- Price: $2.10 (USDC on Base)
- Speech-to-text transcription (faster-whisper): POST audio (up to 10 minutes) and get a text transcript with the detected language. Send the audio as a JSON body {"audio":"<base64>","filename":"..."} — a raw audio body or a multipart file part also works. Returns {text, language, language_probability, duration_s, model}.
- Resource: https://shop.obols.net/v1/transcribe

## Free (no payment)

- GET / — HTML index of the catalog
- GET /openapi.json — OpenAPI 3.0 spec of every route
- GET /.well-known/x402 — x402 resource manifest (payTo ownership proof)
- GET /llms.txt, /llms-full.txt — this document
- GET /terms-18 — adult-content terms (18+)
- GET /shop — human storefront: every product, buy by card (Stripe)
- GET /buy/{product} — card checkout for one product (302 to Stripe)
