Sign messages and transactions
Sign plaintext messages, EIP-712 typed data, or submit raw EVM transactions.
Ask your agent
You (to your agent): "Sign this message on Ethereum: Hello, world"
You (to your agent): "Sign this EIP-712 typed data: <paste JSON payload>"
Your agent shows the exact payload and asks you to confirm before signing.
Prerequisites
- Quickstart completed
- Understanding of what you are signing. Review payloads before confirming.
Sign a plaintext message
mm wallet sign-message --message "<TEXT>" --chain-id <CHAIN_ID> [--wait]
Sign EIP-712 typed data
mm wallet sign-typed-data --chain-id <CHAIN_ID> --payload '<JSON>' [--wait]
The payload must be valid JSON with domain, types, primaryType, and message fields.
Send a raw transaction
If the calldata is unfamiliar, decode it first:
mm decode --payload <0x-calldata>
Then submit the transaction:
mm wallet send-transaction --chain-id <CHAIN_ID> --payload '<JSON>' [--wait]
The payload must include at least a to address. See the commands reference for the full schema.
If mm decode returns Call unknown function, treat the transaction as higher risk and confirm
the payload before signing.
Polling
Signing commands can return a pollingId when --wait is omitted, in both server-wallet and bring
your own wallet mode.
In bring your own wallet mode, the request is signed locally and then submitted as a job, so pass
--wait to get the result in one call.
In server-wallet mode, track pending requests:
mm wallet requests list
mm wallet requests watch <POLLING_ID>
If the output contains AWAITING_MFA, the request is waiting for your 2FA approval.
See Approve requests.