← the tool · for judges · no login, no key, no setup

Paste “Smart Money is buying $X”. Six Nansen calls decide whether it's true — and show their work.

One sentence in → one of four words out (CONFIRMED · OVERSTATED · CONTRADICTED · UNVERIFIABLE) with the numbers that fired the rule, a sha256 of the evidence, and the full tool trace. The verdict is arithmetic over Nansen label-class flows; an LLM only reads the claim and writes two sentences, and a rules extractor plus a template take over when it is down. This is not a wrapper around Nansen's agent — the button that runs agent/fast prints its 200-credit price and shows the two traces side by side.

The 30-second path

  1. Open https://rebuttal.edycu.dev/?q=Smart Money is aping $PEPE…. The claim card reads Smart Money · buying · PEPE (ethereum, most traded of the same-name tokens — 14 at the recording, 13 on 2026-09-19), six trace rows land as each call returns, and the verdict card turns red: CONTRADICTED · C-NOBODY — no Smart Money wallet traded PEPE in 24 h while 89 Smart Money traders sit on its table. Cold ≈ 4 s, cached ≈ 0 s.
  2. Press Ask Nansen's agent (200 credits, printed on the button): Nansen's own agent/fast streams its tool_calls into the violet panel beside our trace. Two agents, same claim, two traces.
  3. Open https://rebuttal.edycu.dev/?q=A whale sold 600,000 UNI…— a claim the tool CONFIRMS (whale holders' balances fell $548K in 24 h at the recording (fixtures/uni-whale-sold.json; $532K on the DEMO run — flows are priced live)), so it is seen agreeing, not just contradicting.
  4. Open https://rebuttal.edycu.dev/api/rebut?q=… — the same verdict as JSON, same hash as the CLI prints.

Receipts

Hero claim, liveSmart Money is aping $PEPE hard today 🐋: 10 credits · 7 calls · 3.5 s cold · 2026-09-18 · CONTRADICTED / C-NOBODY · hash e21a8a19ae59 (recorded fixture; the DEMO run printed 4f3cce391567 before the hash record gained the whale fields) — output verbatim in DEMO.md, recorded in fixtures/pepe-aping.json
Spike, 10 real claimsPosts from Lookonchain / OKX feeds, 2026-09-14 → 18: 7/10 decisive; the three UNVERIFIABLE are refusals with a reason (Zcash is not a Nansen chain; EDEL and MEME have no Whale-labelled wallet at all). Extraction: LLM 10/10, rules 10/10, agreeing on token and type 10/10.
Benchmark, live13 claims × 2 cold runs: cold p50 4.0 s · p95 5.0 s · warm p50 2 ms · mean 10.0 credits, max 15 per rebuttal; 0 of 154 live calls failed — docs/BENCH.md is the script’s output
Nansen endpointssearch/general · tgm/flow-intelligence (1d + 7d) · tgm/who-bought-sold (BUY + SELL, Smart Money label filter) · smart-money/netflow · tgm/token-ohlcv · tgm/holders · agent/fast (button only) — every rule input is one of their response fields
Tests226 tests (vitest): the extractor on every spike claim, every rule with live-shaped evidence, the client's retry and cache, the SSE parser, the oEmbed path, a route boundary suite · 23,000 generated cases on decide() and extractClaim() (fast-check: purity, the buying/selling mirror, never-throws)
Determinism13 recorded rebuttals replay offline with the same label, rule and hash, zero network, zero credits, zero LLM (npm run verify)
Spend guard10 checks per IP per minute, 2,000 live credits per day, then recorded replays (labelled); the agent button 2 per IP and 4 per day (apps/web/lib/guard.ts)

Reproduce (real Nansen calls, one env var)

git clone https://github.com/edycutjong/rebuttal.git && cd rebuttal
npm install
export NANSEN_API_KEY=nsn_…            # https://app.nansen.ai/api — the only required key
npm run rebuttal -- "Smart Money is aping $PEPE hard today 🐋" --explain   # ≤ 15 credits, ~4 s
npm run verify                          # 13/13 recorded rebuttals replayed offline, 0 credits, 0 network
npm test                                # 226 tests

Optional: export GROQ_API_KEY=… turns on the LLM extractor and the two-sentence prose (Groq, openai/gpt-oss-120b); without it the rules extractor and the template run and the output says so. --ask-nansen adds the agent/fast comparison (200 credits).

Three limitations, stated

Links