SERVICE / DETAILother

Add-on, the official ruler

GET aeml-x402.zeabur.app/gauge/ruler

SONAR SCORE0.850
LIVE PRICE0.005000
BAZAAR LIVEnot compatible
CDP INDEXEDno
DECISION EVIDENCE

Why an agent can trust this route.

12 observations in the last 24h
HANDSHAKE SUCCESS100.0%402 challenge reachable
PAID DELIVERY0.0%settlement observed
P90 LATENCY393msrecent response window
PRICE DRIFT0.0%advertised vs observed

Sonar evidence is advisory. Paid delivery is shown as verified only when paid probes are available; otherwise route estimates use the unpaid handshake as a clearly labeled proxy.

SONAR PROBE HISTORY / 30D

Observed outcomes

JSON ↗
LIVE ENDPOINT METADATA

Add-on, the official ruler: the band and threshold ladder published by the source agency, its classification, and distance-to-action. NOT every line has an official ruler - pure market quotes do not. When it does not, you get 422 with no_charge:true and reason:no-ruler-for-this-line and you are NOT billed. Never a bag of nulls you paid for. Every record carries an offline-recomputable record_hash.

Resource: aeml-x402.zeabur.app/gauge/ruler

Network: base · Asset: 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 · Pay to: 0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3

Payment methods: — · Last validation: 2026-10-15 11:51:46.624+00

