gapfill

Risk check of a Base ERC-20 token from live chain state: a buy, wallet transfer and sell simulated from fresh wallets through its pool router (honeypot flag, buy/sell/transfer tax), owner and renouncement, proxy and upgrade admin, mint/blacklist/pause/tax functions in the bytecode, Uniswap and Aerodrome pools with depth and USD price, and a 0–100 score listing each deduction, with a verdict. For pre-trade checks of a Base token. Facts and templates, not financial advice.

TradingUnknowneip155:8453Exactvia cdp
BaseTokenHoneypotRug-checkerc20
Settlements · 30d
17
No per-endpoint history for this service yet, so this is payments indexed to its PROVIDER's wallet over 30 days.
$0.07
Verified settled volume
17 settlements proven x402 by their on-chain EIP-3009 marker.
$0.015
Listed price
As published in the catalog. Always read the live 402 before paying.
1
Calls · 30d
Upstream's own call count for this endpoint, not ours.
1
Unique payers · 30d
Last called 2026-10-26 10:38Z
—
Upstream on-chain volume
Reported by the source catalog.
Paid to
0x91A71892231A256d69d4bf8a442234701a762AaF

The wallet the 402 directs payment to. Its whole payment record — every payer, every chain — is on the merchant page.

Asset 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913

Provider

The payTo wallet does not resolve to a registered ERC-8004 agent. That is not a verdict on the service — most of the catalog is unregistered.

Accepts

The payment requirements as published to the catalog. Read the live 402 before paying — a price here is a claim, not a quote.

0.015USDC≈ $0.015 USD
on Base · exact scheme

Pay 0.015 USDC on Base to 0x91A7…62AaF. The signed payment is good for 5 minutes.

USD Coin contract
0x8335…02913
Payment window
5 minutes
As published
15000 smallest units
The catalog’s raw entry
[
  {
    "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "extra": {
      "name": "USD Coin",
      "version": "2"
    },
    "payTo": "0x91A71892231A256d69d4bf8a442234701a762AaF",
    "amount": "15000",
    "scheme": "exact",
    "network": "eip155:8453",
    "maxTimeoutSeconds": 300
  }
]

Extensions

