NFT portfolio
NFT + wallet snapshot: NFT holdings, native balance, and ETH price for a given address in one call.
3 tools run server-side in one request. You pay once, settle once, and get a single response - no orchestration, no per-step payments, and a partial-success envelope if any step fails. USDC over x402 on any supported chain.
When to use this pack
Quick portfolio view - what NFTs does this address hold, what's the wallet balance, and what's ETH worth.
Tools in this pack
All 3 run inside the single $0.005 call above. Each is also callable on its own if you only need one part.
- NFT holdings for an address POST /api/nft-holdings Return the NFTs owned by a wallet address on a given network. Each row carries the collection name, contract address, token ID, image URL (where available), and ERC-721 vs ERC-1155 standard. Up to 100 per call - paginate with `pageKey` from the previous response.
- Wallet balance (native + ERC-20) POST /api/wallet-balance Look up the native coin balance (ETH/MATIC) plus every ERC-20 holding for a wallet address on Ethereum, Base, Polygon, Arbitrum, or Optimism. Returns clean decimal balances (already scaled by token decimals) plus symbol and contract - ready to display in a UI or feed into a portfolio tool.
- Crypto price GET /api/crypto-price Live crypto prices for one or many coins in any vs_currency (usd, eur, btc, eth, etc). Returns last price, 24h change %, 24h volume, and market cap per coin. The simplest crypto price read - for ranked market-cap tables use crypto-market, for candles use crypto-history. Accepts ticker symbols (BTC, ETH, SOL) for the top ~50 by market cap, or canonical CoinGecko ids (e.g. "render-token") for any of the ~15k tracked coins. Batched: up to 25 coins per call. Backed by CoinGecko's API (this server's Demo key when configured, else the shared keyless rate).
Bought one at a time, these 3 tools cost $0.005 together; the pack is that sum less a 10% bundle discount, rounded up to the $0.001 settlement floor, which is $0.005.
Workflow
- Pull NFT holdings for the address on Base.
- Get the native wallet balance on Base.
- Get ETH price for portfolio valuation.
Arguments
| Name | Required | Description | Example |
|---|---|---|---|
address | yes | Wallet address (0x…) | 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 |
What one call returns
A JSON object with pack, args, steps, summary; steps holds one entry per tool (nft-holdings, wallet-balance, crypto-price), each with its own result or error. Full example on the API page.
Call it directly
Any x402 client pays the 402 and gets the whole workflow back in one response. With the agent402-client SDK (npm i agent402-client, an ES module):
import { Agent402 } from "agent402-client";
// payFetch: an x402-wrapped fetch your wallet signs (@x402/fetch).
// Tools on the free tier need no options: new Agent402() pays them by proof-of-work.
// an existing prepaid credits key also works: new Agent402({ creditsKey })
const client = new Agent402({ fetch: payFetch });
const result = await client.call("skill-nft-portfolio", {"address":"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"});
Run it in Claude
claude mcp add agent402 -s user -- npx -y agent402-mcp@latest
Then paste this prompt into Claude:
Show me the NFT portfolio for 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 using Agent402's nft-portfolio skill pack. Get (1) NFT holdings, (2) wallet balance, (3) ETH price. Summarize the collection.