{
  "schemaVersion": "1.0",
  "item": {
    "slug": "openscan-crypto",
    "name": "OpenScan Crypto",
    "source": "tencent",
    "type": "skill",
    "category": "数据分析",
    "sourceUrl": "https://clawhub.ai/josealoha666/openscan-crypto",
    "canonicalUrl": "https://clawhub.ai/josealoha666/openscan-crypto",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/openscan-crypto",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=openscan-crypto",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "SKILL.md",
      "install.sh",
      "package.json",
      "scripts/crypto-cli.mjs",
      "scripts/lib/abiDecoder.mjs"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/openscan-crypto"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/openscan-crypto",
    "agentPageUrl": "https://openagent3.xyz/skills/openscan-crypto/agent",
    "manifestUrl": "https://openagent3.xyz/skills/openscan-crypto/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/openscan-crypto/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "OpenScan Crypto Network Skill",
        "body": "Navigate and query crypto networks using OpenScan's infrastructure. Data comes from @openscan/metadata (CDN) and @openscan/network-connectors (RPC)."
      },
      {
        "title": "CLI Location",
        "body": "skills/openscan-crypto/scripts/crypto-cli.mjs\n\nRun with: node <skill_dir>/scripts/crypto-cli.mjs <command> [args]"
      },
      {
        "title": "List networks",
        "body": "crypto-cli.mjs networks"
      },
      {
        "title": "List RPC endpoints",
        "body": "crypto-cli.mjs rpcs <chain>              # All public RPCs\ncrypto-cli.mjs rpcs <chain> --private    # Only tracking:none RPCs"
      },
      {
        "title": "Look up token",
        "body": "crypto-cli.mjs token <symbol|address>                # Search all mainnets\ncrypto-cli.mjs token <symbol|address> --chain <chain> # Specific chain"
      },
      {
        "title": "Event signatures",
        "body": "crypto-cli.mjs events [--chain <chain>]     # List known events\ncrypto-cli.mjs decode-event <topic_hash>    # Decode one topic"
      },
      {
        "title": "Labeled addresses & profiles",
        "body": "crypto-cli.mjs addresses [--chain <chain>]\ncrypto-cli.mjs profile networks ethereum\ncrypto-cli.mjs profile apps openscan"
      },
      {
        "title": "RPC Management Commands",
        "body": "RPCs are persisted in ~/.config/openscan-crypto/rpc-config.json. On first use, the skill auto-fetches from @openscan/metadata and selects privacy-first RPCs. All subsequent commands use the persisted config."
      },
      {
        "title": "Fetch/sync RPCs from metadata",
        "body": "crypto-cli.mjs rpc-fetch                # Sync all networks from @openscan/metadata\ncrypto-cli.mjs rpc-fetch ethereum       # Sync a specific network\n\nResolves the latest metadata version dynamically from npm. Auto-selects RPCs (privacy-first, open-source preferred)."
      },
      {
        "title": "List RPCs",
        "body": "crypto-cli.mjs rpc-list ethereum              # Show active (configured) RPCs\ncrypto-cli.mjs rpc-list ethereum --all        # Show ALL available RPCs from metadata\ncrypto-cli.mjs rpc-list ethereum --all --private  # Only privacy (tracking:none)"
      },
      {
        "title": "Configure RPCs",
        "body": "crypto-cli.mjs rpc-set ethereum --strategy race         # Set strategy: fallback|race|parallel\ncrypto-cli.mjs rpc-set ethereum --add https://my-rpc.com  # Add custom RPC\ncrypto-cli.mjs rpc-set ethereum --remove https://rpc.com  # Remove an RPC\ncrypto-cli.mjs rpc-set ethereum --rpcs url1 url2 url3   # Replace all RPCs\ncrypto-cli.mjs rpc-set ethereum --private-only           # Keep only tracking:none\ncrypto-cli.mjs rpc-set ethereum --reset                  # Reset to metadata defaults\ncrypto-cli.mjs rpc-set --default-strategy parallel       # Set global default strategy\ncrypto-cli.mjs rpc-set --max-rpcs 3                      # Set global max RPCs per network"
      },
      {
        "title": "Reorder RPCs",
        "body": "crypto-cli.mjs rpc-order ethereum --benchmark            # Auto-sort by latency (fastest first)\ncrypto-cli.mjs rpc-order ethereum --swap 1 3             # Swap positions 1 and 3\ncrypto-cli.mjs rpc-order ethereum <url> --position 1     # Move URL to position 1"
      },
      {
        "title": "Test/benchmark RPCs",
        "body": "crypto-cli.mjs rpc-test ethereum              # Test all configured RPCs\ncrypto-cli.mjs rpc-test ethereum --all        # Test ALL available from metadata\ncrypto-cli.mjs rpc-test ethereum <url>        # Test a specific URL\n\nTests latency, block number, client version. Detects out-of-sync nodes via block delta."
      },
      {
        "title": "View/set default strategy",
        "body": "crypto-cli.mjs rpc-strategy                   # View defaults + per-network overrides\ncrypto-cli.mjs rpc-strategy parallel           # Set global default to parallel"
      },
      {
        "title": "Aggregate address information",
        "body": "crypto-cli.mjs address-info <address>              # Full address info\ncrypto-cli.mjs address-info vitalik.eth            # ENS name supported\ncrypto-cli.mjs address-info <address> --chain base # On another chain\ncrypto-cli.mjs address-info <address> --private    # Privacy RPCs only\n\nReturns in a single call:\n\ntype: EOA or contract (with codeSize if contract)\nbalance: native balance (ETH/MATIC/BNB, etc.)\ntxCount: total transaction count (nonce)\nensName: primary ENS name via reverse lookup (Ethereum mainnet only)\nlabel: metadata label if the address is a known entity (name, tags, description, website)\nexplorerLink: direct link to the OpenScan explorer\n\nThis command fires balance, code, and nonce in parallel, then enriches the result with ENS reverse resolution and metadata label lookup."
      },
      {
        "title": "On-chain token price (100% on-chain, no CoinGecko)",
        "body": "crypto-cli.mjs price                    # ETH price (default)\ncrypto-cli.mjs price BTC                # BTC price (via WBTC pools on mainnet)\ncrypto-cli.mjs price --chain polygon    # MATIC price\ncrypto-cli.mjs price --chain bnb        # BNB price\ncrypto-cli.mjs price --chain arbitrum   # ETH price (fetched from mainnet for L2s)\n\nFetches prices from Uniswap V2-style DEX pools. Uses median of multiple pools for manipulation resistance. Returns per-pool breakdown."
      },
      {
        "title": "Decode transaction (function call + events)",
        "body": "crypto-cli.mjs decode-tx <0xhash>                  # Decode function + events\ncrypto-cli.mjs decode-tx <0xhash> --chain arbitrum  # On another chain\n\nDecodes transaction input data into human-readable function name + parameters. Also decodes all event logs in the receipt. Uses local database of known selectors + 4byte.directory fallback. Identifies tx type: transfer, contract_call, or contract_creation.\n\nStrategies:\n\nfallback — Try RPCs in order, move to next on failure. Default. Most conservative.\nrace — Fire all RPCs simultaneously, use fastest response. Best for latency.\nparallel — Fire all, compare results, detect inconsistencies. Trustless verification."
      },
      {
        "title": "EVM Query Commands",
        "body": "All EVM commands accept --chain <chain> (default: ethereum) and --private (use tracking:none RPCs only)."
      },
      {
        "title": "Check balance",
        "body": "crypto-cli.mjs balance <address>                           # Native balance (ETH)\ncrypto-cli.mjs balance vitalik.eth                          # ENS name supported\ncrypto-cli.mjs balance <address> --token USDC              # + ERC20 balance\ncrypto-cli.mjs balance <address> --chain arbitrum           # On Arbitrum\ncrypto-cli.mjs balance <address> --token USDC --chain base  # USDC on Base\n\nReturns native balance in human-readable format (e.g., \"32.12 ETH\") plus raw wei. Token balance includes symbol, decimals, and formatted amount."
      },
      {
        "title": "Multi-chain balance",
        "body": "crypto-cli.mjs multi-balance <address>                     # All mainnet chains\ncrypto-cli.mjs multi-balance vitalik.eth                    # ENS supported\ncrypto-cli.mjs multi-balance <address> --private           # Privacy RPCs only\n\nQueries the same address across ALL mainnet EVM chains in parallel. Shows balances sorted by chains with funds first."
      },
      {
        "title": "Get block info",
        "body": "crypto-cli.mjs block                    # Latest block\ncrypto-cli.mjs block latest             # Same\ncrypto-cli.mjs block 19000000           # By number\ncrypto-cli.mjs block 0xabcdef...        # By hash (66 chars)\n\nReturns: number, hash, timestamp, gasUsed, gasLimit, baseFee, txCount, miner."
      },
      {
        "title": "Transaction details",
        "body": "crypto-cli.mjs tx <0xhash>\ncrypto-cli.mjs tx <0xhash> --chain arbitrum\n\nReturns: hash, blockNumber, from, to, value (in ETH), gasPrice, nonce, input data."
      },
      {
        "title": "Transaction receipt",
        "body": "crypto-cli.mjs receipt <0xhash>\n\nReturns: status (success/reverted), gasUsed, effectiveGasPrice, contract address (if deploy), logs with decoded event names from metadata."
      },
      {
        "title": "Gas prices",
        "body": "crypto-cli.mjs gas                      # Ethereum gas\ncrypto-cli.mjs gas --chain base         # Base gas\ncrypto-cli.mjs gas --chain arbitrum     # Arbitrum gas\n\nReturns: gasPrice, maxPriorityFeePerGas, baseFee — all in gwei."
      },
      {
        "title": "Read contract (eth_call)",
        "body": "crypto-cli.mjs call <to_address> <calldata_hex> [--block <tag>]\n\nFor raw contract reads. Use for custom ABI calls."
      },
      {
        "title": "Event logs",
        "body": "crypto-cli.mjs logs --address <contract> --topic <topic_hash> [--from <block>] [--to <block>]\n\nReturns up to 50 logs. Default range: latest block only."
      },
      {
        "title": "Check if address is contract",
        "body": "crypto-cli.mjs code <address>\n\nReturns: isContract (bool), codeSize, truncated bytecode."
      },
      {
        "title": "Transaction count (nonce)",
        "body": "crypto-cli.mjs nonce <address>"
      },
      {
        "title": "Bitcoin Commands",
        "body": "Bitcoin queries use the mempool.space REST API (no JSON-RPC needed)."
      },
      {
        "title": "Blockchain overview",
        "body": "crypto-cli.mjs btc-info\n\nReturns: block height, best hash, difficulty, mempool stats, recommended fees — all in one call."
      },
      {
        "title": "Block details",
        "body": "crypto-cli.mjs btc-block                # Latest block\ncrypto-cli.mjs btc-block 800000         # By height\ncrypto-cli.mjs btc-block 0000000...     # By hash (64 chars)"
      },
      {
        "title": "Transaction details",
        "body": "crypto-cli.mjs btc-tx <txid>\n\nReturns: confirmation status, fee (sats + BTC), fee rate (sat/vB), inputs/outputs with addresses and values."
      },
      {
        "title": "Mempool state",
        "body": "crypto-cli.mjs btc-mempool\n\nReturns: tx count, vsize, total fees, recommended fee rates, 5 most recent txs."
      },
      {
        "title": "Fee estimates",
        "body": "crypto-cli.mjs btc-fee\n\nReturns: fastest, halfHour, hour, economy, minimum — all in sat/vB."
      },
      {
        "title": "Address balance",
        "body": "crypto-cli.mjs btc-address <address>\n\nReturns: balance (BTC + sats), total received/sent, tx count, UTXO count."
      },
      {
        "title": "Chain Aliases",
        "body": "AliasChain IDNetworkethereum, eth, mainnet1Ethereumoptimism, op10Optimismbnb, bsc56BNB Smart Chainpolygon, matic, pol137Polygonbase8453Basearbitrum, arb42161Arbitrum Onesepolia11155111Sepolia Testnetbitcoin, btcbip122:...Bitcoin Mainnet\n\nNumeric chain IDs also work (e.g., 1, 42161)."
      },
      {
        "title": "Output",
        "body": "All commands output JSON to stdout. The agent can parse and format as needed.\n\nNumeric values are pre-formatted:\n\nBalances: human-readable (e.g., \"32.12 ETH\") + raw wei\nGas: in gwei\nTimestamps: ISO 8601\nHex numbers: converted to decimal strings"
      },
      {
        "title": "Explorer Links",
        "body": "EVM commands that return on-chain entities include an explorerLink field with a direct URL to openscan.eth.link:\n\nCommandexplorerLink points tobalanceaddress pagemulti-balanceaddress page per chainblockblock pagetxtransaction pagereceipttransaction pagecodeaddress pagenonceaddress pagetokentoken contract address pagelogstransaction page per logbtc-blockBitcoin block pagebtc-txBitcoin transaction pagebtc-addressBitcoin address pageaddress-infoaddress page\n\nURL patterns:\n\nEVM: https://openscan.eth.link/#/{chainId}/{type}/{id}\nBitcoin mainnet: https://openscan.eth.link/#/btc/{type}/{id}\nBitcoin testnet4: https://openscan.eth.link/#/tbtc/{type}/{id}\n\nAlways show this link to the user so they can explore the data further in the UI."
      },
      {
        "title": "Caching",
        "body": "Metadata cached in ~/.cache/openscan-crypto/ (6h TTL). RPC responses are NOT cached."
      },
      {
        "title": "ENS Support",
        "body": "All EVM address commands accept .eth names (e.g., vitalik.eth). ENS is resolved on Ethereum mainnet automatically. Works with: balance, multi-balance, code, nonce."
      },
      {
        "title": "Security",
        "body": "READ-ONLY — no transaction signing, no private key handling\nPublic RPCs — no API keys needed\n--private flag restricts to tracking:none RPCs\nDangerous methods (sendTransaction, etc.) are NOT exposed"
      },
      {
        "title": "Natural Language Mapping",
        "body": "User saysCommand\"What's Vitalik's ETH balance?\"balance 0xd8dA...96045\"How much USDC does 0x... have on Base?\"balance 0x... --token USDC --chain base\"Show the latest Ethereum block\"block latest\"What's gas like on Arbitrum?\"gas --chain arbitrum\"Look up this transaction\"tx 0x...\"Did this tx succeed?\"receipt 0x...\"Is 0x... a contract?\"code 0x...\"What networks does OpenScan support?\"networks\"What's the USDC contract address?\"token USDC\"Show privacy-friendly Polygon RPCs\"rpcs polygon --private\"Show vitalik.eth balance on all chains\"multi-balance vitalik.eth\"What's the latest Bitcoin block?\"btc-info or btc-block\"Tell me everything about this address\"address-info 0x...\"Is 0x... a wallet or a contract?\"address-info 0x...\"What's the ENS name for 0x...?\"address-info 0x... (reverse ENS)\"Show me info for vitalik.eth\"address-info vitalik.eth\"How full is the Bitcoin mempool?\"btc-mempool\"What are Bitcoin fees right now?\"btc-fee\"Look up this Bitcoin transaction\"btc-tx <txid>\"Check Satoshi's balance\"btc-address 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa\"Show Bitcoin block 800000\"btc-block 800000"
      }
    ],
    "body": "OpenScan Crypto Network Skill\n\nNavigate and query crypto networks using OpenScan's infrastructure. Data comes from @openscan/metadata (CDN) and @openscan/network-connectors (RPC).\n\nCLI Location\nskills/openscan-crypto/scripts/crypto-cli.mjs\n\n\nRun with: node <skill_dir>/scripts/crypto-cli.mjs <command> [args]\n\nMetadata Commands\nList networks\ncrypto-cli.mjs networks\n\nList RPC endpoints\ncrypto-cli.mjs rpcs <chain>              # All public RPCs\ncrypto-cli.mjs rpcs <chain> --private    # Only tracking:none RPCs\n\nLook up token\ncrypto-cli.mjs token <symbol|address>                # Search all mainnets\ncrypto-cli.mjs token <symbol|address> --chain <chain> # Specific chain\n\nEvent signatures\ncrypto-cli.mjs events [--chain <chain>]     # List known events\ncrypto-cli.mjs decode-event <topic_hash>    # Decode one topic\n\nLabeled addresses & profiles\ncrypto-cli.mjs addresses [--chain <chain>]\ncrypto-cli.mjs profile networks ethereum\ncrypto-cli.mjs profile apps openscan\n\nRPC Management Commands\n\nRPCs are persisted in ~/.config/openscan-crypto/rpc-config.json. On first use, the skill auto-fetches from @openscan/metadata and selects privacy-first RPCs. All subsequent commands use the persisted config.\n\nFetch/sync RPCs from metadata\ncrypto-cli.mjs rpc-fetch                # Sync all networks from @openscan/metadata\ncrypto-cli.mjs rpc-fetch ethereum       # Sync a specific network\n\n\nResolves the latest metadata version dynamically from npm. Auto-selects RPCs (privacy-first, open-source preferred).\n\nList RPCs\ncrypto-cli.mjs rpc-list ethereum              # Show active (configured) RPCs\ncrypto-cli.mjs rpc-list ethereum --all        # Show ALL available RPCs from metadata\ncrypto-cli.mjs rpc-list ethereum --all --private  # Only privacy (tracking:none)\n\nConfigure RPCs\ncrypto-cli.mjs rpc-set ethereum --strategy race         # Set strategy: fallback|race|parallel\ncrypto-cli.mjs rpc-set ethereum --add https://my-rpc.com  # Add custom RPC\ncrypto-cli.mjs rpc-set ethereum --remove https://rpc.com  # Remove an RPC\ncrypto-cli.mjs rpc-set ethereum --rpcs url1 url2 url3   # Replace all RPCs\ncrypto-cli.mjs rpc-set ethereum --private-only           # Keep only tracking:none\ncrypto-cli.mjs rpc-set ethereum --reset                  # Reset to metadata defaults\ncrypto-cli.mjs rpc-set --default-strategy parallel       # Set global default strategy\ncrypto-cli.mjs rpc-set --max-rpcs 3                      # Set global max RPCs per network\n\nReorder RPCs\ncrypto-cli.mjs rpc-order ethereum --benchmark            # Auto-sort by latency (fastest first)\ncrypto-cli.mjs rpc-order ethereum --swap 1 3             # Swap positions 1 and 3\ncrypto-cli.mjs rpc-order ethereum <url> --position 1     # Move URL to position 1\n\nTest/benchmark RPCs\ncrypto-cli.mjs rpc-test ethereum              # Test all configured RPCs\ncrypto-cli.mjs rpc-test ethereum --all        # Test ALL available from metadata\ncrypto-cli.mjs rpc-test ethereum <url>        # Test a specific URL\n\n\nTests latency, block number, client version. Detects out-of-sync nodes via block delta.\n\nView/set default strategy\ncrypto-cli.mjs rpc-strategy                   # View defaults + per-network overrides\ncrypto-cli.mjs rpc-strategy parallel           # Set global default to parallel\n\nAddress Info Command\nAggregate address information\ncrypto-cli.mjs address-info <address>              # Full address info\ncrypto-cli.mjs address-info vitalik.eth            # ENS name supported\ncrypto-cli.mjs address-info <address> --chain base # On another chain\ncrypto-cli.mjs address-info <address> --private    # Privacy RPCs only\n\n\nReturns in a single call:\n\ntype: EOA or contract (with codeSize if contract)\nbalance: native balance (ETH/MATIC/BNB, etc.)\ntxCount: total transaction count (nonce)\nensName: primary ENS name via reverse lookup (Ethereum mainnet only)\nlabel: metadata label if the address is a known entity (name, tags, description, website)\nexplorerLink: direct link to the OpenScan explorer\n\nThis command fires balance, code, and nonce in parallel, then enriches the result with ENS reverse resolution and metadata label lookup.\n\nPrice Commands\nOn-chain token price (100% on-chain, no CoinGecko)\ncrypto-cli.mjs price                    # ETH price (default)\ncrypto-cli.mjs price BTC                # BTC price (via WBTC pools on mainnet)\ncrypto-cli.mjs price --chain polygon    # MATIC price\ncrypto-cli.mjs price --chain bnb        # BNB price\ncrypto-cli.mjs price --chain arbitrum   # ETH price (fetched from mainnet for L2s)\n\n\nFetches prices from Uniswap V2-style DEX pools. Uses median of multiple pools for manipulation resistance. Returns per-pool breakdown.\n\nDecode transaction (function call + events)\ncrypto-cli.mjs decode-tx <0xhash>                  # Decode function + events\ncrypto-cli.mjs decode-tx <0xhash> --chain arbitrum  # On another chain\n\n\nDecodes transaction input data into human-readable function name + parameters. Also decodes all event logs in the receipt. Uses local database of known selectors + 4byte.directory fallback. Identifies tx type: transfer, contract_call, or contract_creation.\n\nStrategies:\n\nfallback — Try RPCs in order, move to next on failure. Default. Most conservative.\nrace — Fire all RPCs simultaneously, use fastest response. Best for latency.\nparallel — Fire all, compare results, detect inconsistencies. Trustless verification.\nEVM Query Commands\n\nAll EVM commands accept --chain <chain> (default: ethereum) and --private (use tracking:none RPCs only).\n\nCheck balance\ncrypto-cli.mjs balance <address>                           # Native balance (ETH)\ncrypto-cli.mjs balance vitalik.eth                          # ENS name supported\ncrypto-cli.mjs balance <address> --token USDC              # + ERC20 balance\ncrypto-cli.mjs balance <address> --chain arbitrum           # On Arbitrum\ncrypto-cli.mjs balance <address> --token USDC --chain base  # USDC on Base\n\n\nReturns native balance in human-readable format (e.g., \"32.12 ETH\") plus raw wei. Token balance includes symbol, decimals, and formatted amount.\n\nMulti-chain balance\ncrypto-cli.mjs multi-balance <address>                     # All mainnet chains\ncrypto-cli.mjs multi-balance vitalik.eth                    # ENS supported\ncrypto-cli.mjs multi-balance <address> --private           # Privacy RPCs only\n\n\nQueries the same address across ALL mainnet EVM chains in parallel. Shows balances sorted by chains with funds first.\n\nGet block info\ncrypto-cli.mjs block                    # Latest block\ncrypto-cli.mjs block latest             # Same\ncrypto-cli.mjs block 19000000           # By number\ncrypto-cli.mjs block 0xabcdef...        # By hash (66 chars)\n\n\nReturns: number, hash, timestamp, gasUsed, gasLimit, baseFee, txCount, miner.\n\nTransaction details\ncrypto-cli.mjs tx <0xhash>\ncrypto-cli.mjs tx <0xhash> --chain arbitrum\n\n\nReturns: hash, blockNumber, from, to, value (in ETH), gasPrice, nonce, input data.\n\nTransaction receipt\ncrypto-cli.mjs receipt <0xhash>\n\n\nReturns: status (success/reverted), gasUsed, effectiveGasPrice, contract address (if deploy), logs with decoded event names from metadata.\n\nGas prices\ncrypto-cli.mjs gas                      # Ethereum gas\ncrypto-cli.mjs gas --chain base         # Base gas\ncrypto-cli.mjs gas --chain arbitrum     # Arbitrum gas\n\n\nReturns: gasPrice, maxPriorityFeePerGas, baseFee — all in gwei.\n\nRead contract (eth_call)\ncrypto-cli.mjs call <to_address> <calldata_hex> [--block <tag>]\n\n\nFor raw contract reads. Use for custom ABI calls.\n\nEvent logs\ncrypto-cli.mjs logs --address <contract> --topic <topic_hash> [--from <block>] [--to <block>]\n\n\nReturns up to 50 logs. Default range: latest block only.\n\nCheck if address is contract\ncrypto-cli.mjs code <address>\n\n\nReturns: isContract (bool), codeSize, truncated bytecode.\n\nTransaction count (nonce)\ncrypto-cli.mjs nonce <address>\n\nBitcoin Commands\n\nBitcoin queries use the mempool.space REST API (no JSON-RPC needed).\n\nBlockchain overview\ncrypto-cli.mjs btc-info\n\n\nReturns: block height, best hash, difficulty, mempool stats, recommended fees — all in one call.\n\nBlock details\ncrypto-cli.mjs btc-block                # Latest block\ncrypto-cli.mjs btc-block 800000         # By height\ncrypto-cli.mjs btc-block 0000000...     # By hash (64 chars)\n\nTransaction details\ncrypto-cli.mjs btc-tx <txid>\n\n\nReturns: confirmation status, fee (sats + BTC), fee rate (sat/vB), inputs/outputs with addresses and values.\n\nMempool state\ncrypto-cli.mjs btc-mempool\n\n\nReturns: tx count, vsize, total fees, recommended fee rates, 5 most recent txs.\n\nFee estimates\ncrypto-cli.mjs btc-fee\n\n\nReturns: fastest, halfHour, hour, economy, minimum — all in sat/vB.\n\nAddress balance\ncrypto-cli.mjs btc-address <address>\n\n\nReturns: balance (BTC + sats), total received/sent, tx count, UTXO count.\n\nChain Aliases\nAlias\tChain ID\tNetwork\nethereum, eth, mainnet\t1\tEthereum\noptimism, op\t10\tOptimism\nbnb, bsc\t56\tBNB Smart Chain\npolygon, matic, pol\t137\tPolygon\nbase\t8453\tBase\narbitrum, arb\t42161\tArbitrum One\nsepolia\t11155111\tSepolia Testnet\nbitcoin, btc\tbip122:...\tBitcoin Mainnet\n\nNumeric chain IDs also work (e.g., 1, 42161).\n\nOutput\n\nAll commands output JSON to stdout. The agent can parse and format as needed.\n\nNumeric values are pre-formatted:\n\nBalances: human-readable (e.g., \"32.12 ETH\") + raw wei\nGas: in gwei\nTimestamps: ISO 8601\nHex numbers: converted to decimal strings\nExplorer Links\n\nEVM commands that return on-chain entities include an explorerLink field with a direct URL to openscan.eth.link:\n\nCommand\texplorerLink points to\nbalance\taddress page\nmulti-balance\taddress page per chain\nblock\tblock page\ntx\ttransaction page\nreceipt\ttransaction page\ncode\taddress page\nnonce\taddress page\ntoken\ttoken contract address page\nlogs\ttransaction page per log\nbtc-block\tBitcoin block page\nbtc-tx\tBitcoin transaction page\nbtc-address\tBitcoin address page\naddress-info\taddress page\n\nURL patterns:\n\nEVM: https://openscan.eth.link/#/{chainId}/{type}/{id}\nBitcoin mainnet: https://openscan.eth.link/#/btc/{type}/{id}\nBitcoin testnet4: https://openscan.eth.link/#/tbtc/{type}/{id}\n\nAlways show this link to the user so they can explore the data further in the UI.\n\nCaching\n\nMetadata cached in ~/.cache/openscan-crypto/ (6h TTL). RPC responses are NOT cached.\n\nENS Support\n\nAll EVM address commands accept .eth names (e.g., vitalik.eth). ENS is resolved on Ethereum mainnet automatically. Works with: balance, multi-balance, code, nonce.\n\nSecurity\nREAD-ONLY — no transaction signing, no private key handling\nPublic RPCs — no API keys needed\n--private flag restricts to tracking:none RPCs\nDangerous methods (sendTransaction, etc.) are NOT exposed\nNatural Language Mapping\nUser says\tCommand\n\"What's Vitalik's ETH balance?\"\tbalance 0xd8dA...96045\n\"How much USDC does 0x... have on Base?\"\tbalance 0x... --token USDC --chain base\n\"Show the latest Ethereum block\"\tblock latest\n\"What's gas like on Arbitrum?\"\tgas --chain arbitrum\n\"Look up this transaction\"\ttx 0x...\n\"Did this tx succeed?\"\treceipt 0x...\n\"Is 0x... a contract?\"\tcode 0x...\n\"What networks does OpenScan support?\"\tnetworks\n\"What's the USDC contract address?\"\ttoken USDC\n\"Show privacy-friendly Polygon RPCs\"\trpcs polygon --private\n\"Show vitalik.eth balance on all chains\"\tmulti-balance vitalik.eth\n\"What's the latest Bitcoin block?\"\tbtc-info or btc-block\n\"Tell me everything about this address\"\taddress-info 0x...\n\"Is 0x... a wallet or a contract?\"\taddress-info 0x...\n\"What's the ENS name for 0x...?\"\taddress-info 0x... (reverse ENS)\n\"Show me info for vitalik.eth\"\taddress-info vitalik.eth\n\"How full is the Bitcoin mempool?\"\tbtc-mempool\n\"What are Bitcoin fees right now?\"\tbtc-fee\n\"Look up this Bitcoin transaction\"\tbtc-tx <txid>\n\"Check Satoshi's balance\"\tbtc-address 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa\n\"Show Bitcoin block 800000\"\tbtc-block 800000"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/josealoha666/openscan-crypto",
    "publisherUrl": "https://clawhub.ai/josealoha666/openscan-crypto",
    "owner": "josealoha666",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/openscan-crypto",
    "downloadUrl": "https://openagent3.xyz/downloads/openscan-crypto",
    "agentUrl": "https://openagent3.xyz/skills/openscan-crypto/agent",
    "manifestUrl": "https://openagent3.xyz/skills/openscan-crypto/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/openscan-crypto/agent.md"
  }
}