{
  "input": null,
  "output": null,
  "paymentRequirements": [
    {
      "raw": {
        "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
        "extra": {
          "name": "USD Coin",
          "version": "2"
        },
        "payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
        "amount": "5000",
        "scheme": "exact",
        "network": "base",
        "mimeType": "application/json",
        "resource": "https://aeml-x402.zeabur.app/gauge/ruler",
        "extensions": {
          "bazaar": {
            "info": {
              "input": {
                "type": "http",
                "method": "GET",
                "queryParams": {
                  "entity": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[",
                  "signal_id": "required - signal id (genus.species); free list at GET /gauge/catalog (paged; ?all=1 for every line)"
                }
              },
              "output": {
                "type": "json",
                "example": {
                  "dim": "ruler",
                  "grade": "screening-level, not decision-grade",
                  "ruler": {
                    "band": "below_action",
                    "unit": "ft",
                    "scale": "flood_stage",
                    "metric": "gauge_height_ft",
                    "source": "NOAA NWS/NWPS",
                    "standard": "NWS flood category thresholds (official; not judged by this API)",
                    "thresholds": {
                      "major": 65,
                      "minor": 52,
                      "action": 40,
                      "moderate": 56
                    },
                    "official_category": "no_flooding",
                    "distance_to_action": 9.31
                  },
                  "scope": {
                    "full": "https://api.truthbear.co/scope/v1",
                    "verifiability": "via-endpoint",
                    "monitoring_not_forecast": true,
                    "intelligence_not_command": true
                  },
                  "entity": "03255000",
                  "nature": "This API supplies data organisation and trend description only. It is not a recommendation to act; the decision is yours. Purely descriptive - no judgement, no prediction.Official source plus record_hash; verify with the free /gauge/verify.",
                  "signal_id": "hydrology.river-level",
                  "provenance": {
                    "freshness": "fresh",
                    "age_hours_now": 23,
                    "freshness_basis": "cadence=daily; fresh<=24h; recent<=192h; dead_source>1440h; age_basis=request-time(now minus observed_at)"
                  },
                  "source_ref": "https://waterdata.usgs.gov/monitoring-location/03255000/",
                  "entity_name": "Ohio River at Cincinnati, OH",
                  "observed_at": "2026-08-25T04:00:00.000Z",
                  "record_hash": "sha256:5969b8a147f438254edadf246ed1d7801a77c29babb5d725e17870320d620dd7",
                  "record_hash_verifiable": {
                    "mode": "via-endpoint",
                    "note": "This response is a projected delivery (some core fields are omitted to control size). Cross-check record_hash with the free /gauge/verify, or buy /gauge to get the complete core for offline recomputation."
                  }
                }
              }
            },
            "schema": {
              "$schema": "https://json-schema.org/draft/2020-12/schema",
              "properties": {
                "input": {
                  "type": "object",
                  "required": [
                    "type",
                    "method",
                    "queryParams"
                  ],
                  "properties": {
                    "type": {
                      "const": "http"
                    },
                    "method": {
                      "enum": [
                        "GET"
                      ],
                      "type": "string"
                    },
                    "queryParams": {
                      "type": "object",
                      "required": [
                        "signal_id",
                        "entity"
                      ],
                      "properties": {
                        "entity": {
                          "type": "string",
                          "examples": [
                            "07010000"
                          ],
                          "description": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]"
                        },
                        "signal_id": {
                          "type": "string",
                          "examples": [
                            "hydrology.river-level"
                          ],
                          "description": "required - signal id (genus.species); free list at GET /gauge/catalog (paged; ?all=1 for every line)"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "output": {
                  "type": "object",
                  "required": [
                    "type"
                  ],
                  "properties": {
                    "type": {
                      "const": "json"
                    },
                    "example": {}
                  }
                }
              }
            },
            "priceUsd": "$0.005",
            "discoverable": true,
            "outputSchema": {
              "type": "object",
              "required": [
                "nature",
                "dim",
                "ruler"
              ],
              "properties": {
                "dim": {
                  "type": "string",
                  "description": "Always the literal \"ruler\""
                },
                "grade": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
                },
                "ruler": {
                  "type": [
                    "object",
                    "null"
                  ],
                  "description": "Official-ruler projection: band / thresholds / official category / distance to action / standard"
                },
                "scope": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Honest statement of scope and limits: monitoring is not forecasting, intelligence is not instruction, and the boundary of what is verifiable"
                },
                "entity": {
                  "type": "string",
                  "description": "Monitored object id (e.g. btc / us / hormuz); full list at free /gauge/catalog or /gauge/preview"
                },
                "nature": {
                  "type": "string",
                  "description": "Neutrality statement: GAUGE supplies observations and trend description only - no judgement, no prediction, no recommendation"
                },
                "_citation": {
                  "type": [
                    "object",
                    "null"
                  ],
                  "description": "Offline-verifiable citation: {statement_type, not_advice:bool, claim, fact, source, record_hash, signature(Ed25519), key_id, issuer_DID(did:key), verify_url} - the trust root for zero-trust self-verification"
                },
                "signal_id": {
                  "type": "string",
                  "description": "Signal id in genus.species ASCII binomial form (e.g. crypto.spot / macro.unemployment / shipping.route-disruption); full list at free /gauge/catalog"
                },
                "provenance": {
                  "type": [
                    "object",
                    "null"
                  ],
                  "description": "Data lineage: {served_from, data_as_of, oldest_leg_as_of, data_age_hours (frozen age, reference only), age_hours_now (age computed at request time - the real basis for freshness), freshness(fresh|recent|stale), freshness_basis (the cadence and threshold used for this row, as a string), dead_source (optional: upstream frozen or discontinued), data_lineage:[{signal,traceable_to,uncertainty,record_hash,...}], validation_status}. Freshness is cadence-aware, so monthly/quarterly/annual official lines are not misjudged against a 24h rule; the same basis is used by free /gauge/coverage. Buyers can trace back to the official source"
                },
                "source_ref": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Official source URL (provenance)"
                },
                "entity_name": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Human-readable name of the object"
                },
                "observed_at": {
                  "type": "string",
                  "description": "Actual observation time of the data, ISO-8601"
                },
                "record_hash": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "sha256:<64hex> (contract A v3, binds the values plus provenance)"
                },
                "data_age_hours": {
                  "type": [
                    "number",
                    "null"
                  ],
                  "description": "Age frozen at collection time (0 = same hour), for reference only - if a collector stalls this field stops moving. For freshness always use provenance.age_hours_now (computed at request time) and provenance.freshness; the threshold basis is in provenance.freshness_basis"
                },
                "decision_points": {
                  "type": [
                    "object",
                    "null"
                  ],
                  "description": "{count, points:[{tag,current,swappable,how}], note} - decision points you can re-run with a swapped tag (one swapped tag = one call); leave it alone and the original context is the default, at no extra charge"
                },
                "source_agreement_cv": {
                  "type": [
                    "number",
                    "null"
                  ],
                  "description": "Multi-source agreement, coefficient of variation (smaller = closer agreement). Present ONLY when two or more CONFIRMED-INDEPENDENT sources measure the same fact at the same time - see sources[].independent. Same source relayed through two channels does not count as independent, and two different time bases (daily mean vs spot) do not count as agreement. Single-source / unconfirmed independence / not applicable -> null"
                },
                "record_hash_verifiable": {
                  "type": [
                    "object",
                    "null"
                  ],
                  "description": "{mode:offline|via-endpoint, note}"
                }
              },
              "additionalProperties": true,
              "conditionalProperties": {
                "last_fact": {
                  "type": [
                    "object",
                    "null"
                  ],
                  "description": "Most recent qualifying fact for this line and entity, attached centrally (may be absent when the line has no qualifying fact yet)"
                },
                "decision_points": {
                  "type": [
                    "object",
                    "null"
                  ],
                  "description": "Swappable decision points for this entity, attached centrally: {count, points:[{tag,current,swappable,how}], note}. Present only when the entity has at least one swappable tag in the index, so bundles for entities without one omit it"
                },
                "leg_availability": {
                  "type": [
                    "object",
                    "null"
                  ],
                  "description": "Per-leg degradation disclosure: which legs are present, which are degraded and why. Present only when at least one leg is degraded"
                },
                "record_hash_verifiable": {
                  "type": [
                    "object",
                    "null"
                  ],
                  "description": "Whether this response can recompute its own record_hash offline. Present only when the payload carries a top-level record_hash; may be absent on list-shaped deliveries where verifiability is stated per row instead"
                }
              }
            },
            "routeTemplate": "/gauge/ruler",
            "priceUsdNumber": 0.005
          }
        },
        "description": "Add-on, the official ruler: the band and threshold ladder published by the source agency, its classification, and distance-to-action. NOT every line has an official ruler - pure market quotes do not. When it does not, you get 422 with no_charge:true and reason:no-ruler-for-this-line and you are NOT billed. Never a bag of nulls you paid for. Every record carries an offline-recomputable record_hash. $0.0050 per call.",
        "outputSchema": {
          "input": {
            "type": "http",
            "method": "GET",
            "example": {
              "entity": "07010000",
              "format": "thin",
              "signal_id": "hydrology.river-level"
            },
            "required": [
              "signal_id",
              "entity"
            ],
            "properties": {
              "entity": {
                "type": "string",
                "examples": [
                  "07010000"
                ],
                "description": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]"
              },
              "signal_id": {
                "type": "string",
                "examples": [
                  "hydrology.river-level"
                ],
                "description": "required - signal id (genus.species); free list at GET /gauge/catalog (paged; ?all=1 for every line)"
              }
            },
            "queryParams": {
              "entity": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]",
              "signal_id": "required - signal id (genus.species); free list at GET /gauge/catalog (paged; ?all=1 for every line)"
            },
            "discoverable": true,
            "exampleRequest": "/gauge/ruler?signal_id=hydrology.river-level&entity=07010000&format=thin"
          },
          "output": {
            "type": "object",
            "required": [
              "nature",
              "dim",
              "ruler"
            ],
            "properties": {
              "dim": {
                "type": "string",
                "description": "Always the literal \"ruler\""
              },
              "grade": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
              },
              "ruler": {
                "type": [
                  "object",
                  "null"
                ],
                "description": "Official-ruler projection: band / thresholds / official category / distance to action / standard"
              },
              "scope": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Honest statement of scope and limits: monitoring is not forecasting, intelligence is not instruction, and the boundary of what is verifiable"
              },
              "entity": {
                "type": "string",
                "description": "Monitored object id (e.g. btc / us / hormuz); full list at free /gauge/catalog or /gauge/preview"
              },
              "nature": {
                "type": "string",
                "description": "Neutrality statement: GAUGE supplies observations and trend description only - no judgement, no prediction, no recommendation"
              },
              "_citation": {
                "type": [
                  "object",
                  "null"
                ],
                "description": "Offline-verifiable citation: {statement_type, not_advice:bool, claim, fact, source, record_hash, signature(Ed25519), key_id, issuer_DID(did:key), verify_url} - the trust root for zero-trust self-verification"
              },
              "signal_id": {
                "type": "string",
                "description": "Signal id in genus.species ASCII binomial form (e.g. crypto.spot / macro.unemployment / shipping.route-disruption); full list at free /gauge/catalog"
              },
              "provenance": {
                "type": [
                  "object",
                  "null"
                ],
                "description": "Data lineage: {served_from, data_as_of, oldest_leg_as_of, data_age_hours (frozen age, reference only), age_hours_now (age computed at request time - the real basis for freshness), freshness(fresh|recent|stale), freshness_basis (the cadence and threshold used for this row, as a string), dead_source (optional: upstream frozen or discontinued), data_lineage:[{signal,traceable_to,uncertainty,record_hash,...}], validation_status}. Freshness is cadence-aware, so monthly/quarterly/annual official lines are not misjudged against a 24h rule; the same basis is used by free /gauge/coverage. Buyers can trace back to the official source"
              },
              "source_ref": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Official source URL (provenance)"
              },
              "entity_name": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Human-readable name of the object"
              },
              "observed_at": {
                "type": "string",
                "description": "Actual observation time of the data, ISO-8601"
              },
              "record_hash": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "sha256:<64hex> (contract A v3, binds the values plus provenance)"
              },
              "data_age_hours": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "Age frozen at collection time (0 = same hour), for reference only - if a collector stalls this field stops moving. For freshness always use provenance.age_hours_now (computed at request time) and provenance.freshness; the threshold basis is in provenance.freshness_basis"
              },
              "decision_points": {
                "type": [
                  "object",
                  "null"
                ],
                "description": "{count, points:[{tag,current,swappable,how}], note} - decision points you can re-run with a swapped tag (one swapped tag = one call); leave it alone and the original context is the default, at no extra charge"
              },
              "source_agreement_cv": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "Multi-source agreement, coefficient of variation (smaller = closer agreement). Present ONLY when two or more CONFIRMED-INDEPENDENT sources measure the same fact at the same time - see sources[].independent. Same source relayed through two channels does not count as independent, and two different time bases (daily mean vs spot) do not count as agreement. Single-source / unconfirmed independence / not applicable -> null"
              },
              "record_hash_verifiable": {
                "type": [
                  "object",
                  "null"
                ],
                "description": "{mode:offline|via-endpoint, note}"
              }
            },
            "additionalProperties": true,
            "conditionalProperties": {
              "last_fact": {
                "type": [
                  "object",
                  "null"
                ],
                "description": "Most recent qualifying fact for this line and entity, attached centrally (may be absent when the line has no qualifying fact yet)"
              },
              "decision_points": {
                "type": [
                  "object",
                  "null"
                ],
                "description": "Swappable decision points for this entity, attached centrally: {count, points:[{tag,current,swappable,how}], note}. Present only when the entity has at least one swappable tag in the index, so bundles for entities without one omit it"
              },
              "leg_availability": {
                "type": [
                  "object",
                  "null"
                ],
                "description": "Per-leg degradation disclosure: which legs are present, which are degraded and why. Present only when at least one leg is degraded"
              },
              "record_hash_verifiable": {
                "type": [
                  "object",
                  "null"
                ],
                "description": "Whether this response can recompute its own record_hash offline. Present only when the payload carries a top-level record_hash; may be absent on list-shaped deliveries where verifiability is stated per row instead"
              }
            }
          }
        },
        "maxAmountRequired": "5000",
        "maxTimeoutSeconds": 300
      },
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
      "scheme": "exact",
      "network": "base",
      "amountAtomic": "5000"
    }
  ]
}
METADATA PROVENANCE

Source catalog records are retained separately from live endpoint observations. Sonar score, uptime, and latency are advisory metrics. CDP indexing is not inferred from validation.