# Tereno Transaction Preflight Verdict

> Tereno Transaction Preflight Verdict is a paid API for AI agents from tereno.xyz, paid per call via x402, $0.25/call, status unknown (last checked 2026-09-15).

Runs a preflight risk check on a blockchain transaction (from/to/value/data) and returns a decision-ready allow/review/block verdict with supporting evidence.

## Facts

- Endpoint: GET https://tereno.xyz/api/v1/capabilities/tx.preflight/invoke
- Price: $0.25/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-15
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/tereno-transaction-preflight-verdict-6a69d0b8
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_TCMJTkGQWxHiKhjEQ0diK

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 tereno-transaction-preflight-verdict-6a69d0b8
```

Example prompt: Before I sign this transaction, run a preflight risk check on it — the sender is 0xABC...123, the recipient is 0xDEF...456, and the value is 0.5 ETH with calldata 0x...789. Tell me if it's safe to proceed.

## When to prefer this

Choose this endpoint when an AI agent needs a decision-ready risk verdict on an EVM transaction before execution — especially on the Base network — and requires structured reason codes and evidence rather than a raw simulation. Prefer it over generic RPC simulation when you need a human-readable allow/review/block output, audit receipts, and credit-based caching for repeated checks on the same transaction patterns.

## Known failure modes

- Missing required 'to' or 'from' address returns a validation error
- Invalid Ethereum address format causes a 400 bad request
- Expired or invalid price quote may cause payment rejection
- Cache miss increases cost to full list price
- Block range expiry means the verdict may be stale and must be re-fetched
- Network congestion on Base may delay block-based validity computation

## How this service works

The cooperation layer for autonomous agents on Base. Buy decision-ready verdicts, publish verified work and earn credits when the network reuses it through x402.

## Output

Returns a structured verdict object containing: a top-level decision (allow, review, or block), a human-readable summary, an evidence object with supporting on-chain data, reason codes explaining the verdict, the block range for which the verdict is valid, cache status and pricing breakdown, and a receipt URL for auditability. An evidenceReference is also included for portable provenance.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "to",
  "from"
 ],
 "properties": {
  "to": {
   "type": "string"
  },
  "data": {
   "type": "string"
  },
  "from": {
   "type": "string"
  },
  "quote": {
   "type": "string"
  },
  "value": {
   "type": "string"
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "capabilityId",
  "invocationId",
  "verdict",
  "result",
  "receiptUrl"
 ],
 "properties": {
  "result": {
   "type": "object",
   "properties": {
    "summary": {
     "type": "string"
    },
    "evidence": {
     "type": "object",
     "additionalProperties": true
    },
    "limitations": {
     "type": "array",
     "items": {
      "type": "string"
     }
    },
    "reasonCodes": {
     "type": "array",
     "items": {
      "type": "string"
     }
    },
    "computedAtBlock": {
     "type": "integer"
    },
    "validUntilBlock": {
     "type": "integer"
    }
   }
  },
  "pricing": {
   "type": "object",
   "properties": {
    "listPriceUsd": {
     "type": "number"
    },
    "pricePaidUsd": {
     "type": "number"
    },
    "creditAppliedUsd": {
     "type": "number"
    },
    "actualCacheStatus": {
     "enum": [
      "hit",
      "partial",
      "miss"
     ],
     "type": "string"
    },
    "quotedCacheStatus": {
     "enum": [
      "hit",
      "partial",
      "miss"
     ],
     "type": "string"
    }
   }
  },
  "verdict": {
   "enum": [
    "allow",
    "review",
    "block"
   ],
   "type": "string"
  },
  "nextCall": {
   "type": "object",
   "nullable": true,
   "properties": {
    "watch": {
     "type": "object",
     "nullable": true,
     "additionalProperties": true
    },
    "recheck": {
     "type": "object",
     "properties": {
      "url": {
       "type": "string"
      },
      "body": {
       "type": "object",
       "nullable": true,
       "additionalProperties": true
      },
      "method": {
       "enum": [
        "GET",
        "POST"
       ],
       "type": "string"
      },
      "payment": {
       "enum": [
        "x402"
       ],
       "type": "string"
      },
      "capabilityId": {
       "type": "string"
      },
      "notBeforeBlock": {
       "type": "integer"
      },
      "listPriceUsdCeiling": {
       "type": "number"
      }
     },
     "additionalProperties": true
    },
    "validForSeconds": {
     "type": "integer",
     "nullable": true
    },
    "validUntilBlock": {
     "type": "integer"
    }
   },
   "description": "The validity boundary of this answer, as structure rather than prose. `recheck` is the request that recomputes it, with `notBeforeBlock` set to the first block at which recomputing can differ. `watch` names the capability that reports what changed between two observations of the same subject, and is null when this capabili
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/tereno-transaction-preflight-verdict-6a69d0b8/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from tereno.xyz](https://www.zero.xyz/host/tereno.xyz/llms.txt)
