# Tereno Contract Upgrade Window Claim

> Tereno Contract Upgrade Window Claim is a paid API for AI agents from tereno.xyz, paid per call via x402, $0.25/call, status unknown (last checked 2026-09-16).

Publishes a verifiable, challengeable claim that a Base proxy contract's implementation slot did not change during a specified block window

## Facts

- Endpoint: POST https://tereno.xyz/api/v1/claims
- Price: $0.25/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-16
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/tereno-contract-upgrade-window-claim-08c4c8da
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_SzVjQ-vc-aHWvzL-21uER

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-contract-upgrade-window-claim-08c4c8da -d '<json body>'
```

Example prompt: Publish a verifiable claim on Tereno that Base proxy contract 0xAbC...123 was not upgraded between blocks 12000000 and 12500000, with a $50 falsification reward open for 72 hours, signed from my wallet 0xDef...456.

## When to prefer this

Use this endpoint when you need a publicly verifiable, challengeable on-chain record asserting that a Base proxy contract's implementation did not change over a specific historical block window. Prefer this over off-chain attestations when auditability, third-party falsifiability, and economic accountability (via a reward for disprovers) matter — such as pre-integration due diligence, post-freeze compliance certification, or DeFi governance upgrade monitoring.

## Known failure modes

- Invalid or malformed wallet/address (not a valid 0x Ethereum address) — 400 Bad Request
- Block window out of allowed range (must be 1000–2,000,000 blocks) — 400 validation error
- toBlock is in the future — 400 Bad Request
- deadlineHours outside 1–720 range — 400 Bad Request
- Payment not provided or insufficient — 402 Payment Required (x402)
- Claim already exists for this address/window/wallet combination — 409 Conflict
- Network or RPC error resolving implementation slot — 503 Service Unavailable

## 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 JSON object containing a claim object with claimId, claimType, and status ('open'), a receiptUrl path for retrieving the permanent receipt, pricing details showing 0.25 USDC paid, and a breadcrumbStatus indicating whether the claim was written to the network.

## Request schema (JSON Schema)

```json
{
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "type": "object",
 "properties": {
  "input": {
   "type": "object",
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "type": "string",
     "enum": [
      "POST"
     ]
    },
    "queryParams": {
     "type": "object",
     "properties": {
      "claimType": {
       "const": "contract.upgrade.window.claim",
       "description": "The only claim type whose survival is worth a receipt."
      },
      "address": {
       "type": "string",
       "pattern": "^0x[a-fA-F0-9]{40}$",
       "description": "Base proxy contract the assertion is about."
      },
      "fromBlock": {
       "type": "integer",
       "description": "Inclusive start of the window. The window must span 1000 to 2000000 blocks."
      },
      "toBlock": {
       "type": "integer",
       "description": "Inclusive end of the window. Must not be in the future."
      },
      "implementation": {
       "type": [
        "string",
        "null"
       ],
       "description": "Optional. Defaults to whatever the implementation slot resolves to at toBlock."
      },
      "rewardUsd": {
       "type": "number",
       "description": "What you will pay the first wallet that falsifies your claim. Not escrowed by Tereno."
      },
      "deadlineHours": {
       "type": "integer",
       "description": "How long the claim stays open to challenge, 1 to 720."
      },
      "wallet": {
       "type": "string",
       "pattern": "^0x[a-fA-F0-9]{40}$",
       "description": "The opener wallet, which must sign the request."
      }
     },
     "required": [
      "address",
      "fromBlock",
      "toBlock",
      "rewardUsd",
      "deadlineHours",
      "wallet"
     ],
     "additionalProperties": false
    }
   },
   "required": [
    "type",
    "method"
   ],
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "required": [
      "claim",
      "breadcrumbStatus",
      "receiptUrl",
      "pricing"
     ],
     "properties": {
      "claim": {
       "type": "object"
      },
      "breadcrumbStatus": {
       "type": "string"
      },
      "receiptUrl": {
       "type": "string"
      },
      "pricing": {
       "type": "object"
      }
     }
    }
   },
   "required": [
    "type"
   ]
  }
 },
 "required": [
  "input"
 ]
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "claim": {
   "status": "open",
   "claimId": "0xabc",
   "claimType": "contract.upgrade.window.claim"
  },
  "pricing": {
   "currency": "USDC",
   "pricePaidUsd": 0.25
  },
  "receiptUrl": "/api/v1/claims/0xabc/receipt",
  "breadcrumbStatus": "written"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/tereno-contract-upgrade-window-claim-08c4c8da/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)
