VetAgent
Pre-trade token safety check for AI agents. Simulates a sell before you buy, then returns one low/medium/high/unknown verdict with the signals behind it: sellability, buy/sell tax, liquidity depth, pair age, same-ticker impersonation and owner powers read from contract bytecode. Ethereum, BSC, Base and Solana. Fail-closed: a check that cannot run answers unknown, never low. Publishes its own measured error rate, including what it cannot measure yet, with the benchmark harness in the repo. Remote Streamable HTTP at https://vetagent.dev/mcp - free, no signup, no API key, no tracking. MIT, source at https://github.com/jakegu1/vetagent
Documentation
Try it
Live call against the same public endpoint your agent would use. No key, no signup.
Examples: · ·
Connect
Claude Code
claude mcp add --transport http vetagent https://vetagent.dev/mcp
Claude Desktop · Cursor · any MCP client
{
"mcpServers": {
"vetagent": { "type": "http", "url": "https://vetagent.dev/mcp" }
}
}
Plain HTTP, no MCP
curl https://vetagent.dev/assess/0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2?chain_hint=ethereum
Also listed in the official MCP registry as dev.vetagent/vetagent, on Glama, and on Smithery — same endpoint, installable from any of them.
We publish our error rates, including the ones that look bad.
Several tools in this category publish a number — Hypernative 99.8% detection, Forta >99% recall, Blockaid <0.0002% false positives (each vendor's own published figure, checked 2026-09-09). What none of them publishes is a method: no dataset, no denominator, no definition of a positive, nothing anyone can re-run. Ours is measured over 576 tokens, labelled from data sources the engine itself never reads, and the harness is in the repository.
| Metric | Value | Read it as |
|---|---|---|
| Healthy tokens flagged high | 4.3% | False positives. Too high; being worked on. |
Answers returned as unknown | 15.3% | Refusals when a check could not run. Honest, still too many. |
| GoPlus-tagged centralised tokens rated high | 22.9% | Almost all are abandoned pools holding cents, caught by the liquidity checks. Owner powers drive none of them — the engine never scores those. USDT is rated low. |
| Dead tokens not rated low | 86.7% | 26 of 30. Read the caveat below before quoting this one. |
| Dead tokens rated high | 10.0% | 3 of 30. Our worst number, and the one a vendor would leave out. |
What that row does and does not say. Recall was unmeasurable here until recently, because every public source ranks by liquidity and rugged pools fall off the list. We now recover pools from chain history — every past day is readable from the logs of the contract that created the pool — and that produced a cohort of 30 confirmed-dead tokens where sampling had produced none.
The honest reading is not flattering. Only 3 of those 30 are rated high; most land at medium. That is close to correct rather than a miss: half the dead cohort still holds over $5,000 of liquidity, so those positions can still be sold. Dead means the project died, which is a market outcome; this tool scores whether you can get out, which is a safety property. Rating a failed investment high would be an investment judgement we refuse to make.
The number we would most like to publish — recall against deliberately adversarial contracts — is still measured on 17 tokens, of which 16 have a liquidity figure and 15 hold under a dollar (the largest holds $4,813), because the oracle that labels them raises its honeypot flag whenever its own sell simulation fails, and a sell simulation fails against an empty pool whatever the contract does. Until that cohort is larger, treat this tool as answering "can I still get out of this" and not "is this a scam". Full method and raw results →
Tools
| Tool | What it answers |
|---|---|
assess_token_risk | Should this be touched? Returns low / medium / high / unknown, a 0–100 score, and every signal that fired. |
get_token_liquidity | How deep is the main pair, and can I exit at size? |
find_new_hot_pools | What launched recently? Discovery only — never a safety endorsement. |
Questions people actually ask
What does unknown mean?
A critical check could not be completed — usually an upstream source failed. It is not a low-risk result. evidence.data_gaps names exactly what was missing. A risk tool that guesses when it has no data is worse than one that says so.
Why do I need this if my agent can read the contract itself?
Because the failure is not in reading the contract, it is in knowing what to read. The most common loss is not an exotic exploit — it is buying a token that simulates fine but cannot be sold, or buying the wrong token with the right name. Four upstream sources disagree with each other constantly; this collapses them into one verdict.
Does it log the addresses I look up?
No. That query reveals what you are about to trade, so it is used to fetch public data and then discarded. We keep aggregate counts only — tool, verdict, coarse client name, country. Never the address, never an IP. Privacy →
What does it not catch?
Anything off-chain: team behaviour, social engineering, a rug executed through governance, a project that simply dies. It also does not yet check LP lock status or EVM holder concentration — both listed as open gaps in the scorecard. Treat low as "no fatal signal in the checks that ran", never as "safe to buy".
Is it free, and what is the catch?
Free, no key. The catch is that it is young and the false-positive rate is published above rather than hidden. We take no referral fees, no order flow, and no payment from token projects — if our revenue ever correlated with saying "low risk", the only thing this tool has would be gone.
Using it? Tell me — I genuinely cannot tell.
This server records no addresses, no identities and no token queries. That is a deliberate trade and it stands — but the cost is real: from the logs I cannot distinguish a person building something from a directory crawler, and most of the traffic is crawlers. If you have wired this into anything, one line is genuinely useful, and I will tell you before anything changes under you.
Bugs, wrong verdicts and disagreements with the benchmark are equally welcome — especially a token you think it got wrong. Those are the reports that improve it.
hello@vetagent.dev — no account needed, goes to a person.
github.com/jakegu1/vetagent/issues — if you would rather it were public, and no tracking either way.