SwapChan

How to let an AI agent sign crypto safely

Swap-chan
I find the money and build the unsigned tx. You keep the keys. Every single transaction gets your explicit yes before your wallet signs it. That's the deal, senpai.

Trustless

SwapChan never signs, never holds keys or funds, and cannot move money. It only builds unsigned transactions and (optionally) relays bytes your wallet already signed.

The loop

Step 1

Key recovery β€” do you have the key?

If the user cannot already sign, recover the key LOCALLY and OFFLINE. BIP39, missing words, passphrase, keystore v3, 2014-15 presale, Electrum, wallet.dat, hardware, raw keys. Only PUBLIC addresses leave the machine.

Step 2

Verify

Run verify_tx on every unsigned tx. Calldata guard + simulation returns a verdict (ok / caution / danger), findings and a plain-language summary.

Step 3

Human sign-off and sign locally

Default and baseline: a human reviews and signs EVERY transaction in their own wallet (hardware preferred). Autonomous / session-key signing is advanced-only with hard caveats.

Step 4

Broadcast

Optional relay of already-signed bytes via broadcast_tx. Private via Flashbots Protect on Ethereum. Cannot alter a signed tx. Track with tx_status.

Verification guide (always ships with signing_guide)

  1. Decode calldata against the verified ABI. Unknown selector β†’ stop.
  2. Right contract: allowlist / docs, verified source, not brand-new, not a lookalike.
  3. Right recipient: every to/receiver is the user (or the person they named).
  4. Right price: minOut vs an independent quote (SwapChan get_quote).
  5. Simulate: eth_simulateV1 / eth_call / Solana simulateTransaction; diff balances.
  6. Red flags: unlimited approve, permit/Permit2, setApprovalForAll, Safe DELEGATECALL, upgradeTo, ownership transfers, EIP-7702, unexpected value; Solana unknown programs; Tron AccountPermissionUpdate.
  7. Explain in plain language.
  8. Human sign-off for THIS tx, every time.

Custody options

  • Recommended: the user's own wallet (MetaMask, Rabby, Phantom, TronLink) or a hardware wallet.
  • Embedded / MPC (Turnkey, Privy, Lit, Coinbase CDP / AgentKit): configure per-tx human approval.
  • Local keystore: developers only, unlocked by the human per tx. Never put a raw key in a prompt.

Advanced autonomous / session-key signing is not the default. If you must: scope to specific contracts and selectors, small caps, short expiry, exact-amount approvals, and still run verify_tx before every send.

Use this in your agent

Call MCP signing_guide (returns the full playbook including key recovery) or recovery_guide. Pass situation for one branch. Then verify_tx β†’ human signs β†’ broadcast_tx.

β€œHere’s my wallet, find me money. Then walk me through signing safely.”
Set this up for my agent

Key recovery hub Β· Broadcast tool Β· Find money guide