{"name":"rpcs:4663","files":[{"path":".imd/reads/skills/public-rpcs.md","digest":"9f89e0d2251fd05a1451801fea8b83cd490616da71cd924474a28b587e6152de","content":"# Public RPC endpoints\n\nPublic endpoints are for reading: checking a deployment, fetching an ABI's events, dry-running a\nscript against a fork on a machine that has network. They are rate-limited and occasionally down,\nso a job does not pick one and hope. It takes the list for its chain, starts at the top, and rotates\nuntil the work is done. The table below is the chains this network touches; the reference delivered\nbeside this skill, `REFERENCE.md`, is every chain [chainlist.org](https://chainlist.org) lists with\na usable public endpoint, mainnets then testnets, and it is the place to look for a chain that is\nnot here. Both come from one probe on one date: an endpoint listed as verified answered\n`eth_chainId` with the right chain id, and the fastest answers come first.\n\n<!-- rpcs:start -->\n| Chain | Chain id | Endpoints, fastest first, one per operator |\n| --- | --- | --- |\n| Ethereum Mainnet | 1 | `https://rpc.flashbots.net/fast`, `https://rpc.mevblocker.io/fast`, `https://one.valve.city/rpc/vk_demo/evm/1`, `https://ethereum-rpc.publicnode.com`, `https://eth-mainnet.nodereal.io/v1/1659dfb40aa24bbb8153a677b98064d7`, `https://virginia.rpc.blxrbdn.com` |\n| Ethereum Sepolia | 11155111 | `https://ethereum-sepolia.gateway.tatum.io`, `https://sepolia.rpc.sentio.xyz`, `https://ethereum-sepolia-public.nodies.app`, `https://ethereum-sepolia-rpc.publicnode.com`, `https://rpc.sepolia.ethpandaops.io`, `https://eth-sepolia-testnet.api.pocket.network` |\n| Ethereum Hoodi | 560048 | `https://lb.routeme.sh/rpc/evm/560048`, `https://hoodi.rpc.sentio.xyz`, `https://ethereum-hoodi.gateway.tatum.io`, `https://rpc.hoodi.ethpandaops.io`, `https://0xrpc.io/hoodi` |\n| Robinhood Chain | 4663 | `https://rpc.ordofi.network`, `https://rpc-robinhood.blockmachine.io`, `https://robinhood-rpc.publicnode.com`, `https://rpc.mainnet.chain.robinhood.com`, `https://robinhood.rpc.blxrbdn.com`, `https://robinhood.api.pocket.network` |\n| Robinhood Chain Testnet | 46630 | `https://robinhood-testnet.drpc.org`, `https://robinhood-sepolia-rpc.publicnode.com`, `https://rpc.testnet.chain.robinhood.com` |\n| Base | 8453 | `https://base-public.nodies.app`, `https://base-mainnet.public.blastapi.io`, `https://public.1rpc.io/base`, `https://base.meowrpc.com`, `https://base-rpc.publicnode.com`, `https://mainnet.base.org` |\n| Base Sepolia Testnet | 84532 | `https://lb.routeme.sh/rpc/evm/84532`, `https://sepolia.base.org`, `https://base-sepolia.drpc.org`, `https://base-sepolia.rpc.sentio.xyz`, `https://base-sepolia-public.nodies.app`, `https://base-sepolia-rpc.publicnode.com` |\n| Arbitrum One | 42161 | `https://api.zan.top/arb-one`, `https://public.1rpc.io/arb`, `https://arbitrum.drpc.org`, `https://arb1.arbitrum.io/rpc`, `https://arbitrum-one-rpc.publicnode.com`, `https://arb-one-mainnet.gateway.tatum.io` |\n| Arbitrum Sepolia | 421614 | `https://sepolia-rollup.arbitrum.io/rpc`, `https://arbitrum-sepolia-rpc.publicnode.com`, `https://arbitrum-sepolia.drpc.org`, `https://arbitrum-sepolia.gateway.tenderly.co`, `https://arbitrum-sepolia-testnet.api.pocket.network`, `https://api.zan.top/arb-sepolia` |\n| Arbitrum Nova | 42170 | `https://nova.arbitrum.io/rpc`, `https://arbitrum-nova-rpc.publicnode.com`, `https://arbitrum-nova.drpc.org`, `https://docs-demo.nova-mainnet.quiknode.pro`, `https://42170.rpc.thirdweb.com` |\n| OP Mainnet | 10 | `https://rpc.swiftnodes.io/rpc/optimism`, `https://api.zan.top/opt-mainnet`, `https://public.1rpc.io/op`, `https://optimism.rpc.sentio.xyz`, `https://optimism-public.nodies.app`, `https://10.rpc.thirdweb.com` |\n| OP Sepolia Testnet | 11155420 | `https://optimism-sepolia-public.nodies.app`, `https://optimism-sepolia.drpc.org`, `https://optimism-sepolia.gateway.tenderly.co`, `https://sepolia.optimism.io`, `https://op-sepolia-testnet.api.pocket.network`, `https://api.zan.top/opt-sepolia` |\n| Polygon Mainnet | 137 | `https://rpc.swiftnodes.io/rpc/polygon`, `https://api.zan.top/polygon-mainnet`, `https://gateway.tenderly.co/public/polygon`, `https://polygon.drpc.org`, `https://rpc-mainnet.matic.quiknode.pro`, `https://matic.rpc.sentio.xyz` |\n| Amoy | 80002 | `https://lb.routeme.sh/rpc/evm/80002`, `https://polygon-amoy.drpc.org`, `https://polygon-amoy-bor-rpc.publicnode.com`, `https://polygon-amoy-public.nodies.app`, `https://polygon-amoy.gateway.tenderly.co`, `https://polygon-amoy.gateway.tatum.io` |\n| BNB Smart Chain Mainnet | 56 | `https://public.1rpc.io/bnb`, `https://rpc.swiftnodes.io/rpc/bsc`, `https://api.zan.top/bsc-mainnet`, `https://bsc.rpc.sentio.xyz`, `https://56.rpc.thirdweb.com`, `https://public-bsc-mainnet.fastnode.io` |\n| BNB Smart Chain Testnet | 97 | `https://bsc-testnet-rpc.publicnode.com`, `https://bnb-testnet.api.onfinality.io/public`, `https://bsc-testnet.rpc.sentio.xyz`, `https://bsc-testnet.drpc.org`, `https://data-seed-prebsc-1-s1.bnbchain.org:8545`, `https://data-seed-prebsc-1-s3.bnbchain.org:8545` |\n| Avalanche C-Chain | 43114 | `https://public.1rpc.io/avax/c`, `https://rpc.swiftnodes.io/rpc/avalanche`, `https://api.zan.top/avax-mainnet/ext/bc/C/rpc`, `https://api.avax.network/ext/bc/C/rpc`, `https://43114.rpc.thirdweb.com`, `https://avalanche.drpc.org` |\n| Avalanche Fuji Testnet | 43113 | `https://lb.routeme.sh/rpc/evm/43113`, `https://api.avax-test.network/ext/bc/C/rpc`, `https://avalanche-fuji-c-chain-rpc.publicnode.com`, `https://avalanche-fuji.drpc.org`, `https://api.zan.top/avax-fuji/ext/bc/C/rpc` |\n| Gnosis | 100 | `https://rpc.swiftnodes.io/rpc/gnosis`, `https://100.rpc.thirdweb.com`, `https://rpc.gnosischain.com`, `https://gnosis.oat.farm`, `https://gnosis.drpc.org`, `https://gnosis-rpc.publicnode.com` |\n| Gnosis Chiado Testnet | 10200 | `https://gnosis-chiado-rpc.publicnode.com`, `https://gnosis-chiado.drpc.org`, `https://rpc.chiadochain.net`, `https://rpc.chiado.gnosis.gateway.fm` |\n| Linea | 59144 | `https://public.1rpc.io/linea`, `https://rpc.swiftnodes.io/rpc/linea`, `https://rpc.nodeflare.app/linea/public` |\n| Linea Sepolia | 59141 | `https://rpc.sepolia.linea.build`, `https://linea-sepolia-rpc.publicnode.com`, `https://linea-sepolia.drpc.org` |\n| Scroll | 534352 | `https://scroll.rpc.sentio.xyz`, `https://scroll-rpc.publicnode.com`, `https://scroll.drpc.org`, `https://rpc.scroll.io`, `https://rpc-scroll.blockmachine.io`, `https://scroll.api.pocket.network` |\n| Scroll Sepolia Testnet | 534351 | `https://lb.routeme.sh/rpc/evm/534351`, `https://scroll-sepolia-rpc.publicnode.com`, `https://scroll-sepolia-public.nodies.app`, `https://scroll-sepolia.drpc.org` |\n| zkSync Mainnet | 324 | `https://zksync-era.rpc.sentio.xyz`, `https://324.rpc.thirdweb.com`, `https://zksync-era.api.pocket.network`, `https://api-zksync-era-mainnet-full.n.dwellir.com/2ccf18bf-2916-4198-8856-42172854353c`, `https://zksync.drpc.org`, `https://zksync.api.onfinality.io/public` |\n| zkSync Sepolia Testnet | 300 | `https://zksync-sepolia.api.onfinality.io/public`, `https://zksync-sepolia.drpc.org`, `https://sepolia.era.zksync.dev` |\n| Blast | 81457 | `https://lb.routeme.sh/rpc/evm/81457`, `https://rpc.swiftnodes.io/rpc/blast`, `https://blast-rpc.publicnode.com`, `https://blast.drpc.org`, `https://blast-mainnet.rpc.sentio.xyz`, `https://blast.gateway.tenderly.co` |\n| Monad | 143 | `https://lb.routeme.sh/rpc/evm/143`, `https://rpc.swiftnodes.io/rpc/monad`, `https://monad-mainnet.api.onfinality.io/public`, `https://monad-mainnet.drpc.org`, `https://rpc1.monad.xyz`, `https://monad-mainnet-rpc.spidernode.net` |\n| Monad Testnet | 10143 | `https://monad-testnet.drpc.org`, `https://rpc.ankr.com/monad_testnet`, `https://rpc-testnet.monadinfra.com`, `https://testnet-rpc.monad.xyz`, `https://monad-testnet.gateway.tatum.io`, `https://monad-testnet-rpc.huginn.tech` |\n| Ink | 57073 | `https://rpc-qnd.inkonchain.com`, `https://ink.drpc.org`, `https://57073.rpc.thirdweb.com`, `https://rpc-gel.inkonchain.com`, `https://ink.api.pocket.network` |\n| Unichain | 130 | `https://lb.routeme.sh/rpc/evm/130`, `https://rpc.swiftnodes.io/rpc/unichain`, `https://rpc.nodeflare.app/unichain/public` |\n| Unichain Sepolia Testnet | 1301 | `https://unichain-sepolia-rpc.publicnode.com`, `https://unichain-sepolia.drpc.org`, `https://sepolia.unichain.org` |\n| World Chain | 480 | `https://480.rpc.thirdweb.com`, `https://sparkling-autumn-dinghy.worldchain-mainnet.quiknode.pro`, `https://worldchain.drpc.org`, `https://worldchain-mainnet.gateway.tenderly.co`, `https://worldchain-mainnet.g.alchemy.com/public` |\n| Mantle | 5000 | `https://rpc.swiftnodes.io/rpc/mantle`, `https://api.zan.top/mantle-mainnet`, `https://rpc-mantle.blockmachine.io`, `https://public.1rpc.io/mantle`, `https://mantle-rpc.publicnode.com`, `https://5000.rpc.thirdweb.com` |\n| Sonic Mainnet | 146 | `https://sonic-rpc.publicnode.com`, `https://sonic-mainnet.rpc.sentio.xyz`, `https://sonic.api.pocket.network`, `https://146.rpc.thirdweb.com`, `https://rpc.swiftnodes.io/rpc/sonic`, `https://sonic-json-rpc.stakely.io` |\n| Berachain | 80094 | `https://rpc.swiftnodes.io/rpc/berachain`, `https://berachain-rpc.publicnode.com`, `https://rpc.berachain.com`, `https://berachain.drpc.org`, `https://berachain.rpc.sentio.xyz`, `https://rpc.berachain-apis.com` |\n| Celo Mainnet | 42220 | `https://celo.drpc.org`, `https://42220.rpc.thirdweb.com`, `https://rpc.ankr.com/celo`, `https://rpc.celocolombia.org`, `https://forno.celo.org`, `https://celo-json-rpc.stakely.io` |\n| Mode | 34443 | `https://public.1rpc.io/mode`, `https://mode.drpc.org`, `https://mainnet.mode.network`, `https://mode-mainnet.rpc.sentio.xyz`, `https://34443.rpc.thirdweb.com` |\n| Zora | 7777777 | `https://zora.drpc.org`, `https://rpc.zora.energy`, `https://lb.routeme.sh/rpc/evm/7777777` |\n| Fraxtal | 252 | `https://rpc.swiftnodes.io/rpc/fraxtal`, `https://rpc.frax.com`, `https://lb.routeme.sh/rpc/evm/252`, `https://fraxtal.drpc.org` |\n| Metis Andromeda Mainnet | 1088 | `https://rpc.swiftnodes.io/rpc/metis`, `https://andromeda.metis.io/?owner=1088`, `https://metis-public.nodies.app`, `https://metis.drpc.org`, `https://metis.api.onfinality.io/public`, `https://metis-andromeda.gateway.tenderly.co` |\n| Cronos Mainnet | 25 | `https://rpc.swiftnodes.io/rpc/cronos`, `https://cronos-evm-rpc.publicnode.com`, `https://cronos.drpc.org`, `https://evm.cronos.org`, `https://rpc.vvs.finance`, `https://cronos.rpc.sentio.xyz` |\n| HyperEVM | 999 | `https://999.rpc.thirdweb.com`, `https://hyperliquid.drpc.org`, `https://hyperevm.rpc.sentio.xyz`, `https://rpc.hyperliquid.xyz/evm`, `https://hyperliquid.rpc.blxrbdn.com`, `https://rpc.hyperlend.finance` |\n| Abstract | 2741 | `https://abstract.api.onfinality.io/public`, `https://abstract.drpc.org`, `https://api.mainnet.abs.xyz`, `https://2741.rpc.thirdweb.com` |\n| Soneium | 1868 | `https://rpc.swiftnodes.io/rpc/soneium`, `https://soneium.drpc.org`, `https://rpc.soneium.org`, `https://soneium-mainnet.rpc.sentio.xyz`, `https://1868.rpc.thirdweb.com` |\n| Lisk | 1135 | `https://lisk.drpc.org`, `https://lisk.gateway.tenderly.co`, `https://rpc.api.lisk.com`, `https://api-lisk-mainnet.n.dwellir.com/2ccf18bf-2916-4198-8856-42172854353c` |\n| Plasma Mainnet | 9745 | `https://rpc.swiftnodes.io/rpc/plasma`, `https://rpc.plasma.to`, `https://9745.rpc.thirdweb.com` |\n| Flare Mainnet | 14 | `https://rpc.ankr.com/flare`, `https://flare.drpc.org`, `https://flare-api.flare.network/ext/C/rpc`, `https://flare.rpc.thirdweb.com`, `https://rpc.au.cc/flare` |\n| X Layer Mainnet | 196 | `https://xlayer.drpc.org`, `https://xlayer-mainnet.rpc.sentio.xyz`, `https://xlayerrpc.okx.com`, `https://196.rpc.thirdweb.com`, `https://rpc.xlayer.tech` |\n| Sei Network | 1329 | `https://rpc.swiftnodes.io/rpc/sei`, `https://evm-rpc.sei-apis.com`, `https://sei.drpc.org`, `https://sei-evm-rpc.stakeme.pro`, `https://1329.rpc.thirdweb.com`, `https://sei.api.pocket.network` |\n| Taiko | 167000 | `https://rpc.ankr.com/taiko`, `https://lb.routeme.sh/rpc/evm/167000`, `https://rpc.swiftnodes.io/rpc/taiko`, `https://taiko-rpc.publicnode.com`, `https://rpc.mainnet.taiko.xyz`, `https://taiko.rpc.sentio.xyz` |\n\nProbed from one machine on 2026-09-19; the reference beside this skill has every chain and every endpoint.\n<!-- rpcs:end -->\n\nRobinhood Chain's explorer is `https://robin.etherscan.io`. Sepolia is where this\nnetwork's launches go today; mainnet is where its identities live.\n\n## How to rotate\n\n- Start from configuration. Read the endpoint from an environment variable with a documented\n  default, for example `RPC_URL_11155111`, and print which one was used. A script that silently used\n  the wrong chain is the deployment mistake nobody notices until it is spent. When nothing is\n  configured, the first endpoint in the row is the default and the rest are its fallbacks.\n- Check the endpoint before trusting it. Call `eth_chainId` and compare it to the row; an endpoint\n  that answers for another chain is misfiled, and a figure read from it is wrong in a way no retry\n  fixes. Move on without counting it as a failure of the work.\n- Back off, then move. On `429` or `503` wait and retry the same endpoint twice with a growing pause;\n  on a third refusal, a timeout, a connection error or a malformed body, take the next endpoint in\n  the row and do not come back to this one for the rest of the task.\n- Shrink what you ask for. A public endpoint answers a large `eth_getLogs` range with a truncated\n  list, a refusal or a limit error more often than it says so. Halve the range on any of those and\n  go on; never treat a truncated answer as the whole.\n- Cross-check what nothing downstream will recompute. Confirm the chain id and the closing block\n  hash on a second endpoint from a different operator; that is one call. A second full scan is\n  worth it only when your figure is the last word — an oracle member's is not, because the\n  deployer reruns the panel's recipe before anything is signed.\n- Stop when the row is spent. A row with one endpoint has no fallback, and a row whose every\n  endpoint refused is a chain that cannot be read from this machine today. Say that in the result\n  rather than hammering one host into a ban that outlives the task.\n- Do not depend on them from tests the verifier re-runs. The verifier has no network at all, so a\n  test that reaches an endpoint fails there. Fork tests are for a contributor's own machine.\n\n## Keyed endpoints stay on the contributor's machine\n\nA task cannot receive a secret from the network. A contributor who wants a task to use their own\nAlchemy, Infura or QuickNode endpoint installs it as a tool on their machine with\n`imd tools add rpc --command <an installed MCP server> --env ALCHEMY_KEY`, and a skill that needs it\ndeclares `requires: [tool:rpc]`. The variable's name is recorded; its value stays in their shell.\nThe network learns only that a tool called `rpc` exists there, and the assignment receives the\nserver with the variable expanded locally by the runtime. Billing and limits are theirs.\n\nNever put a keyed endpoint in the repository; the URL is the key. Some catalog entries carry a path\nsegment that looks like one. Those are keys Chainlist publishes itself, public by their publisher's\nchoice and liable to vanish. They are nobody's secret, and they are not a reason to add yours.\n\n## Refreshing the tables\n\n`pnpm rpcs:generate` fetches Chainlist, probes every endpoint, and rewrites `REFERENCE.md` and the\ntable between the markers above. Run `pnpm skills:generate` afterwards so the catalog carries the\nnew bytes. Nothing between the markers is edited by hand."},{"path":".imd/reads/skills/public-rpcs/REFERENCE.md","digest":"a8bfd3cc4295418ff6ce3a5b8068eaa6a226d6c5cdee31d21009868ca6f1da2f","content":"# Public RPC catalog\n\nGenerated by `scripts/generate-public-rpcs.mjs` from [chainlist.org](https://chainlist.org/rpcs.json) on 2026-09-19.\nDo not edit by hand: refresh with `pnpm rpcs:generate`, then `pnpm skills:generate` so the catalog\ncarries the new bytes.\n\n2836 chains and 7454 endpoints, https and wss only, with no key to fill in.\n97 chains Chainlist lists with no usable endpoint are left out.\nEvery endpoint was asked `eth_chainId` from one machine on that date.\n2355 answered with the right chain id and are **verified**, ordered fastest first.\n182 answered with a different chain id, or with 401, 404 or 410, and were dropped.\nThe rest are **unverified**: a timeout, a 429, a 5xx or a geo-block from where the probe ran. They are\nkept after the verified ones, least tracking first, because a host one region cannot reach may answer\nfrom another.\n\n## How to use it\n\nFind the row for your chain id and take its endpoints in order. The rules are in the skill body\ndelivered beside this file: confirm `eth_chainId` on an endpoint before trusting it, read\nfrom a configured endpoint first and fall back to these, back off on `429` and `503`, move to the\nnext endpoint on repeated failure, halve a log range an endpoint truncates or refuses, and name every\nendpoint used. A chain with one endpoint is a chain with no fallback; say so in the answer rather\nthan retrying the same host into a ban.\n\nSome endpoints carry a path segment that looks like a key. Those are the keys Chainlist itself\npublishes, public by their publisher's choice and liable to vanish; they are not anyone's secret. A\ncontributor's own key never goes in a file, as the skill body says.\n\n## Chain 4663\n\n| Chain | Chain id | Currency | Verified endpoints | Unverified endpoints |\n| --- | --- | --- | --- | --- |\n| Robinhood Chain | 4663 | ETH | `https://rpc.ordofi.network`, `https://rpc-robinhood.blockmachine.io`, `https://robinhood-rpc.publicnode.com`, `wss://robinhood-rpc.publicnode.com`, `https://rpc.mainnet.chain.robinhood.com`, `https://robinhood.rpc.blxrbdn.com`, `https://robinhood.api.pocket.network`, `wss://robinhood.api.pocket.network` | `https://rpc.nodeflare.app/robinhood/public`, `https://lb.routeme.sh/rpc/evm/4663` |\n\n"}]}