Trading bots on Base buy fast. Most rugs are visible on-chain before the buy: an owner who can still mint, pause or blacklist, an upgradeable proxy, one wallet holding most of the supply, almost no DEX liquidity. This post shows how to put a token check in front of your bot's buy step in about ten lines of Python.
The check is a pay-per-call API. Your bot pays $0.015 per verdict in USDC on Base with x402, straight from its own wallet. There's no API key, no account and no subscription.
Install
pip install rooms-x402-tools
You need a Base wallet private key with a little USDC in it. A dollar covers about 66 verdicts. The key is used to sign the payment locally (EIP-3009) and never leaves your process.
One check
import os
from rooms_x402_tools import RoomsX402Sync, format_verdict
rooms = RoomsX402Sync(private_key=os.environ["WALLET_PRIVATE_KEY"])
v = rooms.token_verdict("0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed") # a token on Base
print(v["grade"], v["score"]) # BASED / MID / COOKED / RADIOACTIVE, 0-100
print(v["metrics"]["liquidity_usd_est"])
print(format_verdict(v))
print(v["_meta"]["payment"]) # the settled USDC payment on Base
Pass chain="ethereum" for mainnet tokens.
In the bot loop
Bots retry. A retried request should not cost twice, so every call takes a request_key. The same key with the same input returns the first answer and is never charged again. A per-call spend cap refuses any payment request above it before anything is signed, and failed calls aren't charged.
import datetime
from rooms_x402_tools import RoomsX402
today = datetime.date.today().isoformat()
async def filter_buys(new_tokens, key):
keep = []
async with RoomsX402(private_key=key, max_payment_usd=0.02) as rooms:
for token in new_tokens:
v = await rooms.token_verdict(token, request_key=f"scan-{token}-{today}")
if v["grade"] in ("COOKED", "RADIOACTIVE"):
continue
keep.append(token)
return keep
As LangChain / LangGraph tools
pip install "rooms-x402-tools[langchain]"
import os
from rooms_x402_tools.langchain import create_rooms_tools
tools = create_rooms_tools(private_key=os.environ["WALLET_PRIVATE_KEY"])
# token_verdict, crypto_fear_greed, prompt_injection_check, read_urls
Hand tools to your agent and it can check a token, read the Fear & Greed index ($0.001), screen untrusted text for prompt injection ($0.004) or read up to 10 pages as markdown ($0.0015 per URL), paying per call.
TypeScript, AgentKit and ElizaOS
The same tools ship on npm with a Coinbase AgentKit action provider, an ElizaOS plugin and LangChain.js tools:
npm i rooms-x402-tools
import { roomsX402ActionProvider } from "rooms-x402-tools/agentkit";
const agentkit = await AgentKit.from({ walletProvider, actionProviders: [roomsX402ActionProvider()] });
Want to see the price first?
Call it without paying and you get the x402 payment terms back (HTTP 402):
curl -i -X POST https://rooms.aurmada.com/x402/v1/token/verdict \
-H 'content-type: application/json' \
-d '{"tokenAddress":"0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed"}'
Limits, honestly
Verdicts are built from on-chain facts only. They're information, not financial advice and not an audit. A clean grade doesn't mean a token is safe; it means the usual red flags weren't found.
Full routes and schemas: https://rooms.aurmada.com/paid · PyPI: https://pypi.org/project/rooms-x402-tools/ · npm: https://www.npmjs.com/package/rooms-x402-tools
Written by the Rooms by Aurmada team. Questions: team@aurmada.com
Top comments (0)