> **Can't find what you're looking for?** Use `search_docs` on the docs MCP server at `https://www.openfort.io/api/mcp` to find what you need.
>
> **Have feedback?** Use `submit_feedback` on the same MCP server.

# RPC methods overview

A cross-app wallet exposes an [EIP-1193](https://eips.ethereum.org/EIPS/eip-1193) provider. Get it from the wallet SDK and send every method below through `provider.request`:

```ts
import RapidfireID from '@rapidfire/id'

const rapidfire = new RapidfireID()
const provider = rapidfire.getEthereumProvider()
```

Through a wallet connector such as [wagmi](https://www.openfort.io/docs/products/cross-app-wallet/usage/web-app-wagmi), the same provider comes from the active connector — `const provider = await connector.getProvider()` — and every method below works unchanged.

## Before you start

* A cross-app wallet built with the Ecosystem SDK. The [quickstart](https://www.openfort.io/docs/products/cross-app-wallet/setup/react/quickstart) walks through creating one; the examples on these pages use the sample wallet **Rapidfire ID**.
* The wallet SDK installed in the application (`@rapidfire/id` for Rapidfire).
* A connected Account: [`eth_requestAccounts`](https://www.openfort.io/docs/products/cross-app-wallet/rpc/eth_requestAccounts) is what connects the Application to the Wallet, so call it before the signing and transaction methods.

## Methods

| Method                                                                      | Description                                                                        | Standard                                            |
| --------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | --------------------------------------------------- |
| [`eth_accounts`](https://www.openfort.io/docs/products/cross-app-wallet/rpc/eth_accounts)                                     | Returns an array of all **connected** Account addresses.                           | [EIP-1474](https://eips.ethereum.org/EIPS/eip-1474) |
| [`eth_requestAccounts`](https://www.openfort.io/docs/products/cross-app-wallet/rpc/eth_requestAccounts)                       | Requests access to Account addresses.                                              | [EIP-1102](https://eips.ethereum.org/EIPS/eip-1102) |
| [`eth_sendTransaction`](https://www.openfort.io/docs/products/cross-app-wallet/rpc/eth_sendTransaction)                       | Broadcasts a transaction to the network.                                           | [EIP-1474](https://eips.ethereum.org/EIPS/eip-1474) |
| [`eth_signTypedData_v4`](https://www.openfort.io/docs/products/cross-app-wallet/rpc/eth_signTypedData_v4)                     | Signs [EIP-712](https://eips.ethereum.org/EIPS/eip-712) typed data.                | [EIP-712](https://eips.ethereum.org/EIPS/eip-712)   |
| [`personal_sign`](https://www.openfort.io/docs/products/cross-app-wallet/rpc/personal_sign)                                   | Signs an [EIP-191](https://eips.ethereum.org/EIPS/eip-191) personal message.       | [EIP-191](https://eips.ethereum.org/EIPS/eip-191)   |
| [`wallet_getCapabilities`](https://www.openfort.io/docs/products/cross-app-wallet/rpc/wallet_getCapabilities)                 | Gets supported capabilities of cross-app wallet.                                   | [ERC-5792](https://eips.ethereum.org/EIPS/eip-5792) |
| [`wallet_getCallsStatus`](https://www.openfort.io/docs/products/cross-app-wallet/rpc/wallet_getCallsStatus)                   | Gets the status of a call bundle.                                                  | [ERC-5792](https://eips.ethereum.org/EIPS/eip-5792) |
| [`wallet_sendCalls`](https://www.openfort.io/docs/products/cross-app-wallet/rpc/wallet_sendCalls)                             | Broadcast a bundle of calls to the network.                                        | [ERC-5792](https://eips.ethereum.org/EIPS/eip-5792) |
| [`wallet_grantPermissions`](https://www.openfort.io/docs/products/cross-app-wallet/rpc/wallet_grantPermissions)   | Grants permissions for an Application to perform actions on behalf of the account. | [ERC-7715](https://github.com/ethereum/ERCs/blob/23fa3603c6181849f61d219f75e8a16d6624ac60/ERCS/erc-7715.md)                                        |
| [`wallet_revokePermissions`](https://www.openfort.io/docs/products/cross-app-wallet/rpc/wallet_revokePermissions) | Revokes a permission.                                                              | [ERC-7715](https://github.com/ethereum/ERCs/blob/23fa3603c6181849f61d219f75e8a16d6624ac60/ERCS/erc-7715.md)                                        |

## Which method to reach for

Signing splits by payload: [`personal_sign`](https://www.openfort.io/docs/products/cross-app-wallet/rpc/personal_sign) for plain messages, [`eth_signTypedData_v4`](https://www.openfort.io/docs/products/cross-app-wallet/rpc/eth_signTypedData_v4) for EIP-712 typed data. Reading the connected addresses is [`eth_accounts`](https://www.openfort.io/docs/products/cross-app-wallet/rpc/eth_accounts), which never opens the Wallet UI.

For writes, prefer [`wallet_sendCalls`](https://www.openfort.io/docs/products/cross-app-wallet/rpc/wallet_sendCalls): it takes one or many calls in a single bundle and returns a bundle ID you poll with [`wallet_getCallsStatus`](https://www.openfort.io/docs/products/cross-app-wallet/rpc/wallet_getCallsStatus). [`eth_sendTransaction`](https://www.openfort.io/docs/products/cross-app-wallet/rpc/eth_sendTransaction) still works but is deprecated for compatibility only. Before relying on batching, permissions, or a paymaster, call [`wallet_getCapabilities`](https://www.openfort.io/docs/products/cross-app-wallet/rpc/wallet_getCapabilities) — it reports `atomicBatch`, `paymasterService`, and `permissions` support per chain ID.

To let an Application act on the user's behalf, grant a scoped permission with [`wallet_grantPermissions`](https://www.openfort.io/docs/products/cross-app-wallet/rpc/wallet_grantPermissions) — an expiry, a signer, and permission types such as `contract-call` or `erc20-token-transfer`. Grants apply automatically to the Application's later calls, and `wallet_sendCalls` also accepts a specific permission `id` under `capabilities.permissions`. Clear a grant with [`wallet_revokePermissions`](https://www.openfort.io/docs/products/cross-app-wallet/rpc/wallet_revokePermissions).

## Errors

The provider surfaces [EIP-1193 provider errors](https://eips.ethereum.org/EIPS/eip-1193#provider-errors). The two an application handles most often are `4001` (the user rejected the request in the Wallet UI) and `4100` (the application is not authorized to call the method, typically because no Account is connected yet).
