Agentic Portal

Wallet Portfolio Aggregation

blockchain
Serving

Wallet holdings across 12 chains in one call: native and known-token balances on Ethereum, Base, BNB Chain, Arbitrum, Monad, Robinhood Chain, Polygon, Avalanche, Plasma, Optimism, Solana and Hyperliquid. POST /v1/portfolio with {address} (0x or ENS) and optional chains; default is Ethereum only. Pay per request in USDC; no account, no API key.

Endpoint
POST https://test.agent.pocket.network/v1/wallet-portfolio/v1/portfolio
Price per call
$0.005 USD
Networks payable on
Base Sepolia (eip155:84532)
Protocol
rest

Calling it

The first call returns 402 Payment Required with the terms. Sign for those terms and retry the same request with the payment attached.

Example request

A real, working call — the request the service card verifies against.

curl -X POST https://test.agent.pocket.network/v1/wallet-portfolio/v1/portfolio \
  -H 'content-type: application/json' \
  -d '{"address":"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"}'
Example response

The response this call returned, captured 2026-09-25 15:53:35 UTC.

{
  "portal": {
    "provenance": "third-party-supplier",
    "serviceId": "wallet-portfolio",
    "schemaCheck": "unchecked"
  },
  "data": {
    "address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
    "chains": [
      {
        "chain": "ethereum",
        "chain_id": 1,
        "status": "ok",
        "coverage": "token-list",
        "native": {
          "symbol": "ETH",
          "balance": "6.717890894598020373",
          "balance_raw": "6717890894598020373"
        },
        "tokens": [
          {
            "symbol": "1INCH",
            "name": "1inch",
            "address": "0x111111111117dC0aa78b770fA6A738034120C302",
            "decimals": 18,
            "balance": "6.036695054183323219",
            "balance_raw": "6036695054183323219"
          },
          {
            "symbol": "AAVE",
            "name": "Aave",
            "address": "0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9",
            "decimals": 18,
            "balance": "0.01015207",
            "balance_raw": "10152070000000000"
          },
          {
            "symbol": "ACX",
            "name": "Across Protocol Token",
            "address": "0x44108f0223A3C3028F5Fe7AEC7f9bb2E66beF82F",
            "decimals": 18,
            "balance": "0.95979773080868235",
            "balance_raw": "959797730808682350"
          }
        ],
        "tokens_held": 67,
        "tokens_checked": 406,
        "token_calls_failed": 0,
        "token_list": "Uniswap Labs Default token list v22.21.0 (GPL-3.0), verified on chain 2026-09-24"
      }
    ],
    "summary": {
      "requested": 1,
      "ok": 1
    },
    "coverage_note": "EVM: native coin plus every token on the verified token list for that chain (coverage per chain: token-list, thin-token-list or native-only); Solana: every token account (names where known); Hyperliquid: spot balances and perp account.",
    "source": "on-chain reads (Multicall3 via public RPC; Solana public RPC; Hyperliquid info API)",
    "chain_id": 1,
    "balance_native": 6.71789089459802,
    "symbol": "ETH",
    "service": "wallet-portfolio"
  }
}

Try it

Make one real paid call from your own wallet — about $0.005 on Base Sepolia (eip155:84532). The wallet signs; nothing here holds a key. You'll see exactly what the service answers.

No browser wallet found. Install MetaMask, Rabby, or Coinbase Wallet to try a call here.

Supported methods

Methods the registry lists for this service. The portal forwards any call as sent; the supplier decides what it answers, and a delivered answer is settled.

Methods Wallet Portfolio Aggregation accepts, and whether each reads or writes.
MethodEffect
GET /v1/healthread
GET /v1/versionread
POST /v1/portfolioread

Schemas

Published by the service itself. The example above is generated from these.

Request schema
{
  "type": "object",
  "description": "The request body for POST /v1/portfolio.",
  "properties": {
    "address": {
      "type": "string",
      "description": "EVM 0x address or ENS name."
    },
    "solana_address": {
      "type": "string",
      "description": "Solana base58 address."
    },
    "chains": {
      "description": "\"all\", or a list of chain ids or names (ethereum, base, bsc, arbitrum, monad, robinhood, polygon, avalanche, plasma, optimism, solana, hyperliquid). Default: Ethereum only."
    }
  }
}
Response schema
{
  "type": "object",
  "description": "For POST /v1/portfolio, a JSON object with a `chains` array (per chain: status, coverage, native balance and tokens) and a `summary`. The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field."
}