wallet_getCapabilities
Get wallet capabilities for supported chains. Implements EIP-5792 for capability discovery.
Authentication Required: No
Request
await jaw.provider.request({
method: 'wallet_getCapabilities',
params: ['0x1234...', ['0x1', '0x2105']],
});Parameters
| Name | Type | Required | Description |
|---|---|---|---|
address | string | No | Account address |
chainIds | string[] | No | Filter by specific chain IDs (hex) |
Example
["0x1234567890123456789012345678901234567890", ["0x1", "0x2105"]]Or without filtering:
[]Response
Returns capabilities per chain as an object keyed by chain ID (hex).
Type: Record<string, object>
Example
{
"0x1": {
"atomicBatch": { "supported": true },
"atomic": { "status": "supported" },
"paymasterService": { "supported": true },
"permissions": { "supported": true },
"feeToken": {
"supported": true,
"tokens": [
{
"uid": "ethereum",
"symbol": "ETH",
"address": "0x0000000000000000000000000000000000000000",
"interop": false,
"decimals": 18,
"feeToken": true
}
]
}
},
"0x2105": {
"atomicBatch": { "supported": true },
"atomic": { "status": "supported" },
"paymasterService": { "supported": true },
"permissions": { "supported": true },
"feeToken": {
"supported": true,
"tokens": [
{
"uid": "ethereum",
"symbol": "ETH",
"address": "0x0000000000000000000000000000000000000000",
"interop": true,
"decimals": 18,
"feeToken": true
}
]
}
}
}Capabilities Explained
atomicBatch
Value: { supported: true }
Indicates support for wallet_sendCalls - the ability to send multiple transactions atomically (all succeed or all fail).
atomic
Value: { status: "supported" }
Indicates atomic transaction execution where all operations in a batch are guaranteed to succeed or fail together.
paymasterService
Value: { supported: true }
Indicates support for ERC-7677 paymaster service - gasless transactions sponsored by paymasters.
permissions
Value: { supported: true }
Indicates support for the permission system (wallet_grantPermissions, wallet_revokePermissions).
feeToken
Value: { supported: true, tokens: [...] }
Indicates the supported fee tokens for gas payments on each chain.
| Field | Type | Description |
|---|---|---|
supported | boolean | Whether fee token selection is supported |
tokens | array | List of available fee tokens |
tokens[].uid | string | Unique identifier for the token |
tokens[].symbol | string | Token symbol (e.g., "ETH", "USDC") |
tokens[].address | string | Token contract address (zero address for native token) |
tokens[].interop | boolean | Whether the token supports cross-chain interoperability |
tokens[].decimals | number | Token decimal places |
tokens[].feeToken | boolean | Whether this token can be used for gas fees |
Behavior
- Can be called without authentication
- Returns capabilities for all supported chains by default
- Filters by chain IDs if
chainIdsparameter provided - When
showTestnetsis disabled (default), only mainnet chains are returned
Example
const capabilities = await jaw.provider.request({
method: 'wallet_getCapabilities',
});Related Methods
- wallet_sendCalls - Use atomic batch capability
- wallet_grantPermissions - Use permission capability