B20 Check

Legitimacy check for B20 tokens on Base. Verifies whether an address is a factory-native B20, detects copycats and known-asset imposters (homoglyph-aware), reports live issuer powers (mint, burn, pause, freeze, seize, admin) and issuer activity, and returns a danger/caution/ok verdict as an EIP-712-signed attestation an agent can independently verify.

OtherLiveeip155:8453Exactvia cdp
B20BaseToken-verificationSecurityAttestation
Activity
—
Nothing indexed for this service or its provider yet. Not a claim that it is unused — only that we hold no record.
$0.08
Verified settled volume
8 settlements proven x402 by their on-chain EIP-3009 marker.
$0.010
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-07-11 12:49Z
—
Upstream on-chain volume
Reported by the source catalog.
Paid to
0x26B57af5022250F01497F3e19dd537d01d124BA1

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.01USDC≈ $0.01 USD
on Base · exact scheme

Pay 0.01 USDC on Base to 0x26B5…24BA1. The signed payment is good for 5 minutes.

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

Extensions

{
  "bazaar": {
    "info": {
      "input": {
        "type": "http",
        "method": "GET",
        "pathParams": {
          "address": "0xb2000000000000000000001fd821494127f35af0"
        },
        "queryParams": {}
      },
      "output": {
        "type": "json",
        "example": {
          "flags": [
            {
              "code": "VIA_LAUNCHER",
              "detail": "Created through an intermediary launcher contract, not a direct factory call.",
              "severity": "info"
            }
          ],
          "isB20": true,
          "address": "0xb200000000000000000000f52267Ce6274432c30",
          "network": "mainnet",
          "variant": "asset",
          "verdict": "ok",
          "creation": {
            "block": 48380900,
            "params": {
              "name": "Example Token",
              "symbol": "EXTKN",
              "variant": "asset",
              "currency": null,
              "decimals": 18
            },
            "txHash": "0x9a67ce…",
            "creator": null,
            "launcher": "0x77132d…",
            "txOrigin": "0x52c8ff…",
            "timestamp": 1783491000,
            "viaLauncher": true
          },
          "attestation": {
            "domain": {
              "name": "B20 Check Attestation",
              "chainId": 8453,
              "version": "1",
              "verifyingContract": "0xb200000000000000000000f52267Ce6274432c30"
            },
            "signed": true,
            "signer": "0x1388d1e3751512955A53C7c2795Eaf8a3B029e6A",
            "issuedAt": 1783670000,
            "expiresAt": 1783670600,
            "signature": "0x8f2a…",
            "pinnedBlock": 48443612,
            "attestationId": "0x3e7197…"
          },
          "issuerPowers": {
            "canBurn": false,
            "canMint": false,
            "canPause": false,
            "canSeize": false,
            "canFreeze": false,
            "supplyCap": "1000000000000000000000000000",
            "adminActive": false,
            "supplyCapKnown": true,
            "freezeConfigured": false,
            "transferRestrictions": false
          },
          "issuerActivity": {
            "burns": 0,
            "memos": 0,
            "mints": 1,
            "pauses": 0,
            "freezes": 0,
            "seizures": 0,
            "roleChanges": 0,
            "lastActionBlock": 48380900
          }
        }
      }
    },
    "schema": {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "input"
      ],
      "properties": {
        "input": {
          "type": "object",
          "required": [
            "type",
            "method"
          ],
          "properties": {
            "type": {
              "type": "string",
              "const": "http"
            },
            "method": {
              "enum": [
                "GET"
              ],
              "type": "string"
            },
            "pathParams": {
              "type": "object",
              "required": [
                "address"
              ],
              "properties": {
                "address": {
                  "type": "string",
                  "pattern": "^0x[0-9a-fA-F]{40}$",
                  "description": "EVM address of the token to verify (B20 addresses start with 0xb20…; any address is accepted)."
                }
              },
              "additionalProperties": false
            },
            "queryParams": {
              "type": "object",
              "properties": {}
            }
          },
          "additionalProperties": false
        },
        "output": {
          "type": "object",
          "required": [
            "type"
          ],
          "properties": {
            "type": {
              "type": "string"
            },
            "example": {
              "type": "object",
              "title": "VerifyResult",
              "$schema": "https://json-schema.org/draft/2020-12/schema",
              "example": {
                "flags": [
                  {
                    "code": "VIA_LAUNCHER",
                    "detail": "Created through an intermediary launcher contract, not a direct factory call.",
                    "severity": "info"
                  }
                ],
                "isB20": true,
                "address": "0xb200000000000000000000f52267Ce6274432c30",
                "network": "mainnet",
                "variant": "asset",
                "verdict": "ok",
                "creation": {
                  "block": 48380900,
                  "params": {
                    "name": "Example Token",
                    "symbol": "EXTKN",
                    "variant": "asset",
                    "currency": null,
                    "decimals": 18
                  },
                  "txHash": "0x9a67ce…",
                  "creator": null,
                  "launcher": "0x77132d…",
                  "txOrigin": "0x52c8ff…",
                  "timestamp": 1783491000,
                  "viaLauncher": true
                },
                "attestation": {
                  "domain": {
                    "name": "B20 Check Attestation",
                    "chainId": 8453,
                    "version": "1",
                    "verifyingContract": "0xb200000000000000000000f52267Ce6274432c30"
                  },
                  "signed": true,
                  "signer": "0x1388d1e3751512955A53C7c2795Eaf8a3B029e6A",
                  "issuedAt": 1783670000,
                  "expiresAt": 1783670600,
                  "signature": "0x8f2a…",
                  "pinnedBlock": 48443612,
                  "attestationId": "0x3e7197…"
                },
                "issuerPowers": {
                  "canBurn": false,
                  "canMint": false,
                  "canPause": false,
                  "canSeize": false,
                  "canFreeze": false,
                  "supplyCap": "1000000000000000000000000000",
                  "adminActive": false,
                  "supplyCapKnown": true,
                  "freezeConfigured": false,
                  "transferRestrictions": false
                },
                "issuerActivity": {
                  "burns": 0,
                  "memos": 0,
                  "mints": 1,
                  "pauses": 0,
                  "freezes": 0,
                  "seizures": 0,
                  "roleChanges": 0,
                  "lastActionBlock": 48380900
                }
              },
              "required": [
                "address",
                "network",
                "isB20",
                "verdict",
                "flags",
                "attestation"
              ],
              "properties": {
                "flags": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "code": {
                        "type": "string"
                      },
                      "detail": {
                        "type": "string"
                      },
                      "severity": {
                        "enum": [
                          "info",
                          "low",
                          "medium",
                          "high"
                        ],
                        "type": "string"
                      }
                    }
                  },
                  "description": "Risk flags."
                },
                "isB20": {
                  "type": "boolean",
                  "description": "True only for a factory-native B20 token."
                },
                "address": {
                  "type": "string",
                  "description": "Checksummed EVM address inspected."
                },
                "network": {
                  "enum": [
                    "mainnet",
                    "sepolia"
                  ],
                  "type": "string"
                },
                "variant": {
                  "enum": [
                    "asset",
                    "stablecoin",
                    null
                  ],
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "verdict": {
                  "enum": [
                    "ok",
                    "caution",
                    "danger"
                  ],
                  "type": "string"
                },
                "creation": {
                  "type": [
                    "object",
                    "null"
                  ],
                  "description": "Creation tx/block/creator and decoded create params (null if not a native B20)."
                },
                "attestation": {
                  "type": "object",
                  "properties": {
                    "domain": {
                      "type": "object"
                    },
                    "signed": {
                      "type": "boolean"
                    },
                    "signer": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "issuedAt": {
                      "type": "integer"
                    },
                    "expiresAt": {
                      "type": "integer"
                    },
                    "signature": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "pinnedBlock": {
                      "type": "integer"
                    },
                    "attestationId": {
                      "type": "string"
                    }
                  },
                  "description": "EIP-712 attestation. attestationId is a deterministic content id (always present, but NOT an integrity proof on its own); integrity requires signed=true and recovering signer from signature."
                },
                "issuerPowers": {
                  "type": [
                    "object",
                    "null"
                  ],
                  "description": "Current issuer capabilities: canMint, canBurn, canPause, canFreeze, canSeize, adminActive, supplyCap, transferRestrictions."
                },
                "issuerActivity": {
                  "type": [
                    "object",
                    "null"
                  ],
                  "description": "Observed on-chain issuer actions: mints, burns, freezes, seizures, pauses, memos, roleChanges, lastActionBlock."
                }
              },
              "description": "Signed B20 legitimacy attestation for a single address on Base."
            }
          }
        }
      }
    },
    "routeTemplate": "/v1/verify/:address"
  }
}

Provenance

Seen in the source catalog
2026-07-11 12:49Z
Last indexed by Roundhouse
2026-08-04 03:20Z
Last enriched (probe, favicon, geo)
2026-09-20 16:45Z
x402 version
2
Max timeout
300s
Liveness probe
HTTP 400
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

Nothing indexed for this service or its provider yet. Not a claim that it is unused — only that we hold no record. 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 B20 Check 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=B20%20Check'
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://b20check.com/v1/verify/:address, 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. Mint a personal key for $0.01 at GET https://api.roundhouseai.io/v0/test/x402,
or use an organization key from https://roundhouseai.io/dashboard/team.

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