Bands
| Band | What it includes | Typical use |
|---|---|---|
read | balances, prices, fee quotes, asset resolution, transaction queries | safe default |
prepare | transaction preparation tools | prepare transactions before signing or execution |
sign | wallet and signing tools - MPC 2-of-2 threshold signing | detached signing |
broadcast | sign-and-send - MPC 2-of-2 threshold signing | execute on-chain actions |
Token-transfer pattern
When you are working with token transfers, use this order:- Call
resolve_assetwith the chain and a token symbol, name, or contract - Choose the intended candidate
- Pass the selected
tokenContractinto the transaction-preparation step
Read Tools
get_balance
What it does: Returns the native balance for one address on one chain.
Band: read
Required inputs:
addresschain
fiat(defaults toUSD)
Check the native balance for 0x... on ethereum.
get_all_balances
What it does: Returns native and token balances for one address on one chain.
Band: read
Required inputs:
addresschain
fiat(defaults toUSD)assetIdsincludeNative(defaults totrue)
Show all balances for 0x... on ethereum.
get_price
What it does: Returns the current price for a token by symbol or by contract address.
Band: read
Required inputs:
- either
symbol - or both
contractAddressandchain
base(defaults toUSD)
What's the price of ETH?
get_fee_quote
What it does: Estimates the network fee for a native or token transfer before execution.
Band: read
Required inputs:
chainfromtoamountWei
tokenContractmemofiat
Estimate the fee to send 1000000 smallest-unit USDC from 0x... to 0x... on ethereum.
resolve_asset
What it does: Resolves a token symbol, name, or exact contract into one or more chain-specific asset candidates.
Band: read
Required inputs:
chain- exactly one of
tokenContract,symbol, orname
limit(defaults to5, max10)
unique, ambiguous, or not_found.
Example prompt: Resolve USDC on ethereum so I can prepare a transfer.
get_tx_status
What it does: Returns the status of one transaction hash on one chain.
Band: read
Required inputs:
hashchain
PENDING, SUCCEEDED, FAILED, or UNKNOWN.
Example prompt: What's the status of transaction 0x... on ethereum?
get_tx_history
What it does: Returns recent transaction history for one address on one chain.
Band: read
Required inputs:
addresschain
limit(defaults to10, max50)
Show me the last 10 transactions for 0x... on ethereum.
Prepare Tools
prepare_transfer
What it does: Prepares a structured transfer request for later execution.
Band: prepare
Required inputs:
chainfromto- either
amountoramountWei
symboltokenContractnoncemaxPriorityFeePerGasWeipriorityFeeMultiplier
- provide either
amountoramountWei, never both - token transfers require
tokenContract - if you only know the token symbol or name, resolve it first with
resolve_asset
Prepare a transfer of 1 ETH from 0x... to 0x... on ethereum.
prepare_serialized_unsigned_tx
What it does: Prepares signing-ready raw unsigned transaction hex for the MPC signing layer and subsequent broadcast.
Band: prepare
Required inputs:
chainto- either
walletNameorfrom - either
amountoramountWei
walletNamefromsymboltokenContractnoncemaxPriorityFeePerGasWeipriorityFeeMultiplier
- provide either
amountoramountWei, never both - token transfers require
tokenContract - if you only know the token symbol or name, resolve it first with
resolve_asset - see Supported Chains for the chain surface
Prepare a signing-ready transaction to send 1 ETH from my local wallet to 0x... on ethereum.
prepare_onramp
What it does: Prepares a MoonPay on-ramp widget URL for funding a destination address or a managed MPC wallet on a supported chain.
Band: prepare
Required inputs:
chain- exactly one of
addressorwalletName
currencyCode(defaults to the chain-native asset)baseCurrencyCode(required ifbaseCurrencyAmountorquoteCurrencyAmountis provided)- one of
baseCurrencyAmountorquoteCurrencyAmount lockAmount(only valid withbaseCurrencyAmount)redirectUrl(HTTPS)
- Requires MoonPay credentials on the server. If unconfigured, the call returns a structured
not_availableerror. - If
walletNameis provided, the tool resolves the chain-specific wallet address before building the widget URL.
Prepare an on-ramp to fund my treasury wallet with 500 USD on ethereum.
Sign Tools
Signing runs through MPC 2-of-2 threshold signing (DKLS23). WalletSuite holds one key share and you hold the other; both shares are required to produce any signature, and no full private key is ever assembled on either side. Owner-mode tools (wallet creation, custom policies, agent API keys) run a key-generation or policy ceremony against the cosigner; they appear only in owner sessions.create_wallet
What it does: Bootstraps a new MPC wallet by running a distributed key-generation (DKG) ceremony against the configured cosigner and derives the wallet’s addresses for supported chains. Your local share is encrypted at rest with the WALLETSUITE_PASSPHRASE secret; the cosigner persists its half on S3 + KMS. The share, mnemonic, and any private key material are never returned.
Band: sign
Required inputs:
walletName(must match^[a-zA-Z0-9_-]{1,64}$)
walletName, the derived address, keyId, and createdAt.
Example prompt: Create a wallet called treasury.
get_wallet_address
What it does: Returns the address for a named wallet on a supported signing chain.
Band: sign
Required inputs:
walletNamechain
Get the ethereum address for my wallet named treasury.
sign_transaction
What it does: Signs a raw unsigned transaction hex blob via MPC 2-of-2 threshold signing.
Band: sign
Required inputs:
walletNamechainunsignedTxHex
Sign this raw unsigned ethereum transaction hex with my treasury wallet.
create_custom_policy
What it does: Registers a custom policy on the cosigner and returns the resulting policyId. The cosigner enforces the policy’s destination allowlist, per-transaction native-value cap, and rate limit at signing time.
Band: sign
Required inputs:
walletName- at least one constraint:
allowlist,maxValueEth, orrateLimitPerHour
allowlist(EIP-55 checksummed destination addresses the cosigner will permit)maxValueEth(per-transaction native-value cap as a decimal string, up to 18 fractional digits)rateLimitPerHour(integer in the range 1-1000)
walletName, the new policyId, appliedAt, and the constraints that were applied.
Example prompt: Create a policy for my treasury wallet that caps transfers at 1 ETH and allows only 0x... as a destination.
create_agent_api_key
What it does: Issues an agent API token bound to an MPC wallet on the cosigner, writes the secret token to a mode-0600 file, and returns metadata only. The cosigner stores only the SHA-256 hash of the token; the raw token is written once to the file and is never returned in chat.
Band: sign
Required inputs:
walletNamelabel(human-readable label persisted with the cosigner-side token-hash record)
expiresIn- one of30d(default),90d, orneverallowedTools(list of MCP tool names this agent token is permitted to invoke)tokenFile(defaults to~/.walletsuite/mpc-agent-token)
walletName, label, tokenHash, expiresIn, expiresAt when set, allowedTools when set), the token file path, and a nextAction hint to launch the server in MPC agent mode with MPC_AGENT_TOKEN set from the file.
Example prompt: Create an agent API key for my treasury wallet labeled trader.
Broadcast Tools
send_transaction
What it does: Signs and broadcasts a raw unsigned transaction hex blob via MPC 2-of-2 threshold signing.
Band: broadcast
Required inputs:
walletNamechainunsignedTxHexconfirmBroadcast=true
- this is the destructive path
- explicit confirmation is required
- the matching RPC URL must be configured
- this works with raw unsigned transaction hex
Broadcast this unsigned ethereum transaction with my treasury wallet.