{"skill":{"slug":"web3-data","displayName":"web3-data-skill","summary":"Explore Web3 on-chain data using Chainbase APIs. Use this skill when the user asks about blockchain data, token holders, wallet addresses, token prices, NFTs...","description":"---\nname: web3-data\ndescription: >\n  Explore Web3 on-chain data using Chainbase APIs. Use this skill when the user asks about\n  blockchain data, token holders, wallet addresses, token prices, NFTs, ENS domains, transactions,\n  DeFi portfolios, or any on-chain analytics. Triggers include: \"top holders of\", \"who holds\",\n  \"wallet address\", \"address labels\", \"token price\", \"token transfers\", \"NFT owners\",\n  \"ENS domain\", \"on-chain data\", \"blockchain query\", \"SQL query on-chain\", or any request\n  to look up, analyze, or explore Web3/blockchain data across Ethereum, BSC, Polygon, Arbitrum,\n  Optimism, Base, Avalanche, zkSync, and other EVM chains.\n---\n\n# Web3 Data Explorer (Chainbase)\n\nQuery on-chain data via Chainbase Web3 API and SQL API.\n\n## Quick Reference\n\n**API Key**: Use env `CHAINBASE_API_KEY`, falls back to `demo`. If rate-limited, direct user to https://console.chainbase.com to upgrade.\n\n**Script**: `scripts/chainbase.sh <endpoint> [params...]`\n\n```bash\n# Top token holders\nscripts/chainbase.sh /v1/token/top-holders chain_id=1 contract_address=0xdAC17F958D2ee523a2206206994597C13D831ec7 limit=10\n\n# Address labels\nscripts/chainbase.sh /v1/address/labels chain_id=1 address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045\n\n# SQL query\nscripts/chainbase.sh /query/execute --sql=\"SELECT * FROM ethereum.blocks ORDER BY number DESC LIMIT 5\"\n```\n\n## Chain IDs\n\n| Chain | ID | Chain | ID |\n|---|---|---|---|\n| Ethereum | 1 | Optimism | 10 |\n| BSC | 56 | Base | 8453 |\n| Polygon | 137 | zkSync | 324 |\n| Avalanche | 43114 | Merlin | 4200 |\n| Arbitrum | 42161 | | |\n\nDefault to Ethereum (chain_id=1) unless user specifies otherwise.\n\n## Routing Logic\n\nMatch user intent to the right endpoint:\n\n| User wants | Endpoint |\n|---|---|\n| Top token holders / who holds a token | `GET /v1/token/top-holders` |\n| List of holder addresses | `GET /v1/token/holders` |\n| Token price | `GET /v1/token/price` |\n| Historical token price | `GET /v1/token/price/history` |\n| Token info (name, symbol, supply) | `GET /v1/token/metadata` |\n| Token transfer history | `GET /v1/token/transfers` |\n| Address labels/tags | `GET /v1/address/labels` |\n| Wallet transaction history | `GET /v1/account/txs` |\n| Single transaction detail | `GET /v1/tx/detail` |\n| Native token balance (ETH/BNB) | `GET /v1/account/balance` |\n| ERC20 token balances of wallet | `GET /v1/account/tokens` |\n| NFTs owned by wallet | `GET /v1/account/nfts` |\n| DeFi portfolio positions | `GET /v1/account/portfolios` |\n| ENS domain lookup | `GET /v1/ens/records` or `/v1/ens/reverse` |\n| NFT metadata/owner/rarity | `GET /v1/nft/metadata`, `/owner`, `/rarity` |\n| Trending NFT collections | `GET /v1/nft/collection/trending` |\n| **Anything not covered above** | **SQL API** (`POST /query/execute`) |\n\n## Workflow\n\n1. **Identify intent** — Determine what data the user needs\n2. **Resolve identifiers** — If user gives token name (e.g. \"USDT\"), look up the contract address. Common tokens:\n   - USDT: `0xdAC17F958D2ee523a2206206994597C13D831ec7` (ETH)\n   - USDC: `0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48` (ETH)\n   - WETH: `0xC02aaA39b223FE8D0A0e5c4F27eAD9083C756Cc2` (ETH)\n   - DAI: `0x6B175474E89094C44Da98b954EedeAC495271d0F` (ETH)\n   - WBTC: `0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599` (ETH)\n   - If unknown, use `GET /v1/token/metadata` or ask the user for the contract address\n3. **Select endpoint** — Use the routing table above; fall back to SQL API for complex/custom queries\n4. **Execute** — Run via `scripts/chainbase.sh` or direct `curl`\n5. **Present results** — Format data clearly with tables for lists, highlight key insights\n\n## SQL API Fallback\n\nWhen fixed endpoints don't cover the query, translate user intent to SQL:\n\n```bash\nscripts/chainbase.sh /query/execute --sql=\"SELECT from_address, SUM(value) as total FROM ethereum.token_transfers WHERE contract_address = '0x...' GROUP BY from_address ORDER BY total DESC LIMIT 20\"\n```\n\nCommon table patterns (replace `ethereum` with chain name):\n- `{chain}.blocks` — Block data\n- `{chain}.transactions` — Transactions\n- `{chain}.token_transfers` — ERC20 transfers\n- `{chain}.token_metas` — Token metadata\n- `{chain}.logs` — Event logs\n\nSQL constraints: max 100,000 results per query.\n\nFor complete endpoint parameters and response schemas, read [references/api-endpoints.md](references/api-endpoints.md).\n","topics":["Wallet","SQL Query"],"tags":{"latest":"1.0.0"},"stats":{"comments":0,"downloads":1090,"installsAllTime":41,"installsCurrent":1,"stars":0,"versions":1},"createdAt":1771915736882,"updatedAt":1778992797803},"latestVersion":{"version":"1.0.0","createdAt":1771915736882,"changelog":"- Initial release of the web3-data skill.\n- Enables exploration of on-chain Web3 data using Chainbase APIs.\n- Supports queries for token holders, wallet addresses, token prices, NFTs, ENS domains, DeFi portfolios, and other blockchain analytics across multiple EVM chains.\n- Provides clear endpoint selection and quick reference for common data lookups.\n- Includes SQL API fallback for complex or custom blockchain data queries.","license":null},"metadata":null,"owner":{"handle":"lxcong","userId":"s17bkxrwh6jgec7y6pkyfjcn9x85mqv6","displayName":"lxcong","image":"https://avatars.githubusercontent.com/u/8024426?v=4"},"moderation":null}