Wallet Screening
Pre-transaction wallet screening for AI agents and compliance workflows. Every x402 payment involves a counterparty wallet — this tool answers 'is it safe to transact with this address?' in one call. Sanctions layer: the address is matched exactly against the digital-currency addresses published on the OFAC Specially Designated Nationals list (US Treasury) and the UN Security Council consolidated list, refreshed daily from the official sources and matched locally (deterministic, fast, any chain's address format). On-chain layer (EVM addresses): public Base RPC and Blockscout data — EOA vs contract, contract verification status, nonce and transaction count, native balance, explorer presence and public tags (phishing/scam/exploit tags raise the score sharply). Output is a 0-100 risk score, a clear/review/high verdict and named flags explaining every point of the score. A sanctioned match returns high/100 immediately. Screening uses public data only: a clear result is not proof of legitimacy, a flag is not proof of wrongdoing, and high-value decisions require human review.
Call with x402
1. Send the request. 2. Receive 402 with accepts[]. 3. Sign the payment and retry with the X-PAYMENT header.
curl -X POST https://agentbit.app/v1/compliance/wallet-screen \
-H 'Content-Type: application/json' \
-d '{"address":"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"}'
Input schema
{
"type": "object",
"properties": {
"address": {
"type": "string",
"description": "Wallet address to screen. EVM addresses (0x + 40 hex) get full on-chain signals; any chain's address format is checked against the sanctions lists."
}
},
"required": [
"address"
]
}Output schema
{
"type": "object",
"properties": {
"address": {
"type": "string"
},
"address_type": {
"type": "string",
"enum": [
"evm",
"other"
]
},
"network": {
"type": [
"string",
"null"
]
},
"sanctioned": {
"type": "boolean"
},
"sanctions_matches": {
"type": "array",
"items": {
"type": "object",
"properties": {
"list": {
"type": "string"
},
"programs": {
"type": [
"string",
"null"
]
},
"detail": {
"type": [
"string",
"null"
]
}
}
}
},
"on_chain": {
"type": [
"object",
"null"
],
"properties": {
"is_contract": {
"type": "boolean"
},
"contract_verified": {
"type": [
"boolean",
"null"
]
},
"eip7702_delegation": {
"type": [
"string",
"null"
],
"description": "Delegate contract address when the EOA carries an EIP-7702 delegation designator"
},
"nonce": {
"type": "integer"
},
"transactions_count": {
"type": [
"integer",
"null"
]
},
"balance_eth": {
"type": "number"
},
"seen_on_explorer": {
"type": [
"boolean",
"null"
]
},
"public_tags": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"risk_score": {
"type": "integer",
"minimum": 0,
"maximum": 100
},
"risk": {
"type": "string",
"enum": [
"clear",
"review",
"high"
]
},
"flags": {
"type": "array",
"items": {
"type": "string"
}
},
"lists_checked": {
"type": "array",
"items": {
"type": "string"
}
},
"disclaimer": {
"type": "string"
}
}
}Code examples
// JavaScript (x402-fetch)
import { wrapFetchWithPayment } from "x402-fetch";
const fetchWithPay = wrapFetchWithPayment(fetch, wallet);
const r = await fetchWithPay("https://agentbit.app/v1/compliance/wallet-screen", {
method: "POST",
headers: {"Content-Type": "application/json"},
body: JSON.stringify({"address":"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"})
});
console.log(await r.json());
# Python (x402 client)
from x402.clients.requests import x402_requests
s = x402_requests(account)
r = s.post("https://agentbit.app/v1/compliance/wallet-screen",
json={"address":"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"})
print(r.json())
// PHP
$r = Http::withHeaders(['X-PAYMENT' => $signedPayment])
->post('https://agentbit.app/v1/compliance/wallet-screen',
array (
'address' => '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045',
));
$data = $r->json();