get_supported_chains
Retrieve a list of supported blockchain networks for USDC bridging, with the option to include testnets, using the ValueRouter MCP Server.
Instructions
Get all supported chains for USDC bridging
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| includeTestnets | No | Whether to include testnet chains |
Input Schema (JSON Schema)
{
"additionalProperties": false,
"properties": {
"includeTestnets": {
"default": false,
"description": "Whether to include testnet chains",
"type": "boolean"
}
},
"type": "object"
}
Implementation Reference
- src/index.ts:362-383 (handler)The core implementation of the 'get_supported_chains' tool handler. Parses input args for 'includeTestnets', filters CHAIN_INFO constants accordingly, maps to response format, and returns success response with chains list and count.private async getSupportedChains(args: any): Promise<MCPToolResult> { const { includeTestnets = false } = args; const chains = Object.values(CHAIN_INFO) .filter(chain => includeTestnets || !chain.isTestnet) .map(chain => ({ chainId: chain.chainId, name: chain.name, symbol: chain.symbol, decimals: chain.decimals, logoUrl: chain.logoUrl, explorerUrl: chain.explorerUrl, isTestnet: chain.isTestnet, networkType: chain.networkType, usdcAddress: chain.usdcAddress, })); return createSuccessResponse({ chains, count: chains.length, }); }
- src/index.ts:66-76 (schema)Input schema for validating arguments to the 'get_supported_chains' tool, defining optional 'includeTestnets' boolean parameter.inputSchema: { type: 'object', properties: { includeTestnets: { type: 'boolean', description: 'Whether to include testnet chains', default: false, }, }, additionalProperties: false, },
- src/index.ts:63-77 (registration)Registration of the 'get_supported_chains' tool in the ListToolsRequestSchema handler, providing name, description, and input schema.{ name: 'get_supported_chains', description: 'Get all supported chains for USDC bridging', inputSchema: { type: 'object', properties: { includeTestnets: { type: 'boolean', description: 'Whether to include testnet chains', default: false, }, }, additionalProperties: false, }, },
- src/index.ts:333-334 (registration)Dispatch logic in the CallToolRequestSchema handler that routes calls to 'get_supported_chains' to the corresponding handler method.case 'get_supported_chains': return await this.getSupportedChains(args);
- src/constants/index.ts:107-344 (helper)Helper constant CHAIN_INFO providing detailed configuration for all supported chains, used by the get_supported_chains handler for filtering and mapping.export const CHAIN_INFO: Record<SupportedChainId, ChainInfo> = { [SupportedChainId.MAINNET]: { chainId: SupportedChainId.MAINNET, name: 'Ethereum', symbol: 'ETH', decimals: 18, explorerUrl: 'https://etherscan.io', isTestnet: false, networkType: 'mainnet', usdcAddress: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', bridgeContractAddress: '0x12345...', // Replace with actual contract address }, [SupportedChainId.ARBITRUM_ONE]: { chainId: SupportedChainId.ARBITRUM_ONE, name: 'Arbitrum One', symbol: 'ETH', decimals: 18, explorerUrl: 'https://arbiscan.io', isTestnet: false, networkType: 'L2', usdcAddress: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831', bridgeContractAddress: '0x12345...', // Replace with actual contract address }, [SupportedChainId.OPTIMISM]: { chainId: SupportedChainId.OPTIMISM, name: 'Optimism', symbol: 'ETH', decimals: 18, explorerUrl: 'https://optimistic.etherscan.io', isTestnet: false, networkType: 'L2', usdcAddress: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85', bridgeContractAddress: '0x12345...', // Replace with actual contract address }, [SupportedChainId.POLYGON]: { chainId: SupportedChainId.POLYGON, name: 'Polygon', symbol: 'MATIC', decimals: 18, explorerUrl: 'https://polygonscan.com', isTestnet: false, networkType: 'L2', usdcAddress: '0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359', bridgeContractAddress: '0x12345...', // Replace with actual contract address }, [SupportedChainId.AVALANCHE_C_CHAIN]: { chainId: SupportedChainId.AVALANCHE_C_CHAIN, name: 'Avalanche', symbol: 'AVAX', decimals: 18, explorerUrl: 'https://snowtrace.io', isTestnet: false, networkType: 'mainnet', usdcAddress: '0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E', bridgeContractAddress: '0x12345...', // Replace with actual contract address }, [SupportedChainId.BASE]: { chainId: SupportedChainId.BASE, name: 'Base', symbol: 'ETH', decimals: 18, explorerUrl: 'https://basescan.org', isTestnet: false, networkType: 'L2', usdcAddress: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913', bridgeContractAddress: '0x12345...', // Replace with actual contract address }, [SupportedChainId.SOLANA]: { chainId: SupportedChainId.SOLANA, name: 'Solana', symbol: 'SOL', decimals: 9, explorerUrl: 'https://solscan.io', isTestnet: false, networkType: 'mainnet', usdcAddress: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', bridgeContractAddress: 'DmtW5rT97FiY1gna3e8cDjn7jzJNFVkZJsCEiaLsMj8q', }, [SupportedChainId.SUI]: { chainId: SupportedChainId.SUI, name: 'Sui', symbol: 'SUI', decimals: 9, explorerUrl: 'https://suiscan.xyz', isTestnet: false, networkType: 'mainnet', usdcAddress: '0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf::coin::COIN', bridgeContractAddress: '0x12345...', // Replace with actual contract address }, [SupportedChainId.NOBLE]: { chainId: SupportedChainId.NOBLE, name: 'Noble', symbol: 'USDC', decimals: 6, explorerUrl: 'https://www.mintscan.io/noble', isTestnet: false, networkType: 'cosmos', usdcAddress: 'uusdc', }, [SupportedChainId.OSMOSIS]: { chainId: SupportedChainId.OSMOSIS, name: 'Osmosis', symbol: 'OSMO', decimals: 6, explorerUrl: 'https://www.mintscan.io/osmosis', isTestnet: false, networkType: 'cosmos', usdcAddress: 'ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4', }, // Add other chains... [SupportedChainId.EVMOS]: { chainId: SupportedChainId.EVMOS, name: 'Evmos', symbol: 'EVMOS', decimals: 18, explorerUrl: 'https://www.mintscan.io/evmos', isTestnet: false, networkType: 'cosmos', }, [SupportedChainId.SEI]: { chainId: SupportedChainId.SEI, name: 'Sei', symbol: 'SEI', decimals: 6, explorerUrl: 'https://www.mintscan.io/sei', isTestnet: false, networkType: 'cosmos', }, [SupportedChainId.COREUM]: { chainId: SupportedChainId.COREUM, name: 'Coreum', symbol: 'COREUM', decimals: 6, explorerUrl: 'https://www.mintscan.io/coreum', isTestnet: false, networkType: 'cosmos', }, [SupportedChainId.DYDX]: { chainId: SupportedChainId.DYDX, name: 'dYdX', symbol: 'DYDX', decimals: 18, explorerUrl: 'https://www.mintscan.io/dydx', isTestnet: false, networkType: 'cosmos', }, // Testnets [SupportedChainId.GOERLI]: { chainId: SupportedChainId.GOERLI, name: 'Goerli', symbol: 'ETH', decimals: 18, explorerUrl: 'https://goerli.etherscan.io', isTestnet: true, networkType: 'testnet', usdcAddress: '0x07865c6e87b9f70255377e024ace6630c1eaa37f', }, [SupportedChainId.SEPOLIA]: { chainId: SupportedChainId.SEPOLIA, name: 'Sepolia', symbol: 'ETH', decimals: 18, explorerUrl: 'https://sepolia.etherscan.io', isTestnet: true, networkType: 'testnet', usdcAddress: '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238', }, [SupportedChainId.SOLANA_DEVNET]: { chainId: SupportedChainId.SOLANA_DEVNET, name: 'Solana Devnet', symbol: 'SOL', decimals: 9, explorerUrl: 'https://solscan.io', isTestnet: true, networkType: 'testnet', usdcAddress: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', }, [SupportedChainId.SUI_TESTNET]: { chainId: SupportedChainId.SUI_TESTNET, name: 'Sui Testnet', symbol: 'SUI', decimals: 9, explorerUrl: 'https://suiscan.xyz/testnet', isTestnet: true, networkType: 'testnet', usdcAddress: '0x12345...', // Replace with actual testnet address }, [SupportedChainId.NOBLE_TEST]: { chainId: SupportedChainId.NOBLE_TEST, name: 'Noble Testnet', symbol: 'USDC', decimals: 6, explorerUrl: 'https://www.mintscan.io/noble-testnet', isTestnet: true, networkType: 'testnet', usdcAddress: 'uusdc', }, [SupportedChainId.AVALANCHE_FUJI]: { chainId: SupportedChainId.AVALANCHE_FUJI, name: 'Avalanche Fuji', symbol: 'AVAX', decimals: 18, explorerUrl: 'https://testnet.snowtrace.io', isTestnet: true, networkType: 'testnet', usdcAddress: '0x5425890298aed601595a70ab815c96711a31bc65', }, [SupportedChainId.ARBITRUM_GOERLI]: { chainId: SupportedChainId.ARBITRUM_GOERLI, name: 'Arbitrum Goerli', symbol: 'ETH', decimals: 18, explorerUrl: 'https://goerli.arbiscan.io', isTestnet: true, networkType: 'testnet', usdcAddress: '0xfd064A18f3BF249cf1f87FC203E90D8f650f2d63', }, [SupportedChainId.OPTIMISM_GOERLI]: { chainId: SupportedChainId.OPTIMISM_GOERLI, name: 'Optimism Goerli', symbol: 'ETH', decimals: 18, explorerUrl: 'https://goerli-optimism.etherscan.io', isTestnet: true, networkType: 'testnet', usdcAddress: '0x12345...', // Replace with actual address }, [SupportedChainId.POLYGON_MUMBAI]: { chainId: SupportedChainId.POLYGON_MUMBAI, name: 'Polygon Mumbai', symbol: 'MATIC', decimals: 18, explorerUrl: 'https://mumbai.polygonscan.com', isTestnet: true, networkType: 'testnet', usdcAddress: '0x12345...', // Replace with actual address }, };