What problem does it solve? Hardcoded token decimal assumptions cause silent balance and USD value errors that are off by orders of magnitude without throwing exceptions, especially when the same token symbol has different decimals on different chains or after bridging. ## Core Features & Use Cases - Runtime Decimal Lookup: Query decimals() on-chain in Python (web3), TypeScript (ethers), or Solidity instead of hardcoding values like 6 or 18. - Chain-Aware Caching: Cache decimals keyed by (chain_id, token_address) rather than symbol, with defensive fallback handling for non-standard tokens that revert. - Safe Normalization: Convert token amounts to 18-decimal WAD in Solidity and use Decimal/BigInt exact math for fiat value calculations. - Use Case: A portfolio tracker aggregating USDC balances across Ethereum, Polygon, and Arbitrum queries each token's decimals per chain, caches the results, and computes USD values without precision drift. ## Quick Start Use the evm-token-decimals skill to safely read and normalize an ERC-20 token balance for a wallet address on a given chain.