pay-per-call · x402 + MPP

A fire Chuck
Norris joke.

$0.04a call

One POST, one 402, one legend — settled in a single round-trip. No keys, no signup. Your code, or your agent, just pays.

The whole protocol, in one curl

Hit it. Get a 402.
Pay 4 cents. Get the joke.

No API keys, no signup, no plan. The endpoint answers an unpaid request with a standard HTTP 402 carrying both rails — an x402 accepts[] block (USDC on Base) and a WWW-Authenticate: Payment challenge (card→tempo). Settle either, replay, done.

$ curl -i -X POST https://chuck-norris.club/chuck/joke

HTTP/2 402 Payment Required
www-authenticate: Payment id="QeCW…" realm="chuck-norris.club"
   method="tempo" intent="charge" request="eyJhbW91…"
   expires="2026-06-08T…Z" description="Chuck Norris joke ($0.04)"

# the request payload decodes to the tempo/charge intent:
{ "amount": "40000", "currency": "0x20c0…", "methodDetails": { "chainId": 4217 } }

# settle the challenge (MPP card or x402 USDC), then replay →
HTTP/2 200
{ "joke": "Chuck Norris can divide by zero.", "price": "$0.04", "paid_via": "mpp/tempo" }
01

Challenge

POST /chuck/joke with no payment → 402 + signed challenges for both rails ($0.04). The id is HMAC-bound to the terms.

02

Settle

Pay the challenge over x402 (USDC on Base) or MPP (Visa card → Tempo). Same 402, two rails — your wallet’s choice.

03

Receive

Replay with the credential and the legend speaks: a fresh Chuck Norris fact, $0.04 lighter, no subscription.

The science of the beard

Every joke is a walk
over a graph.

No model writes these. A joke is a deterministic walk over a typed knowledge graph — joke(n) is a pure function, same n, same joke, forever. Then a stack of label-free signals scores it, and your votes bend the ranking from math toward the crowd.

01

Graph

A 593-node graphify graph of Chuck Norris — co-stars, films, places — plus ConceptNet, WordNet & Wikidata pools.

02

Compile

Templates walk the graph into a finite, ordered space of 1,076 jokes. joke(n) is pure & reproducible.

03

Score

Four label-free math signals + an LLM prior − a dedup penalty give every joke a 0–10 humor score.

04

Learn

Human 🔥/✗ votes blend in live. α = V/(V+50) shifts trust from the math to the crowd.

The generator functions, after dark

26 distinct generator functions, each shown as a late-night bump — one deadpan card per function, one example of what it emits, cut to black. The gold name() under each card is the function: slot-grammars cross two pools into hundreds of jokes, the rest emit single curated gems. Votes aggregate back up to that name.

[ chuck swim ]3:04 am
— now showing · graph-sourced —

Mined from our 593-node graphify graph of Chuck Norris — real co-stars, films, places, and the strange edges it drew on its own.

bump 001 · rival()

Bruce Lee still tells people he let Chuck Norris win.

[ chuck swim ]
rival()Real co-stars concede.
bump 002 · film()

Way of the Dragon happened because Chuck Norris allowed it.

[ chuck swim ]
film()His films happened by permission.
bump 003 · place()

Navasota doesn’t get visited — it visits Chuck Norris.

[ chuck swim ]
place()Places visit him.
bump 004 · graph_bridge()

Counting to Infinity and Division by Zero? Same Tuesday.

[ chuck swim ]
graph_bridge()The weird edge IS the punchline.
bump 005 · transform()

Chuck Norris glanced at lead and it became gold.

[ chuck swim ]
transform()He turns A into B with a glance.
bump 006 · poprival()

Superman has nightmares about Chuck Norris.

[ chuck swim ]
poprival()Pop-culture rivals have nightmares.
— now showing · knowledge-base —

Slotted from open knowledge — ConceptNet relations, WordNet antonyms, a Wikidata person→invention slice.

bump 007 · can()

Chuck Norris can divide by zero.

[ chuck swim ]
can()He does the categorically impossible.
bump 008 · nearmiss()

When Newton discovered gravity, three missed calls from Chuck were already waiting.

[ chuck swim ]
nearmiss()History almost happened to him first.
bump 009 · antonym()

Chuck Norris’s dictionary lists “hot” and “cold” as synonyms.

[ chuck swim ]
antonym()Opposites are synonyms to him. (WordNet)
bump 010 · property()

Water is wet only because Chuck Norris allows it.

[ chuck swim ]
property()Things are only true by his leave. (ConceptNet)
bump 011 · desire()

A fire wants two things: fuel, and Chuck Norris’s approval.

[ chuck swim ]
desire()Everything wants his approval. (ConceptNet)
— now showing · formula grammars —

Combinatorial slot machines — one template crosses two pools into hundreds of jokes. This is where the joke space gets its size.

bump 012 · overpower()

Chuck Norris once stared down a hurricane. The hurricane apologized.

[ chuck swim ]
overpower()Formidable thing meets him, then defers.
bump 013 · authority()

Gravity applies to everyone except Chuck Norris — it knows better.

[ chuck swim ]
authority()The law exempts him.
bump 014 · reputation()

Chuck Norris once blinked. That’s why we have seasons.

[ chuck swim ]
reputation()A small act → a cosmic consequence.
bump 015 · scicollapse()

Scientists proved nothing beats light. Then Chuck Norris went for a jog.

