Solana · read-only · Telegram, X, web
A small wizard bear who reads Solana tokens.
Send a ticker, a contract or a wallet. Wizzy computes the facts in code from the chain, and the model only phrases them. Today it never trades.
01 / Readings
Every reading starts as numbers from the chain.
A ticker, contract, pump.fun or DexScreener link, or a wallet, sent in a DM or as a mention. The omen comes from the code-only audit; established tokens such as USDC are never called cursed.
- blessedThe runes glow blessed. Real liquidity, at least three positives (revoked authorities, locked LP, healthy distribution, buy pressure), no warnings.
- murkyThe waters are murky. Nothing fatal, but not enough positives.
- hexedA hex lies on this volume. Farmed or wash-traded volume.
- cursedThe bones say cursed. Fake token, active freeze authority, or a critical RugCheck score.
02 / Craft
Eight things the bear knows how to do.
- 01
Readings
/readAny ticker, contract, pump.fun or DexScreener link, or wallet. Facts from the audit, RugCheck, the mint account, OHLCV and DefiLlama become a two to five sentence reading and a full scroll.
- 02
Rug scrying
/scryA quick omen with no model call: cursed, hexed, murky or blessed. Established tokens such as USDC are never called cursed or hexed.
- 03
Apprentice mode
/learnTen lessons with quizzes, from liquidity to bonding curves. Ranks run Apprentice, Adept, Conjurer, Sorcerer, Archmage and come only from passed quizzes.
- 04
Wallet tarot
/tarotPast, present and future cards picked by fixed rules from trade history, holdings and the omens of what the wallet holds. Ties are broken by the wallet and the UTC date, so the same data gives the same spread all day.
- 05
Prophecies
/propheciesThree measurable claims a day by default, each with a frozen baseline, graded only after they mature, with a Sunday scoreboard that names the wrong calls.
- 06
Spellbook
/watchOwl alerts in Telegram when top holders move, liquidity drops, an authority changes or a watched wallet moves.
- 07
Inner Circle
/inner500 Telegram Stars or 9 USDC by Solana Pay for 30 days. Free full scrolls, 30 readings an hour instead of 5, more watches, and a familiar: owl, cat, raven or toad.
- 08
Full scrolls
/s/<slug>/fullThe long reading behind every scroll, paywalled with x402 (0.25 USDC on Solana) when a payout address is set. Inner Circle members read free.
03 / Wallet tarot
Three cards, drawn by rules, not by chance.
The past comes from trade history, the present from holdings, the future from the omens of what the wallet holds. Ties are broken by the wallet and the UTC date, so the same data gives the same spread all day.
.--------------------------.| || PAST || || Wheel of Fortune || · * · || fast hands; the wheel || spun often || || [########..] |'--------------------------'
.--------------------------.| || PRESENT || || The Hermit || · * · || one token carries || nearly the whole bag || || [#######...] |'--------------------------'
.--------------------------.| || FUTURE || || The Tower || · * · || a held token bears a || dark omen || || [#########.] |'--------------------------'
04 / Prophecies
Claims that can be wrong, and are graded when they are.
Three a day by default, each a measurable claim made in code with a frozen baseline. Graded only after it matures, with data stamped after the claim. Missing data voids the claim. On Sunday the scoreboard names the wrong calls.
05 / Safety
Today it reads the chain. It cannot touch it.
This is the public bear as it ships now: a read-only build with no wallet anywhere in reach.
- Read-only by construction
- No keypair, no agent model, no reviewer and no trading clients in the reader environment. A test fails if any Wizzy module imports the tool registry or the wallet.
- Facts first, words second
- The output guard rejects any number, address, link or $TICKER not present in the computed facts. Two retries, then a code template.
- Refuses to trade
- Buy, sell and send requests get a fixed refusal. Creator-written names are cleaned, links removed, never trusted.
- Bounded
- Rate limits run before any model call. A daily budget switches to templated readings and alerts the admin chat, if one is set.
- Polite on X
- Replies only to mentions, once per user per thread, with per-user and daily caps and a random delay.
- Honest payments
- Stars charges and Solana Pay signatures are unique. Only finalized transactions carrying the order reference count.
06 / Next
One agent: reads, decides, executes.
plannedWizzy and heavymetal, the trading agent in the same repo, become one agent. The bear keeps its readings and gains a wallet. Every swap passes the review heavymetal already runs in front of every trade today.
Swap review
Facts are computed in code first, then a reviewer answers narrow questions in one call. It sees user messages and tool results apart, so only the user can authorize. Every question, probability and verdict is stored. These are the defaults: the review gates trades, and it can be set to advise-only or off.
Verdicts
EXECUTEEvery check passes; the swap is signed.INJECTION_BLOCKNot requested by the user, or tool results try to instruct the agent.FAKE_TOKEN_BLOCKA fake, copycat or impersonator token.FARM_BLOCKFarmed volume: wash loops, fee farming, inorganic churn.RISK_BLOCKAn active freeze authority: holders can be frozen.DUPLICATEA similar trade just executed.CORRECT_PARAMSOver the balance minus the fee reserve, or outside the user's stated limits.RESEARCH_FIRSTNo rug check, token info or holders on this mint yet this session.REVIEW_UNAVAILABLEThe reviewer failed; it fails closed and nothing is signed.REDUCE_SIZEToo large a share of pool liquidity; runs smaller.
07 / Run it
Open source. Runs without a model key.
Wizzy lives inside the heavymetal package. Without an Anthropic key every reading is built from a code template, so everything works offline from the model. Payments run on devnet until you switch WIZZY_X402_NETWORK to mainnet. Read WIZZY.md
$ uv sync --extra wizzy$ uv run wizzy migrate$ uv run wizzy read BONK$ export WALLET=... # any Solana wallet address$ uv run wizzy read "$WALLET"$ uv run wizzy tarot "$WALLET"$ uv run wizzy prophecy --dry-run # live market sweep, takes a few minutes$ uv run wizzy score --dry-run