Wallet Profile
Wallet profiling for agents that need to know who they are dealing with — or size up any address on Base. One call combines public RPC state (native ETH balance, nonce, account type including EIP-7702 delegated EOAs with the delegate address) with Blockscout enrichment: total transaction count, up to 25 ERC-20 token holdings sorted by USD value (amount + USD where the explorer knows a price, with an honest truncation flag), explorer presence and public tags. Comparable proprietary wallet profilers charge $0.01 per endpoint and split this across several calls; this returns the profile in one call at $0.01 from open data. Part of the AgentBIT wallet-intelligence shelf: wallet-screen (sanctions + risk), wallet-profile (state), wallet-transactions (history), wallet-counterparties (relationships).
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/wallet/profile \
-H 'Content-Type: application/json' \
-d '{"address":"0x4395C7e383b7e05665aad7f36ed77c01923Dd965"}'
Input schema
{
"type": "object",
"properties": {
"address": {
"type": "string",
"description": "EVM address on Base (0x + 40 hex)"
}
},
"required": [
"address"
]
}Output schema
{
"type": "object",
"properties": {
"address": {
"type": "string"
},
"network": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"eoa",
"contract",
"delegated-eoa"
]
},
"eip7702_delegation": {
"type": [
"string",
"null"
]
},
"balance_eth": {
"type": "number"
},
"nonce": {
"type": "integer"
},
"transactions_count": {
"type": [
"integer",
"null"
]
},
"seen_on_explorer": {
"type": [
"boolean",
"null"
]
},
"public_tags": {
"type": "array",
"items": {
"type": "string"
}
},
"erc20_holdings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"symbol": {
"type": "string"
},
"address": {
"type": "string"
},
"amount": {
"type": "number"
},
"usd_value": {
"type": [
"number",
"null"
]
}
}
}
},
"erc20_holdings_usd_total": {
"type": "number"
},
"erc20_holdings_truncated": {
"type": "boolean"
}
}
}Code examples
// JavaScript (x402-fetch)
import { wrapFetchWithPayment } from "x402-fetch";
const fetchWithPay = wrapFetchWithPayment(fetch, wallet);
const r = await fetchWithPay("https://agentbit.app/v1/wallet/profile", {
method: "POST",
headers: {"Content-Type": "application/json"},
body: JSON.stringify({"address":"0x4395C7e383b7e05665aad7f36ed77c01923Dd965"})
});
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/wallet/profile",
json={"address":"0x4395C7e383b7e05665aad7f36ed77c01923Dd965"})
print(r.json())
// PHP
$r = Http::withHeaders(['X-PAYMENT' => $signedPayment])
->post('https://agentbit.app/v1/wallet/profile',
array (
'address' => '0x4395C7e383b7e05665aad7f36ed77c01923Dd965',
));
$data = $r->json();