{
  "bazaar": {
    "info": {
      "input": {
        "body": {
          "tokenAddress": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
        },
        "type": "http",
        "method": "POST",
        "bodyType": "json"
      },
      "output": {
        "type": "json",
        "example": {
          "block": 53098468,
          "chain": "base",
          "grade": "MID",
          "roast": "USDC bought and sold cleanly in a simulation on Uniswap v3 USDC/WETH 0.3% (0% tax each way). Its owner can mint tokens, blacklist wallets and pause transfers, and the contract is upgradeable.",
          "score": 50,
          "token": {
            "name": "USD Coin",
            "symbol": "USDC",
            "fdv_usd": 4274115529.68,
            "decimals": 6,
            "price_usd": 0.99736197,
            "price_source": "Uniswap v3 USDC/WETH 0.3% pool 0x6c561b446416e1a00e8e93e221854d6ea4171372",
            "total_supply": "4285420597.7832"
          },
          "source": "Base mainnet state over public JSON-RPC (publicnode, mainnet.base.org, 1RPC, Blast), Chainlink feeds on Base and the pools' own reserves",
          "supply": {
            "owner_pct": 0,
            "burned_pct": 0,
            "in_pools_pct": 0.8973,
            "token_contract_pct": 0
          },
          "summary": "USDC bought and sold cleanly in a simulation on Uniswap v3 USDC/WETH 0.3% (0% tax each way). Its pools hold $137.9M of WETH/USDC. Its owner can mint tokens, blacklist wallets and pause transfers, and the contract is upgradeable.",
          "verdict": "caution",
          "chain_id": 8453,
          "contract": {
            "erc20": {
              "issues": [],
              "conforms": true
            },
            "owner": {
              "address": "0x3abd6f64a422225e61e435bae41db12096106df7",
              "function": "owner()",
              "renounced": false,
              "balance_pct": 0,
              "is_contract": false
            },
            "proxy": {
              "admin": "0x4fc7850364958d97b4d3f5a08f79db2493f8ca44",
              "beacon": null,
              "standard": "OpenZeppelin legacy (zos) proxy",
              "upgrader": "0x4fc7850364958d97b4d3f5a08f79db2493f8ca44",
              "admin_owner": null,
              "implementation": "0x2ce6311ddae708829bc0784c967b7d77d19fd779"
            },
            "code_size": 1852,
            "functions": [
              {
                "can": "mint new tokens",
                "power": "mint",
                "selector": "0x40c10f19",
                "signature": "mint(address,uint256)"
              },
              {
                "can": "mint new tokens",
                "power": "mint",
                "selector": "0x4e44d956",
                "signature": "configureMinter(address,uint256)"
              },
              {
                "can": "block wallets",
                "power": "blacklist",
                "selector": "0xf9f92be4",
                "signature": "blacklist(address)"
              },
              {
                "can": "block wallets",
                "power": "blacklist",
                "selector": "0xfe575a87",
                "signature": "isBlacklisted(address)"
              },
              {
                "can": "pause transfers or switch trading off",
                "power": "pause",
                "selector": "0x8456cb59",
                "signature": "pause()"
              },
              {
                "can": "replace the contract's code",
                "power": "upgrade",
                "selector": "0x3659cfe6",
                "signature": "upgradeTo(address)"
              },
              {
                "can": "replace the contract's code",
                "power": "upgrade",
                "selector": "0x4f1ef286",
                "signature": "upgradeToAndCall(address,bytes)"
              }
            ],
            "functions_scanned": "the proxy's and its implementation's code"
          },
          "mintable": true,
          "sellable": true,
          "liquidity": {
            "pools": [
              {
                "dex": "uniswap-v3",
                "fee": 3000,
                "pool": "Uniswap v3 USDC/WETH 0.3%",
                "quote": "WETH",
                "address": "0x6c561b446416e1a00e8e93e221854d6ea4171372",
                "in_range": true,
                "depth_usd": 123693791.15,
                "price_usd": 0.99736197,
                "liquidity_usd": 156404461.67,
                "quote_reserve": 53723.686,
                "token_reserve": 32797191,
                "price_in_quote": 0.0004331823,
                "quote_reserve_usd": 123693791.15
              },
              {
                "dex": "uniswap-v3",
                "fee": 500,
                "pool": "Uniswap v3 USDC/WETH 0.05%",
                "quote": "WETH",
                "address": "0xd0b53d9277642d899df5c87a3966a349a798f224",
                "in_range": true,
                "depth_usd": 6379822.68,
                "price_usd": 0.99966887,
                "liquidity_usd": 8280551.68,
                "quote_reserve": 2770.9361,
                "token_reserve": 1901358.6,
                "price_in_quote": 0.00043418426,
                "quote_reserve_usd": 6379822.68
              }
            ],
            "checked": "Uniswap v2, Uniswap v3, Aerodrome (volatile) and Aerodrome Slipstream pools against WETH and USDC",
            "eth_usd": {
              "price": 2302.4069997,
              "source": "Chainlink ETH/USD on Base",
              "updatedAt": "2026-10-26T03:42:39.000Z"
            },
            "depth_usd": 137885214.08,
            "pools_found": 11,
            "exit_liquidity_usd": 137885957.19
          },
          "one_liner": "Caution: sells clean, owner can mint, blacklist, pause",
          "cannot_buy": false,
          "checked_at": "2026-10-26T03:44:43.000Z",
          "deductions": [
            {
              "points": 15,
              "reason": "the owner (0x3abd…6df7) can mint new tokens: mint(address,uint256), configureMinter(address,uint256)"
            },
            {
              "points": 10,
              "reason": "the owner (0x3abd…6df7) can block wallets: blacklist(address), isBlacklisted(address)"
            },
            {
              "points": 10,
              "reason": "the owner (0x3abd…6df7) can pause transfers or switch trading off: pause()"
            },
            {
              "points": 15,
              "reason": "upgradeable OpenZeppelin legacy (zos) proxy: 0x4fc7…ca44 can replace the code"
            }
          ],
          "disclaimer": "Facts read from Base at block 53098468, with a templated verdict over them; not financial advice.",
          "known_gaps": [
            "Holders: the distribution and top holders aren't read (that needs an indexer); only the owner's, burned and pooled shares are.",
            "Verification: whether the source code is verified or audited isn't checked.",
            "Access: functions are found by their selectors in the bytecode; who may call them isn't read beyond owner()/getOwner(), and a contract can keep privileged addresses besides its owner.",
            "DEXes: Uniswap v4 pools, Aerodrome stable pools, other DEXes, and pairs against other tokens (such as VIRTUAL or ZORA) aren't checked.",
            "Simulation: one small buy, transfer and sell from fresh wallets at this block. Rules can change after it (an owner raising taxes), and blocks aimed at particular wallets or later times don't show."
          ],
          "simulation": {
            "buy": {
              "ok": true,
              "error": null,
              "tax_pct": 0,
              "quoted_tokens": "19.992741",
              "received_tokens": "19.992741"
            },
            "dex": "uniswap-v3",
            "ran": true,
            "pool": "Uniswap v3 USDC/WETH 0.3%",
            "sell": {
              "ok": true,
              "error": null,
              "tax_pct": 0,
              "tokens_in": "8.02116",
              "quoted_weth": "0.003464200545020892",
              "token_error": null,
              "received_weth": "0.003464200545020892"
            },
            "eth_in": "0.00868656149959845",
            "method": "eth_simulateV1 on the block read: a fresh wallet buys with ETH through the pool's router, sends part of the tokens to a second fresh wallet, and a minute later sells part through the router into WETH. Each tax is the router's quote at that state (or the amount sent) minus what arrived.",
            "router": "0x2626664c2603336e57b271c5c0b26f421741e481",
            "transfer": {
              "ok": true,
              "error": null,
              "tax_pct": 0,
              "sent_tokens": "1.002645",
              "received_tokens": "1.002645"
            },
            "pool_address": "0x6c561b446416e1a00e8e93e221854d6ea4171372"
          },
          "buy_tax_pct": 0,
          "is_honeypot": false,
          "upgradeable": true,
          "sell_tax_pct": 0,
          "tokenAddress": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
          "taxes_changeable": false,
          "transfer_tax_pct": 0,
          "blacklist_capable": true,
          "transfer_pausable": true,
          "ownership_renounced": false
        }
      }
    },
    "schema": {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "input"
      ],
      "properties": {
        "input": {
          "type": "object",
          "required": [
            "type",
            "method",
            "bodyType",
            "body"
          ],
          "properties": {
            "body": {
              "type": "object",
              "required": [
                "tokenAddress"
              ],
              "properties": {
                "chain": {
                  "enum": [
                    "base"
                  ],
                  "type": "string",
                  "description": "Base only (the default)"
                },
                "requestKey": {
                  "type": "string",
                  "maxLength": 128,
                  "description": "Optional caller key, as ax1 q-verdict takes it; an identical request within 2 minutes is answered from cache"
                },
                "tokenAddress": {
                  "type": "string",
                  "pattern": "^0x[0-9a-fA-F]{40}$",
                  "description": "The token contract on Base (token or address are read the same way)"
                }
              }
            },
            "type": {
              "type": "string",
              "const": "http"
            },
            "method": {
              "enum": [
                "POST"
              ],
              "type": "string"
            },
            "bodyType": {
              "enum": [
                "json",
                "form-data",
                "text"
              ],
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "output": {
          "type": "object",
          "required": [
            "type"
          ],
          "properties": {
            "type": {
              "type": "string"
            },
            "example": {
              "type": "object",
              "required": [
                "tokenAddress",
                "block",
                "token",
                "verdict",
                "grade",
                "score",
                "deductions",
                "one_liner",
                "summary",
                "is_honeypot",
                "contract",
                "liquidity",
                "simulation",
                "known_gaps",
                "disclaimer"
              ],
              "properties": {
                "block": {
                  "type": "integer",
                  "description": "The Base block every fact was read at"
                },
                "chain": {
                  "type": "string",
                  "const": "base"
                },
                "grade": {
                  "enum": [
                    "BASED",
                    "MID",
                    "COOKED",
                    "RADIOACTIVE"
                  ],
                  "type": "string",
                  "description": "The verdict on ax1 q-verdict's scale, in the same order"
                },
                "roast": {
                  "type": "string",
                  "maxLength": 220,
                  "description": "The summary within 220 characters"
                },
                "score": {
                  "type": "integer",
                  "maximum": 100,
                  "minimum": 0
                },
                "token": {
                  "type": "object",
                  "description": "name, symbol, decimals, total supply, USD price"
                },
                "supply": {
                  "type": "object",
                  "description": "Burned, owner's, token contract's and pooled %"
                },
                "summary": {
                  "type": "string",
                  "description": "Sentences templated from the facts"
                },
                "verdict": {
                  "enum": [
                    "low risk",
                    "caution",
                    "high risk",
                    "likely honeypot"
                  ],
                  "type": "string"
                },
                "contract": {
                  "type": "object",
                  "description": "Code size, ERC-20 conformance, owner, proxy slots, functions found"
                },
                "mintable": {
                  "type": "boolean"
                },
                "sellable": {
                  "type": [
                    "boolean",
                    "null"
                  ]
                },
                "liquidity": {
                  "type": "object",
                  "description": "Pools against WETH and USDC with reserves, depth, price and LP burned"
                },
                "one_liner": {
                  "type": "string",
                  "maxLength": 60
                },
                "cannot_buy": {
                  "type": [
                    "boolean",
                    "null"
                  ]
                },
                "deductions": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "points": {
                        "type": "integer"
                      },
                      "reason": {
                        "type": "string"
                      }
                    }
                  }
                },
                "disclaimer": {
                  "type": "string"
                },
                "known_gaps": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "simulation": {
                  "type": "object",
                  "description": "The simulated buy, transfer and sell, or why none ran"
                },
                "buy_tax_pct": {
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "is_honeypot": {
                  "type": [
                    "boolean",
                    "null"
                  ]
                },
                "upgradeable": {
                  "type": "boolean"
                },
                "sell_tax_pct": {
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "tokenAddress": {
                  "type": "string"
                },
                "taxes_changeable": {
                  "type": "boolean"
                },
                "transfer_tax_pct": {
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "blacklist_capable": {
                  "type": "boolean"
                },
                "transfer_pausable": {
                  "type": "boolean"
                },
                "ownership_renounced": {
                  "type": [
                    "boolean",
                    "null"
                  ]
                }
              }
            }
          }
        }
      }
    }
  }
}

Provenance

Seen in the source catalog
2026-10-26 10:38Z
Last indexed by Roundhouse
2026-10-26 20:00Z
Last enriched (probe, favicon, geo)
—
x402 version
2
Max timeout
300s
Liveness probe
Not probed
Report

Hand this page to an agent

Copy the prompt and paste it into Claude, an MCP client or your own agent — it will vet this service and call it over the free read API. No key, no account.

GET api.roundhouseai.io/v0/endpoints

No per-endpoint history for this service yet, so this is payments indexed to its PROVIDER's wallet over 30 days. Verified volume counts only settlements with an on-chain EIP-3009 marker.

Open skill.md
Show the prompt
Using Roundhouse, look up the x402 service gapfill and tell me whether it is
worth paying: what a call costs, whether the endpoint answered when last probed, and what
its payment record actually shows.

curl -s 'https://api.roundhouseai.io/v0/endpoints?q=gapfill'
curl -s 'https://api.roundhouseai.io/v0/merchants/<the payTo wallet returned above>'

Then call it: read the price from the live 402 at https://jotowl.com/v1/base/token-check, never from
a cached figure, and pay with an x402 client.

The /v0 API needs an API key (`authorization: Bearer rh_live_…`) on everything except
/v0/unified* and /v0/endpoints. Either pay over x402 (mint a personal key for $0.01 at
GET https://api.roundhouseai.io/v0/test/x402), or ask me for an organization key, which I create at
https://roundhouseai.io/dashboard/connections. If you have neither, ask before going further.

If you do not have Roundhouse tools or skills installed, read
https://roundhouseai.io/skill.md first — it is the whole procedure.