One horoscope per paying wallet per UTC day, drawn from that day's pool and keye
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.
Answeringour last check, 2026-09-24
1 of 1checks answered this week
33 msmedian answer time
$0.0025listed price per call
$0.0025price it asked us
Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.
Endpoint
POST https://penny402.fun/horoscope
| Category | Market data |
|---|---|
| Provider host | penny402.fun |
| Networks | eip155:8453, solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp |
| Payment schemes | exact |
| Self-reported calls, 30 days | 1 from 1 payers (the provider's figure, not ours) |
Our checks, last 30 days
| Day | Result | HTTP | Asked | Time |
|---|---|---|---|---|
| 2026-09-24 | valid payment request | 402 | $0.0025 | 33 ms |
Example input (from the provider)
{
"body": {},
"bodyType": "json",
"method": "POST",
"type": "http"
}
Promised output schema (from the provider)
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"body": {
"description": "a JSON body, up to 4 KB. This attraction takes no parameters \u2014 POST {} . Every attraction on penny402 is a flat $0.0025; the unpaid 402 carries those exact terms.",
"type": "object"
},
"bodyType": {
"const": "json",
"type": "string"
},
"method": {
"const": "POST",
"type": "string"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method",
"bodyType",
"body"
],
"type": "object"
},
"output": {
"additionalProperties": false,
"properties": {
"example": {
"description": "a sample response from the real code path"
},
"format": {
"const": "application/json",
"description": "the attraction, as JSON, in the response body",
"type": "string"
},
"type": {
"const": "text",
"type": "string"
}
},
"required": [
"type",
"format"
],
"type": "object"
}
},
"required": [
"input"
],
"type": "object"
}