Recipe β Token page
The token dossier is ten reads: profile, signal, smart money, exit risk, inflection, holders, valuation, narrative, deltas, price structure. token-overview runs the whole fan-out server-side β one request paints the page, and each slot is byte-for-byte the single endpoint's response. All POST bodies are { "token": "0xβ¦", "chain": "eth" } unless noted.
One call paints the page
POST /v1/token-overview
{ "token": "0xβ¦", "chain": "eth", "sample": 8 } # sample = smart-money buyer sample
Slots, each named after the single endpoint it mirrors: tokenIntel, tokenSignal, smartMoneyFlow, exitRisk, tokenInflection, tokenHoldersInsight, tokenValuation, tokenNarrative, tokenChanges, tokenPriceAction. A failed component becomes an error object in its slot plus an entry in failed[] β drop the tile, keep the page.
The tokenChanges slot records a snapshot exactly as the single endpoint
does β a bundle call IS a scan, so your next call diffs against it.
Γ la carte
A lighter page does fine with three singles β profile, signal, price structure β plus smart-money-flow:
POST /v1/token-intel # the profile: verdict, risk{}, momentum{}, entry{}, activity
POST /v1/token-signal # one call: BUY / ACCUMULATE / HOLD / AVOID + conviction + rationale
POST /v1/token-price-action # price structure: trend, breakout, volatility, distance-from-high
POST /v1/smart-money-flow # are PROVEN traders buying this token right now?
POST /v1/token-risk # standalone rug/honeypot/concentration verdict + flags[]
POST /v1/token-holders-insight # accumulating or bleeding? organic or bot-driven?
POST /v1/exit-risk # distribution early-warning: exitRisk + direction
POST /v1/token-inflection # pre-move "coiling" detector
POST /v1/token-valuation # over/under-extended vs on-chain fundamentals
POST /v1/token-narrative # one-paragraph AI thesis over the computed signals
POST /v1/token-changes # what FLIPPED since your last call (deltas, not a snapshot)
Fields worth rendering
- Name
token-signal β signal, conviction- Type
- header
- Description
The single answer, with
rationaleβ one AI-written sentence over the computed signals (the AI never invents a number).
- Name
token-intel β risk.risk, risk.score, risk.flags[]- Type
- risk block
- Description
Flags are plain strings written to be shown as warning chips.
- Name
smart-money-flow β smartMoneyBuying, mirrorWorthyBuyers- Type
- social proof
- Description
"3 proven wallets buying" is the strongest single line on the page.
- Name
token-changes β changes[]- Type
- what's new
- Description
Each change has
metric,direction,severity,detailβ render as delta chips. First call returnsbaseline: true(nothing to diff yet).
- Name
token-price-action β trend, structure, breakout- Type
- chart strip
- Description
Categorical price structure (
higher-highs,breaking-out, β¦) β a readable chart substitute.available: falsemeans too new to chart; say that.
UX rules
- Signal and risk travel together. Never render a BUY signal without the risk verdict beside it β the pair is the product's honesty.
- Deltas beat snapshots. If you poll, use
token-changesand surface transitions ("exit-risk flipped rising") β that is the alpha, and it is what justifies a refresh button. available: falseandbaseline: trueare answers. "Too new to chart" and "baseline recorded β check back" beat a hidden tile.