How to fix method not found error on Ethereum RPC
You call a method. The nodes/rpc-endpoint-basics/">RPC endpoint replies with an error: the method does not exist. This is not a bug. It is a design feature.
Not all RPC endpoints support every method. The Ethereum JSON-RPC specification lists dozens of methods. No single endpoint implements all of them. Which methods are available depends entirely on what kind of node or service sits behind the endpoint.
Why methods go missing
The most common offender is eth_sendTransaction. This method accepts a transaction object and asks the node to sign and broadcast it. That requires the node to hold the sender's private key. Public RPC providers never keep user keys, so they disable eth_sendTransaction for security. The alternative is eth_sendRawTransaction, where you sign the transaction locally and then submit the already-signed bytes. Every public endpoint supports it.
Light clients are another source of missing methods. A light client does not store the full Ethereum state; it requests block headers and verifies a few items. Methods like debug_traceTransaction and eth_getStorageAt need full state access, which light clients cannot provide. They are simply unavailable.
Archive nodes are rare. Most providers run full nodes, not archive nodes. Full nodes prune historical state. Methods that query old state, such as eth_getBalance at a past block number, may fail on a full node. The error will look like a missing method, but the real problem is missing data.
Which methods are commonly unavailable
Different endpoint types have different blind spots.
Public providers (Infura, Alchemy, QuickNode) disable eth_sendTransaction, personal_sign, and eth_accounts. They enable eth_sendRawTransaction and eth_signTypedData_v4. They support most read methods but may rate-limit heavy ones like eth_getLogs.
Light clients lack debug_*, trace_*, and eth_getProof. They can answer eth_getBalance and eth_call for recent blocks only.
Wallet RPCs (MetaMask, WalletConnect) expose a small set of methods: eth_requestAccounts, eth_chainId, eth_sendTransaction, personal_sign. They do not serve eth_getBlockByNumber or eth_call directly. The wallet forwards those to its own provider, which may have different limitations.
How to check what an endpoint supports
There is no standard eth_supportedMethods call. You test.
The simplest check is to call the method with minimal parameters. If the endpoint returns a method-not-found error, it does not support it. If it returns a different error, the method exists but the parameters were wrong.
Some providers document their supported methods. Infura publishes a list. Alchemy does too. But documentation can be outdated. A live test is more reliable.
You can also inspect the error object. Most providers return a JSON-RPC error with code -32601 for method not found. Code -32000 often means the method exists but the request is invalid.
What to use instead
For sending transactions, always use eth_sendRawTransaction. Sign offline with ethers.js, web3.js, or viem. Never expect a public endpoint to hold your key.
For tracing, switch providers. If your current endpoint does not support debug_traceTransaction, use one that runs an archive node. Alchemy offers trace methods on its Growth plan. QuickNode does on custom plans. Or run your own Geth node with --http.api eth,debug.
For historical state queries, use an archive node provider. Or accept that data older than the pruning window is unavailable on a full node. The pruning window for most providers is 128 blocks.
For light client limitations, upgrade to a full node endpoint. Light clients are useful for mobile wallets but not for dapp backends that need full state access.
A practical example
You call eth_sendTransaction on a public endpoint. You get method not found. You switch to eth_sendRawTransaction. You sign the transaction locally with your private key. You submit the raw bytes. It works.
You call debug_traceTransaction on the same endpoint. Method not found again. You switch to an Alchemy endpoint with tracing enabled. The call succeeds.
You call eth_getBalance at block 500,000 on a full node. The endpoint returns an error. You switch to an archive node provider. The call returns the correct balance.
The fix is almost never about code. It is about choosing the right endpoint for the method you need. Know what your endpoint supports before you write the call. Test once. Cache the result. Move on.
Not financial advice. starname.me publishes market data and general information about digital assets. Crypto assets are volatile and you can lose everything you put in. Nothing here is a recommendation to buy, sell or hold, and we make no price predictions.
Prices are sourced from third parties and may be delayed or wrong. Verify anything you intend to act on against a primary source.