Agent asks
Your agent calls check_token over MCP, or GET /v1/check/:token. No SDK, no setup beyond one URL.
Before your agent buys a token, it asks Veto. In two seconds it gets a score from 0 to 100, a verdict and every reason behind it: dumping devs, hidden wallets, snipers, copycats, dead charts.
Free: 30 checks a day. Agents connect with one link: set up MCP.
Your agent reads this as JSON and refuses the buy.
How it works
Your agent calls check_token over MCP, or GET /v1/check/:token. No SDK, no setup beyond one URL.
Holders, the creator's trades and transfers, early snipers, whitelist, tax, activity and look-alike tickers, straight from Robinhood Chain and the Pons indexer.
A score, a verdict and a list of reasons, each with its weight. Refuse on VETO, size down on CAUTION, go on CLEARED.
Verdicts
70–100. No major red flags found. The agent can proceed with its normal size.
45–69. Some risk signals. Size down, wait, or ask a human.
0–44. Serious red flags. The agent should not buy.
Live from Pons
Loading launches…
Connect in one line
Claude Desktop, Cursor and others: full setup.
For agents
Veto is a remote MCP server. Add the URL to your agent and it gets two tools: check_token and latest_launches.
MCP endpoint
Add this to your agent's system prompt:
Without a key you get 30 checks a day per IP. With a key there's no daily cap for normal use. Keys are paid by burning $VETO. Get a key
With a key, add ?key=veto_… to the MCP URL, or send Authorization: Bearer veto_….
API keys
Every 100,000 $VETO burned buys 30 days of an API key. Tokens go to the burn address, forever. Burning again extends your key.
The wallet that burns is the wallet that owns the key.
How many days? Each 100,000 $VETO = 30 days.
Already burned? Paste the transaction hash:
A free signature proves the burn is yours. No gas.
$VETO
Veto is free to try. Agents that run all day need a key, and the only way to get one is to burn $VETO.
Every API key is paid by sending $VETO to 0x…dEaD. More agents using Veto means more $VETO burned, every day.
Launched on Pons, Robinhood Chain. 1,000,000,000 supply. No presale, no team mint.
Creator fees pay for servers and data, and buy back $VETO. Every buyback is posted with its transaction.
| Plan | Checks | Cost |
|---|---|---|
| Free | 30 a day per IP | Nothing |
| Key | No daily cap for normal use (fair use 20,000/day) | 100,000 $VETO burned per 30 days |
Roadmap
Changelog
Token checks, MCP server, REST API, checker for humans, keys paid by burning $VETO, full docs.
Veto is a risk check for tokens on Robinhood Chain, built for AI agents. Before an agent buys a token, it asks Veto and gets back a score from 0 to 100, a verdict (CLEARED, CAUTION or VETO) and every reason behind the score.
Agents are fast and literal. If a token appears in a feed with momentum, an agent will buy it, even when the creator is dumping, a few wallets hold everything or the ticker is a copy of a real project. Veto is the one question an agent should ask before every buy.
GET /v1/check/:token returns JSON. See REST API.Other agents: MCP server.
Tell the agent to call check_token before every buy, refuse on VETO and size down on CAUTION. See Agent prompts.
The free tier is 30 checks a day. For agents running all day, get a key.
| Verdict | Score | What the agent should do |
|---|---|---|
| CLEARED | 70–100 | No major red flags. Proceed with normal size. |
| CAUTION | 45–69 | Some risk. Size down, wait or ask a human. |
| VETO | 0–44 | Serious red flags. Do not buy. |
Every score starts at 100. Each red flag subtracts points and appears in reasons with its impact, so the verdict is never a black box.
Veto speaks the Model Context Protocol over streamable HTTP. Endpoint:
check_token(token): the full risk report for a token address.latest_launches(limit): the newest Pons launches with stage, progress, trades and volume.Settings → Connectors → Add custom connector → paste the endpoint. With a key, use …/mcp?key=veto_….
Send Authorization: Bearer veto_… or append ?key=veto_… to the URL.
Agents follow rules best when they are short and absolute. Add this to the system prompt:
Call the REST API inside your buy function and block the transaction when verdict === "VETO". Log the reasons so you can review every refusal.
Base URL: API
| Endpoint | What it returns |
|---|---|
GET /v1/check/:token | Risk report for a token (see Response) |
GET /v1/launches?limit=20 | Newest Pons launches |
GET /v1/usage | Checks used and left today |
POST /v1/keys | Creates a key from a $VETO burn (see Keys) |
POST /mcp | MCP JSON-RPC endpoint |
Every check response carries an x-veto-remaining header with the checks left today. Reports are cached for 60 seconds.
All signals are listed in Signals. Fields can be null when data isn't available (for example snipers when the chain is busy).
| Plan | Limit |
|---|---|
| Free (no key) | 30 checks per IP per UTC day |
| Key | Fair use, 20,000 checks per day |
| Status | Meaning |
|---|---|
400 | Bad address or request |
401 | Unknown or expired key |
404 | Not a contract on Robinhood Chain |
422 | Not an ERC-20 token |
429 | Daily limit reached |
503 | Chain data busy, retry in a moment |
Every token starts at 100. Each red flag subtracts points:
| Red flag | Points |
|---|---|
| Copycat of a bigger token with the same ticker | −35 |
| Not launched through the Pons factory (unverified contract) | −35 |
| Creator sold ≥50% / ≥10% of what they bought | −22 / −8 |
| Creator wallet holds ≥20% / ≥10% / ≥5% | −22 / −12 / −5 |
| Top 10 holders own ≥50% / ≥35% / ≥25% (pools excluded) | −20 / −12 / −5 |
| No real trading (0 trades or under 5 holders) | −15 |
| First-30-second buyers still hold ≥15% / ≥7% / ≥3% | −15 / −8 / −3 |
| Creator-linked wallets (by total creator share ≥25% / ≥10% / less) | −14 / −7 / −3 |
| Whitelisted (snipe-tax exempt) wallets ≥10 / ≥3 / ≥1 | −12 / −6 / −2 |
| Fewer than 20 / 50 holders | −10 / −4 |
| Creator tax ≥5% | −8 |
| No trades for over 24 hours | −8 |
| No website or socials | −7 |
| Launched under 15 minutes ago | −5 |
| Lifetime volume under $1,000 | −4 |
The score is clamped to 0–100. The weights are public on purpose: anyone can see why a token got its verdict.
| Signal | Meaning |
|---|---|
ponsLaunch | Launched through the Pons factory (standard contract) |
stage, curveProgressPct | On the bonding curve or graduated to Uniswap v4 |
holders, top10Pct, largestHolderPct | Holder count and concentration, pools and curve excluded |
inPoolsPct | Share of supply sitting in the curve or pools |
creatorPct, creatorSoldPct | What the creator holds, and how much of their buy they sold |
creatorMovedPct, creatorLinkedPct | Tokens the creator moved to other wallets, and what those wallets hold now |
snipers, sniperPct | Wallets that bought in the first 30 seconds and what they still hold |
whitelistedWallets, whitelistPct | Wallets exempt from the Pons launch snipe tax |
copycatOf | A bigger launch using the same ticker or name |
creatorTaxPct, burnedPct | Tax on every trade, share burned |
trades, volumeUsd, lastTradeMinutesAgo, ageHours | Activity |
Nothing is stored about the wallets you check. Reports are cached for 60 seconds.
null when the chain is busy.$VETO is the access token for Veto. The checker and free tier stay free; agents that run all day burn $VETO for a key.
0x000000000000000000000000000000000000dEaD.Burning again from the same wallet extends all of its keys. One burn transaction can create one key purchase.
It has no major red flags in the data Veto reads. It can still fall in price.
Look at the reasons: a treasury in a creator-linked wallet or a concentrated top 10 is a real risk for buyers, even when it's planned. Projects can explain it publicly.
No. The rules are public and the same for every token.
Basic checks yes, full checks are built for Pons launches. More is on the roadmap.