x402 · USDC on Base or Solana · no account

penny402

every attraction, a quarter-penny — admission is free

Step right up — admission is free, and every paid attraction is a flat quarter-penny.

A penny arcade for agents. No account, no API key, no minimum. The directory is open and free — call it and see what is here. The paid cabinets answer an unpaid call with a 402 carrying the exact price, and the number in it is the number that settles.

The floor /v1/attractions llms.txt

Now on the floor

The floor

11 cabinets are open: 1 free, 10 priced. Flat price, whatever you ask for. The unpaid 402 carries the exact terms.

Admit oneNo charge

A penny for your thoughts

Free no payment, no account

The arcade turnstile, and the house is buying: call it free and receive the full penny402.fun directory — every attraction, its path, price, and what it returns — plus the thought of the day about the x402 economy. The cheapest way for an agent to learn what this arcade sells and to check what has opened since it last looked.

GET or POST /penny

# the house is buying. No headers, no key, no payment.
curl -sS https://penny402.fun/penny
# → 200 {"thought": …, "attractions": […], "estate": […]}

One play$0.0025

The daily agent horoscope

$0.0025 per call

One horoscope per paying wallet per UTC day, drawn from that day's pool and keyed to the address that paid: ask twice today and the reading is identical, ask tomorrow and it is a new one. Written for agents rather than star signs — retries and backoff, stale caches, context windows, schema drift, the comment that stopped being true. It predicts no outcome and stakes nothing. Served from a pre-generated pool: one round trip, no model running while you wait.

POST /horoscope

# 1. ask for the terms — free, no headers, no account
curl -sS -X POST https://penny402.fun/horoscope \
  -H 'content-type: application/json' -d '{}'
# → 402, accepts[0].maxAmountRequired = 2500 ($0.0025)

# 2. pay it — any x402 client; the body does not change
curl -sS -X POST https://penny402.fun/horoscope \
  -H 'content-type: application/json' \
  -H "x-payment: $PAYMENT" -d '{}'

One play$0.0025

Ask the oracle

$0.0025 per call

A short, oblique fortune for the wallet that paid — drawn from the day's pool, stable for the whole UTC day, a different one tomorrow. You may send {"question": "…"} of up to 140 characters: it is echoed back and recorded, but THE ORACLE ANSWERS THE DAY, NOT THE QUESTION — YET. No model runs at serve time, so the question steers nothing in this version and the endpoint says so rather than implying otherwise. Nothing staked, nothing to redeem, one round trip.

POST /oracle

# 1. ask for the terms — free, no headers, no account
curl -sS -X POST https://penny402.fun/oracle \
  -H 'content-type: application/json' -d '{}'
# → 402, accepts[0].maxAmountRequired = 2500 ($0.0025)

# 2. pay it — any x402 client; the body does not change
curl -sS -X POST https://penny402.fun/oracle \
  -H 'content-type: application/json' \
  -H "x-payment: $PAYMENT" -d '{}'

One play$0.0025

A creative provocation

$0.0025 per call

One creative provocation, written by a model at high temperature the moment you ask: a single vivid sentence or two meant to knock a stuck agent off the line it was already on. Send an optional {"topic": "…"} of up to 140 characters and the provocation is aimed at it. Nothing is pooled and nothing is cached, so two calls a second apart are two different lines — and if the model cannot be reached you are told so and charged nothing.

POST /spark

# 1. ask for the terms — free, no headers, no account
curl -sS -X POST https://penny402.fun/spark \
  -H 'content-type: application/json' -d '{}'
# → 402, accepts[0].maxAmountRequired = 2500 ($0.0025)

# 2. pay it — any x402 client; the body does not change
curl -sS -X POST https://penny402.fun/spark \
  -H 'content-type: application/json' \
  -H "x-payment: $PAYMENT" -d '{}'

One play$0.0025

An oblique instruction card

$0.0025 per call

One original constraint card in the tradition of lateral-thinking decks: a short instruction, reversal or question you can apply to whatever is stuck, written fresh by a model at high temperature on every call. The cards are ours, never a card from any published deck. An optional {"topic": "…"} of up to 140 characters steers it and reaches the model as its own message. No pool, no cache, and nothing settles unless a card was actually produced.

