# OT Intel API – Physics Invariant Reachability Check

> OT Intel API – Physics Invariant Reachability Check is a paid API for AI agents from ot-intel-api.onrender.com, paid per call via x402, $0.2/call, status unknown (last checked 2026-09-14).

Validates whether a tank or vessel's reported level change is physically consistent with its metered inflow and outflow using conservation of mass.

## Facts

- Endpoint: GET https://ot-intel-api.onrender.com/ot/physics/invariant-reachability
- Price: $0.2/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/ot-intel-api-physics-invariant-reachability-check-13189bbf
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_lcpmOhMe1bGqMKFPWfdWF

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 ot-intel-api-physics-invariant-reachability-check-13189bbf
```

Example prompt: Check if the level change on tank T-201 is physically consistent: it started at 3.2m and ended at 4.1m over 600 seconds, with a metered inflow of 0.5 m³/s and outflow of 0.1 m³/s, and the tank cross-sectional area is 10 m²—flag any inconsistency.

## When to prefer this

Choose this endpoint when you need a fast, deterministic, physics-based sanity check on industrial tank or vessel sensor readings — especially in OT/ICS/SCADA environments where you want to flag level changes that are inconsistent with conservation of mass without relying on any ML model or LLM. It is ideal for automated SOC pipelines, sensor anomaly triage, and cybersecurity incident investigation involving spoofed or faulty level readings.

## Known failure modes

- Missing required parameters (asset_id, flow_in, flow_out, level_start, level_end, dt_seconds, tank_area) returns a 400 error
- dt_seconds <= 0 or tank_area <= 0 returns a validation error
- Non-numeric string values for numeric fields cause a parse error
- Payment not included or insufficient results in a 402 Payment Required response
- Service temporarily unavailable on Render cold-start (503 or timeout)

## How this service works

Checks whether a tank/vessel reported level change is physically consistent with its metered flow-in/flow-out via conservation of mass. Pass asset_id, flow_in, flow_out, level_start, level_end, dt_seconds (>0), tank_area (>0), optional noise_floor (default 0.5). Fully deterministic, no LLM, no trained model. Inspired by Barbhaya et al. 2025 physical-invariant residual check — flags inconsistency and direction, does not assert a specific cause.

## Output

Returns a consistency flag indicating whether the reported level change is physically consistent with the metered flows, along with the computed residual value, the direction of any inconsistency (e.g. unexpected gain or loss), and the asset_id that was checked.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [
      "asset_id",
      "flow_in",
      "flow_out",
      "level_start",
      "level_end",
      "dt_seconds",
      "tank_area"
     ],
     "properties": {
      "flow_in": {
       "type": "string",
       "description": "Metered inflow rate (numeric string)"
      },
      "asset_id": {
       "type": "string",
       "description": "Identifier for the tank/vessel being checked"
      },
      "flow_out": {
       "type": "string",
       "description": "Metered outflow rate (numeric string)"
      },
      "level_end": {
       "type": "string",
       "description": "Level reading at end of interval (numeric string)"
      },
      "tank_area": {
       "type": "string",
       "description": "Cross-sectional area, must be > 0 (numeric string)"
      },
      "dt_seconds": {
       "type": "string",
       "description": "Interval duration in seconds, must be > 0 (numeric string)"
      },
      "level_start": {
       "type": "string",
       "description": "Level reading at start of interval (numeric string)"
      },
      "noise_floor": {
       "type": "string",
       "description": "Residual magnitude below which reading is treated as consistent, default 0.5 (numeric string)"
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object"
    }
   }
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/ot-intel-api-physics-invariant-reachability-check-13189bbf/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from ot-intel-api.onrender.com](https://www.zero.xyz/host/ot-intel-api.onrender.com/llms.txt)
