{
  "serviceId": "wallet-portfolio",
  "displayName": "Wallet Portfolio Aggregation",
  "description": "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.",
  "category": "blockchain",
  "resourceUrl": "https://test.agent.pocket.network/v1/wallet-portfolio",
  "priceUsd": "0.005000",
  "priceVersion": 1,
  "rails": [
    {
      "id": "base",
      "network": "eip155:84532",
      "chainId": 84532,
      "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
      "tokenDecimals": 6,
      "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
    }
  ],
  "paymentNetworks": [
    "eip155:84532"
  ],
  "paymentProtocols": [
    "x402"
  ],
  "protocols": [
    "rest"
  ],
  "inputSchema": {
    "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."
      }
    }
  },
  "outputSchema": {
    "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."
  },
  "methods": {
    "GET /v1/health": "read",
    "GET /v1/version": "read",
    "POST /v1/portfolio": "read"
  },
  "example": {
    "method": "POST",
    "path": "/v1/portfolio",
    "request": {
      "address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
    },
    "response": {
      "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"
      }
    },
    "capturedAt": "2026-09-25T15:53:35Z"
  },
  "firstParty": true,
  "networks": [
    "eip155:84532"
  ],
  "serving": true,
  "page": "https://test.agent.pocket.network/services/wallet-portfolio",
  "descriptor": "https://test.agent.pocket.network/services/wallet-portfolio/descriptor.json"
}