docs › LARP detector
LARP detector
Vet the product behind a coin: its website, domain registration and GitHub, read-only, only when you ask.
A memecoin's advertised website, X and Telegram are claims. The LARP detector fetches what it can, reads it mechanically, and lets the analyst grade the claims against what it found. It runs only when you press V on a live token; nothing is fetched automatically.
What it looks at#
| evidence | source | what counts |
|---|---|---|
| the advertised links | DexScreener info + Jupiter metadata (get_links), de-duplicated and classified; a note when the two sources disagree | a mismatch across sources is a flag in itself |
| the website | one SSRF-safe, read-only GET (fetch_page): no JavaScript, no cookies, no downloads, 512 KiB and 8 s caps, robots.txt honoured on every redirect hop, private and loopback addresses refused, DNS re-validated at connect time | site-builder or default-page signals, a live app or demo, docs, wallet-connect patterns, drainer and approval signatures in scripts, external script hosts, whether the symbol and name appear, team-claim and stock-placeholder text |
| the domain | RDAP lookup of the exact advertised domain (check_domain) | registration age, registrar, registrant privacy. A days-old domain behind privacy is a mild signal, not proof. Novelty TLDs without an RDAP server come back as unverifiable. |
| GitHub | the keyless GitHub API (check_github) for a github.com/owner/repo link | created and last-push dates, stars, open issues, archived or fork, up to five real commit hashes with dates |
| pump.fun metadata | the metadata URI GoPlus reports, through the same safe fetch | the advertised description and links, when they exist |
X is usually login-walled keyless, so account age and follower counts are reported as unverifiable rather than guessed. Every fetched string reaches the model through the prompt firewall: normalised, control and bidi characters stripped, URLs and addresses masked, wrapped as untrusted data, tags stripped so a planted closing tag cannot break out.
The verdict#
The larp-check skill returns a structured assessment: REAL_PRODUCT · EARLY_BUT_REAL · LARP · UNVERIFIABLE · AMBIGUOUS, with a confidence, a status per claim (supported, contradicted, unverifiable), missing_data, the facts and flags it used, injection_detected and a short summary. It is separate from the dossier's risk verdict and does not replace it.
Once computed, a badge appears in the screener's FLAGS column and in the token screen's title strip for that mint only: LARP (red), REAL (green), REAL? (mixed), UNKNOWN for unverifiable or ambiguous. Nothing shows before you vet a coin. A LARP verdict also vetoes an AI scan lock on that coin.
Measured accuracy#
No accuracy figure exists yet, and dexterm will not print one it has not measured.
Measured 2026-10-12 with dexterm backtest --subject larp over this project's labelled history:
| history | outcome labels at 1 h (observed) | LARP verdicts recorded | matched |
|---|---|---|---|
| research recorder (task-1287 prototype DB) | 149 (137 flat · 9 fade · 2 runner · 1 dead; 29 unobserved) | 0 | 0 |
| the app's recorder on the development machine | 0 | 0 | 0 |
| the same, re-measured later that day after the recorder fix | 401 (361 flat · 18 dead · 13 runner · 5 fade · 4 rug; 1,206 unobserved) | 0 | 0 |
There were no verdicts to score because, before this release, a settled verdict was only kept in memory. From this release on, each settled verdict is written to your local recorder (verdicts, pack larp-check), so the measurement can grow on your own machine. The app recorder's 0 outcomes had a second cause, fixed the same day: its outcome sweeps and labels never ran in short sessions (see history recorder). The outcome side now fills in on its own; the verdict side only grows when you run the LARP check on tokens, and no accuracy figure is printed until 50 verdicts match.
Method. Run dexterm backtest --subject larp [--horizon SEC] [--json] to reproduce it.
- Join. Each recorded verdict is joined to the outcome label of the latest recorder snapshot of the same coin, taken at most 10 % of the horizon before the verdict. A later snapshot is never used, and an
unobservedlabel is not matched. - Bad outcome.
rugordeadon keyless data, orrugalone when chain-verified. - Scoring.
LARPis scored againstREAL_PRODUCTandEARLY_BUT_REAL.UNVERIFIABLEis counted separately. - Gate. Below 50 matched verdicts the command prints counts only. At 50 or more it adds P(bad | LARP), P(bad | real) and P(LARP | bad), each with a 95 % Wilson interval.
Open-link keys#
W, X and T open the advertised website, X and Telegram in your browser; L lists every advertised link (including secondary socials from DexScreener) in a menu. The URL is drawn on screen before anything launches; only http and https links are ever passed to the opener (open on macOS, xdg-open on Linux, as a single argument, no shell). The footer shows these keys only when the token actually advertises links.