Wallet portfolio on Base (every token, priced) ($0.0045)
wallet_portfolioPAID ($0.0045 USDC via x402). What a Base address owns, in one call: the ETH balance read from the chain, every ERC-20 it holds with balance, market price and USD value, and a USD total. Tokens with no confident market price are listed but not counted; tokens flagged as airdropped spam (a well-known ticker from another contract, or a link or claim bait in the name) are listed, flagged and NOT counted. Send no body to get the wallet that pays. Very large wallets can time out (502, not charged). Without payment this returns the 402 challenge; the fiatdock-mcp npm package pays automatically. Any answer the tool cannot produce is >= 400 and is NOT charged.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| address | No | A 40-hex EVM address (0x…) on Base. Omit the whole body to get the paying wallet | |
| payment | No | Base64 of a single x402 v2 PaymentPayload (EIP-3009 transferWithAuthorization on Base USDC). OMIT it on the first call: the 402 you get back carries `howToPay.payloadTemplate` — the exact envelope to fill in — plus the price and the EIP-712 domain. Send it on the second call to complete the purchase; it is forwarded as the PAYMENT-SIGNATURE header, never as body data. Nothing is charged for the 402 itself, and a call that fails after payment settles nothing. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| eth | Yes | The native ETH balance (read from the chain), its price and USD value | |
| asOf | Yes | ISO time the token-balance index and the prices were read (the oldest of them) | |
| note | Yes | What the total counts, and its limits | |
| source | Yes | Where the data came from | |
| tokens | Yes | ERC-20 holdings, highest USD value first (up to 100) | |
| address | Yes | The address read | |
| network | Yes | Chain (base) | |
| defaulted | No | Present only when the body was empty: which subject the answer is for, and why | |
| truncated | Yes | True when more than 100 tokens were held, or more than one call reads (300); the counts and the total then cover the tokens read | |
| tokenCount | Yes | ERC-20 tokens held | |
| totalValueUsd | Yes | ETH + every priced, unflagged ERC-20, in USD | |
| pricedTokenCount | Yes | Tokens counted in the total: priced AND not flagged | |
| flaggedTokenCount | Yes | Tokens flagged as likely airdropped spam (a well-known Base ticker from another contract, or a link or claim bait in the name) — listed, never counted |