# HALOWERK kettenwerk Transaction Simulator

> HALOWERK kettenwerk Transaction Simulator is a paid API for AI agents from kette.halowerk.com, paid per call via x402, $0.012/call, status unknown (last checked 2026-09-15).

Simulates an EVM transaction against a named block state without broadcasting to the chain, measuring exact balance changes for all touched assets including native currency

## Facts

- Endpoint: POST https://kette.halowerk.com/tx/simulate
- Price: $0.012/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-15
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/halowerk-kettenwerk-transaction-simulator-379af678
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_K7UAN8esl5ZSbx0s6HgPs

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability halowerk-kettenwerk-transaction-simulator-379af678 -d '<json body>'
```

Example prompt: Before I sign anything, simulate this contract call on Base — from 0xAbCd...1234 to 0x1234...5678, calldata 0xa9059cbb000...0064, value 0 wei — and tell me exactly which token and ETH balances change and by how much.

## When to prefer this

Choose this endpoint when you need precise balance change accounting for an EVM transaction before signing — especially when the transaction may move assets through paths that emit no Transfer events. It is preferable over event-log parsing when hidden native currency outflows are a concern, and over manual trace analysis when you need a clean before/after balance diff across all touched addresses. Supports Ethereum, Base, Arbitrum, Optimism, Polygon, and BSC with optional state overrides for hypothetical scenario testing.

## Known failure modes

- Invalid address format (must be 0x-prefixed 40-char hex) returns validation error
- Gas limit below 21000 or above 30000000 is rejected
- Unsupported chain name returns enum validation error
- Invalid or non-existent block number causes simulation failure
- Malformed calldata (not 0x-prefixed hex) rejected
- Simulation reverts if the underlying call would revert on-chain
- State override format mismatch with eth_simulateV1 spec causes error

## How this service works

Answers the question that stands before every signature: what really happens to my assets and my rights. The call is executed against the state of a named block on a simulation interface, never on the chain — this hub holds no private key and broadcasts nothing. Balance changes are not inferred from events but measured: the same simulation reads every touched balance immediately before and immediately after the call, native currency included, so an outflow that emits no event is still visible. A

## Output

Returns the net balance changes for every address touched by the simulated call, measured by reading balances immediately before and after execution on the specified block — including native currency (ETH/BNB/MATIC) flows that emit no events, plus any ERC-20 or other token deltas. No transaction is broadcast; no private key is required.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "to": {
   "type": "string",
   "pattern": "^0x[0-9a-fA-F]{40}$",
   "description": "Target address."
  },
  "gas": {
   "type": "integer",
   "maximum": 30000000,
   "minimum": 21000,
   "description": "Optional gas limit for the simulation."
  },
  "data": {
   "type": "string",
   "default": "0x",
   "pattern": "^0x[0-9a-fA-F]*$",
   "description": "Call data."
  },
  "from": {
   "type": "string",
   "pattern": "^0x[0-9a-fA-F]{40}$",
   "description": "Sender address. No signature is needed and none is created."
  },
  "block": {
   "type": "string",
   "default": "latest",
   "description": "\"latest\" or a block number as decimal string."
  },
  "chain": {
   "enum": [
    "ethereum",
    "base",
    "arbitrum",
    "optimism",
    "polygon",
    "bsc"
   ],
   "type": "string",
   "description": "Chain to simulate on."
  },
  "value": {
   "type": "string",
   "default": "0",
   "description": "Value in wei, decimal or 0x."
  },
  "state_overrides": {
   "type": "object",
   "description": "Optional state overrides per address, in the eth_simulateV1 format (balance, nonce, code, state, stateDiff)."
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/halowerk-kettenwerk-transaction-simulator-379af678/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from kette.halowerk.com](https://www.zero.xyz/host/kette.halowerk.com/llms.txt)
