Full-history address-poisoning check before you send USDC on Base
Full-history address-poisoning check before you send USDC on Base. Same risk/lookalike/seenBefore logic as /address/check, but funding history comes from ONE Blockscout index call (x402, up to the sender's 500 most recent Base USDC transfers; v2 page fallback) so coverage is usually the sender's full Base USDC history. Body {from, to}. Not charged if the index is down. Cheap partial/RPC tier: POST /address/check ($0.001).
Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.
Endpoint
POST https://paycheck.hectichustle.workers.dev/address/check/full
| Category | Everything else |
|---|---|
| Provider host | paycheck.hectichustle.workers.dev |
| Networks | eip155:8453 |
| Payment schemes | exact |
| Self-reported calls, 30 days | 21 from 2 payers (the provider's figure, not ours) |
Our checks, last 30 days
We never call tools that send, buy, move money or file anything, not even without paying.
Example input (from the provider)
{
"body": {
"from": "0xfc1e390266f3b29179b5d63a7937a689d1e5279a",
"to": "0xccd53f97ddfdf6939028698803dfe20fac455d07"
},
"bodyType": "json",
"method": "POST",
"type": "http"
}
Promised output schema (from the provider)
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"body": {
"properties": {
"contacts": {
"description": "Optional: up to 50 addresses you already trust (address book). 'to' is compared offline against them, so a lookalike of a contact is flagged even outside the scanned history.",
"items": {
"pattern": "^0x[0-9a-fA-F]{40}$",
"type": "string"
},
"maxItems": 50,
"type": "array"
},
"from": {
"description": "Sender address",
"pattern": "^0x[0-9a-fA-F]{40}$",
"type": "string"
},
"to": {
"description": "Intended recipient",
"pattern": "^0x[0-9a-fA-F]{40}$",
"type": "string"
}
},
"required": [
"from",
"to"
],
"type": "object"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
},
"method": {
"enum": [
"POST"
],
"type": "string"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method",
"bodyType",
"body"
],
"type": "object"
},
"output": {
"properties": {
"example": {
"properties": {
"contacts": {
"description": "Only present when contacts were sent",
"properties": {
"checked": {
"type": "integer"
},
"inContacts": {
"type": "boolean"
},
"lookalikes": {
"items": {
"properties": {
"contact": {
"type": "string"
},
"prefixMatch": {
"type": "integer"
},
"suffixMatch": {
"type": "integer"
}
},
"type": "object"
},
"type": "array"
}
},
"type": "object"
},
"coverage": {
"properties": {
"complete": {
"type": "boolean"
},
"coveragePct": {
"type": "number"
},
"lowCoverage": {
"description": "true when coveragePct < 10: almost nothing was scanned, so risk low does not mean safe (top reason explains; retry, pass contacts, or use /address/check/full)",
"type": "boolean"
},
"rpcCalls": {
"type": "integer"
},
"scannedFrom": {
"type": "integer"
},
"scannedTo": {
"type": "integer"
},
"transfersSeen": {
"type": "integer"
},
"windowBlocks": {
"type": "integer"
}
},
"type": "object"
},
"lookalikes": {
"items": {
"properties": {
"address": {
"type": "string"
},
"dustTransfers": {
"type": "integer"
},
"inbound": {
"type": "integer"
},
"lastBlock": {
"type": "integer"
},
"outbound": {
"type": "integer"
},
"pattern": {
"enum": [
"dust_or_zero_value",
"lookalike_counterparty"
],
"type": "string"
},
"realOut": {
"type": "integer"
},
"sampleTx": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"reasons": {
"items": {
"type": "string"
},
"type": "array"
},
"risk": {
"enum": [
"low",
"medium",
"high"
],
"type": "string"
},
"seenBefore": {
"type": "boolean"
}
},
"required": [
"risk",
"lookalikes",
"seenBefore",
"coverage"
],
"type": "object"
},
"type": {
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}
},
"required": [
"input"
],
"type": "object"
}