AI Trading Bots Are Buying Honeypots. Even Coinbase Admits It.
I built a fix. Here's how it works and what it caught on day one.
The problem nobody wants to say out loud
Go read Coinbase's own AgentKit documentation. It's right there, in plain English:
"AgentKit does not gate transfers behind human approval, enforce spend caps, or allowlist destinations."
Translation: the official toolkit for building autonomous trading agents on Base ships with zero safety net. Your bot decides to buy a token, it buys it. No check. No pause. No "wait, is this a trap?"
And Base is flooded with traps. New tokens launch every few minutes. A meaningful chunk of them are honeypots — contracts where you can buy in, but the sell function is quietly disabled or taxed into oblivion. Your bot doesn't know that. It just sees a price and a router, and it fires.
I wanted to see how bad this actually gets in practice. So I built something to check.
What I built
AgentRisk M2M — a pre-trade risk API for Base tokens. Before your agent swaps into anything, it can hit this endpoint and get a straight answer.
It's not a single API call to a single data source dressed up as "AI security." AgentRisk M2M cross-checks three independent things at once:
- GoPlus Security — contract-level red flags (mint functions, ownership, pausability, tax logic)
- DexScreener — liquidity, holder concentration, pair data
- A direct on-chain read — because APIs can be wrong, and you shouldn't have to trust one source blindly
Then AgentRisk M2M goes further than a basic scanner:
- Deployer wallet freshness — flags tokens launched from a wallet that looks like it was created five minutes ago for a one-off rug
- Brand impersonation detection — catches tokens dressed up as $META, $GOOGL, $NVDA clones from anonymous deployers
- Source disagreement flag — if GoPlus says one thing and the on-chain check says another, you get told, instead of getting a false sense of confidence
-
Confidence field — the response explicitly says
"low"when key data couldn't be verified, instead of quietly guessing
Every AgentRisk M2M response comes with a scan_id, a timestamp, and now a cached flag — because a cache that says "safe" from three minutes ago is worthless if the contract got rugged two minutes ago. TTL is 30 seconds, and the field tells you exactly which one you're looking at.
The catch
On day two of testing, I ran AgentRisk M2M against 0xF36652cde978fF333b76cb4688ca88FB04eF5DdA. Here's the actual response:
{
"riskScore": 100,
"riskLevel": "CRITICAL_HONEYPOT",
"verdict": "DO NOT TRADE. Token cannot be sold (honeypot) or sells are blocked; Contract exposes a mint function (supply can be increased).",
"confidence": "high",
"shouldExecute": false
}
Real contract, real chain, real trap. Confirmed independently against TokenSniffer. That's not a hypothetical — that's exactly the kind of token AgentKit will let your bot walk straight into.
How you actually call it
No signup. No API key. No dashboard to log into.
GET https://agentrisk.dev/scan?token=<CONTRACT_ADDRESS>
You get back a 402 Payment Required with x402 payment details. Pay 0.15 USDC on Base (settled through Coinbase's own CDP facilitator — same infra Coinbase uses for its own products), retry, get your answer. One line to wire AgentRisk M2M into a bot.
It also ships as a full MCP server (tools/list, resources/list, the works) and an A2A Agent Card, so AgentRisk M2M isn't locked to one agent framework — Claude, Cursor, LangChain, whatever you're running, it's discoverable the same way.
Where it stands right now
- 48 real scans, 25+ unique Base tokens
- One confirmed, independently verified honeypot catch
- PRs open with base/skills and Bankr's skill registry
- Listed on the MCP Registry, x402 Bazaar, and a few other discovery layers
It's early. I built AgentRisk M2M over a few days, not a few months, and I'm not going to pretend it's a finished product with a sales team behind it. It's a working tool that caught a real scam on day one, and I'm putting it out there because the gap it fills is real — Coinbase's own docs say so.
If you're building a trading agent on Base and you're currently trusting it to just... not buy garbage — you're not. It can't tell the difference. Something has to.
GitHub: github.com/Neurobyteio/agentrisk
Try it: agentrisk.dev
Top comments (0)