HOW-TO
Manage a multisig with AI agents
Connect Claude, Cursor or any MCP-capable agent to MyMultiSig. The agent can check balances and the request queue, decode and review requests, propose transactions, sign them with its own owner key, and execute once the threshold is met. You keep the final say on every step.
How the agent gets its powers
- API key (optional): created at Settings → AI agents. It acts as your wallet on mymultisig.app, limited to the scopes you pick:
read: see your wallets.propose: queue requests.sign: store signatures and record executions.manage: cancel, reset, register wallets.
- Owner key (optional): to approve or execute, the agent needs its own owner key, passed as
MYMULTISIG_PRIVATE_KEY. Signing happens on the agent's machine, and the key is never sent to mymultisig.app. Generate a fresh key for the agent, then add its address as an owner by proposing anaddOwnerrequest.
Connect the MCP server
- Claude Code: install the plugin, which bundles the MCP server and workflow skills:
/plugin marketplace add marc-aurele-besner/mymultisig-app /plugin install mymultisig@mymultisig
Or add only the server:claude mcp add mymultisig \ -e MYMULTISIG_API_KEY=mms_… \ -e MYMULTISIG_PRIVATE_KEY=0x… \ -- npx -y mymultisig-mcp
- Claude Desktop, Cursor and other MCP clients: add this to the client's MCP config:
{ "mcpServers": { "mymultisig": { "command": "npx", "args": ["-y", "mymultisig-mcp"], "env": { "MYMULTISIG_API_KEY": "mms_…", "MYMULTISIG_PRIVATE_KEY": "0x…", "MYMULTISIG_CHAINS": "11155111" } } } }
More settings:
MYMULTISIG_RPC_URL_<chainId>sets a custom RPC per chain.MYMULTISIG_READ_ONLY=1exposes read tools only.MYMULTISIG_CHAINSlimits the agent to the listed chains.
What the agent can do
- Read:
get_multisig: owners, threshold, version and nonce, read live from the chain.list_requests: the request queue.get_request: the decoded call with risk warnings, plus every signature verified locally.get_balances: native and token balances.
- Write:
create_multisig: deploy a wallet, at a deterministic address if you want.propose_transaction: queue a raw call or an ABI-encoded one.approve_request,execute_request(simulated first),cancel_request,reset_request.
Try asking: “What's waiting for signatures on my Sepolia treasury?”, “Propose sending 50 USDC to 0x… for the design invoice” or “Review request 3f2c… and sign it if it's what Alice described”.
CLI and SDK
The mymultisig CLI uses the same engine as the MCP server. It prints human-readable output, or JSON for scripts with --json:
npx mymultisig-cli request list 11155111 0xYourMultisig npx mymultisig-cli --json request propose --chain 11155111 --wallet 0x… \ --to 0x… --value-ether 0.01 --description "Test payment"
The mymultisig-sdk package exposes the same client for TypeScript, so your own agents and bots can use it directly. It also includes the protocol helpers this app uses: EIP-712 typed data, signature blobs and execTransaction overloads. The REST API is described in openapi.json, and a short overview for LLMs is at llms.txt.
Safety checklist
- Start on a testnet and set
MYMULTISIG_CHAINSso the agent can't act on other chains. - Give API keys the fewest scopes they need, restrict them to specific wallets, and set an expiry.
- Keep the agent's owner key separate from yours, and never set a threshold the agent can meet alone.
- Before signing, read the agent's
get_requestsummary and warnings: delegatecall, owner or threshold changes, unlimited approvals. - Revoke a key at Settings → AI agents the moment you stop using it.