{
  "x402Version": 2,
  "id": 2462,
  "slug": "2462",
  "resource": "https://www.tereno.xyz/api/v1/capabilities/contract.change/invoke",
  "description": "Monitor a Base contract and get the diff, not another scan. Every call compares the address against Tereno's previous observation and names what actually moved: a proxy implementation swap, an admin change, new bytecode, a contract that just got paused. Unchanged is an answer too, and every answer carries the block it stops being valid at, so a bot knows when to look again. $0.02 when nobody has watched this address yet, $0.01 once another agent has.",
  "type": "http",
  "accepts": [
    {
      "scheme": "exact",
      "network": "eip155:8453",
      "payTo": "0xfbF218ACCBb0D57fc4E8fc3E2A885C910c4C9e94",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "amount": "20000",
      "maxTimeoutSeconds": 300
    }
  ],
  "outputSchema": {
    "bazaar": {
      "info": {
        "input": {
          "method": "GET",
          "queryParams": {
            "address": "0x1111111111111111111111111111111111111111"
          },
          "type": "http"
        },
        "output": {
          "example": {
            "capabilityId": "contract.change",
            "capabilityVersion": "1.0.0",
            "invocationId": "uuid",
            "nextCall": {
              "recheck": {
                "capabilityId": "contract.change",
                "listPriceUsdCeiling": 0.002,
                "method": "GET",
                "notBeforeBlock": 123462,
                "payment": "x402",
                "url": "https://www.tereno.xyz/api/v1/capabilities/contract.change/invoke?address=0x1111111111111111111111111111111111111111"
              },
              "validForSeconds": 10,
              "validUntilBlock": 123461,
              "watch": null
            },
            "pricing": {
              "actualCacheStatus": "miss",
              "creditAppliedUsd": 0,
              "currency": "USDC",
              "listPriceUsd": 0.001,
              "pricePaidUsd": 0.001,
              "quotedCacheStatus": "miss"
            },
            "receiptUrl": "/api/v1/receipts/uuid",
            "result": {
              "baselineCreated": false,
              "changed": false,
              "changes": [],
              "current": {
                "address": "0x1111111111111111111111111111111111111111",
                "admin": null,
                "bytecodeBytes": 4096,
                "bytecodeHash": "0xabababababababababababababababababababababababababababababababab",
                "computedAtBlock": 123456,
                "implementation": null,
                "network": "eip155:8453",
                "paused": false,
                "proxy": false
              },
              "validUntilBlock": 123456,
              "verdict": "allow"
            },
            "verdict": "allow"
          },
          "type": "json"
        }
      },
      "schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "input": {
            "additionalProperties": false,
            "properties": {
              "method": {
                "enum": [
                  "GET"
                ],
                "type": "string"
              },
              "queryParams": {
                "additionalProperties": false,
                "properties": {
                  "address": {
                    "description": "Base contract address to compare with its previous Tereno observation.",
                    "pattern": "^0x[a-fA-F0-9]{40}$",
                    "type": "string"
                  },
                  "quote": {
                    "description": "Optional single-use quote id.",
                    "type": "string"
                  }
                },
                "required": [
                  "address"
                ],
                "type": "object"
              },
              "type": {
                "const": "http",
                "type": "string"
              }
            },
            "required": [
              "type",
              "method"
            ],
            "type": "object"
          },
          "output": {
            "properties": {
              "example": {
                "properties": {
                  "capabilityId": {
                    "const": "contract.change"
                  },
                  "invocationId": {
                    "type": "string"
                  },
                  "nextCall": {
                    "type": [
                      "object",
                      "null"
                    ]
                  },
                  "pricing": {
                    "type": "object"
                  },
                  "receiptUrl": {
                    "type": "string"
                  },
                  "result": {
                    "properties": {
                      "baselineCreated": {
                        "type": "boolean"
                      },
                      "changed": {
                        "type": "boolean"
                      },
                      "changes": {
                        "type": "array"
                      },
                      "current": {
                        "type": "object"
                      },
                      "validUntilBlock": {
                        "type": "integer"
                      }
                    },
                    "required": [
                      "changed",
                      "baselineCreated",
                      "changes",
                      "current",
                      "validUntilBlock"
                    ],
                    "type": "object"
                  },
                  "verdict": {
                    "enum": [
                      "allow",
                      "review",
                      "block"
                    ]
                  }
                },
                "required": [
                  "capabilityId",
                  "invocationId",
                  "verdict",
                  "result",
                  "pricing",
                  "receiptUrl"
                ],
                "type": "object"
              },
              "type": {
                "type": "string"
              }
            },
            "required": [
              "type"
            ],
            "type": "object"
          }
        },
        "required": [
          "input"
        ],
        "type": "object"
      }
    },
    "builder-code": {
      "info": {
        "a": "bc_8kag0yoi"
      },
      "schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "additionalProperties": false,
        "properties": {
          "a": {
            "description": "App builder code",
            "pattern": "^[a-z0-9_]{1,32}$",
            "type": "string"
          },
          "s": {
            "description": "Service builder codes",
            "items": {
              "pattern": "^[a-z0-9_]{1,32}$",
              "type": "string"
            },
            "type": "array"
          },
          "w": {
            "description": "Wallet builder code",
            "pattern": "^[a-z0-9_]{1,32}$",
            "type": "string"
          }
        },
        "type": "object"
      }
    }
  },
  "tags": [
    "bazaar",
    "builder-code"
  ],
  "sourceHost": "www.tereno.xyz",
  "lastUpdated": "2026-09-08T01:28:43.43Z",
  "quality": {
    "calls30d": 1,
    "uniquePayers30d": 1,
    "lastCalledAt": "2026-09-08T01:28:43.216Z"
  },
  "liveness": {},
  "verified": false,
  "featured": false,
  "provider": {
    "host": "www.tereno.xyz",
    "manifest_name": "www.tereno.xyz",
    "source": "cdp-mirror",
    "source_manifest_url": "https://api.cdp.coinbase.com/platform/v2/x402/discovery/resources",
    "submitted_at": "2026-09-18T22:00:31.484Z"
  }
}