For AI agents: a documentation index is available at /llms.txt. A markdown version of this page is available at the same URL with .md appended (or via Accept: text/markdown).
Skip to main content

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.

Server-wallet polling

In server-wallet mode, signing commands may return a pollingId when --wait is omitted. Track pending requests:

mm wallet requests list
mm wallet requests watch --polling-id <POLLING_ID>

In bring your own wallet mode, results return immediately when the mnemonic is unlocked.

See mm wallet and mm decode in the commands reference.