Browse all documentation
Developers · 4 of 7

Unsigned transaction plans

Prepare, simulate, sign, and verify onchain actions.

betaserver 3.0 · 79 MCP tools · platform contract v1Verified 2026-07-29Owner: ENS.Tools Developer Platform

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.

One chain ID and an ordered transaction list.
Exact to, data, value, description, and dependsOn fields.
Explicit broadcasts=false, privateKeysAccepted=false, and walletSignatureRequired=true.
Registration, renewal, record, transfer, primary-name, subname, fleet, marketplace, and selected agent workflows.
Production contract

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
Workflow

How to use it

  1. 1

    Validate the plan kind and chain

    Reject an unknown plan format or a chain different from the user’s intended network.

  2. 2

    Check prerequisites

    Verify ownership, resolver authority, approvals, prices, deadlines, and any commit age or previous confirmation.

  3. 3

    Simulate every transaction

    Run simulate_transaction shortly before signing and preserve dependency order.

  4. 4

    Request explicit review

    Show the human-readable action, target, and value. Do not compress multiple independent approvals into an ambiguous prompt.

  5. 5

    Track confirmation

    Use get_transaction_status before starting dependent transactions or claiming the action succeeded.

Examples

Plan shape
{
  "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": []
    }
  ]
}