A self-hosted Telegram agent that screens a Solana SPL or Token-2022 mint before a human decides whether to interact with it.
The agent runs locally through ZeroClaw, selects a read-only WASM tool, gathers public Solana RPC and market evidence, and returns a deterministic red/amber/green report. It cannot connect a wallet, sign a transaction, or move funds.
- Working ZeroClaw use case: verified
- Real Telegram channel: verified
- Model-selected WASM execution: verified
- Live Solana RPC, DexScreener and GoPlus evidence: verified
- Host tests: 18 passing
- Continuous public video, three minutes or less: pending
- ZeroClaw Discord showcase post: pending
The generated player in this repository is an architecture explainer, not the required real-channel evidence. The final submission will use one continuous capture of Telegram and the live ZeroClaw runtime.
This is for an operator, researcher, community moderator, or treasury team that wants a fast first-pass risk gate inside the chat channel they already use. It does not replace an audit. Its job is to stop the agent from inventing a safety conclusion when evidence is incomplete.
The operator sends a mint:
Check this Solana mint: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
ZeroClaw then:
- validates that the input is exactly one canonical 32-byte Solana public key;
- selects
token-risk-check; - runs the WASM component with only
http_clientandconfig_read; - reads mint authorities, owner-level concentration, Token-2022 extensions, public DEX liquidity, and LP-control evidence;
- returns typed facts and deterministic findings to the model;
- posts a human-readable second-turn answer back to Telegram.
Missing or contradictory required evidence produces complete: false and a
red result. The tool never silently converts an outage into a green rating.
On 22 July 2026, an authenticated Telegram user sent the canonical USDC mint to the locally running agent. The runtime trace recorded:
| UTC time | Event |
|---|---|
| 13:26:44.764 | Model response parsed one tool call |
| 13:26:44.765 | token-risk-check started with the exact mint |
| 13:26:57.991 | Live risk check completed |
| 13:26:57.993 | Structured evidence returned to the agent |
| 13:27:16.718 | Second turn completed and Telegram received the answer |
The release WASM was 442,725 bytes with SHA-256
537A0D594A4308DE66B5C3F1C7D336671D8E75EA9D1386441BD29A3DF09F64A5.
Live concentration and liquidity values naturally change between runs.
T0 — read-only.
| Capability | Purpose | Explicit boundary |
|---|---|---|
http_client |
Read public RPC and market evidence | No wallet or signing access |
config_read |
Read jailed operator endpoints and thresholds | The model cannot replace them |
There is no recovery phrase, private key, transaction builder, signer, simulation path, or submission path in this use case.
- Build ZeroClaw with the WASM plugin runtime and a compiler backend.
- Build the plugin from the public source branch: https://github.com/AntonsBB/zeroclaw-plugins/tree/codex/token-risk-check/plugins/token-risk-check
- Copy
manifest.toml,token_risk_check.wasm, andLICENSEinto the configured plugin directory. - Start from
config.example.toml. Add the Telegram credential with ZeroClaw's masked secret flow; never commit it. - Copy
agent-workspace/AGENTS.mdinto the agent workspace. - Bind only the intended Telegram user, run
channel doctor, start the channel, send/new, and then send the canonical request above.
Build and test the plugin:
rustup target add wasm32-wasip2
cd plugins/token-risk-check
cargo fmt --check
cargo test --locked
cargo clippy --all-targets -- -D warnings
cargo clippy --target wasm32-wasip2 -- -D warnings
cargo build --locked --target wasm32-wasip2 --release- Use-case package: this repository
- Plugin source: https://github.com/AntonsBB/zeroclaw-plugins/tree/codex/token-risk-check/plugins/token-risk-check
- Archived technical-review context: zeroclaw-labs/zeroclaw-plugins#93 (closed without deleting the code so the showcase follows the sponsor's instruction to defer registry PRs until maintainers invite an implementation after judging)
- Threat model:
THREAT_MODEL.md - Reproduction config:
config.example.toml - Discord showcase draft:
SHOWCASE_DRAFT.md - Architecture player: https://antonsbb.github.io/token-risk-check-demo/
- It is a deterministic screen, not a contract audit or price prediction.
- Largest-account RPC data is a bounded sample.
- Public data sources can rate-limit or change.
- Concentrated-liquidity control cannot be proven from fungible LP-token fields, so that condition remains explicitly unverified.
- Token metadata, off-chain identity, social reputation, and price momentum are outside this T0 version.
The showcase material is MIT-licensed. The plugin source carries its own MIT license in the linked implementation branch.