Find pricing for server wallets here.
Setup
1
Enable multiple embedded wallets per chain
Navigate to the Dynamic Dashboard and enable multiple embedded wallets per chain.
2
Retrieve your auth token
Navigate to the Dynamic Dashboard and create a new API token.
3
Install desired Node SDKs
4
Create client with authenticateApiToken
Separate clients are needed for each chain.
5
Access MPC functionality by creating a new wallet account
createWalletAccount() returns two pieces of state that you must persist on the customer side:walletMetadata— non-sensitive identity + backup-pointer info. Cache it in Redis, Postgres, or similar. You’ll pass it to every subsequent sign / export / backup operation.externalServerKeyShares— sensitive MPC key material. Store in a secrets vault (HSM, KMS-wrapped column, Secret Manager).
walletMetadata.accountAddress — pass walletMetadata to subsequent calls rather than reconstructing args from individual fields.Removed in V1. The Node SDK no longer holds wallet state internally. If you are migrating from a pre-V1 SDK, the following have been removed: the in-memory
walletMap, client.getWallet(address), initializeWalletMapEntry, and ensureCeremonyCompletionBeforeBackup. recoverEncryptedBackupByWallet no longer accepts storeRecoveredShares — the caller now decides what to do with the returned shares. Every sign / export / backup operation now takes explicit walletMetadata (and externalServerKeyShares when supplying shares yourself), so the caller owns persistence.6
Example: Sign a message with the MPC wallet account
End-to-end example: agent signs a transaction
A complete example showing a backend agent that receives a webhook, recovers key shares, signs an EVM transaction, and broadcasts it:This pattern works for any automation: cron jobs, webhook handlers, AI agents, or queue consumers. The SDK is stateless — load
walletMetadata and key shares per operation, sign, then discard.Custom EVM networks
Server wallets work on any EVM-compatible chain — you are not limited to chains pre-configured in the dashboard. PasschainId and rpcUrl when creating a Viem wallet client:
When using
chainId, you must also provide rpcUrl. The SDK configures the chain with default ETH currency settings. For full details, see Get a Viem wallet client — Custom chain configuration.Signing is chain-agnostic — the SDK signs transactions via MPC and does not require the network to be enabled in your Dynamic dashboard, so any custom or non-listed EVM network works (you just supply the rpcUrl above).Next Steps
You can find the full SDK reference for server wallets for each chain below:EVM
EVM Guides
SVM
SVM Guides