Skip to main content
The CLI’s global --calldata-only flag prints unsigned EIP-5792 transactions as JSON instead of signing or sending. Use it when the key lives in a TEE or wallet API (MetaMask Agent Wallet server-wallet mode, Frame, Privy, …) that cannot export a private key.
Flag text from the CLI:
Print unsigned EIP-5792 calldata as JSON instead of signing/sending (for external signers — no private key required)
It is a root flag (before the subcommand), not a per-command option.

Output shape

stdout is a PreparedAction (same envelope as GET https://api.sherwood.sh/prepare/...):
Each tx is { to, data, value, chainId } with a hex value (EIP-5792). Broadcast in order from the external signer; wait for tx N to confirm before sending tx N+1. Use the chainId on each tx — the CLI default network is robinhood-fork (9994663); pass --chain if you need another. The HTTP API at https://api.sherwood.sh returns the same unsigned txs (root paths, no /v1 prefix on that host).

Identity mint (verified MetaMask Agent Wallet flow)

--name is required. No Agent0 SDK init, no IPFS, no private key. Then take txs[0] and broadcast. Example with MetaMask Agent Wallet’s mm CLI:
--chain-id, --payload, --intent, and --wait are mm flags, not Sherwood flags.

Other state-changing commands

Any state-changing command accepts the global flag. Commands that normally read your address from the configured key need it explicitly:
See the skill on-ramp for the keyless strategy-propose recipe (clone + propose in one JSON payload).