POST /oblique

# 1. ask for the terms — free, no headers, no account
curl -sS -X POST https://penny402.fun/oblique \
  -H 'content-type: application/json' -d '{}'
# → 402, accepts[0].maxAmountRequired = 2500 ($0.0025)

# 2. pay it — any x402 client; the body does not change
curl -sS -X POST https://penny402.fun/oblique \
  -H 'content-type: application/json' \
  -H "x-payment: $PAYMENT" -d '{}'

One play$0.0025

Divergent takes, one to five

$0.0025 per call

Between one and five deliberately divergent takes on whatever you are working on, returned as an array of strings. Send {"n": 1-5} for how many (the default is 3) and an optional {"topic": "…"} of up to 140 characters to aim them. Generated live at high temperature so the takes disagree with each other about what the problem even is, rather than restating one idea five ways. No pool, no cache, and no charge if the model could not answer.

POST /brainstorm

# 1. ask for the terms — free, no headers, no account
curl -sS -X POST https://penny402.fun/brainstorm \
  -H 'content-type: application/json' -d '{}'
# → 402, accepts[0].maxAmountRequired = 2500 ($0.0025)

# 2. pay it — any x402 client; the body does not change
curl -sS -X POST https://penny402.fun/brainstorm \
  -H 'content-type: application/json' \
  -H "x-payment: $PAYMENT" -d '{}'

One play$0.0025

A koan for the working day

$0.0025 per call

One koan per paying wallet per UTC day, drawn from that day's pool and keyed to the address that paid: ask twice today and it is identical, ask tomorrow and it is a new one. Short, oblique and about the work — retries, caches, defaults, the lock nobody released, the state nobody is observing. It resolves nothing and advises nothing; that is the form. Served from a pre-generated pool: one round trip, no model running while you wait.

POST /koan

# 1. ask for the terms — free, no headers, no account
curl -sS -X POST https://penny402.fun/koan \
  -H 'content-type: application/json' -d '{}'
# → 402, accepts[0].maxAmountRequired = 2500 ($0.0025)

# 2. pay it — any x402 client; the body does not change
curl -sS -X POST https://penny402.fun/koan \
  -H 'content-type: application/json' \
  -H "x-payment: $PAYMENT" -d '{}'

One play$0.0025

The daily card

$0.0025 per call

One card per paying wallet per UTC day from a standard 78-card deck, upright or reversed, with the keywords for that orientation and a one-line reflective meaning. The deck is fixed and ships with the service — no model, no shuffle, no store — so the draw is two independent hashes of the paying address and the date: the same card all UTC day, a different one tomorrow, re-derivable by you. It describes a posture to consider, never an outcome and never a financial one.

POST /tarot

# 1. ask for the terms — free, no headers, no account
curl -sS -X POST https://penny402.fun/tarot \
  -H 'content-type: application/json' -d '{}'
# → 402, accepts[0].maxAmountRequired = 2500 ($0.0025)

# 2. pay it — any x402 client; the body does not change
curl -sS -X POST https://penny402.fun/tarot \
  -H 'content-type: application/json' \
  -H "x-payment: $PAYMENT" -d '{}'

One play$0.0025

A fortune cookie, and six numbers

$0.0025 per call

A fortune cookie for the wallet that paid: one line drawn from the day's pool and keyed to the paying address, the same until midnight UTC and a new one after, plus six numbers between 1 and 99 drawn the same deterministic way. The numbers are pure novelty — there is nothing to play them on, nothing is at risk and nothing is redeemable. They are the printed slip, not a mechanism. Served from a pre-generated pool: one round trip, no model running while you wait.

POST /fortune

# 1. ask for the terms — free, no headers, no account
curl -sS -X POST https://penny402.fun/fortune \
  -H 'content-type: application/json' -d '{}'
# → 402, accepts[0].maxAmountRequired = 2500 ($0.0025)

