Unsigned transaction plans
Prepare, simulate, sign, and verify onchain actions.
Onchain MCP actions return an ens-tools-unsigned-plan. The plan makes chain, target, calldata, value, dependencies, prerequisites, and safety properties explicit so a wallet or supervising application can review them. Separately labelled publish, authorize, observe, and revoke tools may persist signed platform records but never broadcast transactions.
Before you run this workflow
Networks
- Ethereum mainnet for onchain plans
- HTTPS for MCP and public APIs
Prerequisites
- JSON-RPC 2.0 client for MCP
- Read the live platform contract and tool schemas at runtime
Wallet permissions
- MCP never receives private keys
- Prepared writes must be reviewed, signed, and broadcast by a separate wallet
Expected result
- Structured JSON data or an unsigned plan with chain, target, calldata, value, and safety metadata
Errors and recovery
- Call tools/list again after schema errors
- Back off after rate limits
- Simulate immediately before signing
How to use it
- 1
Validate the plan kind and chain
Reject an unknown plan format or a chain different from the user’s intended network.
- 2
Check prerequisites
Verify ownership, resolver authority, approvals, prices, deadlines, and any commit age or previous confirmation.
- 3
Simulate every transaction
Run simulate_transaction shortly before signing and preserve dependency order.
- 4
Request explicit review
Show the human-readable action, target, and value. Do not compress multiple independent approvals into an ambiguous prompt.
- 5
Track confirmation
Use get_transaction_status before starting dependent transactions or claiming the action succeeded.
Examples
{
"kind": "ens-tools-unsigned-plan",
"chainId": 1,
"safety": {
"broadcasts": false,
"privateKeysAccepted": false,
"walletSignatureRequired": true,
"simulateBeforeSigning": true
},
"prerequisites": [],
"transactions": [
{
"id": "tx-1",
"to": "0x...",
"data": "0x...",
"value": "0",
"description": "Human-readable action",
"dependsOn": []
}
]
}