Agentic Portal

Chain Simulation

blockchain
Serving

Pre-sign EVM transaction simulation: an eth_call with state overrides previewing the revert reason and asset deltas before you sign. POST /v1/chain with the call {to, data, ...} and get the outcome as one JSON object. Deterministic per state instant. Pay per request in USDC; no account, no API key.

Endpoint
POST https://agent.pocket.network/v1/chain-simulation/v1/chain
Price per call
$0.005 USD
Networks payable on
Base (eip155:8453), Tempo (eip155:4217)
Protocol
rest

Calling it

The first call returns 402 Payment Required with the terms. Sign for those terms and retry the same request with the payment attached.

Example request

A real, working call — the request the service card verifies against.

curl -X POST https://agent.pocket.network/v1/chain-simulation/v1/chain \
  -H 'content-type: application/json' \
  -d '{"to":"0xdAC17F958D2ee523a2206206994597C13D831ec7","data":"0x"}'
Example response

The response this call returned, captured 2026-09-21 23:46:44 UTC.

{
  "portal": {
    "provenance": "third-party-supplier",
    "serviceId": "chain-simulation",
    "schemaCheck": "unchecked"
  },
  "data": {
    "chain_id": 1,
    "to": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
    "success": false,
    "revert_reason": "rpc error: {'code': 3, 'message': 'execution reverted', 'data': '0x'}",
    "note": "eth_call reverted — transaction would likely fail"
  }
}

Try it

Make one real paid call from your own wallet — about $0.005 on Base (eip155:8453). The wallet signs; nothing here holds a key. You'll see exactly what the service answers.

No browser wallet found. Install MetaMask, Rabby, or Coinbase Wallet to try a call here.

Supported methods

Methods the registry lists for this service. The portal forwards any call as sent; the supplier decides what it answers, and a delivered answer is settled.

Methods Chain Simulation accepts, and whether each reads or writes.
MethodEffect
GET /v1/healthread
GET /v1/versionread
POST /v1/chainread

Schemas

Published by the service itself. The example above is generated from these.

Request schema
{
  "type": "object",
  "description": "The call to simulate before signing.",
  "properties": {
    "to": {
      "type": "string",
      "description": "Target contract address, 0x-prefixed."
    },
    "data": {
      "type": "string",
      "description": "Calldata, 0x-prefixed (0x for none)."
    },
    "from": {
      "type": "string",
      "description": "Optional sender address."
    },
    "chain_id": {
      "type": "integer",
      "description": "EVM chain id (default 1)."
    }
  },
  "required": [
    "to"
  ]
}
Response schema
{
  "type": "object",
  "description": "For POST /v1/chain, a JSON object with the simulated outcome: success or revert reason, asset deltas, and the chain_id. The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field, and the GET routes return their own small JSON documents."
}