One shared conversation per token, embeddable in any app in a single line. Verified wallets wear on-chain forensic badges, so a KOL shilling a paid call, a dev pumping their own bag, a sniper, or a bundle wallet is exposed the moment they talk. free to embed
Drop in the script once, then place a <trench-chat> tag anywhere with the token's chain and contract address. The room is keyed to the contract, so every app embedding the same token surfaces the same conversation.
<!-- once, anywhere on the page --> <script src="https://analyzer69000.com/embed.js" async></script> <!-- then, per token --> <trench-chat chain="solana" token="So11111111111111111111111111111111111111112" symbol="SOL" height="600" ></trench-chat>
| Attribute | Values |
|---|---|
chain | solana, eth, bsc, base, arb, op, poly, avax (default solana) |
token | the token mint / contract address (required) |
symbol | cashtag shown in the header, e.g. JUP (optional) |
theme | dark, light (default dark) |
height | px number or any CSS height (default 600) |
demo | set to 1 to render a sandboxed example conversation (no live room, nothing saved) |
The widget is anonymous by default. A reader verifies their wallet with one free signature (no transaction) to earn the on-chain badges shown next to their messages. Identity, reply, react, and share all live inside the frame. The room is keyed to the contract address, so every site that embeds the same token shares one conversation.
A working embed with an example conversation, rendered exactly as it would on your site. Verify, reply, and react are all live. Try typing.
Want to see the full scene? Watch the live $ANSEM demo → a bullish room, a fudder wearing a SNIPER badge gets ratioed with facts, then tipped 50,000 $ANSEM gasless and flips to HOLDER.
Chat is only useful when it is populated and trustworthy. A shared room solves the empty-room problem on day one, and the forensic layer is something no general chat tool can offer.
The conversation is keyed to the token address, so it is populated across every app that embeds it. No cold start.
Wallets verify with a free signature and wear on-chain badges next to every message. Holders carry their rank and supply share.
Bull and bear weighted by verified holders, plus live message velocity, so you can see real conviction instead of bot noise.
Readers tip each other right in the room, in the token, USDC, or SOL. It is non-custodial (the user's own wallet signs every tip) and gasless when needed, so a dry wallet can still tip. Each room has a live tip leaderboard. Solana for now. Nothing to wire up. it ships inside the embed.
A verified reader sees their real-time balance and exact supply share for the room token, plus their other holdings, straight from chain. Holder badges reflect what they actually hold right now.
Rate limits, impersonation blocks, and strict sanitisation are handled on our side. You just paste one tag.
The embed is not a black box. It emits events you can react to, takes commands you can drive, and the tip flow drops in as a one-line button. Put live chat signal and on-chain tipping anywhere in your product.
Listen on the <trench-chat> element and pipe activity into your own UI: a toast when a tip lands, a counter on new messages, a feature unlock when a wallet verifies. Every payload is public only (truncated wallets, never a full address).
// listen on the <trench-chat> element const el = document.querySelector("trench-chat"); el.addEventListener("trench-chat:tip", e => { const t = e.detail.detail; // {from,to,amount,symbol,gasless,signature} toast(`${t.from} tipped ${t.to} ${t.amount} ${t.symbol}`); }); el.addEventListener("trench-chat:verified", e => unlock(e.detail.detail.wallet)); el.addEventListener("trench-chat:message", () => bumpCounter()); // drive it too (UI only, the user still signs) el.openTip({ to: "<wallet>", amount: "1000", asset: "token" });
Events: ready, message, tip, verified, sentiment. Commands: el.open() and el.openTip(...). Commands only open UI, so the user always connects and signs in their own wallet.
Want tipping without the whole chat? One tag renders a branded button that opens the tip flow (the token, USDC, or SOL) in a modal. Perfect for a creator page, a token profile, or a leaderboard. Pre-fill a recipient and amount, or let the user pick someone in the room.
<!-- once, anywhere on the page --> <script src="https://analyzer69000.com/embed.js" async></script> <!-- a one-line tip button --> <trench-tip chain="solana" token="<mint>" symbol="JUP" to="<wallet>" amount="1000" asset="token" ></trench-tip>
to, amount, asset (token / sol / usdc) and label are optional. The same deep link works as a URL: /embed?chain=&token=&tip=1&to=&amount=&asset=.
The iframe is the no-code path. The REST API is for builders: pull a token's live conversation, sentiment, and verified-holder signal straight into your app. CORS-open, no key to start.
| GET | Returns |
|---|---|
/api/v1/chat/messages | recent messages, with verified badges + reply context |
/api/v1/chat/pulse | online, velocity, sentiment (overall + holder-weighted) |
/api/v1/chat/stats | unique chatters, verified ratio, badge counts, top reactions |
/api/v1/chat/tips | recent on-chain tips (truncated wallets, amount, tx signature) + a tip leaderboard |
Params: chain (solana, eth, bsc, base, arb, op, poly, avax) + token (mint or contract). messages and tips also take limit (1 to 100).
Rate limits 60 to 120 req/min per IP. Responses cache 5 to 10s. CORS open to any origin, no key required to start.
Inline "token is heating up" badges, holder-weighted sentiment widgets, alpha feeds that surface what verified holders are saying, a live tips ticker or per-token tip leaderboard, or a safety overlay that pairs the chat with the wallet's on-chain rap sheet.
// live pulse for a token, no key needed const r = await fetch( "https://analyzer69000.com/api/v1/chat/pulse" + "?chain=solana&token=JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN" ); const pulse = await r.json(); // { online, velocity, sentiment: { bull, bear, holder_bull, holder_bear } }
// /api/v1/chat/messages response (trimmed) { "chain": "solana", "count": 1, "messages": [{ "name": "Diamond Whale", "body": "still holding, not selling one", "reactions": { "🚀": 4 }, "verified": { "wallet": "7xKy…9fGh", "badges": ["whale"], "holder_pct": 8.4, "holder_rank": 2 } }] }