The Stack Audit · Registry
The whole board as one machine-readable file, keyed by contract address. Free to consume, so any tool can resolve a token to the platform that deployed it and whether that platform holds up.
GET https://thestackaudit.xyz/registry.jsonThe layer beneath the coin scanners. A honeypot scanner tells you whether one coin can be sold. It cannot tell you what platform minted that coin, or whether that platform's factory is upgradeable under one key, whether its liquidity is structurally locked, or whether it leaks a provider key. This feed answers that second question for every platform on the board, so the tools that answer the first can cite it.
You have a token address and want to know what made it. The feed is keyed by every contract address the board knows, so resolution is a lookup, not a scan.
address_index. A hit returns {platform, role}. An alias hit returns a misattribution warning instead.id for the full verdict: tier, status, and the structured assessment.// one file, cached ~5 min, safe to fetch from the browser const reg = await (await fetch("https://thestackaudit.xyz/registry.json")).json(); function resolve(address) { const hit = reg.address_index[address.toLowerCase()]; if (!hit) return { known: false }; // not on the board if (hit.alias) return { warning: hit.note }; // misattribution flag const platform = reg.platforms.find(p => p.id === hit.platform); return { role: hit.role, platform }; } // a fresh NOXA coin's factory: resolve("0xDd84fDdEA1206115B37dbBC0ba5721530E1bA9C5"); // -> { role: "factory", platform: { name: "NOXA", tier: "t3", status: "relaunched", // assessment: { lp_custody: "locked", owner_model: "single_eoa", ... } } }
The alias branch is the part no coin scanner produces. Looking up a token that borrows a trusted name returns the correction, not a false match: 0xb541610e resolves to a warning that some "Rooket" tokens are actually NOXA launches, so a downstream tool never mis-attributes them.
| field | what it is |
|---|---|
| schema_version | SemVer. Pin to the major. Breaking field changes bump major; content changes do not. |
| generated_at | ISO-8601 UTC of the last rebuild. |
| chain | { name, chain_id: 4663 }. |
| counts | { platforms, launchpads, protocols, tools }. |
| definitions | Every enum's allowed values, inline, so you need no prose to validate. |
| platforms[] | One record per platform. The verdict lives here. |
| address_index | Lowercased address to {platform, role}, or an alias warning. Your entry point. |
| aliases[] | The misattribution layer: name collisions, mislabelled tokens, mirror domains, wallet-not-chain. |
A platform record:
{
"id": "noxa",
"name": "NOXA",
"category": "launchpad",
"tier": "t3",
"tier_label": "Contracts sound, operations unverified",
"scan_depth": "contract",
"checked": "2026-07-22",
"status": "relaunched",
"assessment": {
"upgradeable": "immutable",
"lp_custody": "locked",
"owner_model": "single_eoa",
"web": "na"
},
"contracts": [
{ "role": "factory", "address": "0xdd84fdde...", "proxy": false }
],
"finding": "Bonding-curve pad that went dark in mid-July and has relaunched...",
"board_url": "https://thestackaudit.xyz/#noxa"
}
Non-launchpad records carry adjacent: true plus a group. Protocols (DEXs, lending, yield, privacy pools: their own contracts route or hold funds) are tiered on the same t1–t7 scale with a full assessment, read through contract safety rather than rug path. Tools (read-only terminals, non-custodial frontends, agents) carry has_findings and no tier, since they custody nothing. The prose finding is always present.
Each field maps one-to-one from the board. The feed mirrors the board and never reinterprets it, so a value is only as strong as the human review behind it.
| field | values |
|---|---|
| group | launchpad · protocol · tool (non-launchpads also carry adjacent: true) |
| tier | t1 … t7, or null for tools (launchpads and protocols are tiered) |
| scan_depth | full · contract |
| status | live · relaunched · dead · pre_launch · superseded |
| upgradeable | immutable · upgradeable · unconfirmed · na |
| lp_custody | locked · burned · pullable · unconfirmed · na |
| owner_model | renounced · none · single_eoa · multisig · timelock · custom · na |
| web | csp · clean · thin · leaked_key · na |
id for life. Build your joins on it.status: "superseded", so a stale address still resolves and tells you it is stale. This is how the NOXA relaunch was caught.checked date is when it was last verified against the chain. Contracts get redeployed and keys rotate; a verdict is true as of its date, not forever.The feed is CC-BY 4.0. Use it in a product, a bot, a wallet, a dashboard, whatever you like. The only ask is a visible credit to The Stack Audit with a link back. That attribution is the whole deal: it keeps the work findable, and it costs you nothing.
Two honest limits. The feed is as good as the board and no better: it is one person's independent, reproducible review, not a certified audit, and no finding is a guarantee. And it covers Robinhood Chain only. If you need many chains shallow, other tools do that; this is one chain, deep.