Wallet Counterparties
Relationship mapping for any Base address. The wallet's most recent native transactions (up to ~100, two explorer pages) are aggregated per counterparty into a ranked list: counterparty address, explorer-known name where one exists (exchanges, labeled protocols), number of interactions split into sent/received, total native value moved, first and last time seen in the sample, and up to 5 distinct methods used with that counterparty. Use it to see whether a wallet mostly talks to a DEX, a bridge, an exchange deposit address or a fixed set of private wallets — a strong prior when deciding to transact. Honest scope, stated in the output: this is a recent-activity sample from public explorer data, not a complete historical graph, and token-transfer-only relationships may not appear. Completes the AgentBIT wallet-intelligence shelf with wallet-screen, wallet-profile and wallet-transactions.
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/counterparties \
-H 'Content-Type: application/json' \
-d '{"address":"0x4395C7e383b7e05665aad7f36ed77c01923Dd965","top":5}'
Input schema
{
"type": "object",
"properties": {
"address": {
"type": "string",
"description": "EVM address on Base (0x + 40 hex)"
},
"top": {
"type": "integer",
"description": "Max counterparties to return (1-25, default 10)"
}
},
"required": [
"address"
]
}Output schema
{
"type": "object",
"properties": {
"address": {
"type": "string"
},
"network": {
"type": "string"
},
"sampled_transactions": {
"type": "integer"
},
"unique_counterparties_in_sample": {
"type": "integer"
},
"counterparties": {
"type": "array",
"items": {
"type": "object",
"properties": {
"address": {
"type": "string"
},
"name": {
"type": [
"string",
"null"
]
},
"interactions": {
"type": "integer"
},
"sent": {
"type": "integer"
},
"received": {
"type": "integer"
},
"total_value_eth": {
"type": "number"
},
"first_seen": {
"type": [
"string",
"null"
]
},
"last_seen": {
"type": [
"string",
"null"
]
},
"methods": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
},
"note": {
"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/wallet/counterparties", {
method: "POST",
headers: {"Content-Type": "application/json"},
body: JSON.stringify({"address":"0x4395C7e383b7e05665aad7f36ed77c01923Dd965","top":5})
});
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/counterparties",
json={"address":"0x4395C7e383b7e05665aad7f36ed77c01923Dd965","top":5})
print(r.json())
// PHP
$r = Http::withHeaders(['X-PAYMENT' => $signedPayment])
->post('https://agentbit.app/v1/wallet/counterparties',
array (
'address' => '0x4395C7e383b7e05665aad7f36ed77c01923Dd965',
'top' => 5,
));
$data = $r->json();