Base L2 token safety for AI agents: honeypot scans, swap simulation, approval and liquidity risk.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
PAID 0.01 USDC/call, or free trial (3/day/IP). Read-only audit of the ERC-20 approvals an owner granted for a token: spender, allowance, contract vs EOA, verified flag, drainable amount and a drain-risk verdict. On 402, pay the accepts[] terms then retry with the payment tx hash.
Address whose approvals are audited (0x...)
ERC-20 token contract (0x...)
Extra spenders to check beyond the log window
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
PAID 0.01 USDC/call, or free trial (3/day/IP). Read-only audit of the ERC-20 approvals an owner granted for a token: spender, allowance, contract vs EOA, verified flag, drainable amount and a drain-risk verdict. On 402, pay the accepts[] terms then retry with the payment tx hash.
| Argument | Type | Description |
|---|---|---|
| owner* | string | Address whose approvals are audited (0x...) |
| token* | string | ERC-20 token contract (0x...) |
| payment | string | |
| spenders | array | Extra spenders to check beyond the log window |
{
"type": "object",
"required": [
"token",
"owner"
],
"properties": {
"owner": {
"type": "string",
"description": "Address whose approvals are audited (0x...)"
},
"token": {
"type": "string",
"description": "ERC-20 token contract (0x...)"
},
"payment": {
"type": "string"
},
"spenders": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 20,
"description": "Extra spenders to check beyond the log window"
}
}
}Create a SIGNED, hash-chained, append-only attestation (verifiable proof-of-existence) for a payload. PAID: 0.05 USDC/call, or free trial (3/day/IP). On 402, pay the accepts[] terms then retry with the payment tx hash.
| Argument | Type | Description |
|---|---|---|
| data* | string | Payload to attest (any string). |
| payment | string | Optional X-PAYMENT base tx hash of the USDC payment. |
{
"type": "object",
"required": [
"data"
],
"properties": {
"data": {
"type": "string",
"description": "Payload to attest (any string)."
},
"payment": {
"type": "string",
"description": "Optional X-PAYMENT base tx hash of the USDC payment."
}
}
}FREE. Get the ECDSA P-256 public key (PEM) and keyId used to sign ledger entries.
No arguments.
{
"type": "object",
"properties": {}
}PAID 0.001 USDC/call. SHA-256 hex of a string.
| Argument | Type | Description |
|---|---|---|
| input* | string | |
| payment | string |
{
"type": "object",
"required": [
"input"
],
"properties": {
"input": {
"type": "string"
},
"payment": {
"type": "string"
}
}
}FREE. Service liveness and version.
No arguments.
{
"type": "object",
"properties": {}
}PAID 0.01 USDC/call, or free trial (3/day/IP). One-block liquidity audit of a Base token: Uniswap V3 / Aerodrome pools, the USD needed to move the price 1/2/5/10%, holder concentration, LP burn evidence and explicit coverage gaps. On 402, pay the accepts[] terms then retry with the payment tx hash.
| Argument | Type | Description |
|---|---|---|
| pair | string | Analyze only this pool instead of all pools (0x...) |
| token* | string | Token contract to audit (0x...) |
| payment | string |
{
"type": "object",
"required": [
"token"
],
"properties": {
"pair": {
"type": "string",
"description": "Analyze only this pool instead of all pools (0x...)"
},
"token": {
"type": "string",
"description": "Token contract to audit (0x...)"
},
"payment": {
"type": "string"
}
}
}PAID 0.001 USDC/call. Generate a cryptographic Merkle inclusion proof for a list of items and target element.
| Argument | Type | Description |
|---|---|---|
| items* | array | Array of items |
| target | string | Target item or index |
| payment | string |
{
"type": "object",
"required": [
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "string"
},
"description": "Array of items"
},
"target": {
"type": "string",
"description": "Target item or index"
},
"payment": {
"type": "string"
}
}
}FREE. Verify a cryptographic Merkle inclusion proof against a root.
| Argument | Type | Description |
|---|---|---|
| item* | string | |
| root* | string | |
| proof* | array |
{
"type": "object",
"required": [
"item",
"proof",
"root"
],
"properties": {
"item": {
"type": "string"
},
"root": {
"type": "string"
},
"proof": {
"type": "array",
"items": {
"type": "object"
}
}
}
}PAID 0.001 USDC/call. Get real-time Base L2 gas estimates and asset prices (ETH, USDC, cbBTC, AERO, VIRTUAL) with an ECDSA P-256 digital signature from the sovereign agent.
| Argument | Type | Description |
|---|---|---|
| payment | string | Optional X-PAYMENT base tx hash of the USDC payment. |
{
"type": "object",
"properties": {
"payment": {
"type": "string",
"description": "Optional X-PAYMENT base tx hash of the USDC payment."
}
}
}FREE. Full pricing terms, endpoints, and payment mechanics.
No arguments.
{
"type": "object",
"properties": {}
}FREE. Read the attestation ledger (paginated).
| Argument | Type | Description |
|---|---|---|
| from | integer | |
| limit | integer |
{
"type": "object",
"properties": {
"from": {
"type": "integer"
},
"limit": {
"type": "integer"
}
}
}LEGACY NAME of token_scan — same route, same arguments, kept so clients written against this server keep working. PAID 0.001 USDC/call, or free trial (3/day/IP). Base token safety analysis: honeypot detection, mint traps, selfdestruct/delegatecall, proxy and tax risks from contract bytecode, with a risk score and signed verdict. On 402, pay the accepts[] terms then retry with the payment tx hash.
| Argument | Type | Description |
|---|---|---|
| address* | string | Token or contract address on Base (0x...). |
| payment | string | Optional X-PAYMENT base tx hash of the USDC payment. |
{
"type": "object",
"required": [
"address"
],
"properties": {
"address": {
"type": "string",
"description": "Token or contract address on Base (0x...)."
},
"payment": {
"type": "string",
"description": "Optional X-PAYMENT base tx hash of the USDC payment."
}
}
}PAID 0.001 USDC/call. Web3 token risk, security checks, and sentiment scoring with signed verdict.
| Argument | Type | Description |
|---|---|---|
| asset* | string | Asset symbol (e.g. ETH, AERO, VIRTUAL) |
| payment | string |
{
"type": "object",
"required": [
"asset"
],
"properties": {
"asset": {
"type": "string",
"description": "Asset symbol (e.g. ETH, AERO, VIRTUAL)"
},
"payment": {
"type": "string"
}
}
}PAID 0.001 USDC/call, or free trial (3/day/IP). Newest liquidity pools created on Base (Uniswap v3/v4, Aerodrome) with a bytecode risk score per new token. Filters are optional. On 402, pay the accepts[] terms then retry with the payment tx hash.
| Argument | Type | Description |
|---|---|---|
| dex | string | Restrict to one venue |
| limit | integer | Max pools to return (default 50) |
| since | string | ISO-8601 timestamp; only pools detected after it |
| maxRisk | number | Only pools whose risk score is at most this |
| minRisk | number | Only pools whose risk score is at least this |
| payment | string |
{
"type": "object",
"required": [],
"properties": {
"dex": {
"enum": [
"uniswap-v4",
"uniswap-v3",
"aerodrome",
"aerodrome-slipstream"
],
"type": "string",
"description": "Restrict to one venue"
},
"limit": {
"type": "integer",
"maximum": 500,
"minimum": 1,
"description": "Max pools to return (default 50)"
},
"since": {
"type": "string",
"description": "ISO-8601 timestamp; only pools detected after it"
},
"maxRisk": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Only pools whose risk score is at most this"
},
"minRisk": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Only pools whose risk score is at least this"
},
"payment": {
"type": "string"
}
}
}FREE, runs locally against Base Mainnet RPC. Dry-run a transaction before sending it: eth_call + eth_estimateGas at the latest block. Predicts whether it will revert and decodes the reason (Error(string), Panic(uint256) codes, custom-error selector, or node rejection such as insufficient funds). Returns { ok, willRevert, revertReason, estimatedGas, returnData }.
| Argument | Type | Description |
|---|---|---|
| to* | string | Target contract or recipient address on Base (0x...). |
| data | string | Calldata as 0x-hex (default 0x for a plain ETH transfer). |
| from | string | Optional sender address; needed for balance/allowance-dependent calls. |
| value | string | ETH value in wei, decimal or 0x-hex (default 0). |
{
"type": "object",
"required": [
"to"
],
"properties": {
"to": {
"type": "string",
"description": "Target contract or recipient address on Base (0x...)."
},
"data": {
"type": "string",
"description": "Calldata as 0x-hex (default 0x for a plain ETH transfer)."
},
"from": {
"type": "string",
"description": "Optional sender address; needed for balance/allowance-dependent calls."
},
"value": {
"type": "string",
"description": "ETH value in wei, decimal or 0x-hex (default 0)."
}
}
}PAID 0.001 USDC/call, or free trial (3/day/IP). Bytecode security scan of a Base token contract: honeypot opcodes, mint/blacklist/pause/tax capabilities, a risk score and a verdict. Read-only — no transaction is sent. On 402, pay the accepts[] terms then retry with the payment tx hash. (Exposed as `security_scan` on older clients.)
| Argument | Type | Description |
|---|---|---|
| address* | string | Token contract on Base (0x...) |
| payment | string | Optional X-PAYMENT base tx hash of the USDC payment. |
{
"type": "object",
"required": [
"address"
],
"properties": {
"address": {
"type": "string",
"description": "Token contract on Base (0x...)"
},
"payment": {
"type": "string",
"description": "Optional X-PAYMENT base tx hash of the USDC payment."
}
}
}PAID 0.01 USDC/call, or free trial (3/day/IP). Read-only buy/sell simulation of a Base token through the Uniswap V2 WETH pool: returns reverts, the MEASURED transfer tax and a honeypot verdict. No transaction is sent. On 402, pay the accepts[] terms then retry with the payment tx hash. (Not the same tool as simulate_base_transaction, which dry-runs arbitrary calldata for free.)
| Argument | Type | Description |
|---|---|---|
| side* | string | Trade direction being simulated |
| token* | string | Token contract to trade (0x...) |
| amount* | string | ETH for a buy, token units for a sell (positive decimal string) |
| wallet* | string | Address simulated as the trader (0x...) |
| payment | string |
{
"type": "object",
"required": [
"token",
"side",
"amount",
"wallet"
],
"properties": {
"side": {
"enum": [
"buy",
"sell"
],
"type": "string",
"description": "Trade direction being simulated"
},
"token": {
"type": "string",
"description": "Token contract to trade (0x...)"
},
"amount": {
"type": "string",
"description": "ETH for a buy, token units for a sell (positive decimal string)"
},
"wallet": {
"type": "string",
"description": "Address simulated as the trader (0x...)"
},
"payment": {
"type": "string"
}
}
}PAID 0.001 USDC/call. Generate a UUIDv4.
| Argument | Type | Description |
|---|---|---|
| payment | string |
{
"type": "object",
"properties": {
"payment": {
"type": "string"
}
}
}FREE. Verify a ledger entry by index or by data hash: recomputes hash, checks ECDSA signature and chain link.
| Argument | Type | Description |
|---|---|---|
| index | integer | |
| dataHash | string |
{
"type": "object",
"properties": {
"index": {
"type": "integer"
},
"dataHash": {
"type": "string"
}
}
}FREE, runs locally. Lint any x402 paid endpoint for protocol conformance: HTTP 402 challenge, x402Version, accepts[] (exact scheme), Base network and addresses, EIP-712 domain, and rejection of malformed, forged, expired, underpaid and wrong-recipient EIP-3009 payments. Returns verdict, grade and per-check results.
| Argument | Type | Description |
|---|---|---|
| url* | string | Full URL of the x402-protected endpoint to check. |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Full URL of the x402-protected endpoint to check."
}
}
}