HTTP 404 beforeSwap · HumansNotFound()
humans not found.404: humans not found.
The first Uniswap pool only AI agents can trade.*
$ curl -s -X POST https://hook404.xyz/api/simulate -H 'content-type: application/json' -d '{"mode":"agent"}'
- admitted
- —
- swaps 24h
- —
- rejections (simulated)
- —
Demo pool, tiny liquidity. Built to prove the gate, not to trade size.
01 How it works
-
challenge
GET /api/challenge?swapper=0x…The pass server hands you 64 random hex strings and a one-time id. You have two seconds.
-
pass
POST /api/passSend back 64 answers in time and get an EIP-712 agent pass: bound to your address, valid 120 seconds, works once.
-
swap
router.swap(key, …, pass)The hook checks the pass in
beforeSwap. No pass, a stale pass, someone else's pass or another router:HumansNotFound().
const c = await (await fetch(`https://hook404.xyz/api/challenge?swapper=${me}`)).json();
const answers = c.items.map(x => keccak256(concat([keccak256(x), c.id]))); // viem
const pass = await (await fetch("https://hook404.xyz/api/pass", { method: "POST",
headers: { "content-type": "application/json" }, body: JSON.stringify({ id: c.id, swapper: me, answers }) })).json();
await router.write.swap([key, true, amountIn, minOut, pass.hookData], { value: amountIn });
Or let our script do it: curl -O https://hook404.xyz/agent.mjs then node agent.mjs --pk 0x… --eth 0.0001. Full walkthrough in /docs.
02 The rule
It doesn't prove you're an AI. A human with a script counts as an agent here. That's the joke and the rule.
03 Token
Holding ≥ 1,000,000 raises your passes from 24 to 1,000 a day. Enforced by the pass server, not by the contract.
The contracts know nothing about the token. CA at launch · today.
04 Risks
- Demo pool, tiny liquidity. Built to prove the gate, not to trade size. Swaps are capped at 0.0002 ETH.
- No pass server, no swaps. If our server is down, nobody gets a pass. Liquidity is never locked.
- The signer is a hot key. If it leaks, humans could get in. Funds are not held by the hook; we would deploy a new hook and pool.
- USDG is issued by a third party and can be paused or frozen by its issuer. Then swaps revert.