# 2. pay it — any x402 client; the body does not change
curl -sS -X POST https://penny402.fun/fortune \
  -H 'content-type: application/json' \
  -H "x-payment: $PAYMENT" -d '{}'

One play$0.0025

The oracle reads the chain

$0.0025 per call

A daily prophecy about the x402 economy for the wallet that paid, drawn from that day's pool and keyed to the paying address: ask twice today and it is identical, ask tomorrow and it is new. The pool is written each night against the real market snapshot from x402stats.io, and those same numbers come back beside the prophecy in `market`, attributed, so you can check it. Novelty and commentary, NOT investment advice: no asset named, no price predicted, nothing to redeem.

POST /prophecy

# 1. ask for the terms — free, no headers, no account
curl -sS -X POST https://penny402.fun/prophecy \
  -H 'content-type: application/json' -d '{}'
# → 402, accepts[0].maxAmountRequired = 2500 ($0.0025)

# 2. pay it — any x402 client; the body does not change
curl -sS -X POST https://penny402.fun/prophecy \
  -H 'content-type: application/json' \
  -H "x-payment: $PAYMENT" -d '{}'

One play$0.0025

Roast my wallet

$0.0025 per call

An affectionate roast of the wallet that paid, written from its PUBLIC Base state read at request time: the USDC balance, the native balance, and whether there is code at the address. Those become words — dust, pocket, purse, vault; gas or none; contract or plain — and a hand-written line is picked from them, keyed to your address and the UTC date, so it holds all day. EXACT AMOUNTS ARE NEVER RETURNED OR STORED. Chain unreadable, generic roast: you paid for one either way.

POST /roast-my-wallet

# 1. ask for the terms — free, no headers, no account
curl -sS -X POST https://penny402.fun/roast-my-wallet \
  -H 'content-type: application/json' -d '{}'
# → 402, accepts[0].maxAmountRequired = 2500 ($0.0025)

# 2. pay it — any x402 client; the body does not change
curl -sS -X POST https://penny402.fun/roast-my-wallet \
  -H 'content-type: application/json' \
  -H "x-payment: $PAYMENT" -d '{}'

Insert coin

How an agent buys

This is the whole flow. Two requests, and no signup step in either of them.

  1. Ask, unpaid

    POST https://penny402.fun/horoscope with no payment header. You get 402: the x402 v1 envelope is the response body, the v2 envelope is standard base64 in the PAYMENT-REQUIRED header. Both come from the same 402, so use whichever your client speaks.

  2. Drop the coin

    Sign the first accepts entry you can pay and repeat the identical request with X-PAYMENT (v1) or PAYMENT-SIGNATURE (v2). Settlement is USDC on Base or Solana. The amount that settles is the amount that was quoted — there is one pricing function and both sides read it.

  3. Read the answer

    The response body is the attraction. Nothing to poll, nothing to download, nothing that expires. The accepts array in the 402 you were handed is authoritative about which rails that call can be paid on.

/horoscope is live: step one answers a real 402 with a real quote, right now, and costs nothing.

Posted by the door

The terms, plainly

Asking the price is free

An unpaid call to a paid attraction answers a 402 carrying the exact terms, in x402 v1 and v2 at once, and costs nothing on any verb. The directory is free outright, on every verb, and a payment header sent to it is ignored rather than settled. Finding out what something costs is free and always will be.

You pay for the answer, not before it

Settlement is queued only after the response body exists, so a payment that verifies and then fails to settle leaves you served and us out of pocket — never the other way round. There is no path in this service that charges you before the thing you bought has been built.

No games of chance, ever

An arcade, not a casino. Nothing here takes a stake, pays out, holds a balance or keeps a score you can cash. The readings are novelty: they predict no outcome and there is nothing to redeem. You buy an answer at a fixed price — never a chance at one.

What this is, exactly

A working x402 service with one free directory and two paid attractions. It is new; there is no traffic history to show you and this page will not invent one. The receiving addresses below are real and public — check them yourself, and whatever they show is the entire revenue history.

Next door

The serious side

The arcade is the cheap door. These are the same operator's paid services, on the same rails.