wallet_sendCalls: Requests that a wallet submits a batch of calls.wallet_getCallsStatus: Returns the status of a call batch that was sent via wallet_sendCalls.wallet_showCallsStatus: Requests that a wallet shows information about a given call bundle that was sent with wallet_sendCalls.wallet_getCapabilities: This RPC allows an application to request capabilities from a wallet (e.g. batch transactions, paymaster communication).
Usage
wallet_getCapabilities
wallet_getCapabilities
Capabilities in CAIP-25 Connection Requests
CAIP-25 defines how capabilities can be expressed in wallet-to-dapp connections. These capabilities control how methods likewallet_sendCalls behave.Session Properties
In a connection request, dapps can request capabilities viasessionProperties. These can be universal (across all chains) or chain-specific:Scoped Properties
For chain-specific capabilities, dapps usescopedProperties:Wallet Response
A wallet’s response should indicate which capabilities it actually supports, following EIP-5792 and CAIP-25:- Capabilities shared across all address in a namespace can be expressed at top-level
- Address-specific capabilities can include exceptions to scope-wide capabilities
Atomic Capability
According to EIP-5792, theatomic capability specifies how the wallet will execute batches of transactions. It has three possible values:supported- The wallet will execute calls atomically and contiguouslyready- The wallet can upgrade to support atomic execution pending user approvalunsupported- The wallet provides no atomicity guarantees
wallet_sendCalls with atomicRequired: true will be handled.Example
Thewallet_getCapabilities method is used to request information about what capabilities a wallet supports. Following EIP-5792, here’s how it should be implemented:Request
Response
The wallet should return a response following EIP-5792, where capabilities are organized by chain ID:wallet_sendCalls
wallet_sendCalls
Implementation
When implementingwallet_sendCalls, wallets must follow these requirements:Connection Approval
- Only approve this method during the connection approval flow if your wallet can implement it correctly
- Define the
atomiccapability per chain/account in the CAIP-25 response
Request Format
Core Implementation Requirements
- Execute calls in the exact order specified in the request
- Do not wait for any calls to be finalized before completing the batch
- If the user rejects the request, do not send any calls
Atomic Execution Behavior
WhenatomicRequired is true:- Execute all calls atomically (either all succeed or none have any effect)
- Execute all calls contiguously (no other transactions between batch calls)
- If your wallet can upgrade from
readytosupportedatomicity, do so before executing
atomicRequired is false:- You may execute calls sequentially without atomicity guarantees
- You may execute atomically if your wallet supports it
- You may upgrade to
supportedatomicity and execute atomically
Response Enrichment
To enhance the user experience and eliminate the need for app switching, wallets can enrich the wallet_sendCalls response with caip2 id and transactionHash to let the Universal Provider resolve the transaction hash.wallet_getCallsStatus
wallet_getCallsStatus
Example
To enhance the user experience and eliminate the need for app switching, wallets can enrich the wallet_sendCalls response with caip2 id and transactionHash to let the Universal Provider resolve the transaction hash.To implement this functionality, the response for wallet_sendCalls should be enriched with capabilities:scopedProperties when approving a session:Response Format
The response format forwallet_getCallsStatus varies based on the execution method:For Atomic Execution
For Non-Atomic Execution
For non-atomic execution, include all transactions in the receipts array, even those that were included on-chain but eventually reverted.