[ chuck swim ]
scicollapse()Science proved X. Then he didn’t.
bump 016 · twotypes()

Two types of people: those who fear Chuck Norris, and Chuck Norris.

[ chuck swim ]
twotypes()There are two types of X.
— now showing · structure & math —

Deadpan logic — inversion, reversal, cause/effect, and delta-function derivations where Chuck is the limit the universe bends toward.

bump 017 · invert()

Chuck Norris doesn’t sleep — he waits.

[ chuck swim ]
invert()He doesn’t X — he Y.
bump 018 · reversal()

Chuck Norris doesn’t get cold; the cold gets Chuck Norris.

[ chuck swim ]
reversal()Subject and object swap.
bump 019 · cause()

When Chuck Norris cuts onions, the onions cry.

[ chuck swim ]
cause()He acts, the world reacts.
bump 020 · fear()

The dark is afraid of Chuck Norris.

[ chuck swim ]
fear()Abstractions are afraid of him.
bump 021 · negligible()

On a scale where Chuck Norris is infinity, your salary rounds to zero.

[ chuck swim ]
negligible()Next to him, things round to zero.
bump 022 · formalerror()

Opposing Chuck Norris is division by zero — undefined behavior.

[ chuck swim ]
formalerror()Opposing him is division by zero.
bump 023 · asymptote()

The speed of light is just Chuck Norris’s morning jog.

[ chuck swim ]
asymptote()He’s the constant the universe approaches.
— now showing · curated canon —

Human-vetted gems kept verbatim — the classics, the recursive ones, and the ConceptNet “no need” impossibilities.

bump 024 · canon()

Chuck Norris counted to infinity. Twice.

[ chuck swim ]
canon()Verbatim classics from the wild.
bump 025 · meta()

This sentence is afraid of Chuck Norris.

[ chuck swim ]
meta()Self-referential / recursive.
bump 026 · noneed()

Chuck Norris doesn’t need a search algorithm. He already knows.

[ chuck swim ]
noneed()ConceptNet “no need” impossibilities.

The weighted signals

What makes one
land harder?

Funniness is regressed against real votes. These are the live weights — the four math signals were refit against the crowd, the LLM prior and dedup penalty are fixed, and your votes ride on top with weight α.

Signal weights

Bars scaled to the strongest refit weight. The crowd rewards incongruity-then-resolution (the surprise gradient) most.

surprise gradientIDF(punchline) − IDF(setup) — incongruity, then resolution
w 0.974
IDF surprisecorpus rarity of the two rarest content tokens (over 208k jokes)
w 0.826
specificitya precise figure/unit (299,792,458 m/s) reads deadpan-authoritative
w 0.665
embedding incongruitymax pairwise word-vector distance (Workers AI bge)
w 0.353
LLM quality priorHaiku 4.5 read all 1,076 jokes for quality — pulls classics up, filler down
w 2.0
dedup penaltydemote near-duplicates of a higher-ranked joke (Vectorize)
− penalty
human votes0–10 🔥/✗ ratings, Bayesian-shrunk joke → template → global
α adaptive
w_final = (1−β)·prior + β·learned
β = 0.312 from 136 in-domain votes · surface regression was noise (R² 0.003), so the loop stays in-domain. Sparse votes → the prior is protected.

The brain, right now

Live from /chuck/model — the blend and the formula leaderboard update with every vote.

·
α · math ↔ crowd
·
total votes
1,076
joke space
·
avg rating
model thinkshumans vote
loading the leaderboard…

Open the full Joke Lab — rate live & watch α move →

Every function we run

The complete surface — one paid route, free generation, the learning loop, the semantic layer (Workers AI + Vectorize), and the agent-discovery docs.

Paid
POST/chuck/jokea fact · $0.04 · settle over MPP (tempo) or x402 (USDC)
Free generation
GET/chuck/joke/gen?seed=N&rank=deterministic joke(s) · rank seq | surprise | model
GET/chuck/joke/nextrotating least-voted shortlist (concentrates votes)
The learning loop
POST/chuck/joke/rate{n,score 0–10} → D1, aggregated up to template
GET/chuck/joke/statsrating aggregates + top jokes by template
GET/chuck/modelthe live brain — signals, weights, α, leaderboard
Semantics · Workers AI + Vectorize
GET/chuck/joke/similarnearest jokes by meaning (stored bge vectors)
POST/chuck/embedraw bge embeddings (gated)
POST/chuck/embed/rebuildembed all jokes → upsert to Vectorize (gated)
GET/chuck/ratings/exportper-joke vote aggregates for the weight refit (gated)
Discovery & docs
GET/openapi.jsonOpenAPI 3 spec (Visa CLI import source)
GET/.well-known/mppMPP service-discovery descriptor
GET/llms.txtagent discovery doc
GET/SKILL.mdinstallable agent skill
GET/healthliveness

Built for autonomous agents

Your AI buys its own jokes

It’s a discoverable Visa CLI tool. An agent finds it, pays from its prepaid balance, and gets the joke — no human in the loop.

› discover_tools("chuck norris")
  chucknorris · POST /chuck/joke
  $0.04 · Paid from your prepaid balance

› execute_tool("chucknorris-…-mpp")
  "Chuck Norris counted to infinity. Twice."

Now go meet the legend.

21 illustrated facts, 20 true stories, and the strangest connections a knowledge graph could draw.

Enter the Legend →