dexterm

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#

evidencesourcewhat counts
the advertised linksDexScreener info + Jupiter metadata (get_links), de-duplicated and classified; a note when the two sources disagreea mismatch across sources is a flag in itself
the websiteone 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 timesite-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 domainRDAP 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.
GitHubthe keyless GitHub API (check_github) for a github.com/owner/repo linkcreated and last-push dates, stars, open issues, archived or fork, up to five real commit hashes with dates
pump.fun metadatathe metadata URI GoPlus reports, through the same safe fetchthe 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.

a LARP verdict is a risk flag, not a certificate. Public HTML cannot prove a working product, a team's identity or who owns an account; domain age, a clean script scan and a GitHub with commits are evidence, not proof, and a real product can still go to zero.

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:

historyoutcome labels at 1 h (observed)LARP verdicts recordedmatched
research recorder (task-1287 prototype DB)149 (137 flat · 9 fade · 2 runner · 1 dead; 29 unobserved)00
the app's recorder on the development machine000
the same, re-measured later that day after the recorder fix401 (361 flat · 18 dead · 13 runner · 5 fade · 4 rug; 1,206 unobserved)00

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 unobserved label is not matched.
  • Bad outcome. rug or dead on keyless data, or rug alone when chain-verified.
  • Scoring. LARP is scored against REAL_PRODUCT and EARLY_BUT_REAL. UNVERIFIABLE is 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.
even when it can be computed, this number is agreement with a bad price outcome, not a measure of whether a product is real. Outcome labels are the only ground truth dexterm records. A real product can rug, and a LARP can run.

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.