Verified Calls
a call record anyone can check.
Everything you need to install, configure, brand and run your own call record for Telegram call groups: a bot records every Solana call, the server measures what a follower could have had after fees, and every call is sealed so it cannot be removed later. Read it top to bottom the first time. After that, press / and search.
01What you bought
Verified Calls is a self-hosted track record for Telegram call groups. You add your own Telegram bot to your group or channel. The bot records every message that contains a Solana token address. For each call the server works out what a follower could have had: someone who bought shortly after reading the call and sold by a fixed rule, after fees and slippage. Callers are ranked by the median of those results. New calls are sealed into a Merkle root at a fixed interval, the bot posts the seal to Telegram, and you can anchor it on Solana with a memo you sign in your own browser wallet.
| Who | What they do |
|---|---|
| You, the operator | Run the site on your own server with your own bot, approve which chats are recorded, anchor seals from your wallet and switch on the earning options you want in the Admin console. |
| Callers | Post calls in the chats you recorded, as they already do. They can see their own record with /mycalls and may link a wallet with /linkwallet. |
| Followers | Read the public site, follow callers in the bot to get a DM on every call, check any call against its seal and, if you sell it, buy VIP access. |
A new install ships empty: no callers, no calls, no Buy link, no referral codes, no wallets and no keys. Every earning option starts switched off. Nothing is sent to MIKODES.
02What it does
- Records calls. Every message with a Solana token address in a chat you approved: time, caller, original text and a link to the message. Edits are stored next to the original; the original is never overwritten. Forwards and messages from bots are not calls.
- Measures a follower's result. Entry is the first trade at least 30 seconds after the post; exits at 1 hour, 24 hours and 7 days; 1 % fee and at least 1.5 % slippage per side come off. The peak is shown, labelled "not reachable", never as the headline.
- Ranks callers by the median. Pulled toward the group median until a caller has enough calls. Under 5 scored calls a caller is "not enough calls yet". A token posted again by the same caller within 24 hours (a re-shill) is shown but not scored.
- Seals the record. New calls are hashed into a Merkle root every 10 minutes by default; each seal includes the previous root, so the seals form a chain.
- Lets anyone verify. Every call has a proof page that recomputes leaf → root → seal in the visitor's browser. Full exports can be checked offline with the included script.
- Flags exit liquidity (optional). With your own Helius key, a wallet a caller linked is checked for a sale of the called token within an hour of the call.
- Integrity flags. Coordinated calls, paid promotions (not scored) and which of your VIP or free chats had a call first.
- Follower tools. Live feed, token pages, search, a simulator that replays a caller's calls with your size and delay, follow alerts by Telegram DM, share cards and an embeddable badge.
What it does not do
- It does not pick tokens or give advice. It shows what already happened.
- It never trades, never holds funds and never signs anything on the server. The server has no private key.
- It never deletes or hides a call. The database refuses to delete calls or change a seal, and no admin button can unscore a call.
- It cannot import history from before the bot joined a chat, and it invents no data: an empty install shows empty pages.
03Pick your path
04The public site
| Address | What it shows |
|---|---|
/ | Leaderboard: callers by median follower result in 1 h, 24 h or 7 d, the group median, the latest seal. Filters by group and first calls only. |
/c/<caller> | A caller: median result, every call on a scale, hit and rug rate, exit liquidity, a compact simulator, the Follow button and an embeddable badge. |
/call/<id> | One call: chart with entry, exits and the unreachable peak, results per window, the proof chain Recorded → Priced → Sealed → Anchored, and your trading row when switched on. |
/t/<token>, /tokens | Who called a token, in order, and how each call ended; the tokens called here. |
/feed, /search | Every call as it is recorded; search for callers, tokens and groups. |
/simulator | Replays a caller's recorded calls with a trade size, delay and exit rule the visitor picks, using stored prices. An illustration of the past, not a forecast. |
/groups | The recorded chats with their calls, median result and sealed share; paid listings and the sponsored slot when on. |
/verify, /methodology | Check a call against its seal; the method, generated from the settings in use. |
/vip | VIP plans, when you sell membership. |
/api, /export/…, /badge/<caller>.svg, /card/… | Read-only JSON API, full exports, the badge and share-card images. |



05What is in the package
| Folder or file | What it is |
|---|---|
src/ingest/ | The Telegram bot (grammY, long polling) and the call recorder. |
src/prices/, src/scoring/ | Public price data (GeckoTerminal, DexScreener as fallback), follower results, statistics, ranking and the simulator. |
src/proof/ | Merkle seals, Telegram seal posts, the unsigned Solana memo and its check. |
src/wallets/ | Caller wallet linking and the exit-liquidity check (Helius or your own RPC). |
src/web/ | Server-rendered public pages, the JSON API, exports, badge and the record's data screens (/admin/ops), shown inside the console. |
src/admin/, vendor/mikodes-admin/ | The operator console (MIKODES Admin Kit 0.3.0) and its settings manifest. |
src/revenue/, src/membership/ | Trading links, Jupiter swap, paid listings, sponsored slot, API keys, VIP membership. |
src/alerts/, src/integrity/, src/cards/ | Follow alerts and bot commands, integrity flags, share-card images. |
src/db/ | SQLite schema and migrations; applied automatically at start. |
scripts/ | verify-export.mjs (offline verifier), recompute.ts, check-licenses.mjs, dev-seed-synthetic.mjs (development only). |
.env.example, README.md, SPEC.md, LICENSE.md | Configuration template, the short manual, the exact rules the site uses, your licence. |
A server (1 vCPU and 1 GB RAM is enough for a call group), your own Telegram bot from @BotFather, and optionally a domain with HTTPS, a Solana browser wallet, a Helius key or your own Solana RPC. None of these are part of the purchase.
06Try it before you install
A public demo runs the real site and the real console on synthetic data: demo.verifiedcalls.mikodes.com. Every caller, token, price and seal there was generated and is labelled. The demo has no Telegram bot and fetches no market data. Its /demo page shows a read-only sign-in for the console.
07How to read these docs
- Dark boxes are commands. Press Copy in the corner and paste them into a terminal.
- Grey text after
#is an explanation. The Copy button leaves it out. - Replace
calls.example.comwith your own domain everywhere. - Tested marks steps run against this release while writing these docs; Not tested here marks standard procedures that could not be run on the writer's machine (for example systemd on a Linux server, or a live Telegram bot).
- Screenshots come from a local copy running on synthetic data (the amber "Demo — synthetic data" banner). Numbers in them are not results of any real caller.