Returns JSON with a wallet's native and major-token balances on Ethereum, Base or Solana plus its latest transfers in and out, in one call, leaving airdrop spam out.
Use when you need a multi-chain wallet balance, a wallet portfolio or the recent transaction history of an address on Ethereum, Base or Solana.
Do not use for USD values, NFTs, DeFi positions, long-tail tokens or chains beyond Ethereum, Base and Solana.
Price: 0.005 USDC per call (x402, eip155:8453). Typical response time: 3000 ms (p95).
POST https://x402-gateway.blackwoodstate8.workers.dev/v1/wallet-portfolio. A request without payment gets 402 Payment Required with the
PAYMENT-REQUIRED header; any x402 client signs an EIP-3009 authorization and retries with
PAYMENT-SIGNATURE (or X-PAYMENT). Invalid input is answered with 400 and not charged.
curl -i -X POST https://x402-gateway.blackwoodstate8.workers.dev/v1/wallet-portfolio -H 'content-type: application/json' -d '{"address":"0xFf918CFB0690FdEd4224DBDab916F6E6F78882b7","chains":["base"],"historyLimit":2}'
| Pay to | 0x7977C8762F242873eBc7DF422d2d3FBdd15065ED |
|---|---|
| Asset | 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 (USDC) |
| Amount | 5000 atomic units (0.005 USDC) |
| Authorization window | 60 s |
Streamable HTTP at https://x402-gateway.blackwoodstate8.workers.dev/mcp, tool blackwood_wallet_portfolio. Payment goes in
_meta["x402/payment"]; without it the tool returns the payment requirements.
| Field | Type | Meaning |
|---|---|---|
address | string | Wallet address: 0x... for Ethereum and Base, or a Solana address, e.g. 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 |
chains (optional) | array | Chains to read (ethereum and base for a 0x address, solana for a Solana address, when omitted), e.g. ["base"] |
historyLimit (optional) | integer | Latest transfers to return per chain, 0 to 25 (10 when omitted), e.g. 5 |
Example:
{
"address": "0xFf918CFB0690FdEd4224DBDab916F6E6F78882b7",
"chains": [
"base"
],
"historyLimit": 2
}
Real example:
{
"address": "0xFf918CFB0690FdEd4224DBDab916F6E6F78882b7",
"ethereum": null,
"base": {
"native": {
"symbol": "ETH",
"balance": "0"
},
"tokens": [
{
"symbol": "USDC",
"contract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"decimals": 6,
"balance": "0.015"
}
],
"history": [
{
"hash": "0xeca4b84c7be1b01b92314dd139ba623f4065ea2d9af702cdca1a6e006fc92f09",
"time": "2026-10-17T23:55:53.000Z",
"direction": "in",
"counterparty": "0x87db3c25d1e8e40f8ef240d48a711b0c355cf8cf",
"asset": "USDC",
"amount": "0.005"
},
{
"hash": "0x618c2559d32eef4fa33af283a53db6e96dacd049c22a586a8dc4bc3a603326e4",
"time": "2026-10-17T23:54:41.000Z",
"direction": "in",
"counterparty": "0x87db3c25d1e8e40f8ef240d48a711b0c355cf8cf",
"asset": "USDC",
"amount": "0.005"
}
]
},
"solana": null,
"updatedAt": "2026-10-18T02:46:08.863Z",
"note": "Balances of the native coin and major tokens of each chain (a fixed list; airdrop spam and long-tail tokens are left out). History: the latest native and major-token transfers in and out; on Solana, the net change per transaction. Amounts are decimal strings in token units, without USD values."
}
{
"type": "object",
"properties": {
"address": {
"type": "string"
},
"ethereum": {
"anyOf": [
{
"type": "object",
"properties": {
"native": {
"type": "object",
"properties": {
"symbol": {
"type": "string"
},
"balance": {
"type": "string"
}
},
"required": [
"symbol",
"balance"
],
"additionalProperties": false
},
"tokens": {
"type": "array",
"items": {
"type": "object",
"properties": {
"symbol": {
"type": "string"
},
"contract": {
"type": "string"
},
"decimals": {
"type": "number"
},
"balance": {
"type": "string"
}
},
"required": [
"symbol",
"contract",
"decimals",
"balance"
],
"additionalProperties": false
}
},
"history": {
"type": "array",
"items": {
"type": "object",
"properties": {
"hash": {
"type": "string"
},
"time": {
"type": [
"string",
"null"
]
},
"direction": {
"type": "string",
"enum": [
"in",
"out",
"self"
]
},
"counterparty": {
"type": [
"string",
"null"
]
},
"asset": {
"type": "string"
},
"amount": {
"type": "string"
}
},
"required": [
"hash",
"time",
"direction",
"counterparty",
"asset",
"amount"
],
"additionalProperties": false
}
}
},
"required": [
"native",
"tokens",
"history"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"base": {
"anyOf": [
{
"type": "object",
"properties": {
"native": {
"type": "object",
"properties": {
"symbol": {
"type": "string"
},
"balance": {
"type": "string"
}
},
"required": [
"symbol",
"balance"
],
"additionalProperties": false
},
"tokens": {
"type": "array",
"items": {
"type": "object",
"properties": {
"symbol": {
"type": "string"
},
"contract": {
"type": "string"
},
"decimals": {
"type": "number"
},
"balance": {
"type": "string"
}
},
"required": [
"symbol",
"contract",
"decimals",
"balance"
],
"additionalProperties": false
}
},
"history": {
"type": "array",
"items": {
"type": "object",
"properties": {
"hash": {
"type": "string"
},
"time": {
"type": [
"string",
"null"
]
},
"direction": {
"type": "string",
"enum": [
"in",
"out",
"self"
]
},
"counterparty": {
"type": [
"string",
"null"
]
},
"asset": {
"type": "string"
},
"amount": {
"type": "string"
}
},
"required": [
"hash",
"time",
"direction",
"counterparty",
"asset",
"amount"
],
"additionalProperties": false
}
}
},
"required": [
"native",
"tokens",
"history"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"solana": {
"anyOf": [
{
"type": "object",
"properties": {
"native": {
"type": "object",
"properties": {
"symbol": {
"type": "string"
},
"balance": {
"type": "string"
}
},
"required": [
"symbol",
"balance"
],
"additionalProperties": false
},
"tokens": {
"type": "array",
"items": {
"type": "object",
"properties": {
"symbol": {
"type": "string"
},
"contract": {
"type": "string"
},
"decimals": {
"type": "number"
},
"balance": {
"type": "string"
}
},
"required": [
"symbol",
"contract",
"decimals",
"balance"
],
"additionalProperties": false
}
},
"history": {
"type": "array",
"items": {
"type": "object",
"properties": {
"hash": {
"type": "string"
},
"time": {
"type": [
"string",
"null"
]
},
"direction": {
"type": "string",
"enum": [
"in",
"out",
"self"
]
},
"counterparty": {
"type": [
"string",
"null"
]
},
"asset": {
"type": "string"
},
"amount": {
"type": "string"
}
},
"required": [
"hash",
"time",
"direction",
"counterparty",
"asset",
"amount"
],
"additionalProperties": false
}
}
},
"required": [
"native",
"tokens",
"history"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"updatedAt": {
"type": "string"
},
"note": {
"type": "string"
},
"next": {
"type": "object",
"properties": {
"service": {
"type": "string",
"description": "Service id of the suggested next paid call"
},
"tool": {
"type": "string",
"description": "MCP tool name of the same call"
},
"method": {
"type": "string",
"enum": [
"GET",
"POST"
]
},
"url": {
"type": "string",
"description": "Paid route of the next call"
},
"useWhen": {
"type": "string",
"description": "When the next call is the right one"
},
"sample": {
"type": "string",
"description": "Free fixed sample of the whole family"
}
},
"required": [
"service",
"tool",
"method",
"url",
"useWhen",
"sample"
],
"additionalProperties": false,
"description": "Suggested next paid call in the same family (call it in a loop when the task continues)"
}
},
"required": [
"address",
"ethereum",
"base",
"solana",
"updatedAt",
"note"
],
"additionalProperties": false
}Free schema and example: GET https://x402-gateway.blackwoodstate8.workers.dev/v1/wallet-portfolio.
OpenAPI 3.1 · llms.txt · All services