payment-ready until 2026-10-06
Verify official facts before your AI agent acts — multi-source cross-validation with tamper-proof receipts on Bitcoin. 180+ signals (USGS/NOAA/SEC/EPA + more). x402 pay-per-call in USDC, no API key.
Pay from $0.005 to $0.35 per request in USDC on Base / Solana, settled onchain via the x402 protocol, no signup, no API key needed.
measured since 2026-07-12 (start of our harvest window) · $741.80 all-time · settled via coinbase
VERDICT
ranking generation 3solid 80/100 #242 of 331 in Data by measured score
What the score read on this service: status degraded, 99.7% uptime 30d, 537ms response p95, x402 compliance 12 of 13, $0.005 price against the category, on-chain traction measured. Each of those is measured, and each is published in full below.
The score comes from our own monitoring, never from reviews, operator claims, or a language model: reliability, x402 compliance, price against the category, a deterministic risk flag, and a small on-chain traction term, weighted by ranking generation 3. It is not placement anyone can buy: the paid verify tier is reported beside it and is not one of its inputs. Every component below stays published and read-only.
It is a score inside Data, and only there: price and speed are scored against the whole category field, every listing in it that carries no danger flag, the scored service included, which here means 331 listings, this one among them. That set is wider than the 331 the position above is counted against, because a listing we have measured too little of to rank still sits in the field the price and the speed are normalized over. The same service in a different field would read differently. The same engine answers GET /api/v1/best, and asked for a different pool (the whole directory, or another filter) it returns a different number for this service under this same ranking generation. Neither is more correct: they answer different questions, and the methodology states which is which.
Bands on the 0 to 100 measured score: strong at 93 and above, solid from 75, mixed from 55, weak below 55. Price and speed are scored against the whole category field, every listing in it that carries no danger flag, the scored service included, so the score places a service in its own field.
ALTERNATIVES IN DATA
Other Data services in this directory, ordered by the same measured score. The figures are ours: 30-day uptime from our own probes, 30-day settlement volume read on-chain (a conservative undercount, and null where we cannot measure it, never a zero).
| SERVICE | BAND | SCORE | UPTIME 30D | VOL 30D |
|---|---|---|---|---|
| SniperX•x402 | strong | 95 | 100% | $298.60 |
| glim.sh | strong | 94 | 100% | $25.67 |
| cn402 | strong | 93 | 100% | $34.87 |
| x402node | strong | 93 | 100% | $34.87 |
| twit.sh | solid | 92 | 100% | $32.22 |
ASSESSMENT
updated 4h agoThe parts the verdict above is computed from, each with its proof. Click any chip. Measured values stay read-only; unknown is honest, and an unknown is never counted as a zero.
reliability 99.7%
- uptime · latest daily rollup
- 100%
- uptime 7d
- 98.7%
- uptime 30d
- 99.7%
- uptime 90d
- 99.7%
- response p95
- 537ms
- avg response
- 239ms
- total checks
- 2,775
Measured on the unpaid 402 handshake, not the paid call. A service can 402 correctly and still fail after payment.
compliance A (12/13): declares the current x402 version (2)
12 of 13 x402 conformance checks pass; failing: declares the current x402 version (2). Full checklist below.
price $0.005 to $0.35 (p41 in Data)
- price (min)
- $0.005
- price (max)
- $0.35
- category percentile (min)
- p41 in Data
- category percentile (max)
- p85 in Data
- endpoints / prices
- 50 / 6
- model
- tiered
- stability
- 100%
risk clean
No deterministic risk flag. Risk fires only on an exact blocklist match, or a reserved-brand name with a mismatched verified payTo. Never from low uptime, a high price, or a model guess.
- domain age
- -
- registrar
- -
- hosting
- custom
- domain created
- ---
Identity facts, not a risk score.
traction $11.355 30d · 9 buyers · top buyer 94% (address, not entity)
- volume 30d
- $11.355
- buyers 30d
- 9
- settlements 30d
- 82
- measured since
- 2026-07-12 (start of our harvest window)
- last settlement
- 2026-09-25
- top buyer share
- 94% of 30d volume (address, not entity)
- trend 7d vs 30d
- 0.00x the 30d daily rate
- networks
- eip155:8453, solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d
- volume all-time
- $741.80
- settlements all-time
- 3,235
- median settlement 30d
- $0.09
- max settlement 30d
- $0.25
- settled via
- coinbase ($11.36, 82 tx)
Conservative undercount: only USDC settlements via facilitators we measure are counted. A measured floor, not an estimate.
Top buyer share is part of the ranking score: a higher share lowers the traction part of the score, by up to half when one address holds all 30d volume.
CHANGES
2 in 30dPayout, price, and schema changes detected on this service's x402 wire. A payout rotation at an unchanged price shows up here even when nothing else moves. Full feed at /changes.
changes schema changed 4d ago (2 in 30d)
schema changed · 4d ago
schema removed GET /gauge exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /gauge exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema removed GET /gauge/agri-region exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /gauge/agri-region exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema removed GET /gauge/air exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /gauge/air exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema removed GET /gauge/biodiversity-region exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /gauge/biodiversity-region exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema removed GET /gauge/border-wait-region exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /gauge/border-wait-region exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema removed GET /gauge/calibrated exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /gauge/calibrated exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema removed GET /gauge/carbon-region exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /gauge/carbon-region exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema removed GET /gauge/census exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /gauge/census exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema removed GET /gauge/chokepoint-region exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /gauge/chokepoint-region exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema removed GET /gauge/dependency-region exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /gauge/dependency-region exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema removed GET /gauge/drought-region exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /gauge/drought-region exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema removed GET /gauge/drug-shortage-region exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /gauge/drug-shortage-region exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema removed GET /gauge/earthquake-region exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /gauge/earthquake-region exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema removed GET /gauge/filing-company exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /gauge/filing-company exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema removed GET /gauge/grid-region exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /gauge/grid-region exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema removed GET /gauge/grid-reliability-region exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /gauge/grid-reliability-region exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema removed GET /gauge/history exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /gauge/history exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema removed GET /gauge/history-series exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /gauge/history-series exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema removed GET /gauge/hurricane-region exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /gauge/hurricane-region exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema removed GET /gauge/japan-region exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /gauge/japan-region exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema removed GET /gauge/lifecycle exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /gauge/lifecycle exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema removed GET /gauge/macro-reconcile-full exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /gauge/macro-reconcile-full exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema removed GET /gauge/policy-region exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /gauge/policy-region exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema removed GET /gauge/precip exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /gauge/precip exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema removed GET /gauge/promise-region exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /gauge/promise-region exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema removed GET /gauge/region exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /gauge/region exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema removed GET /gauge/ruler exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /gauge/ruler exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema removed GET /gauge/severe-convection-region exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /gauge/severe-convection-region exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema removed GET /gauge/shipping-region exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /gauge/shipping-region exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema removed GET /gauge/stablecoin-region exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /gauge/stablecoin-region exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema removed GET /gauge/strata exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /gauge/strata exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema removed GET /gauge/taiwan-region exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /gauge/taiwan-region exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema removed GET /gauge/tariff-region exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /gauge/tariff-region exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema removed GET /gauge/tool-region exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /gauge/tool-region exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema removed GET /gauge/wildfire-region exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /gauge/wildfire-region exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema removed GET /mcp/census exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /mcp/census exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema removed GET /mcp/graveyard exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /mcp/graveyard exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema removed GET /mcp/server exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /mcp/server exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema removed GET /resolve exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /resolve exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema removed GET /resolve/proposer exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /resolve/proposer exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema removed GET /stable/census exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /stable/census exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema removed GET /stable/coin exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /stable/coin exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema removed GET /stable/graveyard exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /stable/graveyard exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema removed GET /stablecoin-deaths exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /stablecoin-deaths exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema removed GET /trust/graveyard exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /trust/graveyard exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema removed GET /trust/precheck exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /trust/precheck exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema removed GET /trust/scorecard exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 2 300 {"name":"USD Coin","version":"2"}
schema removed GET /trust/scorecard exact solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v USDC 2 300 {"feePayer":"D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"}
schema added GET /gauge exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/gauge {"name":"USD Coin","version":"2"}
schema added GET /gauge/agri-region exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/gauge/agri-region {"name":"USD Coin","version":"2"}
schema added GET /gauge/air exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/gauge/air {"name":"USD Coin","version":"2"}
schema added GET /gauge/biodiversity-region exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/gauge/biodiversity-region {"name":"USD Coin","version":"2"}
schema added GET /gauge/border-wait-region exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/gauge/border-wait-region {"name":"USD Coin","version":"2"}
schema added GET /gauge/calibrated exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/gauge/calibrated {"name":"USD Coin","version":"2"}
schema added GET /gauge/carbon-region exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/gauge/carbon-region {"name":"USD Coin","version":"2"}
schema added GET /gauge/census exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/gauge/census {"name":"USD Coin","version":"2"}
schema added GET /gauge/chokepoint-region exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/gauge/chokepoint-region {"name":"USD Coin","version":"2"}
schema added GET /gauge/dependency-region exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/gauge/dependency-region {"name":"USD Coin","version":"2"}
schema added GET /gauge/drought-region exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/gauge/drought-region {"name":"USD Coin","version":"2"}
schema added GET /gauge/drug-shortage-region exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/gauge/drug-shortage-region {"name":"USD Coin","version":"2"}
schema added GET /gauge/earthquake-region exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/gauge/earthquake-region {"name":"USD Coin","version":"2"}
schema added GET /gauge/filing-company exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/gauge/filing-company {"name":"USD Coin","version":"2"}
schema added GET /gauge/grid-region exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/gauge/grid-region {"name":"USD Coin","version":"2"}
schema added GET /gauge/grid-reliability-region exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/gauge/grid-reliability-region {"name":"USD Coin","version":"2"}
schema added GET /gauge/history exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/gauge/history {"name":"USD Coin","version":"2"}
schema added GET /gauge/history-series exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/gauge/history-series {"name":"USD Coin","version":"2"}
schema added GET /gauge/hurricane-region exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/gauge/hurricane-region {"name":"USD Coin","version":"2"}
schema added GET /gauge/japan-region exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/gauge/japan-region {"name":"USD Coin","version":"2"}
schema added GET /gauge/lifecycle exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/gauge/lifecycle {"name":"USD Coin","version":"2"}
schema added GET /gauge/macro-reconcile-full exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/gauge/macro-reconcile-full {"name":"USD Coin","version":"2"}
schema added GET /gauge/policy-region exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/gauge/policy-region {"name":"USD Coin","version":"2"}
schema added GET /gauge/precip exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/gauge/precip {"name":"USD Coin","version":"2"}
schema added GET /gauge/promise-region exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/gauge/promise-region {"name":"USD Coin","version":"2"}
schema added GET /gauge/region exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/gauge/region {"name":"USD Coin","version":"2"}
schema added GET /gauge/ruler exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/gauge/ruler {"name":"USD Coin","version":"2"}
schema added GET /gauge/severe-convection-region exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/gauge/severe-convection-region {"name":"USD Coin","version":"2"}
schema added GET /gauge/shipping-region exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/gauge/shipping-region {"name":"USD Coin","version":"2"}
schema added GET /gauge/stablecoin-region exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/gauge/stablecoin-region {"name":"USD Coin","version":"2"}
schema added GET /gauge/strata exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/gauge/strata {"name":"USD Coin","version":"2"}
schema added GET /gauge/taiwan-region exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/gauge/taiwan-region {"name":"USD Coin","version":"2"}
schema added GET /gauge/tariff-region exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/gauge/tariff-region {"name":"USD Coin","version":"2"}
schema added GET /gauge/tool-region exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/gauge/tool-region {"name":"USD Coin","version":"2"}
schema added GET /gauge/wildfire-region exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/gauge/wildfire-region {"name":"USD Coin","version":"2"}
schema added GET /mcp/census exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/mcp/census {"name":"USD Coin","version":"2"}
schema added GET /mcp/graveyard exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/mcp/graveyard {"name":"USD Coin","version":"2"}
schema added GET /mcp/server exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/mcp/server {"name":"USD Coin","version":"2"}
schema added GET /resolve exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/resolve {"name":"USD Coin","version":"2"}
schema added GET /resolve/proposer exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/resolve/proposer {"name":"USD Coin","version":"2"}
schema added GET /stable/census exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/stable/census {"name":"USD Coin","version":"2"}
schema added GET /stable/coin exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/stable/coin {"name":"USD Coin","version":"2"}
schema added GET /stable/graveyard exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/stable/graveyard {"name":"USD Coin","version":"2"}
schema added GET /stablecoin-deaths exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/stablecoin-deaths {"name":"USD Coin","version":"2"}
schema added GET /trust/graveyard exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/trust/graveyard {"name":"USD Coin","version":"2"}
schema added GET /trust/precheck exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/trust/precheck {"name":"USD Coin","version":"2"}
schema added GET /trust/scorecard exact eip155:8453 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 USDC 1 application/json 300 https://api.truthbear.co/trust/scorecard {"name":"USD Coin","version":"2"}
payout address changed · 4d ago
payout removed 0x2d16a243ba9facc6ac85519d5efad2149dc4c6c3
payout added 0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3
WHAT IT DOES
ai-derivedNo AI synthesis has been produced for this service yet.
ENDPOINTS
| METHOD | PATH | DESCRIPTION | PRICE | NETWORK | ASSET | 402 CHANNEL |
|---|---|---|---|---|---|---|
| GET | /gauge | [SIGNAL+PROOF] One official signal record for any signal_id and entity: current reading against the OFFICIAL threshold ladder (band, distance-to-action) plus a 5-year same-season percentile so you can tell routine from unusual. 180+ signals across macro, weather, hazard, shipping, filings, crypto and lifecycle lines. Free coverage check first at /gauge/coverage. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.01 per call. | $0.01 | Base | USDC | body (v1 style) |
| GET | /gauge/agri-region | [3-LEG] Agriculture chain, one grain belt (?loc=us-iowa): leading soil drought (USDM D0-D4) -> current heat stress and growing degree days -> realized crop vigour VHI - did the drought actually reach the crop (confirmation gate). A chain, not one reading: confidence = how many legs are lit, in order. Sources: USDM/NDMC, NASA POWER, NOAA STAR. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call. | $0.25 | Base | USDC | body (v1 style) |
| GET | /gauge/air | Add-on, air quality for one location: US AQI category and PM2.5 reading from EPA and CAMS official feeds. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. Every record carries an offline-recomputable record_hash. $0.0050 per call. | $0.005 | Base | USDC | body (v1 style) |
| GET | /gauge/biodiversity-region | [3-LEG] Biodiversity credit chain, one project (?entity=uk-bng-warwickshire): leading standard-body pressure - registry, methodology or rating change -> current current registry state -> realized lifecycle outcome (confirmation gate). A chain, not one reading: confidence = how many legs are lit, in order. Sources: registry and standard-body feeds. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call. | $0.25 | Base | USDC | body (v1 style) |
| GET | /gauge/border-wait-region | [3-LEG] Land border chain, one crossing (?entity=laredo-world-trade): leading upstream pressure - lead traffic, staffing and inspection intensity -> current current CBP border wait times by lane -> realized commercial freight delay (confirmation gate). A chain, not one reading: confidence = how many legs are lit, in order. Sources: US CBP. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call. | $0.25 | Base | USDC | body (v1 style) |
| GET | /gauge/calibrated | Add-on, calibrated units: normalized_index and pct_to_action so readings compare across stations. When the line has no calibration basis you get 422 with no_charge:true and reason:no-calibrated-for-this-line, and are NOT billed. Every record carries an offline-recomputable record_hash. $0.0050 per call. | $0.005 | Base | USDC | body (v1 style) |
| GET | /gauge/carbon-region | [3-LEG] Carbon integrity chain, one carbon project (?entity=kariba-redd): leading rating drift, downgrades and standard-body review -> current registry lifecycle from listed to suspended or de-listed -> realized price integrity (confirmation gate). A chain, not one reading: confidence = how many legs are lit, in order. Sources: Verra, Gold Standard, registry feeds. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call. | $0.25 | Base | USDC | body (v1 style) |
| GET | /gauge/census | [BATCH+PROOF] All entities for one signal at their latest reading, with band, frequency_label and percentile columns so you can rank across stations and screen for the unusual in one call. Cross-station comparison is the point: one river gauge alone tells you little, 200 of them ranked by distance-to-action tells you a lot. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.09 per call. | $0.09 | Base | USDC | body (v1 style) |
| GET | /gauge/chokepoint-region | [4-LEG] Maritime chokepoint passage chain, one chokepoint (?loc=hormuz, suez, panama, malacca and more): leading sea state against operating thresholds -> current anchorage congestion, vessels waiting -> realized daily transits from IMF PortWatch (confirmation gate). A chain, not one reading: confidence = how many legs are lit, in order. Sources: IMF PortWatch, NOAA, Open-Meteo. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call. | $0.25 | Base | USDC | body (v1 style) |
| GET | /gauge/dependency-region | [3-LEG] AI dependency chain, one dependency (?entity=openai-text-davinci-003): leading deprecation notices INCLUDING the sunset date the publisher itself scheduled -> current current availability -> realized lifecycle to deprecation, days alive (confirmation gate). A chain, not one reading: confidence = how many legs are lit, in order. Sources: vendor notices, source URL per record. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call. | $0.25 | Base | USDC | body (v1 style) |
| GET | /gauge/drought-region | [3-LEG] Drought chain, one drought region (?entity=us-california): leading precipitation deficit, soil moisture and snowpack -> current the OFFICIAL US Drought Monitor class and area coverage -> realized streamflow and impact (confirmation gate). A chain, not one reading: confidence = how many legs are lit, in order. Sources: USDM/NDMC, USGS. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call. | $0.25 | Base | USDC | body (v1 style) |
| GET | /gauge/drug-shortage-region | [3-LEG] Drug shortage chain, one therapeutic class (?entity=oncology): leading new-shortage incidence from openFDA new listings, which leads the burden peak -> current current active shortages in the class -> realized resolution rate (confirmation gate). A chain, not one reading: confidence = how many legs are lit, in order. Sources: openFDA. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call. | $0.25 | Base | USDC | body (v1 style) |
| GET | /gauge/earthquake-region | [3-LEG] Seismic activity chain, one seismic zone (?entity=california-san-andreas): leading swarm rate, USGS micro-event rate rising - DESCRIPTIVE and explicitly not a prediction -> current current max magnitude and count -> realized felt and impact reports (confirmation gate). A chain, not one reading: confidence = how many legs are lit, in order. Sources: USGS. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call. | $0.25 | Base | USDC | body (v1 style) |
| GET | /gauge/filing-company | [3-LEG] Regulatory filing chain, one issuer (?entity=AMC): leading NT late-filing notices, a distress leading indicator -> current 8-K material events graded by item severity -> realized Form 4 insider transactions (confirmation gate). A chain, not one reading: confidence = how many legs are lit, in order. Sources: SEC EDGAR. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call. | $0.25 | Base | USDC | body (v1 style) |
| GET | /gauge/grid-region | [3-LEG] Power-grid chain, one grid region (?loc=us-ercot): leading demand pressure from heating and cooling degree days -> current renewable availability, solar and wind -> realized energy inflation (CPI energy year-over-year) and gas price (confirmation gate). A chain, not one reading: confidence = how many legs are lit, in order. Sources: EIA, BLS, Open-Meteo. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call. | $0.25 | Base | USDC | body (v1 style) |
| GET | /gauge/grid-reliability-region | [3-LEG] Grid reliability chain, one balancing authority (?entity=us-ercot): leading EIA-930 day-ahead demand forecast approaching recent peak, about one day of lead -> current current demand against capacity tightness -> realized reserve and interchange response (confirmation gate). A chain, not one reading: confidence = how many legs are lit, in order. Sources: US EIA-930. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call. | $0.25 | Base | USDC | body (v1 style) |
| GET | /gauge/history | Add-on, historical placement: seasonal percentile for the current point, frequency, the percentile table, and the method and source used to compute them. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.0050 per call. | $0.005 | Base | USDC | body (v1 style) |
| GET | /gauge/history-series | [TIME SERIES EXPORT] Full retained series for one signal and entity (?days=, ?format=json or csv): every snapshot up to days (default 400, cap 1000) with snapshot_date, observed_at, data_age_hours, current, band and record_hash. For research, actuarial and base-rate work. Free 7-snapshot shape preview at /gauge/history-preview. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.09 per call. | $0.09 | Base | USDC | body (v1 style) |
| GET | /gauge/hurricane-region | [3-LEG] Hurricane chain, one basin (?entity=atlantic|epacific|cpacific): leading NHC official 2/7-day genesis probability (NHC-quoted, not our forecast) -> current active storms - category, wind, pressure, position -> realized official watches, warnings, landfall (confirmation gate). A chain, not one reading: confidence = how many legs are lit, in order. Sources: NOAA NHC. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call. | $0.25 | Base | USDC | body (v1 style) |
| GET | /gauge/japan-region | Japan official readings in one call plus an independent cross-agency check: JMA seismic intensity (shindo), RSMC Tokyo typhoon analysis, Ministry of Finance JGB yields across seven tenors, and the Japan rows of BIS and FRED. The same earthquakes appear as JMA measured them and as USGS measured them, side by side - different agencies, different quantities, and we adjudicate nothing. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call. | $0.25 | Base | USDC | body (v1 style) |
| GET | /gauge/lifecycle | One id in, its official lifecycle state out - no need to know which line tracks it first. Covers 19 lifecycle lines (stablecoins, AI tools and datasets, neoclouds, DePIN, RWA, carbon projects, ESG funds, tariff measures and more): status band, birth/end dates, death type, lifespan, official source_ref. If two lines track the same id you get BOTH - nothing is picked for you. Unknown id -> 422 no_charge, not billed. Every record carries an offline-recomputable record_hash. $0.0050 per call. | $0.005 | Base | USDC | body (v1 style) |
| GET | /gauge/macro-reconcile-full | [RECONCILIATION] Market-implied against officially-realized, side by side: Kalshi implied levels versus BLS official prints, aligned indicator by indicator, with the divergence quantified. The alignment key is returned so you can verify the pairing yourself. We show both numbers and the gap - the reading is yours. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.09 per call. | $0.09 | Base | USDC | body (v1 style) |
| GET | /gauge/policy-region | [3-LEG] Climate policy chain, one policy (?entity=kyoto-protocol): leading repeal proposals and judicial challenge -> current lifecycle from enacted to repealed, days alive -> realized dependency cascade when a policy dies (confirmation gate). A chain, not one reading: confidence = how many legs are lit, in order. Sources: Federal Register, UNFCCC. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call. | $0.25 | Base | USDC | body (v1 style) |
| GET | /gauge/precip | Add-on, precipitation for one location: daily rainfall plus 30-day accumulated wet-dry drought context from ERA5. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. Every record carries an offline-recomputable record_hash. $0.0050 per call. | $0.005 | Base | USDC | body (v1 style) |
| GET | /gauge/promise-region | [3-LEG] Promise-reconciliation chain, one promisor (?entity=humane-ai-pin): leading promise slippage - schedule slipping, spec shrinking, promise page vanishing -> current current company or project status -> realized lifecycle to death or acquisition (confirmation gate). A chain, not one reading: confidence = how many legs are lit, in order. Sources: official announcements and registries. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call. | $0.25 | Base | USDC | body (v1 style) |
| GET | /gauge/region | [3-LEG] Local three-leg environment chain, one location (?loc=): leading air quality (AQI) -> current precipitation, rain and 30-day dry-wet -> realized nearest river stage and streamflow (confirmation gate). A chain, not one reading: confidence = how many legs are lit, in order. Sources: EPA/CAMS, ERA5, USGS. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call. | $0.25 | Base | USDC | body (v1 style) |
| GET | /gauge/ruler | 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. | $0.005 | Base | USDC | body (v1 style) |
| GET | /gauge/severe-convection-region | [3-LEG] Severe convection and hail chain, one convective region (?entity=tornado-alley-core): leading SPC Day-1 outlook with CAPE, CIN and shear - hours of lead -> current current storm reports -> realized hail and wind damage reports (confirmation gate). A chain, not one reading: confidence = how many legs are lit, in order. Sources: NOAA SPC. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call. | $0.25 | Base | USDC | body (v1 style) |
| GET | /gauge/shipping-region | [3-LEG] Shipping chokepoint chain, one chokepoint or port (?loc=malacca): leading sea state and wind against operating thresholds -> current wave decomposition, local storm against distant swell -> realized AIS transit throughput (confirmation gate). A chain, not one reading: confidence = how many legs are lit, in order. Sources: IMF PortWatch, NOAA, Open-Meteo Marine. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call. | $0.25 | Base | USDC | body (v1 style) |
| GET | /gauge/stablecoin-region | [3-LEG] Stablecoin chain, one stablecoin (?entity=terrausd-ust): leading depeg pressure - peg deviation, reserves, regulatory notices -> current current peg and market cap -> realized redemption and lifecycle outcome (confirmation gate). A chain, not one reading: confidence = how many legs are lit, in order. Sources: exchange and registry feeds. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call. | $0.25 | Base | USDC | body (v1 style) |
| GET | /gauge/strata | Add-on, statistical strata: share of the last 5 years spent in each official band for this day-of-year, the percentile bands, and where the current reading falls. Backtestable, and stated as approximate. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.0050 per call. | $0.005 | Base | USDC | body (v1 style) |
| GET | /gauge/taiwan-region | Taiwan first-party official readings in one call: PLA air and naval activity around Taiwan (Ministry of National Defense), central bank reference FX rates (CBC), TAIEX and sector indices (TWSE), significant earthquakes and typhoon status (CWA). Sources most providers cannot reach. We restate what each agency published and when - no assessment of the situation, no forecast, no advice. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call. | $0.25 | Base | USDC | body (v1 style) |
| GET | /gauge/tariff-region | [3-LEG] Tariff and customs measure chain, one trade measure (?entity=sec301-china-list1): leading review pipeline stage -> current current legal force -> realized lifecycle from imposed to expired or rescinded (confirmation gate). A chain, not one reading: confidence = how many legs are lit, in order. Sources: USTR, Federal Register, USITC. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call. | $0.25 | Base | USDC | body (v1 style) |
| GET | /gauge/tool-region | [3-LEG] AI tool and MCP chain, one tool (?entity=mammoth-ai): leading decay warnings, release cadence stalling and docs going dark -> current live or dead status from real DNS and GitHub checks -> realized lifecycle from launch to death with days alive (confirmation gate). A chain, not one reading: confidence = how many legs are lit, in order. Sources: DNS, GitHub, package registries. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call. | $0.25 | Base | USDC | body (v1 style) |
| GET | /gauge/wildfire-region | [3-LEG] Wildfire chain, one fire-risk region (?entity=us-california): leading fire weather - hot, dry and windy -> current active fire detections from NASA FIRMS satellite thermal anomalies -> realized downwind smoke impact (confirmation gate). A chain, not one reading: confidence = how many legs are lit, in order. Sources: NASA FIRMS, NWS, EPA. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call. | $0.25 | Base | USDC | body (v1 style) |
| GET | /mcp/census | [BATCH+PROOF] Full MCP ecosystem census (21,236 servers, latest day): status, lifecycle, missing_streak, record_hash. DEGRADED DELIVERY, see unavailable_fields - prominence, maturity, github_stars and downloads have no data, so rows are no longer ranked. Snapshot 2026-07-08. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.09 per call. | $0.09 | Base | USDC | body (v1 style) |
| GET | /mcp/graveyard | [BATCH+PROOF] MCP server graveyard - servers that vanished from the census. THRESHOLD stated plainly: listed on FIRST confirmed absence (confirm_absences=1), not multi-day confirmation; only two snapshot days exist. record_hash is null on these rows (imported from a surviving registry, the original collector never produced hashes). Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.09 per call. | $0.09 | Base | USDC | body (v1 style) |
| GET | /mcp/server | [SIGNAL+PROOF] Census record for one MCP server (?name=): status, missing_streak, lifecycle, record_hash. DEGRADED DELIVERY, see unavailable_fields - prominence, maturity, github_stars, downloads and source_code_url have no data because the original collector stopped. Snapshot 2026-07-08. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.01 per call. | $0.01 | Base | USDC | body (v1 style) |
| GET | /resolve | Settlement evidence v0 for prediction-market and dispute workflows: did an issuer file a given SEC EDGAR form before your cutoff? Returns THREE SEPARATED TIMES (event / disclosure / cutoff), a resolution_status of resolved, no_authoritative_source, ambiguous or conflicting, and candidate_sources. We describe the filing record; we never adjudicate the real-world event. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.09 per call. | $0.09 | Base | USDC | body (v1 style) |
| GET | /resolve/proposer | Proposer feed for prediction-market settlement: SEC EDGAR official facts mapped to a machine-friendly answer / timestamp / evidence shape for automated proposal and dispute flows. Three separated times, explicit resolution_status, candidate sources listed. We describe what was filed - the adjudication stays yours. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.01 per call. | $0.01 | Base | USDC | body (v1 style) |
| GET | /shadow/chatter | $0.02 | Base/Solana | USDC | header | |
| GET | /shadow/region-plus | $0.35 | Base/Solana | USDC | header | |
| GET | /shadow/signal-plus | $0.09 | Base/Solana | USDC | header | |
| GET | /stable/census | [BATCH+PROOF] Full stablecoin census, latest day, ranked by market cap; lifecycle flags terminated and depegged. Add ?verifiable=1 and every row carries _hash_core so you can recompute the hash offline without trusting us. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.09 per call. | $0.09 | Base | USDC | body (v1 style) |
| GET | /stable/coin | [SIGNAL+PROOF] Census record for one stablecoin (?symbol=): market cap, price, depeg state, lifecycle and time series, each with record_hash. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.01 per call. | $0.01 | Base | USDC | body (v1 style) |
| GET | /stable/graveyard | [BATCH+PROOF] Stablecoin death register - terminated below 0.10 or persistently absent. Add ?verifiable=1 for per-row _hash_core, fully offline-recomputable. A neutral observation record: not a rating, not an endorsement. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.09 per call. | $0.09 | Base | USDC | body (v1 style) |
| GET | /stablecoin-deaths | [BATCH+PROOF] Stablecoin death samples - a neutral record: the full pre-mortem snapshot of terminated stablecoins (price, supply, collateral, redemption) plus lifecycle context (termination type, confirmed death date, days alive). Forensic depth for base-rate and post-mortem work, not a rating and not an endorsement. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. Every record carries an offline-recomputable record_hash. $0.09 per call. | $0.09 | Base | USDC | body (v1 style) |
| GET | /trust/graveyard | [BATCH+PROOF] x402 service graveyard - services that vanished from the census. THRESHOLD stated plainly: listed on FIRST confirmed absence (confirm_absences=1), NOT multi-day confirmation - only two snapshot days exist, which cannot support a streak test. Rows are hash-backed and recompute offline with ?verifiable=1; record_hash_verifiable reports the exact count per response. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.09 per call. | $0.09 | Base | USDC | body (v1 style) |
| GET | /trust/precheck | [SIGNAL+PROOF] Demand record for one x402 service (?service=): demand_class (REAL/SOLO/PROBE/WASH), calls_30d, unique_payers_30d, score_total, liveness_state, lifecycle, record_hash. Model demand-v1, refreshed daily from the public CDP catalogue; score_total orders, not rates. DEGRADED DELIVERY, see unavailable_fields - tier, verified, action_hint and the five-axis sub-scores are empty. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.01 per call. | $0.01 | Base | USDC | body (v1 style) |
| GET | /trust/scorecard | [BATCH+PROOF] Full x402 service demand roster, latest day: demand_class, calls_30d, unique_payers_30d, score_total, liveness_state, lifecycle, record_hash per service. Model demand-v1, refreshed daily from the public CDP catalogue; unique_payers_30d is a lower bound, never a sum. DEGRADED DELIVERY, see unavailable_fields - the five-axis sub-scores, action_hint, tier and verified are empty. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.09 per call. | $0.09 | Base | USDC | body (v1 style) |
REQUEST / RESPONSE EXAMPLE
An unpaid request to GET /gauge returns HTTP 402 with the payment terms. Settle onchain via your facilitator, then retry with the X-Payment header.
curl -i 'https://api.truthbear.co/gauge'
// 402 response (captured by monitor) · 47 payloads · click to expand
[
{
"hint": {
"miss": "missing_parameter",
"usage": "/gauge/strata?signal_id=<value>&entity=<value>",
"preview": "/gauge/sample",
"missing_params": [
"signal_id",
"entity"
],
"example_request": "/gauge/strata?signal_id=hydrology.river-level&entity=07010000"
},
"error": "Missing required query parameter(s): signal_id, entity. A request you can run right now: GET /gauge/strata?signal_id=hydrology.river-level&entity=07010000\nX-PAYMENT header is required",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "5000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/gauge/strata",
"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"
}
},
"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"
}
}
}
}
},
"priceUsd": "$0.005",
"discoverable": true,
"outputSchema": {
"type": "object",
"required": [
"nature",
"dim",
"strata"
],
"properties": {
"dim": {
"type": "string",
"description": "Always the literal \"strata\""
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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"
},
"strata": {
"type": [
"object",
"null"
],
"description": "Statistical-strata projection: share of each official band over the last 5 same-season years + which band the current value falls in"
},
"_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"
},
"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/strata",
"priceUsdNumber": 0.005
}
},
"description": "Add-on, statistical strata: share of the last 5 years spent in each official band for this day-of-year, the percentile bands, and where the current reading falls. Backtestable, and stated as approximate. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.0050 per call.",
"outputSchema": {
"input": {
"type": "http",
"method": "GET",
"example": {
"entity": "07010000",
"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/strata?signal_id=hydrology.river-level&entity=07010000"
},
"output": {
"type": "object",
"required": [
"nature",
"dim",
"strata"
],
"properties": {
"dim": {
"type": "string",
"description": "Always the literal \"strata\""
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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"
},
"strata": {
"type": [
"object",
"null"
],
"description": "Statistical-strata projection: share of each official band over the last 5 same-season years + which band the current value falls in"
},
"_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"
},
"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
}
],
"x402Version": 1
},
{
"hint": {
"miss": "missing_parameter",
"usage": "/gauge/ruler?signal_id=<value>&entity=<value>",
"preview": "/gauge/sample",
"missing_params": [
"signal_id",
"entity"
],
"example_request": "/gauge/ruler?signal_id=hydrology.river-level&entity=07010000&format=thin"
},
"error": "Missing required query parameter(s): signal_id, entity. A request you can run right now: GET /gauge/ruler?signal_id=hydrology.river-level&entity=07010000&format=thin\nX-PAYMENT header is required",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "5000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/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
}
],
"x402Version": 1
},
{
"hint": {
"miss": "missing_parameter",
"usage": "/gauge/grid-region?loc=<value>",
"preview": "/gauge/preview",
"missing_params": [
"loc"
],
"example_request": "/gauge/grid-region?loc=us-ercot&format=thin"
},
"error": "Missing required query parameter(s): loc. A request you can run right now: GET /gauge/grid-region?loc=us-ercot&format=thin\nX-PAYMENT header is required. This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10 — raise maxValue to at least 250000 atomic units, or your own client rejects this payment locally and no request ever reaches us. Do not want to raise it? A cheaper alternative you can run right now: GET /gauge?signal_id=hydrology.river-level&entity=07010000&format=thin ($0.01 USDC) - the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only.",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "250000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/gauge/grid-region",
"extensions": {
"bazaar": {
"info": {
"input": {
"type": "http",
"method": "GET",
"queryParams": {
"loc": "required - location id; full list at free /gauge/preview"
}
},
"output": {
"type": "json",
"example": {
"legs": {
"demand": {
"band": "high",
"source_ref": "https://open-meteo.com/en/docs (temperature -> HDD/CDD base 18 degC)",
"record_hash": "sha256:79a8543f6b4562e0e8111abb50fff64a00c167630bd277b717cf56f446f5011a"
},
"gas_price": {
"band": "low",
"source_ref": "https://fred.stlouisfed.org/series/DHHNGSP",
"record_hash": "sha256:de4087d873ff105bde0abac04dbc552bc715bcdb42a1c3c82a2eea8d08031727"
},
"renewable": {
"band": "extreme",
"source_ref": "https://open-meteo.com/en/docs (shortwave_radiation+wind_speed -> CF proxy)",
"record_hash": "sha256:b740795bd6c729dc1451da0169fb59f638ed98e0c35fecc7c8df7aa1e095df72"
},
"energy_inflation": {
"band": "extreme",
"source_ref": "https://fred.stlouisfed.org/series/CPIENGSL",
"record_hash": "sha256:e7eecf1126e1e2b5f5f8dcbb629e1c45051edbd371c4d6e6eada3d9eabdef29d"
}
},
"name": "US - ERCOT (Texas)",
"grade": "screening-level, not decision-grade",
"scope": {
"full": "https://api.truthbear.co/scope/v1",
"verifiability": "unknown",
"monitoring_not_forecast": true,
"intelligence_not_command": true
},
"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.",
"location": "us-ercot",
"provenance": {
"freshness": "stale",
"dead_source": true,
"age_hours_now": 2079,
"freshness_basis": "cadence=default; fresh<=24h; recent<=192h; dead_source>1440h; age_basis=request-time(now minus observed_at)"
}
}
}
},
"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": [
"loc"
],
"properties": {
"loc": {
"type": "string",
"examples": [
"us-ercot",
"us-caiso",
"us-pjm",
"us-miso",
"us-nyiso",
"eu-germany"
],
"description": "required - location id; full list at free /gauge/preview",
"x-accepted-values": {
"all": "https://api.truthbear.co/schemas/gauge-grid-region.input.json",
"shown": 6,
"total": 12
}
}
},
"additionalProperties": false
}
}
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"const": "json"
},
"example": {}
}
}
}
},
"priceUsd": "$0.25",
"discoverable": true,
"outputSchema": {
"type": "object",
"required": [
"nature",
"legs"
],
"properties": {
"legs": {
"type": "object",
"description": "CORE DELIVERY: per-leg readings, keyed by leg name (e.g. drought/heat/crop-vhi); each value carries signal_id/current/observed_at/data_age_hours/record_hash"
},
"name": {
"type": [
"string",
"null"
],
"description": "Human-readable name of the object"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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"
},
"nature": {
"type": "string",
"description": "Neutrality statement: GAUGE supplies observations and trend description only - no judgement, no prediction, no recommendation"
},
"location": {
"type": "string",
"description": "The location key of this bundle - the ?loc= you passed in"
},
"_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"
},
"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"
},
"data_timespans": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Per-leg observation time and hours elapsed since"
},
"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"
},
"cross_line_narrative": {
"type": "string",
"description": "Cross-line comparison narrative (purely descriptive; no judgement, no prediction)"
}
},
"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/grid-region",
"priceUsdNumber": 0.25
}
},
"description": "[3-LEG] Power-grid chain, one grid region (?loc=us-ercot): leading demand pressure from heating and cooling degree days -> current renewable availability, solar and wind -> realized energy inflation (CPI energy year-over-year) and gas price (confirmation gate). A chain, not one reading: confidence = how many legs are lit, in order. Sources: EIA, BLS, Open-Meteo. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call.",
"outputSchema": {
"input": {
"type": "http",
"method": "GET",
"example": {
"loc": "us-ercot",
"format": "thin"
},
"required": [
"loc"
],
"properties": {
"loc": {
"type": "string",
"examples": [
"us-ercot",
"us-caiso",
"us-pjm",
"us-miso",
"us-nyiso",
"eu-germany"
],
"description": "required - location id; full list at free /gauge/preview",
"x-accepted-values": {
"all": "https://api.truthbear.co/schemas/gauge-grid-region.input.json",
"shown": 6,
"total": 12
}
}
},
"queryParams": {
"loc": "required - location id; full list at free /gauge/preview"
},
"discoverable": true,
"exampleRequest": "/gauge/grid-region?loc=us-ercot&format=thin"
},
"output": {
"type": "object",
"required": [
"nature",
"legs"
],
"properties": {
"legs": {
"type": "object",
"description": "CORE DELIVERY: per-leg readings, keyed by leg name (e.g. drought/heat/crop-vhi); each value carries signal_id/current/observed_at/data_age_hours/record_hash"
},
"name": {
"type": [
"string",
"null"
],
"description": "Human-readable name of the object"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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"
},
"nature": {
"type": "string",
"description": "Neutrality statement: GAUGE supplies observations and trend description only - no judgement, no prediction, no recommendation"
},
"location": {
"type": "string",
"description": "The location key of this bundle - the ?loc= you passed in"
},
"_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"
},
"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"
},
"data_timespans": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Per-leg observation time and hours elapsed since"
},
"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"
},
"cross_line_narrative": {
"type": "string",
"description": "Cross-line comparison narrative (purely descriptive; no judgement, no prediction)"
}
},
"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": "250000",
"maxTimeoutSeconds": 300
}
],
"client_hint": {
"action": "This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10. Raise your client maxValue to at least required_atomic; otherwise the payment is rejected locally inside your own client and never reaches this server, so you will see no error from us.",
"reason": "price_above_default_client_max_value",
"example": "wrapFetchWithPayment(fetch, account, BigInt(250000)) // atomic units, USDC 6dp",
"required_usdc": "0.25",
"required_atomic": "250000",
"within_your_budget": [
{
"try": "/gauge?signal_id=hydrology.river-level&entity=07010000&format=thin",
"gets": "the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only",
"path": "/gauge",
"usdc": "0.01"
}
],
"default_client_max_atomic": "100000"
},
"x402Version": 1
},
{
"hint": {
"miss": "missing_parameter",
"usage": "/gauge/air?loc=<value>",
"preview": "/gauge/preview",
"missing_params": [
"loc"
],
"example_request": "/gauge/air?loc=us-stlouis"
},
"error": "Missing required query parameter(s): loc. A request you can run right now: GET /gauge/air?loc=us-stlouis\nX-PAYMENT header is required",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "5000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/gauge/air",
"extensions": {
"bazaar": {
"info": {
"input": {
"type": "http",
"method": "GET",
"queryParams": {
"loc": "required - location id; full list at free /gauge/preview"
}
},
"output": {
"type": "json"
}
},
"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": [
"loc"
],
"properties": {
"loc": {
"type": "string",
"examples": [
"us-stlouis",
"us-memphis",
"us-losangeles",
"us-fresno",
"us-phoenix",
"us-denver"
],
"description": "required - location id; full list at free /gauge/preview",
"x-accepted-values": {
"all": "https://api.truthbear.co/schemas/gauge-air.input.json",
"shown": 6,
"total": 12
}
}
},
"additionalProperties": false
}
}
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"const": "json"
}
}
}
}
},
"priceUsd": "$0.005",
"discoverable": true,
"outputSchema": {
"type": "object",
"required": [
"nature",
"readings"
],
"properties": {
"line": {
"type": "string",
"description": "The line this bundle belongs to (e.g. airquality)"
},
"name": {
"type": [
"string",
"null"
],
"description": "Human-readable name of the object"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"addon": {
"enum": [
"air",
"precip"
],
"type": "string",
"description": "Conditional - returned only by the /gauge/air and /gauge/precip sub-endpoints: the add-on line marker"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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"
},
"nature": {
"type": "string",
"description": "Neutrality statement: GAUGE supplies observations and trend description only - no judgement, no prediction, no recommendation"
},
"location": {
"type": "string",
"description": "The location key of this bundle - the ?loc= you passed in"
},
"readings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"change": {
"type": [
"object",
"null"
],
"description": "Change, nested per metric: change.<metric> = {delta, direction, direction_reason?}, plus the scalar change.period (e.g. \"vs_previous\"). direction is one of rising/falling/stable/unknown - unknown means the direction CANNOT BE DETERMINED, it does not mean stable; in that case direction_reason carries a machine-readable cause: no-previous-record / metric-absent-in-previous / metric-absent-in-current / non-numeric-value"
},
"entity": {
"type": "string",
"description": "Monitored object id (e.g. btc / us / hormuz); full list at free /gauge/catalog or /gauge/preview"
},
"strata": {
"type": [
"object",
"null"
],
"description": "Statistical strata: share of each official band over the last 5 same-season years plus the band the current value falls in; null when there are no statistics"
},
"current": {
"type": [
"object",
"null"
],
"description": "Current reading. The inner metric structure varies by signal (crypto -> {price_usd, volume_24h, ...}; shipping -> {wind_kmh, wave_height_m, ...}). Units are carried in the field-name suffix; see also standard_ruler.unit"
},
"sources": {
"type": [
"array",
"null"
],
"items": {
"type": "object"
},
"description": "Source list [{name, value, weight, as_of, role, independent, relay_of?}]. independent:true = confirmed independent source; false = confirmed relay channel of another source (relay_of names the origin); null = independence unconfirmed (neither denied nor claimed). name/weight/independent/relay_of are record_hash core fields, so tampering with an independence claim breaks self-verification; as_of/value/role drift easily and are not hashed"
},
"previous": {
"type": [
"object",
"null"
],
"description": "Previous-period reading (a subset of the metrics in current; or {note} explaining that there is no previous value)"
},
"trend_7d": {
"type": [
"array",
"null"
],
"items": {
"type": "object"
},
"description": "Array of the last 7 trend points; [] means this signal has no series yet or the series does not apply - it is not an error"
},
"lifecycle": {
"type": [
"object",
"null"
],
"description": "Lifecycle block (state / birth_at / end_at / death_type / context). Part of the record_hash v3 core, so offline recomputation must include it; null for non-lifecycle lines"
},
"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"
},
"ots_status": {
"type": [
"string",
"null"
],
"description": "RETIRED FIELD - always \"pending\" or null; this field is no longer updated and is kept only for older parsers. Anchoring is done per write-batch (previously one root per day): each batch of writes gets a Merkle root stamped via OpenTimestamps, typically confirmed into a Bitcoin block within hours. See GET /gauge/anchor?hash= for the inclusion proof and the block number."
},
"source_ref": {
"type": [
"string",
"null"
],
"description": "Official source URL (provenance)"
},
"stat_ruler": {
"type": [
"object",
"null"
],
"description": "Statistical ruler: empirical percentile position across the last 5 same-season years; null when there are no statistics"
},
"summary_zh": {
"type": [
"string",
"null"
],
"description": "Human-readable one-line summary, IN CHINESE (zh-TW): reading + where it sits on the official ruler + statistical position. This is the HUMAN front-desk copy - machine consumers should read summary_en (English verdict) instead"
},
"unverified": {
"type": "boolean",
"description": "true = the source is untiered (source_tier is null); buyers and agents can filter on this"
},
"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)"
},
"source_tier": {
"type": [
"string",
"null"
],
"description": "Source tier: T1 (first-hand official) / T2 or T2-<subtype, e.g. T2-exchange> (observable, curated) / screen-viewpoint; null = untiered (see unverified)"
},
"snapshot_date": {
"type": "string",
"description": "ISO-8601 date-time in UTC (e.g. 2026-07-24T00:00:00.000Z; aligned to midnight of that day)"
},
"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"
},
"standard_ruler": {
"type": [
"object",
"null"
],
"description": "Official standard ruler (band / thresholds / normalized_index / pct_to_action, with unit and provenance); null when the line has no official ruler. Inner structure varies by signal"
},
"hash_core_version": {
"type": [
"integer",
"null"
],
"description": "Core-contract version of record_hash (currently 3); use it to pick the right core composition when recomputing offline"
},
"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
},
"description": "CORE DELIVERY of this endpoint: multiple signal readings for the same location. Per-row shape is in items - the single-signal fields live INSIDE items, not at the top level"
},
"_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"
},
"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"
},
"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"
}
},
"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/air",
"priceUsdNumber": 0.005
}
},
"description": "Add-on, air quality for one location: US AQI category and PM2.5 reading from EPA and CAMS official feeds. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. Every record carries an offline-recomputable record_hash. $0.0050 per call.",
"outputSchema": {
"input": {
"type": "http",
"method": "GET",
"example": {
"loc": "us-stlouis"
},
"required": [
"loc"
],
"properties": {
"loc": {
"type": "string",
"examples": [
"us-stlouis",
"us-memphis",
"us-losangeles",
"us-fresno",
"us-phoenix",
"us-denver"
],
"description": "required - location id; full list at free /gauge/preview",
"x-accepted-values": {
"all": "https://api.truthbear.co/schemas/gauge-air.input.json",
"shown": 6,
"total": 12
}
}
},
"queryParams": {
"loc": "required - location id; full list at free /gauge/preview"
},
"discoverable": true,
"exampleRequest": "/gauge/air?loc=us-stlouis"
},
"output": {
"type": "object",
"required": [
"nature",
"readings"
],
"properties": {
"line": {
"type": "string",
"description": "The line this bundle belongs to (e.g. airquality)"
},
"name": {
"type": [
"string",
"null"
],
"description": "Human-readable name of the object"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"addon": {
"enum": [
"air",
"precip"
],
"type": "string",
"description": "Conditional - returned only by the /gauge/air and /gauge/precip sub-endpoints: the add-on line marker"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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"
},
"nature": {
"type": "string",
"description": "Neutrality statement: GAUGE supplies observations and trend description only - no judgement, no prediction, no recommendation"
},
"location": {
"type": "string",
"description": "The location key of this bundle - the ?loc= you passed in"
},
"readings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"change": {
"type": [
"object",
"null"
],
"description": "Change, nested per metric: change.<metric> = {delta, direction, direction_reason?}, plus the scalar change.period (e.g. \"vs_previous\"). direction is one of rising/falling/stable/unknown - unknown means the direction CANNOT BE DETERMINED, it does not mean stable; in that case direction_reason carries a machine-readable cause: no-previous-record / metric-absent-in-previous / metric-absent-in-current / non-numeric-value"
},
"entity": {
"type": "string",
"description": "Monitored object id (e.g. btc / us / hormuz); full list at free /gauge/catalog or /gauge/preview"
},
"strata": {
"type": [
"object",
"null"
],
"description": "Statistical strata: share of each official band over the last 5 same-season years plus the band the current value falls in; null when there are no statistics"
},
"current": {
"type": [
"object",
"null"
],
"description": "Current reading. The inner metric structure varies by signal (crypto -> {price_usd, volume_24h, ...}; shipping -> {wind_kmh, wave_height_m, ...}). Units are carried in the field-name suffix; see also standard_ruler.unit"
},
"sources": {
"type": [
"array",
"null"
],
"items": {
"type": "object"
},
"description": "Source list [{name, value, weight, as_of, role, independent, relay_of?}]. independent:true = confirmed independent source; false = confirmed relay channel of another source (relay_of names the origin); null = independence unconfirmed (neither denied nor claimed). name/weight/independent/relay_of are record_hash core fields, so tampering with an independence claim breaks self-verification; as_of/value/role drift easily and are not hashed"
},
"previous": {
"type": [
"object",
"null"
],
"description": "Previous-period reading (a subset of the metrics in current; or {note} explaining that there is no previous value)"
},
"trend_7d": {
"type": [
"array",
"null"
],
"items": {
"type": "object"
},
"description": "Array of the last 7 trend points; [] means this signal has no series yet or the series does not apply - it is not an error"
},
"lifecycle": {
"type": [
"object",
"null"
],
"description": "Lifecycle block (state / birth_at / end_at / death_type / context). Part of the record_hash v3 core, so offline recomputation must include it; null for non-lifecycle lines"
},
"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"
},
"ots_status": {
"type": [
"string",
"null"
],
"description": "RETIRED FIELD - always \"pending\" or null; this field is no longer updated and is kept only for older parsers. Anchoring is done per write-batch (previously one root per day): each batch of writes gets a Merkle root stamped via OpenTimestamps, typically confirmed into a Bitcoin block within hours. See GET /gauge/anchor?hash= for the inclusion proof and the block number."
},
"source_ref": {
"type": [
"string",
"null"
],
"description": "Official source URL (provenance)"
},
"stat_ruler": {
"type": [
"object",
"null"
],
"description": "Statistical ruler: empirical percentile position across the last 5 same-season years; null when there are no statistics"
},
"summary_zh": {
"type": [
"string",
"null"
],
"description": "Human-readable one-line summary, IN CHINESE (zh-TW): reading + where it sits on the official ruler + statistical position. This is the HUMAN front-desk copy - machine consumers should read summary_en (English verdict) instead"
},
"unverified": {
"type": "boolean",
"description": "true = the source is untiered (source_tier is null); buyers and agents can filter on this"
},
"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)"
},
"source_tier": {
"type": [
"string",
"null"
],
"description": "Source tier: T1 (first-hand official) / T2 or T2-<subtype, e.g. T2-exchange> (observable, curated) / screen-viewpoint; null = untiered (see unverified)"
},
"snapshot_date": {
"type": "string",
"description": "ISO-8601 date-time in UTC (e.g. 2026-07-24T00:00:00.000Z; aligned to midnight of that day)"
},
"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"
},
"standard_ruler": {
"type": [
"object",
"null"
],
"description": "Official standard ruler (band / thresholds / normalized_index / pct_to_action, with unit and provenance); null when the line has no official ruler. Inner structure varies by signal"
},
"hash_core_version": {
"type": [
"integer",
"null"
],
"description": "Core-contract version of record_hash (currently 3); use it to pick the right core composition when recomputing offline"
},
"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
},
"description": "CORE DELIVERY of this endpoint: multiple signal readings for the same location. Per-row shape is in items - the single-signal fields live INSIDE items, not at the top level"
},
"_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"
},
"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"
},
"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"
}
},
"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
}
],
"x402Version": 1
},
{
"hint": {
"miss": "missing_parameter",
"usage": "/gauge/carbon-region?entity=<value>",
"preview": "/gauge/preview",
"missing_params": [
"entity"
],
"example_request": "/gauge/carbon-region?entity=kariba-redd&format=thin"
},
"error": "Missing required query parameter(s): entity. A request you can run right now: GET /gauge/carbon-region?entity=kariba-redd&format=thin\nX-PAYMENT header is required. This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10 — raise maxValue to at least 250000 atomic units, or your own client rejects this payment locally and no request ever reaches us. Do not want to raise it? A cheaper alternative you can run right now: GET /gauge?signal_id=hydrology.river-level&entity=07010000&format=thin ($0.01 USDC) - the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only.",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "250000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/gauge/carbon-region",
"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["
}
},
"output": {
"type": "json",
"example": {
"legs": {
"lifecycle": {
"band": "ended",
"source_ref": "https://registry.verra.org/app/projectDetail/VCS/902",
"record_hash": "sha256:3b19805563d036479d8500bf19f2fdcff728f2c085a269d96673246cf89e718c"
},
"rating_drift": {
"band": "withdrawn",
"source_ref": "https://registry.verra.org/app/projectDetail/VCS/902",
"record_hash": "sha256:42b5328d7e2d4cff264e71f7450243369e5f49ea1da1e69852b6b44597afc5a9"
},
"price_integrity": {
"band": "unsellable",
"source_ref": "https://www.theguardian.com/environment/2023/oct/03/revealed-top-carbon-offset-firm-worthless-credits-south-pole-kariba-zimbabwe",
"record_hash": "sha256:e659ab63d01cde8738c4eb486314bba31ef98582d3b56a551edcbbec363193be"
}
},
"name": "Kariba REDD+ (VCS 902)",
"grade": "screening-level, not decision-grade",
"scope": {
"full": "https://api.truthbear.co/scope/v1",
"verifiability": "unknown",
"monitoring_not_forecast": true,
"intelligence_not_command": true
},
"entity": "kariba-redd",
"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.",
"provenance": {
"freshness": "recent",
"age_hours_now": 143,
"freshness_basis": "cadence=default; fresh<=24h; recent<=192h; dead_source>1440h; age_basis=request-time(now minus observed_at)"
}
}
}
},
"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": [
"entity"
],
"properties": {
"entity": {
"type": "string",
"examples": [
"kariba-redd",
"rimba-raya",
"southern-cardamom",
"cdm-mechanism",
"vm0009-methodology",
"vm0007-methodology"
],
"description": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]",
"x-accepted-values": {
"all": "https://api.truthbear.co/schemas/gauge-carbon-region.input.json",
"shown": 6,
"total": 19
}
}
},
"additionalProperties": false
}
}
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"const": "json"
},
"example": {}
}
}
}
},
"priceUsd": "$0.25",
"discoverable": true,
"outputSchema": {
"type": "object",
"required": [
"nature",
"legs"
],
"properties": {
"legs": {
"type": "object",
"description": "CORE DELIVERY: per-leg readings, keyed by leg name (e.g. drought/heat/crop-vhi); each value carries signal_id/current/observed_at/data_age_hours/record_hash"
},
"name": {
"type": [
"string",
"null"
],
"description": "Human-readable name of the object"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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": "The object key of this bundle - the ?entity= you passed in"
},
"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"
},
"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"
},
"data_timespans": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Per-leg observation time and hours elapsed since"
},
"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"
},
"cross_line_narrative": {
"type": "string",
"description": "Cross-line comparison narrative (purely descriptive; no judgement, no prediction)"
}
},
"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/carbon-region",
"priceUsdNumber": 0.25
}
},
"description": "[3-LEG] Carbon integrity chain, one carbon project (?entity=kariba-redd): leading rating drift, downgrades and standard-body review -> current registry lifecycle from listed to suspended or de-listed -> realized price integrity (confirmation gate). A chain, not one reading: confidence = how many legs are lit, in order. Sources: Verra, Gold Standard, registry feeds. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call.",
"outputSchema": {
"input": {
"type": "http",
"method": "GET",
"example": {
"entity": "kariba-redd",
"format": "thin"
},
"required": [
"entity"
],
"properties": {
"entity": {
"type": "string",
"examples": [
"kariba-redd",
"rimba-raya",
"southern-cardamom",
"cdm-mechanism",
"vm0009-methodology",
"vm0007-methodology"
],
"description": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]",
"x-accepted-values": {
"all": "https://api.truthbear.co/schemas/gauge-carbon-region.input.json",
"shown": 6,
"total": 19
}
}
},
"queryParams": {
"entity": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]"
},
"discoverable": true,
"exampleRequest": "/gauge/carbon-region?entity=kariba-redd&format=thin"
},
"output": {
"type": "object",
"required": [
"nature",
"legs"
],
"properties": {
"legs": {
"type": "object",
"description": "CORE DELIVERY: per-leg readings, keyed by leg name (e.g. drought/heat/crop-vhi); each value carries signal_id/current/observed_at/data_age_hours/record_hash"
},
"name": {
"type": [
"string",
"null"
],
"description": "Human-readable name of the object"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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": "The object key of this bundle - the ?entity= you passed in"
},
"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"
},
"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"
},
"data_timespans": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Per-leg observation time and hours elapsed since"
},
"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"
},
"cross_line_narrative": {
"type": "string",
"description": "Cross-line comparison narrative (purely descriptive; no judgement, no prediction)"
}
},
"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": "250000",
"maxTimeoutSeconds": 300
}
],
"client_hint": {
"action": "This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10. Raise your client maxValue to at least required_atomic; otherwise the payment is rejected locally inside your own client and never reaches this server, so you will see no error from us.",
"reason": "price_above_default_client_max_value",
"example": "wrapFetchWithPayment(fetch, account, BigInt(250000)) // atomic units, USDC 6dp",
"required_usdc": "0.25",
"required_atomic": "250000",
"within_your_budget": [
{
"try": "/gauge?signal_id=hydrology.river-level&entity=07010000&format=thin",
"gets": "the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only",
"path": "/gauge",
"usdc": "0.01"
}
],
"default_client_max_atomic": "100000"
},
"x402Version": 1
},
{
"hint": {
"miss": "missing_parameter",
"usage": "/trust/precheck?service=<value>",
"preview": "/trust/preview",
"missing_params": [
"service"
],
"example_request": "/trust/precheck?service=api-exa-ai"
},
"error": "Missing required query parameter(s): service. A request you can run right now: GET /trust/precheck?service=api-exa-ai\nX-PAYMENT header is required",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "10000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/trust/precheck",
"extensions": {
"bazaar": {
"info": {
"input": {
"type": "http",
"method": "GET",
"queryParams": {
"service": "required - x402 service id; samples at free /trust/preview (sample_ids)"
}
},
"output": {
"type": "json",
"example": {
"entity": "(unlocked on payment)",
"current": {
"alive": true,
"domain": "api.onesource.io",
"calls_30d": 15448,
"endpoints": 25,
"last_price": 0.001,
"score_total": 1,
"demand_class": "REAL",
"demand_depth": "BREADTH",
"score_version": "demand-v1",
"first_endpoint": "https://api.onesource.io/api/chain/erc20-balance",
"last_called_at": "2026-08-25T06:44:08.121Z",
"liveness_state": "live",
"unique_payers_30d": 1093,
"endpoints_by_class": {
"REAL": 25
}
},
"lifecycle": {
"basis": "CDP discovery quality fields (l30DaysTotalCalls / l30DaysUniquePayers). demand_class is computed by the same classifi...",
"state": "operating",
"last_seen": "2026-08-25"
},
"signal_id": "trust.service-score",
"source_ref": "https://api.cdp.coinbase.com/platform/v2/x402/discovery/resources",
"entity_name": "(unlocked on payment)",
"observed_at": "2026-08-25T09:56:15.825Z",
"record_hash": "sha256:351f42610f5b3f386f88ba9c5a9d01d80f287a12a02b2bed05c864f374cd65aa",
"source_tier": "T2-observable",
"snapshot_date": "2026-08-25",
"data_age_hours": 0,
"hash_core_version": 4
}
}
},
"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": [
"service"
],
"properties": {
"service": {
"type": "string",
"examples": [
"api-exa-ai"
],
"description": "required - x402 service id; samples at free /trust/preview (sample_ids)"
}
},
"additionalProperties": false
}
}
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"const": "json"
},
"example": {}
}
}
}
},
"priceUsd": "$0.01",
"discoverable": true,
"outputSchema": {
"type": "object",
"allOf": [
{
"if": {
"required": [
"model"
],
"properties": {
"model": {
"const": "demand-v1"
}
}
},
"then": {
"properties": {
"calls_30d": {
"type": [
"integer",
"null"
],
"description": "demand-v1 only. Total calls in the last 30 days, from the public CDP discovery catalogue"
},
"endpoints": {
"type": [
"integer",
"null"
],
"description": "demand-v1 only. Number of catalogued endpoints under this service"
},
"model_note": {
"type": "string",
"description": "demand-v1 only. States plainly that this REPLACES rather than restores the old 14-axis score, and how score_total is derived"
},
"demand_class": {
"type": [
"string",
"null"
],
"description": "demand-v1 only. REAL | SOLO | PROBE | WASH? | WASH | DEAD. Computed by the same classifier as our public wash-trade filter, and inside the signed record_hash core - tampering with it breaks self-verification"
},
"demand_depth": {
"type": [
"string",
"null"
],
"description": "demand-v1 only. DEPTH (repeat purchase) | BREADTH (one-time tire-kicking) | null"
},
"last_called_at": {
"type": [
"string",
"null"
],
"description": "demand-v1 only. Most recent call timestamp reported by the catalogue"
},
"unique_payers_30d": {
"type": [
"integer",
"null"
],
"description": "demand-v1 only. LOWER BOUND: max across this service endpoints, never a sum (one buyer hitting several endpoints must not be counted twice)"
},
"endpoints_by_class": {
"type": [
"object",
"null"
],
"description": "demand-v1 only. Distribution of demand_class across this service endpoints"
}
}
}
},
{
"if": {
"required": [
"model"
],
"properties": {
"model": {
"const": "legacy-registry"
}
}
},
"then": {
"properties": {
"note": {
"type": "string",
"description": "legacy-registry only. Degraded-delivery disclosure for rows captured before the rebuild"
},
"source_note": {
"type": "string",
"description": "legacy-registry only. Provenance note for the 2026-07-07/08 salvaged registry import"
}
}
}
}
],
"required": [
"service_id",
"score_total"
],
"properties": {
"name": {
"type": [
"string",
"null"
]
},
"note": {
"type": "string",
"description": "Present only when model is \"legacy-registry\"; absent otherwise. Degraded-delivery disclosure for rows captured before the rebuild"
},
"model": {
"type": "string",
"description": "demand-v1 (current) | legacy-registry (rows captured before 2026-08-16)"
},
"domain": {
"type": [
"string",
"null"
]
},
"calls_30d": {
"type": [
"integer",
"null"
],
"description": "Present only when model is \"demand-v1\"; absent otherwise. Total calls in the last 30 days, from the public CDP discovery catalogue"
},
"endpoints": {
"type": [
"integer",
"null"
],
"description": "Present only when model is \"demand-v1\"; absent otherwise. Number of catalogued endpoints under this service"
},
"lifecycle": {
"type": [
"object",
"null"
]
},
"model_note": {
"type": "string",
"description": "Present only when model is \"demand-v1\"; absent otherwise. States plainly that this REPLACES rather than restores the old 14-axis score, and how score_total is derived"
},
"service_id": {
"type": "string"
},
"source_ref": {
"type": [
"string",
"null"
]
},
"observed_at": {
"type": "string",
"format": "date-time"
},
"record_hash": {
"type": [
"string",
"null"
]
},
"score_total": {
"type": [
"number",
"null"
]
},
"source_note": {
"type": "string",
"description": "Present only when model is \"legacy-registry\"; absent otherwise. Provenance note for the 2026-07-07/08 salvaged registry import"
},
"source_tier": {
"type": [
"string",
"null"
]
},
"capture_date": {
"type": "string",
"format": "date"
},
"demand_class": {
"type": [
"string",
"null"
],
"description": "Present only when model is \"demand-v1\"; absent otherwise. REAL | SOLO | PROBE | WASH? | WASH | DEAD. Computed by the same classifier as our public wash-trade filter, and inside the signed record_hash core - tampering with it breaks self-verification"
},
"demand_depth": {
"type": [
"string",
"null"
],
"description": "Present only when model is \"demand-v1\"; absent otherwise. DEPTH (repeat purchase) | BREADTH (one-time tire-kicking) | null"
},
"baseline_delta": {
"type": [
"number",
"null"
]
},
"data_age_hours": {
"type": "number"
},
"first_endpoint": {
"type": [
"string",
"null"
]
},
"last_called_at": {
"type": [
"string",
"null"
],
"description": "Present only when model is \"demand-v1\"; absent otherwise. Most recent call timestamp reported by the catalogue"
},
"liveness_state": {
"type": [
"string",
"null"
]
},
"liveness_streak": {
"type": [
"integer",
"null"
]
},
"hash_core_version": {
"type": [
"string",
"null"
]
},
"unique_payers_30d": {
"type": [
"integer",
"null"
],
"description": "Present only when model is \"demand-v1\"; absent otherwise. LOWER BOUND: max across this service endpoints, never a sum (one buyer hitting several endpoints must not be counted twice)"
},
"endpoints_by_class": {
"type": [
"object",
"null"
],
"description": "Present only when model is \"demand-v1\"; absent otherwise. Distribution of demand_class across this service endpoints"
},
"unavailable_fields": {
"type": "array",
"description": "Old axes that are still unavailable (the original 14-axis collector is gone and is NOT restored): tier / verified / action_hint / the five-axis sub-scores / onchain_*"
},
"unavailable_reason": {
"type": "string"
}
},
"conditionalProperties": {
"note": {
"type": "string",
"description": "legacy-registry only. Degraded-delivery disclosure for rows captured before the rebuild"
},
"calls_30d": {
"type": [
"integer",
"null"
],
"description": "demand-v1 only. Total calls in the last 30 days, from the public CDP discovery catalogue"
},
"endpoints": {
"type": [
"integer",
"null"
],
"description": "demand-v1 only. Number of catalogued endpoints under this service"
},
"model_note": {
"type": "string",
"description": "demand-v1 only. States plainly that this REPLACES rather than restores the old 14-axis score, and how score_total is derived"
},
"source_note": {
"type": "string",
"description": "legacy-registry only. Provenance note for the 2026-07-07/08 salvaged registry import"
},
"demand_class": {
"type": [
"string",
"null"
],
"description": "demand-v1 only. REAL | SOLO | PROBE | WASH? | WASH | DEAD. Computed by the same classifier as our public wash-trade filter, and inside the signed record_hash core - tampering with it breaks self-verification"
},
"demand_depth": {
"type": [
"string",
"null"
],
"description": "demand-v1 only. DEPTH (repeat purchase) | BREADTH (one-time tire-kicking) | null"
},
"last_called_at": {
"type": [
"string",
"null"
],
"description": "demand-v1 only. Most recent call timestamp reported by the catalogue"
},
"unique_payers_30d": {
"type": [
"integer",
"null"
],
"description": "demand-v1 only. LOWER BOUND: max across this service endpoints, never a sum (one buyer hitting several endpoints must not be counted twice)"
},
"endpoints_by_class": {
"type": [
"object",
"null"
],
"description": "demand-v1 only. Distribution of demand_class across this service endpoints"
}
}
},
"routeTemplate": "/trust/precheck",
"priceUsdNumber": 0.01
}
},
"description": "[SIGNAL+PROOF] Demand record for one x402 service (?service=): demand_class (REAL/SOLO/PROBE/WASH), calls_30d, unique_payers_30d, score_total, liveness_state, lifecycle, record_hash. Model demand-v1, refreshed daily from the public CDP catalogue; score_total orders, not rates. DEGRADED DELIVERY, see unavailable_fields - tier, verified, action_hint and the five-axis sub-scores are empty. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.01 per call.",
"outputSchema": {
"input": {
"type": "http",
"method": "GET",
"example": {
"service": "api-exa-ai"
},
"required": [
"service"
],
"properties": {
"service": {
"type": "string",
"examples": [
"api-exa-ai"
],
"description": "required - x402 service id; samples at free /trust/preview (sample_ids)"
}
},
"queryParams": {
"service": "required - x402 service id; samples at free /trust/preview (sample_ids)"
},
"discoverable": true,
"exampleRequest": "/trust/precheck?service=api-exa-ai"
},
"output": {
"type": "object",
"allOf": [
{
"if": {
"required": [
"model"
],
"properties": {
"model": {
"const": "demand-v1"
}
}
},
"then": {
"properties": {
"calls_30d": {
"type": [
"integer",
"null"
],
"description": "demand-v1 only. Total calls in the last 30 days, from the public CDP discovery catalogue"
},
"endpoints": {
"type": [
"integer",
"null"
],
"description": "demand-v1 only. Number of catalogued endpoints under this service"
},
"model_note": {
"type": "string",
"description": "demand-v1 only. States plainly that this REPLACES rather than restores the old 14-axis score, and how score_total is derived"
},
"demand_class": {
"type": [
"string",
"null"
],
"description": "demand-v1 only. REAL | SOLO | PROBE | WASH? | WASH | DEAD. Computed by the same classifier as our public wash-trade filter, and inside the signed record_hash core - tampering with it breaks self-verification"
},
"demand_depth": {
"type": [
"string",
"null"
],
"description": "demand-v1 only. DEPTH (repeat purchase) | BREADTH (one-time tire-kicking) | null"
},
"last_called_at": {
"type": [
"string",
"null"
],
"description": "demand-v1 only. Most recent call timestamp reported by the catalogue"
},
"unique_payers_30d": {
"type": [
"integer",
"null"
],
"description": "demand-v1 only. LOWER BOUND: max across this service endpoints, never a sum (one buyer hitting several endpoints must not be counted twice)"
},
"endpoints_by_class": {
"type": [
"object",
"null"
],
"description": "demand-v1 only. Distribution of demand_class across this service endpoints"
}
}
}
},
{
"if": {
"required": [
"model"
],
"properties": {
"model": {
"const": "legacy-registry"
}
}
},
"then": {
"properties": {
"note": {
"type": "string",
"description": "legacy-registry only. Degraded-delivery disclosure for rows captured before the rebuild"
},
"source_note": {
"type": "string",
"description": "legacy-registry only. Provenance note for the 2026-07-07/08 salvaged registry import"
}
}
}
}
],
"required": [
"service_id",
"score_total"
],
"properties": {
"name": {
"type": [
"string",
"null"
]
},
"note": {
"type": "string",
"description": "Present only when model is \"legacy-registry\"; absent otherwise. Degraded-delivery disclosure for rows captured before the rebuild"
},
"model": {
"type": "string",
"description": "demand-v1 (current) | legacy-registry (rows captured before 2026-08-16)"
},
"domain": {
"type": [
"string",
"null"
]
},
"calls_30d": {
"type": [
"integer",
"null"
],
"description": "Present only when model is \"demand-v1\"; absent otherwise. Total calls in the last 30 days, from the public CDP discovery catalogue"
},
"endpoints": {
"type": [
"integer",
"null"
],
"description": "Present only when model is \"demand-v1\"; absent otherwise. Number of catalogued endpoints under this service"
},
"lifecycle": {
"type": [
"object",
"null"
]
},
"model_note": {
"type": "string",
"description": "Present only when model is \"demand-v1\"; absent otherwise. States plainly that this REPLACES rather than restores the old 14-axis score, and how score_total is derived"
},
"service_id": {
"type": "string"
},
"source_ref": {
"type": [
"string",
"null"
]
},
"observed_at": {
"type": "string",
"format": "date-time"
},
"record_hash": {
"type": [
"string",
"null"
]
},
"score_total": {
"type": [
"number",
"null"
]
},
"source_note": {
"type": "string",
"description": "Present only when model is \"legacy-registry\"; absent otherwise. Provenance note for the 2026-07-07/08 salvaged registry import"
},
"source_tier": {
"type": [
"string",
"null"
]
},
"capture_date": {
"type": "string",
"format": "date"
},
"demand_class": {
"type": [
"string",
"null"
],
"description": "Present only when model is \"demand-v1\"; absent otherwise. REAL | SOLO | PROBE | WASH? | WASH | DEAD. Computed by the same classifier as our public wash-trade filter, and inside the signed record_hash core - tampering with it breaks self-verification"
},
"demand_depth": {
"type": [
"string",
"null"
],
"description": "Present only when model is \"demand-v1\"; absent otherwise. DEPTH (repeat purchase) | BREADTH (one-time tire-kicking) | null"
},
"baseline_delta": {
"type": [
"number",
"null"
]
},
"data_age_hours": {
"type": "number"
},
"first_endpoint": {
"type": [
"string",
"null"
]
},
"last_called_at": {
"type": [
"string",
"null"
],
"description": "Present only when model is \"demand-v1\"; absent otherwise. Most recent call timestamp reported by the catalogue"
},
"liveness_state": {
"type": [
"string",
"null"
]
},
"liveness_streak": {
"type": [
"integer",
"null"
]
},
"hash_core_version": {
"type": [
"string",
"null"
]
},
"unique_payers_30d": {
"type": [
"integer",
"null"
],
"description": "Present only when model is \"demand-v1\"; absent otherwise. LOWER BOUND: max across this service endpoints, never a sum (one buyer hitting several endpoints must not be counted twice)"
},
"endpoints_by_class": {
"type": [
"object",
"null"
],
"description": "Present only when model is \"demand-v1\"; absent otherwise. Distribution of demand_class across this service endpoints"
},
"unavailable_fields": {
"type": "array",
"description": "Old axes that are still unavailable (the original 14-axis collector is gone and is NOT restored): tier / verified / action_hint / the five-axis sub-scores / onchain_*"
},
"unavailable_reason": {
"type": "string"
}
},
"conditionalProperties": {
"note": {
"type": "string",
"description": "legacy-registry only. Degraded-delivery disclosure for rows captured before the rebuild"
},
"calls_30d": {
"type": [
"integer",
"null"
],
"description": "demand-v1 only. Total calls in the last 30 days, from the public CDP discovery catalogue"
},
"endpoints": {
"type": [
"integer",
"null"
],
"description": "demand-v1 only. Number of catalogued endpoints under this service"
},
"model_note": {
"type": "string",
"description": "demand-v1 only. States plainly that this REPLACES rather than restores the old 14-axis score, and how score_total is derived"
},
"source_note": {
"type": "string",
"description": "legacy-registry only. Provenance note for the 2026-07-07/08 salvaged registry import"
},
"demand_class": {
"type": [
"string",
"null"
],
"description": "demand-v1 only. REAL | SOLO | PROBE | WASH? | WASH | DEAD. Computed by the same classifier as our public wash-trade filter, and inside the signed record_hash core - tampering with it breaks self-verification"
},
"demand_depth": {
"type": [
"string",
"null"
],
"description": "demand-v1 only. DEPTH (repeat purchase) | BREADTH (one-time tire-kicking) | null"
},
"last_called_at": {
"type": [
"string",
"null"
],
"description": "demand-v1 only. Most recent call timestamp reported by the catalogue"
},
"unique_payers_30d": {
"type": [
"integer",
"null"
],
"description": "demand-v1 only. LOWER BOUND: max across this service endpoints, never a sum (one buyer hitting several endpoints must not be counted twice)"
},
"endpoints_by_class": {
"type": [
"object",
"null"
],
"description": "demand-v1 only. Distribution of demand_class across this service endpoints"
}
}
}
},
"maxAmountRequired": "10000",
"maxTimeoutSeconds": 300
}
],
"x402Version": 1
},
{
"hint": {
"miss": "missing_parameter",
"usage": "/gauge/lifecycle?entity=<value>",
"preview": "/gauge/catalog",
"missing_params": [
"entity"
],
"example_request": "/gauge/lifecycle?entity=coreweave"
},
"error": "Missing required query parameter(s): entity. A request you can run right now: GET /gauge/lifecycle?entity=coreweave\nX-PAYMENT header is required",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "5000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/gauge/lifecycle",
"extensions": {
"bazaar": {
"info": {
"input": {
"type": "http",
"method": "GET",
"queryParams": {
"entity": "required - the id to look up (e.g. coreweave, terrausd-ust, jasper-ai, helium). Full list: free GET /gauge/catalog?all=1",
"industry": "optional - narrow to one line when an id is tracked by more than one (e.g. ai-compute, stablecoin). Omit and you get eve"
}
},
"output": {
"type": "json"
}
},
"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": [
"entity"
],
"properties": {
"entity": {
"type": "string",
"examples": [
"coreweave"
],
"description": "required - the id to look up (e.g. coreweave, terrausd-ust, jasper-ai, helium). Full list: free GET /gauge/catalog?all=1 -> signals[] where signal_id ends in .lifecycle, then ?signal_id=<id> for its entities[]"
},
"industry": {
"type": "string",
"description": "optional - narrow to one line when an id is tracked by more than one (e.g. ai-compute, stablecoin). Omit and you get every matching line"
}
},
"additionalProperties": false
}
}
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"const": "json"
}
}
}
}
},
"priceUsd": "$0.005",
"discoverable": true,
"outputSchema": {
"type": "object",
"required": [
"entity",
"matched_lines",
"matches",
"record_hash_verifiable"
],
"properties": {
"entity": {
"type": "string",
"description": "The id you asked about, echoed back."
},
"nature": {
"type": "string",
"description": "Descriptive-only statement: state as recorded by the source, never adjudication or forecast."
},
"matches": {
"type": "array",
"items": {
"type": "object",
"properties": {
"entity": {
"type": "string"
},
"status": {
"type": [
"string",
"null"
],
"description": "The band on the official ruler, e.g. operating / at_risk / ended. null when the line publishes no band."
},
"current": {
"description": "The stored reading itself; shape varies by line (part of the hash core)."
},
"sources": {
"description": "Per-source provenance as stored (part of the v3 hash core)."
},
"industry": {
"type": "string",
"description": "The signal_id without the .lifecycle suffix."
},
"lifecycle": {
"type": [
"object",
"null"
],
"description": "birth_at / end_at / death_type / lifespan_days as recorded (part of the hash core)."
},
"signal_id": {
"type": "string",
"description": "e.g. stablecoin.lifecycle"
},
"source_ref": {
"type": [
"string",
"null"
],
"description": "Official source reference (part of the hash core)."
},
"entity_name": {
"type": [
"string",
"null"
]
},
"observed_at": {
"type": [
"string",
"null"
]
},
"record_hash": {
"type": "string",
"description": "Canonical sha256; every hash-core field above is delivered, so you can recompute it offline."
},
"source_tier": {
"type": [
"string",
"null"
],
"description": "Part of the v3 hash core."
},
"snapshot_date": {
"type": "string",
"description": "YYYY-MM-DD of the stored snapshot (part of the hash core)."
},
"data_age_hours": {
"type": [
"number",
"null"
]
},
"standard_ruler": {
"type": [
"object",
"null"
],
"description": "The official ruler as stored, including the status band (part of the v3 hash core)."
},
"hash_core_version": {
"type": [
"integer",
"string",
"null"
]
},
"source_agreement_cv": {
"type": [
"number",
"null"
]
}
}
},
"description": "One element per lifecycle line that tracks this id."
},
"matched_lines": {
"type": "integer",
"description": "How many lifecycle lines track this id. Usually 1; a handful of ids are tracked by 2 lines and then you get both - nothing is picked for you."
},
"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"
},
"record_hash_verifiable": {
"type": "object",
"description": "Computed per delivery, not a boast: mode (offline/partial/none), how many of the returned records were actually recomputed server-side, and out of how many."
}
},
"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/lifecycle",
"priceUsdNumber": 0.005
}
},
"description": "One id in, its official lifecycle state out - no need to know which line tracks it first. Covers 19 lifecycle lines (stablecoins, AI tools and datasets, neoclouds, DePIN, RWA, carbon projects, ESG funds, tariff measures and more): status band, birth/end dates, death type, lifespan, official source_ref. If two lines track the same id you get BOTH - nothing is picked for you. Unknown id -> 422 no_charge, not billed. Every record carries an offline-recomputable record_hash. $0.0050 per call.",
"outputSchema": {
"input": {
"type": "http",
"method": "GET",
"example": {
"entity": "coreweave"
},
"required": [
"entity"
],
"properties": {
"entity": {
"type": "string",
"examples": [
"coreweave"
],
"description": "required - the id to look up (e.g. coreweave, terrausd-ust, jasper-ai, helium). Full list: free GET /gauge/catalog?all=1 -> signals[] where signal_id ends in .lifecycle, then ?signal_id=<id> for its entities[]"
},
"industry": {
"type": "string",
"description": "optional - narrow to one line when an id is tracked by more than one (e.g. ai-compute, stablecoin). Omit and you get every matching line"
}
},
"queryParams": {
"entity": "required - the id to look up (e.g. coreweave, terrausd-ust, jasper-ai, helium). Full list: free GET /gauge/catalog?all=1 -> signals[] where signal_id ends in .lifecycle, then ?signal_id=<id> for its entities[]",
"industry": "optional - narrow to one line when an id is tracked by more than one (e.g. ai-compute, stablecoin). Omit and you get every matching line"
},
"discoverable": true,
"exampleRequest": "/gauge/lifecycle?entity=coreweave"
},
"output": {
"type": "object",
"required": [
"entity",
"matched_lines",
"matches",
"record_hash_verifiable"
],
"properties": {
"entity": {
"type": "string",
"description": "The id you asked about, echoed back."
},
"nature": {
"type": "string",
"description": "Descriptive-only statement: state as recorded by the source, never adjudication or forecast."
},
"matches": {
"type": "array",
"items": {
"type": "object",
"properties": {
"entity": {
"type": "string"
},
"status": {
"type": [
"string",
"null"
],
"description": "The band on the official ruler, e.g. operating / at_risk / ended. null when the line publishes no band."
},
"current": {
"description": "The stored reading itself; shape varies by line (part of the hash core)."
},
"sources": {
"description": "Per-source provenance as stored (part of the v3 hash core)."
},
"industry": {
"type": "string",
"description": "The signal_id without the .lifecycle suffix."
},
"lifecycle": {
"type": [
"object",
"null"
],
"description": "birth_at / end_at / death_type / lifespan_days as recorded (part of the hash core)."
},
"signal_id": {
"type": "string",
"description": "e.g. stablecoin.lifecycle"
},
"source_ref": {
"type": [
"string",
"null"
],
"description": "Official source reference (part of the hash core)."
},
"entity_name": {
"type": [
"string",
"null"
]
},
"observed_at": {
"type": [
"string",
"null"
]
},
"record_hash": {
"type": "string",
"description": "Canonical sha256; every hash-core field above is delivered, so you can recompute it offline."
},
"source_tier": {
"type": [
"string",
"null"
],
"description": "Part of the v3 hash core."
},
"snapshot_date": {
"type": "string",
"description": "YYYY-MM-DD of the stored snapshot (part of the hash core)."
},
"data_age_hours": {
"type": [
"number",
"null"
]
},
"standard_ruler": {
"type": [
"object",
"null"
],
"description": "The official ruler as stored, including the status band (part of the v3 hash core)."
},
"hash_core_version": {
"type": [
"integer",
"string",
"null"
]
},
"source_agreement_cv": {
"type": [
"number",
"null"
]
}
}
},
"description": "One element per lifecycle line that tracks this id."
},
"matched_lines": {
"type": "integer",
"description": "How many lifecycle lines track this id. Usually 1; a handful of ids are tracked by 2 lines and then you get both - nothing is picked for you."
},
"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"
},
"record_hash_verifiable": {
"type": "object",
"description": "Computed per delivery, not a boast: mode (offline/partial/none), how many of the returned records were actually recomputed server-side, and out of how many."
}
},
"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
}
],
"x402Version": 1
},
{
"hint": {
"miss": "missing_parameter",
"usage": "/gauge/wildfire-region?entity=<value>",
"preview": "/gauge/preview",
"missing_params": [
"entity"
],
"example_request": "/gauge/wildfire-region?entity=us-california&format=thin"
},
"error": "Missing required query parameter(s): entity. A request you can run right now: GET /gauge/wildfire-region?entity=us-california&format=thin\nX-PAYMENT header is required. This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10 — raise maxValue to at least 250000 atomic units, or your own client rejects this payment locally and no request ever reaches us. Do not want to raise it? A cheaper alternative you can run right now: GET /gauge?signal_id=hydrology.river-level&entity=07010000&format=thin ($0.01 USDC) - the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only.",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "250000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/gauge/wildfire-region",
"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["
}
},
"output": {
"type": "json",
"example": {
"legs": {
"active_fire": {
"band": "none",
"source_ref": "https://firms.modaps.eosdis.nasa.gov/",
"record_hash": "sha256:53ba632b9385ff7063f142a3701331a2d872adc3c4c5e3848845880cb8ed7f4c"
},
"fire_weather": {
"band": "watch",
"source_ref": "https://open-meteo.com/",
"record_hash": "sha256:2f291a31f09b82bfdbe5ab2c8b1ad0ca11564c153717a0ea5986c7c71ba9b3fb"
},
"impact_confirm": {
"band": "clear",
"source_ref": "https://open-meteo.com/en/docs/air-quality-api",
"record_hash": "sha256:8ab51e767535b4fb7a43cbf1eac45db2261d0653b8e749b7d03b5df9c5bc0ccf"
}
},
"name": "US California",
"grade": "screening-level, not decision-grade",
"scope": {
"full": "https://api.truthbear.co/scope/v1",
"verifiability": "unknown",
"monitoring_not_forecast": true,
"intelligence_not_command": true
},
"entity": "us-california",
"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.",
"provenance": {
"freshness": "recent",
"age_hours_now": 39,
"freshness_basis": "cadence=default; fresh<=24h; recent<=192h; dead_source>1440h; age_basis=request-time(now minus observed_at)"
}
}
}
},
"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": [
"entity"
],
"properties": {
"entity": {
"type": "string",
"examples": [
"us-california",
"us-pacific-northwest",
"us-southwest",
"us-rockies",
"canada-bc",
"canada-alberta"
],
"description": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]",
"x-accepted-values": {
"all": "https://api.truthbear.co/schemas/gauge-wildfire-region.input.json",
"shown": 6,
"total": 12
}
}
},
"additionalProperties": false
}
}
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"const": "json"
},
"example": {}
}
}
}
},
"priceUsd": "$0.25",
"discoverable": true,
"outputSchema": {
"type": "object",
"required": [
"nature",
"legs"
],
"properties": {
"legs": {
"type": "object",
"description": "CORE DELIVERY: per-leg readings, keyed by leg name (e.g. drought/heat/crop-vhi); each value carries signal_id/current/observed_at/data_age_hours/record_hash"
},
"name": {
"type": [
"string",
"null"
],
"description": "Human-readable name of the object"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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": "The object key of this bundle - the ?entity= you passed in"
},
"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"
},
"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"
},
"data_timespans": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Per-leg observation time and hours elapsed since"
},
"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"
},
"cross_line_narrative": {
"type": "string",
"description": "Cross-line comparison narrative (purely descriptive; no judgement, no prediction)"
}
},
"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/wildfire-region",
"priceUsdNumber": 0.25
}
},
"description": "[3-LEG] Wildfire chain, one fire-risk region (?entity=us-california): leading fire weather - hot, dry and windy -> current active fire detections from NASA FIRMS satellite thermal anomalies -> realized downwind smoke impact (confirmation gate). A chain, not one reading: confidence = how many legs are lit, in order. Sources: NASA FIRMS, NWS, EPA. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call.",
"outputSchema": {
"input": {
"type": "http",
"method": "GET",
"example": {
"entity": "us-california",
"format": "thin"
},
"required": [
"entity"
],
"properties": {
"entity": {
"type": "string",
"examples": [
"us-california",
"us-pacific-northwest",
"us-southwest",
"us-rockies",
"canada-bc",
"canada-alberta"
],
"description": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]",
"x-accepted-values": {
"all": "https://api.truthbear.co/schemas/gauge-wildfire-region.input.json",
"shown": 6,
"total": 12
}
}
},
"queryParams": {
"entity": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]"
},
"discoverable": true,
"exampleRequest": "/gauge/wildfire-region?entity=us-california&format=thin"
},
"output": {
"type": "object",
"required": [
"nature",
"legs"
],
"properties": {
"legs": {
"type": "object",
"description": "CORE DELIVERY: per-leg readings, keyed by leg name (e.g. drought/heat/crop-vhi); each value carries signal_id/current/observed_at/data_age_hours/record_hash"
},
"name": {
"type": [
"string",
"null"
],
"description": "Human-readable name of the object"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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": "The object key of this bundle - the ?entity= you passed in"
},
"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"
},
"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"
},
"data_timespans": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Per-leg observation time and hours elapsed since"
},
"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"
},
"cross_line_narrative": {
"type": "string",
"description": "Cross-line comparison narrative (purely descriptive; no judgement, no prediction)"
}
},
"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": "250000",
"maxTimeoutSeconds": 300
}
],
"client_hint": {
"action": "This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10. Raise your client maxValue to at least required_atomic; otherwise the payment is rejected locally inside your own client and never reaches this server, so you will see no error from us.",
"reason": "price_above_default_client_max_value",
"example": "wrapFetchWithPayment(fetch, account, BigInt(250000)) // atomic units, USDC 6dp",
"required_usdc": "0.25",
"required_atomic": "250000",
"within_your_budget": [
{
"try": "/gauge?signal_id=hydrology.river-level&entity=07010000&format=thin",
"gets": "the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only",
"path": "/gauge",
"usdc": "0.01"
}
],
"default_client_max_atomic": "100000"
},
"x402Version": 1
},
{
"error": "X-PAYMENT header is required. This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10 — raise maxValue to at least 250000 atomic units, or your own client rejects this payment locally and no request ever reaches us. Do not want to raise it? A cheaper alternative you can run right now: GET /gauge?signal_id=hydrology.river-level&entity=07010000&format=thin ($0.01 USDC) - the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only.",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "250000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/gauge/japan-region",
"extensions": {
"bazaar": {
"info": {
"input": {
"type": "http",
"method": "GET"
},
"output": {
"type": "json"
}
},
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method"
],
"properties": {
"type": {
"const": "http"
},
"method": {
"enum": [
"GET"
],
"type": "string"
}
}
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"const": "json"
}
}
}
}
},
"priceUsd": "$0.25",
"discoverable": true,
"outputSchema": {
"type": "object",
"required": [
"legs",
"provenance",
"note"
],
"properties": {
"legs": {
"type": "object",
"description": "Keyed by signal_id; each value is the array described in LEG_ROW.",
"additionalProperties": {
"type": "array",
"items": {
"type": "object",
"properties": {
"band": {
"type": [
"string",
"null"
]
},
"entity": {
"type": "string"
},
"current": {
"type": "object",
"description": "Metric keys vary by signal; units are suffixed in the key names."
},
"percentile": {
"type": [
"string",
"null"
]
},
"entity_name": {
"type": [
"string",
"null"
]
},
"observed_at": {
"type": "string"
},
"record_hash": {
"type": [
"string",
"null"
]
}
}
},
"description": "Latest stored reading per entity for this signal, as published by the source agency."
}
},
"name": {
"type": "string",
"description": "Short human-readable name of the region this bundle covers."
},
"note": {
"type": "string",
"description": "Descriptive-only statement of what was restated and from whom."
},
"scope": {
"type": "string",
"description": "What this bundle covers, in one line."
},
"signals": {
"type": "array",
"items": {
"type": "string"
},
"description": "The signal_id keys present in legs."
},
"provenance": {
"type": "object",
"description": "served_from, data_as_of, oldest_leg_as_of, age_hours_now, freshness."
},
"cross_check": {
"type": "object",
"description": "The same earthquakes as measured by two independent national agencies, side by side, with a machine-readable comparability block stating which fields may be compared and which may not. Nothing is adjudicated."
},
"entities_count": {
"type": "integer",
"description": "Total rows across every leg."
}
},
"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/japan-region",
"priceUsdNumber": 0.25
}
},
"description": "Japan official readings in one call plus an independent cross-agency check: JMA seismic intensity (shindo), RSMC Tokyo typhoon analysis, Ministry of Finance JGB yields across seven tenors, and the Japan rows of BIS and FRED. The same earthquakes appear as JMA measured them and as USGS measured them, side by side - different agencies, different quantities, and we adjudicate nothing. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call.",
"outputSchema": {
"input": {
"type": "http",
"method": "GET",
"required": [],
"properties": {},
"queryParams": {},
"discoverable": true
},
"output": {
"type": "object",
"required": [
"legs",
"provenance",
"note"
],
"properties": {
"legs": {
"type": "object",
"description": "Keyed by signal_id; each value is the array described in LEG_ROW.",
"additionalProperties": {
"type": "array",
"items": {
"type": "object",
"properties": {
"band": {
"type": [
"string",
"null"
]
},
"entity": {
"type": "string"
},
"current": {
"type": "object",
"description": "Metric keys vary by signal; units are suffixed in the key names."
},
"percentile": {
"type": [
"string",
"null"
]
},
"entity_name": {
"type": [
"string",
"null"
]
},
"observed_at": {
"type": "string"
},
"record_hash": {
"type": [
"string",
"null"
]
}
}
},
"description": "Latest stored reading per entity for this signal, as published by the source agency."
}
},
"name": {
"type": "string",
"description": "Short human-readable name of the region this bundle covers."
},
"note": {
"type": "string",
"description": "Descriptive-only statement of what was restated and from whom."
},
"scope": {
"type": "string",
"description": "What this bundle covers, in one line."
},
"signals": {
"type": "array",
"items": {
"type": "string"
},
"description": "The signal_id keys present in legs."
},
"provenance": {
"type": "object",
"description": "served_from, data_as_of, oldest_leg_as_of, age_hours_now, freshness."
},
"cross_check": {
"type": "object",
"description": "The same earthquakes as measured by two independent national agencies, side by side, with a machine-readable comparability block stating which fields may be compared and which may not. Nothing is adjudicated."
},
"entities_count": {
"type": "integer",
"description": "Total rows across every leg."
}
},
"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": "250000",
"maxTimeoutSeconds": 300
}
],
"client_hint": {
"action": "This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10. Raise your client maxValue to at least required_atomic; otherwise the payment is rejected locally inside your own client and never reaches this server, so you will see no error from us.",
"reason": "price_above_default_client_max_value",
"example": "wrapFetchWithPayment(fetch, account, BigInt(250000)) // atomic units, USDC 6dp",
"required_usdc": "0.25",
"required_atomic": "250000",
"within_your_budget": [
{
"try": "/gauge?signal_id=hydrology.river-level&entity=07010000&format=thin",
"gets": "the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only",
"path": "/gauge",
"usdc": "0.01"
}
],
"default_client_max_atomic": "100000"
},
"x402Version": 1
},
{
"error": "X-PAYMENT header is required. This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10 — raise maxValue to at least 250000 atomic units, or your own client rejects this payment locally and no request ever reaches us. Do not want to raise it? A cheaper alternative you can run right now: GET /gauge?signal_id=hydrology.river-level&entity=07010000&format=thin ($0.01 USDC) - the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only.",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "250000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/gauge/taiwan-region",
"extensions": {
"bazaar": {
"info": {
"input": {
"type": "http",
"method": "GET"
},
"output": {
"type": "json"
}
},
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method"
],
"properties": {
"type": {
"const": "http"
},
"method": {
"enum": [
"GET"
],
"type": "string"
}
}
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"const": "json"
}
}
}
}
},
"priceUsd": "$0.25",
"discoverable": true,
"outputSchema": {
"type": "object",
"required": [
"legs",
"provenance",
"note"
],
"properties": {
"legs": {
"type": "object",
"description": "Keyed by signal_id; each value is the array described in LEG_ROW.",
"additionalProperties": {
"type": "array",
"items": {
"type": "object",
"properties": {
"band": {
"type": [
"string",
"null"
]
},
"entity": {
"type": "string"
},
"current": {
"type": "object",
"description": "Metric keys vary by signal; units are suffixed in the key names."
},
"percentile": {
"type": [
"string",
"null"
]
},
"entity_name": {
"type": [
"string",
"null"
]
},
"observed_at": {
"type": "string"
},
"record_hash": {
"type": [
"string",
"null"
]
}
}
},
"description": "Latest stored reading per entity for this signal, as published by the source agency."
}
},
"name": {
"type": "string",
"description": "Short human-readable name of the region this bundle covers."
},
"note": {
"type": "string",
"description": "Descriptive-only statement of what was restated and from whom."
},
"scope": {
"type": "string",
"description": "What this bundle covers, in one line."
},
"signals": {
"type": "array",
"items": {
"type": "string"
},
"description": "The signal_id keys present in legs."
},
"provenance": {
"type": "object",
"description": "served_from, data_as_of, oldest_leg_as_of, age_hours_now, freshness."
},
"entities_count": {
"type": "integer",
"description": "Total rows across every leg."
}
},
"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/taiwan-region",
"priceUsdNumber": 0.25
}
},
"description": "Taiwan first-party official readings in one call: PLA air and naval activity around Taiwan (Ministry of National Defense), central bank reference FX rates (CBC), TAIEX and sector indices (TWSE), significant earthquakes and typhoon status (CWA). Sources most providers cannot reach. We restate what each agency published and when - no assessment of the situation, no forecast, no advice. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call.",
"outputSchema": {
"input": {
"type": "http",
"method": "GET",
"required": [],
"properties": {},
"queryParams": {},
"discoverable": true
},
"output": {
"type": "object",
"required": [
"legs",
"provenance",
"note"
],
"properties": {
"legs": {
"type": "object",
"description": "Keyed by signal_id; each value is the array described in LEG_ROW.",
"additionalProperties": {
"type": "array",
"items": {
"type": "object",
"properties": {
"band": {
"type": [
"string",
"null"
]
},
"entity": {
"type": "string"
},
"current": {
"type": "object",
"description": "Metric keys vary by signal; units are suffixed in the key names."
},
"percentile": {
"type": [
"string",
"null"
]
},
"entity_name": {
"type": [
"string",
"null"
]
},
"observed_at": {
"type": "string"
},
"record_hash": {
"type": [
"string",
"null"
]
}
}
},
"description": "Latest stored reading per entity for this signal, as published by the source agency."
}
},
"name": {
"type": "string",
"description": "Short human-readable name of the region this bundle covers."
},
"note": {
"type": "string",
"description": "Descriptive-only statement of what was restated and from whom."
},
"scope": {
"type": "string",
"description": "What this bundle covers, in one line."
},
"signals": {
"type": "array",
"items": {
"type": "string"
},
"description": "The signal_id keys present in legs."
},
"provenance": {
"type": "object",
"description": "served_from, data_as_of, oldest_leg_as_of, age_hours_now, freshness."
},
"entities_count": {
"type": "integer",
"description": "Total rows across every leg."
}
},
"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": "250000",
"maxTimeoutSeconds": 300
}
],
"client_hint": {
"action": "This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10. Raise your client maxValue to at least required_atomic; otherwise the payment is rejected locally inside your own client and never reaches this server, so you will see no error from us.",
"reason": "price_above_default_client_max_value",
"example": "wrapFetchWithPayment(fetch, account, BigInt(250000)) // atomic units, USDC 6dp",
"required_usdc": "0.25",
"required_atomic": "250000",
"within_your_budget": [
{
"try": "/gauge?signal_id=hydrology.river-level&entity=07010000&format=thin",
"gets": "the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only",
"path": "/gauge",
"usdc": "0.01"
}
],
"default_client_max_atomic": "100000"
},
"x402Version": 1
},
{
"hint": {
"miss": "missing_parameter",
"usage": "/gauge/tariff-region?entity=<value>",
"preview": "/gauge/preview",
"missing_params": [
"entity"
],
"example_request": "/gauge/tariff-region?entity=sec301-china-list1&format=thin"
},
"error": "Missing required query parameter(s): entity. A request you can run right now: GET /gauge/tariff-region?entity=sec301-china-list1&format=thin\nX-PAYMENT header is required. This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10 — raise maxValue to at least 250000 atomic units, or your own client rejects this payment locally and no request ever reaches us. Do not want to raise it? A cheaper alternative you can run right now: GET /gauge?signal_id=hydrology.river-level&entity=07010000&format=thin ($0.01 USDC) - the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only.",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "250000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/gauge/tariff-region",
"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["
}
},
"output": {
"type": "json",
"example": {
"legs": {
"lifecycle": {
"band": "operating",
"source_ref": "https://ustr.gov/issue-areas/enforcement/section-301-investigations",
"record_hash": "sha256:296dd5745d41a5f0006c906f2b6ce819eed2f6fb0b84e0300062992acd5025c7"
},
"review_pipeline": {
"band": "none",
"source_ref": "https://ustr.gov/issue-areas/enforcement/section-301-investigations",
"record_hash": "sha256:edd4891010629d1054ed529adc22aa62e336257664754f350aba8226e7517f1f"
},
"tradeflow_cascade": {
"band": "unconfirmed",
"source_ref": "https://ustr.gov/issue-areas/enforcement/section-301-investigations",
"record_hash": "sha256:ce30a7aae7c60acdc8b62e0744a43becd61dde14b70cfe53c871cb4aa0b4ca82"
}
},
"name": "Section 301 China List 1",
"grade": "screening-level, not decision-grade",
"scope": {
"full": "https://api.truthbear.co/scope/v1",
"verifiability": "unknown",
"monitoring_not_forecast": true,
"intelligence_not_command": true
},
"entity": "sec301-china-list1",
"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.",
"provenance": {
"freshness": "recent",
"age_hours_now": 151,
"freshness_basis": "cadence=default; fresh<=24h; recent<=192h; dead_source>1440h; age_basis=request-time(now minus observed_at)"
}
}
}
},
"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": [
"entity"
],
"properties": {
"entity": {
"type": "string",
"examples": [
"sec301-china-list1",
"sec301-china-list3",
"sec301-list4a",
"sec301-ev-modifications",
"sec232-steel",
"sec232-aluminum"
],
"description": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]",
"x-accepted-values": {
"all": "https://api.truthbear.co/schemas/gauge-tariff-region.input.json",
"shown": 6,
"total": 22
}
}
},
"additionalProperties": false
}
}
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"const": "json"
},
"example": {}
}
}
}
},
"priceUsd": "$0.25",
"discoverable": true,
"outputSchema": {
"type": "object",
"required": [
"nature",
"legs"
],
"properties": {
"legs": {
"type": "object",
"description": "CORE DELIVERY: per-leg readings, keyed by leg name (e.g. drought/heat/crop-vhi); each value carries signal_id/current/observed_at/data_age_hours/record_hash"
},
"name": {
"type": [
"string",
"null"
],
"description": "Human-readable name of the object"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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": "The object key of this bundle - the ?entity= you passed in"
},
"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"
},
"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"
},
"data_timespans": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Per-leg observation time and hours elapsed since"
},
"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"
},
"cross_line_narrative": {
"type": "string",
"description": "Cross-line comparison narrative (purely descriptive; no judgement, no prediction)"
}
},
"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/tariff-region",
"priceUsdNumber": 0.25
}
},
"description": "[3-LEG] Tariff and customs measure chain, one trade measure (?entity=sec301-china-list1): leading review pipeline stage -> current current legal force -> realized lifecycle from imposed to expired or rescinded (confirmation gate). A chain, not one reading: confidence = how many legs are lit, in order. Sources: USTR, Federal Register, USITC. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call.",
"outputSchema": {
"input": {
"type": "http",
"method": "GET",
"example": {
"entity": "sec301-china-list1",
"format": "thin"
},
"required": [
"entity"
],
"properties": {
"entity": {
"type": "string",
"examples": [
"sec301-china-list1",
"sec301-china-list3",
"sec301-list4a",
"sec301-ev-modifications",
"sec232-steel",
"sec232-aluminum"
],
"description": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]",
"x-accepted-values": {
"all": "https://api.truthbear.co/schemas/gauge-tariff-region.input.json",
"shown": 6,
"total": 22
}
}
},
"queryParams": {
"entity": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]"
},
"discoverable": true,
"exampleRequest": "/gauge/tariff-region?entity=sec301-china-list1&format=thin"
},
"output": {
"type": "object",
"required": [
"nature",
"legs"
],
"properties": {
"legs": {
"type": "object",
"description": "CORE DELIVERY: per-leg readings, keyed by leg name (e.g. drought/heat/crop-vhi); each value carries signal_id/current/observed_at/data_age_hours/record_hash"
},
"name": {
"type": [
"string",
"null"
],
"description": "Human-readable name of the object"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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": "The object key of this bundle - the ?entity= you passed in"
},
"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"
},
"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"
},
"data_timespans": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Per-leg observation time and hours elapsed since"
},
"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"
},
"cross_line_narrative": {
"type": "string",
"description": "Cross-line comparison narrative (purely descriptive; no judgement, no prediction)"
}
},
"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": "250000",
"maxTimeoutSeconds": 300
}
],
"client_hint": {
"action": "This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10. Raise your client maxValue to at least required_atomic; otherwise the payment is rejected locally inside your own client and never reaches this server, so you will see no error from us.",
"reason": "price_above_default_client_max_value",
"example": "wrapFetchWithPayment(fetch, account, BigInt(250000)) // atomic units, USDC 6dp",
"required_usdc": "0.25",
"required_atomic": "250000",
"within_your_budget": [
{
"try": "/gauge?signal_id=hydrology.river-level&entity=07010000&format=thin",
"gets": "the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only",
"path": "/gauge",
"usdc": "0.01"
}
],
"default_client_max_atomic": "100000"
},
"x402Version": 1
},
{
"hint": {
"miss": "missing_parameter",
"usage": "/gauge/grid-reliability-region?entity=<value>",
"preview": "/gauge/preview",
"missing_params": [
"entity"
],
"example_request": "/gauge/grid-reliability-region?entity=caiso&format=thin"
},
"error": "Missing required query parameter(s): entity. A request you can run right now: GET /gauge/grid-reliability-region?entity=caiso&format=thin\nX-PAYMENT header is required. This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10 — raise maxValue to at least 250000 atomic units, or your own client rejects this payment locally and no request ever reaches us. Do not want to raise it? A cheaper alternative you can run right now: GET /gauge?signal_id=hydrology.river-level&entity=07010000&format=thin ($0.01 USDC) - the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only.",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "250000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/gauge/grid-reliability-region",
"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["
}
},
"output": {
"type": "json",
"example": {
"legs": {
"stress": {
"band": "normal",
"source_ref": "https://www.eia.gov/electricity/gridmonitor/",
"record_hash": "sha256:1c58e72e03cd85f55f02a4ca1c6920d208251f8e2c25dca76dcbf79c708f124a"
},
"forecast_stress": {
"band": "peak-risk",
"source_ref": "https://www.eia.gov/electricity/gridmonitor/",
"record_hash": "sha256:26b75e9c7387b90934930302b8c6a49a5cd39bc83c39e617520e37f5f39e3dd9"
},
"realized_strain": {
"band": "confirmed-slack",
"source_ref": "https://www.eia.gov/electricity/gridmonitor/",
"record_hash": "sha256:2b105512482c421d65e6eecc9cf0e0c780d40b0d021bf5735d0f41baed364832"
}
},
"name": "California ISO",
"grade": "screening-level, not decision-grade",
"scope": {
"full": "https://api.truthbear.co/scope/v1",
"verifiability": "unknown",
"monitoring_not_forecast": true,
"intelligence_not_command": true
},
"entity": "caiso",
"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.",
"provenance": {
"freshness": "fresh",
"age_hours_now": 1,
"freshness_basis": "cadence=default; fresh<=24h; recent<=192h; dead_source>1440h; age_basis=request-time(now minus observed_at)"
}
}
}
},
"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": [
"entity"
],
"properties": {
"entity": {
"type": "string",
"examples": [
"caiso",
"ercot",
"miso",
"pjm",
"spp",
"nyiso"
],
"description": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]",
"x-accepted-values": {
"all": "https://api.truthbear.co/schemas/gauge-grid-reliability-region.input.json",
"shown": 6,
"total": 18
}
}
},
"additionalProperties": false
}
}
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"const": "json"
},
"example": {}
}
}
}
},
"priceUsd": "$0.25",
"discoverable": true,
"outputSchema": {
"type": "object",
"required": [
"nature",
"legs"
],
"properties": {
"legs": {
"type": "object",
"description": "CORE DELIVERY: per-leg readings, keyed by leg name (e.g. drought/heat/crop-vhi); each value carries signal_id/current/observed_at/data_age_hours/record_hash"
},
"name": {
"type": [
"string",
"null"
],
"description": "Human-readable name of the object"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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": "The object key of this bundle - the ?entity= you passed in"
},
"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"
},
"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"
},
"data_timespans": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Per-leg observation time and hours elapsed since"
},
"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"
},
"cross_line_narrative": {
"type": "string",
"description": "Cross-line comparison narrative (purely descriptive; no judgement, no prediction)"
}
},
"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/grid-reliability-region",
"priceUsdNumber": 0.25
}
},
"description": "[3-LEG] Grid reliability chain, one balancing authority (?entity=us-ercot): leading EIA-930 day-ahead demand forecast approaching recent peak, about one day of lead -> current current demand against capacity tightness -> realized reserve and interchange response (confirmation gate). A chain, not one reading: confidence = how many legs are lit, in order. Sources: US EIA-930. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call.",
"outputSchema": {
"input": {
"type": "http",
"method": "GET",
"example": {
"entity": "caiso",
"format": "thin"
},
"required": [
"entity"
],
"properties": {
"entity": {
"type": "string",
"examples": [
"caiso",
"ercot",
"miso",
"pjm",
"spp",
"nyiso"
],
"description": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]",
"x-accepted-values": {
"all": "https://api.truthbear.co/schemas/gauge-grid-reliability-region.input.json",
"shown": 6,
"total": 18
}
}
},
"queryParams": {
"entity": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]"
},
"discoverable": true,
"exampleRequest": "/gauge/grid-reliability-region?entity=caiso&format=thin"
},
"output": {
"type": "object",
"required": [
"nature",
"legs"
],
"properties": {
"legs": {
"type": "object",
"description": "CORE DELIVERY: per-leg readings, keyed by leg name (e.g. drought/heat/crop-vhi); each value carries signal_id/current/observed_at/data_age_hours/record_hash"
},
"name": {
"type": [
"string",
"null"
],
"description": "Human-readable name of the object"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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": "The object key of this bundle - the ?entity= you passed in"
},
"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"
},
"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"
},
"data_timespans": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Per-leg observation time and hours elapsed since"
},
"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"
},
"cross_line_narrative": {
"type": "string",
"description": "Cross-line comparison narrative (purely descriptive; no judgement, no prediction)"
}
},
"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": "250000",
"maxTimeoutSeconds": 300
}
],
"client_hint": {
"action": "This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10. Raise your client maxValue to at least required_atomic; otherwise the payment is rejected locally inside your own client and never reaches this server, so you will see no error from us.",
"reason": "price_above_default_client_max_value",
"example": "wrapFetchWithPayment(fetch, account, BigInt(250000)) // atomic units, USDC 6dp",
"required_usdc": "0.25",
"required_atomic": "250000",
"within_your_budget": [
{
"try": "/gauge?signal_id=hydrology.river-level&entity=07010000&format=thin",
"gets": "the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only",
"path": "/gauge",
"usdc": "0.01"
}
],
"default_client_max_atomic": "100000"
},
"x402Version": 1
},
{
"hint": {
"miss": "missing_parameter",
"usage": "/gauge/calibrated?signal_id=<value>&entity=<value>",
"preview": "/gauge/sample",
"missing_params": [
"signal_id",
"entity"
],
"example_request": "/gauge/calibrated?signal_id=hydrology.river-level&entity=07010000&format=thin"
},
"error": "Missing required query parameter(s): signal_id, entity. A request you can run right now: GET /gauge/calibrated?signal_id=hydrology.river-level&entity=07010000&format=thin\nX-PAYMENT header is required",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "5000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/gauge/calibrated",
"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": "calibrated",
"grade": "screening-level, not decision-grade",
"scope": {
"full": "https://api.truthbear.co/scope/v1",
"verifiability": "via-endpoint",
"monitoring_not_forecast": true,
"intelligence_not_command": true
},
"entity": "07010000",
"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",
"calibrated": {
"band": "below_action",
"unit": "ft",
"scale": "flood_stage",
"metric": "gauge_height_ft",
"index_basis": "normalized_index: piecewise linear (action=0/minor=1/moderate=2/major=3); below the first band = (value - first threshold) / first threshold, clamped to [-1,0); above the top band it is unbounded. pct_to_action = value / first alert threshold (bounded, 1 = at the first alert)",
"current_value": 6.48,
"pct_to_action": 0.231,
"normalized_index": -0.769
},
"provenance": {
"freshness": "fresh",
"age_hours_now": 5.5,
"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/07010000/",
"entity_name": "Mississippi River at St. Louis, MO",
"observed_at": "2026-08-26T09:30:00.000Z",
"record_hash": "sha256:a3986d8689a1d9f6e8b4b92c2318d5af64291cdedbdbd3d706e0049e16fcb42e",
"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",
"calibrated"
],
"properties": {
"dim": {
"type": "string",
"description": "Always the literal \"calibrated\""
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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"
},
"calibrated": {
"type": [
"object",
"null"
],
"description": "Calibrated-unit projection: normalized_index / pct_to_action, comparable across stations"
},
"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"
},
"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/calibrated",
"priceUsdNumber": 0.005
}
},
"description": "Add-on, calibrated units: normalized_index and pct_to_action so readings compare across stations. When the line has no calibration basis you get 422 with no_charge:true and reason:no-calibrated-for-this-line, and are NOT billed. 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/calibrated?signal_id=hydrology.river-level&entity=07010000&format=thin"
},
"output": {
"type": "object",
"required": [
"nature",
"dim",
"calibrated"
],
"properties": {
"dim": {
"type": "string",
"description": "Always the literal \"calibrated\""
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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"
},
"calibrated": {
"type": [
"object",
"null"
],
"description": "Calibrated-unit projection: normalized_index / pct_to_action, comparable across stations"
},
"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"
},
"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
}
],
"x402Version": 1
},
{
"hint": {
"miss": "missing_parameter",
"usage": "/gauge/biodiversity-region?entity=<value>",
"preview": "/gauge/preview",
"missing_params": [
"entity"
],
"example_request": "/gauge/biodiversity-region?entity=uk-bng-statutory-units&format=thin"
},
"error": "Missing required query parameter(s): entity. A request you can run right now: GET /gauge/biodiversity-region?entity=uk-bng-statutory-units&format=thin\nX-PAYMENT header is required. This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10 — raise maxValue to at least 250000 atomic units, or your own client rejects this payment locally and no request ever reaches us. Do not want to raise it? A cheaper alternative you can run right now: GET /gauge?signal_id=hydrology.river-level&entity=07010000&format=thin ($0.01 USDC) - the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only.",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "250000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/gauge/biodiversity-region",
"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["
}
},
"output": {
"type": "json",
"example": {
"legs": {
"lifecycle": {
"band": "operating",
"source_ref": "https://www.gov.uk/guidance/biodiversity-net-gain",
"record_hash": "sha256:887ea95c344be423324546a1442b30e5bd78fdab0647a8582fb16653a93c8313"
},
"mrv_integrity_drift": {
"band": "sound",
"source_ref": "https://www.gov.uk/guidance/biodiversity-net-gain",
"record_hash": "sha256:dd4862ba0efe8183ce5f3a663402bf9947777ad71c9f3c5b8967a9e4e996d910"
},
"buyer_holder_cascade": {
"band": "none",
"source_ref": "https://www.gov.uk/guidance/biodiversity-net-gain",
"record_hash": "sha256:003a4bbd7e4ade0b73ba88b7da7b07d6f056bc78b44eecdd12e5fa42ae8d7bfe"
}
},
"name": "UK Biodiversity Net Gain statutory units",
"grade": "screening-level, not decision-grade",
"scope": {
"full": "https://api.truthbear.co/scope/v1",
"verifiability": "unknown",
"monitoring_not_forecast": true,
"intelligence_not_command": true
},
"entity": "uk-bng-statutory-units",
"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.",
"provenance": {
"freshness": "recent",
"age_hours_now": 154,
"freshness_basis": "cadence=default; fresh<=24h; recent<=192h; dead_source>1440h; age_basis=request-time(now minus observed_at)"
}
}
}
},
"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": [
"entity"
],
"properties": {
"entity": {
"type": "string",
"examples": [
"uk-bng-statutory-units",
"uk-bng-register",
"wallacea-methodology",
"plan-vivo-pv-nature",
"verra-nature-framework",
"terrasos-habitat-banks"
],
"description": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]",
"x-accepted-values": {
"all": "https://api.truthbear.co/schemas/gauge-biodiversity-region.input.json",
"shown": 6,
"total": 18
}
}
},
"additionalProperties": false
}
}
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"const": "json"
},
"example": {}
}
}
}
},
"priceUsd": "$0.25",
"discoverable": true,
"outputSchema": {
"type": "object",
"required": [
"nature",
"legs"
],
"properties": {
"legs": {
"type": "object",
"description": "CORE DELIVERY: per-leg readings, keyed by leg name (e.g. drought/heat/crop-vhi); each value carries signal_id/current/observed_at/data_age_hours/record_hash"
},
"name": {
"type": [
"string",
"null"
],
"description": "Human-readable name of the object"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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": "The object key of this bundle - the ?entity= you passed in"
},
"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"
},
"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"
},
"data_timespans": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Per-leg observation time and hours elapsed since"
},
"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"
},
"cross_line_narrative": {
"type": "string",
"description": "Cross-line comparison narrative (purely descriptive; no judgement, no prediction)"
}
},
"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/biodiversity-region",
"priceUsdNumber": 0.25
}
},
"description": "[3-LEG] Biodiversity credit chain, one project (?entity=uk-bng-warwickshire): leading standard-body pressure - registry, methodology or rating change -> current current registry state -> realized lifecycle outcome (confirmation gate). A chain, not one reading: confidence = how many legs are lit, in order. Sources: registry and standard-body feeds. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call.",
"outputSchema": {
"input": {
"type": "http",
"method": "GET",
"example": {
"entity": "uk-bng-statutory-units",
"format": "thin"
},
"required": [
"entity"
],
"properties": {
"entity": {
"type": "string",
"examples": [
"uk-bng-statutory-units",
"uk-bng-register",
"wallacea-methodology",
"plan-vivo-pv-nature",
"verra-nature-framework",
"terrasos-habitat-banks"
],
"description": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]",
"x-accepted-values": {
"all": "https://api.truthbear.co/schemas/gauge-biodiversity-region.input.json",
"shown": 6,
"total": 18
}
}
},
"queryParams": {
"entity": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]"
},
"discoverable": true,
"exampleRequest": "/gauge/biodiversity-region?entity=uk-bng-statutory-units&format=thin"
},
"output": {
"type": "object",
"required": [
"nature",
"legs"
],
"properties": {
"legs": {
"type": "object",
"description": "CORE DELIVERY: per-leg readings, keyed by leg name (e.g. drought/heat/crop-vhi); each value carries signal_id/current/observed_at/data_age_hours/record_hash"
},
"name": {
"type": [
"string",
"null"
],
"description": "Human-readable name of the object"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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": "The object key of this bundle - the ?entity= you passed in"
},
"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"
},
"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"
},
"data_timespans": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Per-leg observation time and hours elapsed since"
},
"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"
},
"cross_line_narrative": {
"type": "string",
"description": "Cross-line comparison narrative (purely descriptive; no judgement, no prediction)"
}
},
"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": "250000",
"maxTimeoutSeconds": 300
}
],
"client_hint": {
"action": "This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10. Raise your client maxValue to at least required_atomic; otherwise the payment is rejected locally inside your own client and never reaches this server, so you will see no error from us.",
"reason": "price_above_default_client_max_value",
"example": "wrapFetchWithPayment(fetch, account, BigInt(250000)) // atomic units, USDC 6dp",
"required_usdc": "0.25",
"required_atomic": "250000",
"within_your_budget": [
{
"try": "/gauge?signal_id=hydrology.river-level&entity=07010000&format=thin",
"gets": "the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only",
"path": "/gauge",
"usdc": "0.01"
}
],
"default_client_max_atomic": "100000"
},
"x402Version": 1
},
{
"hint": {
"miss": "missing_parameter",
"usage": "/gauge/border-wait-region?entity=<value>",
"preview": "/gauge/preview",
"missing_params": [
"entity"
],
"example_request": "/gauge/border-wait-region?entity=laredo-world-trade&format=thin"
},
"error": "Missing required query parameter(s): entity. A request you can run right now: GET /gauge/border-wait-region?entity=laredo-world-trade&format=thin\nX-PAYMENT header is required. This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10 — raise maxValue to at least 250000 atomic units, or your own client rejects this payment locally and no request ever reaches us. Do not want to raise it? A cheaper alternative you can run right now: GET /gauge?signal_id=hydrology.river-level&entity=07010000&format=thin ($0.01 USDC) - the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only.",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "250000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/gauge/border-wait-region",
"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["
}
},
"output": {
"type": "json",
"example": {
"legs": {
"crossing_wait": {
"band": "light",
"source_ref": "https://bwt.cbp.gov/",
"record_hash": "sha256:ad4ecd20ecba3de649242d89076dd79d11828c496276568906249b024ec0c599"
},
"lane_capacity": {
"band": "reduced",
"source_ref": "https://bwt.cbp.gov/",
"record_hash": "sha256:42aa54a3ecf7f431edc221b0e3e53953d4836bc0332891d0b2f67c0868afaee3"
},
"freight_delay_realized": {
"band": "clear",
"source_ref": "https://bwt.cbp.gov/",
"record_hash": "sha256:99f6ff09eb59175358f07f1432b9b7d53925681780bd07acc18e8f2edcb3aac6"
}
},
"name": "Laredo – World Trade Bridge",
"grade": "screening-level, not decision-grade",
"scope": {
"full": "https://api.truthbear.co/scope/v1",
"verifiability": "unknown",
"monitoring_not_forecast": true,
"intelligence_not_command": true
},
"entity": "laredo-world-trade",
"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.",
"provenance": {
"freshness": "fresh",
"age_hours_now": 1,
"freshness_basis": "cadence=default; fresh<=24h; recent<=192h; dead_source>1440h; age_basis=request-time(now minus observed_at)"
}
}
}
},
"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": [
"entity"
],
"properties": {
"entity": {
"type": "string",
"examples": [
"laredo-world-trade",
"laredo-colombia",
"laredo-bridge1",
"otay-mesa-commercial",
"san-ysidro",
"el-paso-ysleta"
],
"description": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]",
"x-accepted-values": {
"all": "https://api.truthbear.co/schemas/gauge-border-wait-region.input.json",
"shown": 6,
"total": 20
}
}
},
"additionalProperties": false
}
}
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"const": "json"
},
"example": {}
}
}
}
},
"priceUsd": "$0.25",
"discoverable": true,
"outputSchema": {
"type": "object",
"required": [
"nature",
"legs"
],
"properties": {
"legs": {
"type": "object",
"description": "CORE DELIVERY: per-leg readings, keyed by leg name (e.g. drought/heat/crop-vhi); each value carries signal_id/current/observed_at/data_age_hours/record_hash"
},
"name": {
"type": [
"string",
"null"
],
"description": "Human-readable name of the object"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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": "The object key of this bundle - the ?entity= you passed in"
},
"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"
},
"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"
},
"data_timespans": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Per-leg observation time and hours elapsed since"
},
"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"
},
"cross_line_narrative": {
"type": "string",
"description": "Cross-line comparison narrative (purely descriptive; no judgement, no prediction)"
}
},
"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/border-wait-region",
"priceUsdNumber": 0.25
}
},
"description": "[3-LEG] Land border chain, one crossing (?entity=laredo-world-trade): leading upstream pressure - lead traffic, staffing and inspection intensity -> current current CBP border wait times by lane -> realized commercial freight delay (confirmation gate). A chain, not one reading: confidence = how many legs are lit, in order. Sources: US CBP. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call.",
"outputSchema": {
"input": {
"type": "http",
"method": "GET",
"example": {
"entity": "laredo-world-trade",
"format": "thin"
},
"required": [
"entity"
],
"properties": {
"entity": {
"type": "string",
"examples": [
"laredo-world-trade",
"laredo-colombia",
"laredo-bridge1",
"otay-mesa-commercial",
"san-ysidro",
"el-paso-ysleta"
],
"description": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]",
"x-accepted-values": {
"all": "https://api.truthbear.co/schemas/gauge-border-wait-region.input.json",
"shown": 6,
"total": 20
}
}
},
"queryParams": {
"entity": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]"
},
"discoverable": true,
"exampleRequest": "/gauge/border-wait-region?entity=laredo-world-trade&format=thin"
},
"output": {
"type": "object",
"required": [
"nature",
"legs"
],
"properties": {
"legs": {
"type": "object",
"description": "CORE DELIVERY: per-leg readings, keyed by leg name (e.g. drought/heat/crop-vhi); each value carries signal_id/current/observed_at/data_age_hours/record_hash"
},
"name": {
"type": [
"string",
"null"
],
"description": "Human-readable name of the object"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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": "The object key of this bundle - the ?entity= you passed in"
},
"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"
},
"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"
},
"data_timespans": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Per-leg observation time and hours elapsed since"
},
"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"
},
"cross_line_narrative": {
"type": "string",
"description": "Cross-line comparison narrative (purely descriptive; no judgement, no prediction)"
}
},
"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": "250000",
"maxTimeoutSeconds": 300
}
],
"client_hint": {
"action": "This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10. Raise your client maxValue to at least required_atomic; otherwise the payment is rejected locally inside your own client and never reaches this server, so you will see no error from us.",
"reason": "price_above_default_client_max_value",
"example": "wrapFetchWithPayment(fetch, account, BigInt(250000)) // atomic units, USDC 6dp",
"required_usdc": "0.25",
"required_atomic": "250000",
"within_your_budget": [
{
"try": "/gauge?signal_id=hydrology.river-level&entity=07010000&format=thin",
"gets": "the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only",
"path": "/gauge",
"usdc": "0.01"
}
],
"default_client_max_atomic": "100000"
},
"x402Version": 1
},
{
"hint": {
"miss": "missing_parameter",
"usage": "/gauge/shipping-region?loc=<value>",
"preview": "/gauge/preview",
"missing_params": [
"loc"
],
"example_request": "/gauge/shipping-region?loc=suez-redsea&format=thin"
},
"error": "Missing required query parameter(s): loc. A request you can run right now: GET /gauge/shipping-region?loc=suez-redsea&format=thin\nX-PAYMENT header is required. This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10 — raise maxValue to at least 250000 atomic units, or your own client rejects this payment locally and no request ever reaches us. Do not want to raise it? A cheaper alternative you can run right now: GET /gauge?signal_id=hydrology.river-level&entity=07010000&format=thin ($0.01 USDC) - the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only.",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "250000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/gauge/shipping-region",
"extensions": {
"bazaar": {
"info": {
"input": {
"type": "http",
"method": "GET",
"queryParams": {
"loc": "required - location id; full list at free /gauge/preview"
}
},
"output": {
"type": "json",
"example": {
"legs": {
"sea_state": {
"band": null,
"source_ref": "https://open-meteo.com/en/docs/marine-weather-api",
"record_hash": "sha256:a69ae225e6aa376b3bfa3d9e9a8dd435783ca62c149e599621be7f311ca1e329"
},
"throughput": {
"band": "no-coverage",
"source_ref": "https://aisstream.io/documentation",
"record_hash": "sha256:ae1dd2720dd4ae4d8ca046122b1e250d5646968a1cf5aec3af06d4e179bffa1e"
},
"route_disruption": {
"band": "operable",
"source_ref": "https://open-meteo.com/en/docs/marine-weather-api",
"record_hash": "sha256:713b0c84338039b1860da52058d9089cc1f2b32404a575bf3d5a550023bf0cb9"
}
},
"name": "Suez / Red Sea approach",
"grade": "screening-level, not decision-grade",
"scope": {
"full": "https://api.truthbear.co/scope/v1",
"verifiability": "unknown",
"monitoring_not_forecast": true,
"intelligence_not_command": true
},
"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.",
"location": "suez-redsea",
"provenance": {
"freshness": "fresh",
"age_hours_now": 15,
"freshness_basis": "cadence=default; fresh<=24h; recent<=192h; dead_source>1440h; age_basis=request-time(now minus observed_at)"
}
}
}
},
"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": [
"loc"
],
"properties": {
"loc": {
"type": "string",
"examples": [
"suez-redsea",
"panama-pacific",
"malacca",
"hormuz",
"goodhope",
"channel"
],
"description": "required - location id; full list at free /gauge/preview",
"x-accepted-values": {
"all": "https://api.truthbear.co/schemas/gauge-shipping-region.input.json",
"shown": 6,
"total": 12
}
}
},
"additionalProperties": false
}
}
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"const": "json"
},
"example": {}
}
}
}
},
"priceUsd": "$0.25",
"discoverable": true,
"outputSchema": {
"type": "object",
"required": [
"nature",
"legs"
],
"properties": {
"legs": {
"type": "object",
"description": "CORE DELIVERY: per-leg readings, keyed by leg name (e.g. drought/heat/crop-vhi); each value carries signal_id/current/observed_at/data_age_hours/record_hash"
},
"name": {
"type": [
"string",
"null"
],
"description": "Human-readable name of the object"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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"
},
"nature": {
"type": "string",
"description": "Neutrality statement: GAUGE supplies observations and trend description only - no judgement, no prediction, no recommendation"
},
"location": {
"type": "string",
"description": "The location key of this bundle - the ?loc= you passed in"
},
"_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"
},
"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"
},
"data_timespans": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Per-leg observation time and hours elapsed since"
},
"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"
},
"cross_line_narrative": {
"type": "string",
"description": "Cross-line comparison narrative (purely descriptive; no judgement, no prediction)"
}
},
"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/shipping-region",
"priceUsdNumber": 0.25
}
},
"description": "[3-LEG] Shipping chokepoint chain, one chokepoint or port (?loc=malacca): leading sea state and wind against operating thresholds -> current wave decomposition, local storm against distant swell -> realized AIS transit throughput (confirmation gate). A chain, not one reading: confidence = how many legs are lit, in order. Sources: IMF PortWatch, NOAA, Open-Meteo Marine. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call.",
"outputSchema": {
"input": {
"type": "http",
"method": "GET",
"example": {
"loc": "suez-redsea",
"format": "thin"
},
"required": [
"loc"
],
"properties": {
"loc": {
"type": "string",
"examples": [
"suez-redsea",
"panama-pacific",
"malacca",
"hormuz",
"goodhope",
"channel"
],
"description": "required - location id; full list at free /gauge/preview",
"x-accepted-values": {
"all": "https://api.truthbear.co/schemas/gauge-shipping-region.input.json",
"shown": 6,
"total": 12
}
}
},
"queryParams": {
"loc": "required - location id; full list at free /gauge/preview"
},
"discoverable": true,
"exampleRequest": "/gauge/shipping-region?loc=suez-redsea&format=thin"
},
"output": {
"type": "object",
"required": [
"nature",
"legs"
],
"properties": {
"legs": {
"type": "object",
"description": "CORE DELIVERY: per-leg readings, keyed by leg name (e.g. drought/heat/crop-vhi); each value carries signal_id/current/observed_at/data_age_hours/record_hash"
},
"name": {
"type": [
"string",
"null"
],
"description": "Human-readable name of the object"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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"
},
"nature": {
"type": "string",
"description": "Neutrality statement: GAUGE supplies observations and trend description only - no judgement, no prediction, no recommendation"
},
"location": {
"type": "string",
"description": "The location key of this bundle - the ?loc= you passed in"
},
"_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"
},
"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"
},
"data_timespans": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Per-leg observation time and hours elapsed since"
},
"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"
},
"cross_line_narrative": {
"type": "string",
"description": "Cross-line comparison narrative (purely descriptive; no judgement, no prediction)"
}
},
"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": "250000",
"maxTimeoutSeconds": 300
}
],
"client_hint": {
"action": "This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10. Raise your client maxValue to at least required_atomic; otherwise the payment is rejected locally inside your own client and never reaches this server, so you will see no error from us.",
"reason": "price_above_default_client_max_value",
"example": "wrapFetchWithPayment(fetch, account, BigInt(250000)) // atomic units, USDC 6dp",
"required_usdc": "0.25",
"required_atomic": "250000",
"within_your_budget": [
{
"try": "/gauge?signal_id=hydrology.river-level&entity=07010000&format=thin",
"gets": "the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only",
"path": "/gauge",
"usdc": "0.01"
}
],
"default_client_max_atomic": "100000"
},
"x402Version": 1
},
{
"hint": {
"miss": "missing_parameter",
"usage": "/gauge/earthquake-region?entity=<value>",
"preview": "/gauge/preview",
"missing_params": [
"entity"
],
"example_request": "/gauge/earthquake-region?entity=california-san-andreas&format=thin"
},
"error": "Missing required query parameter(s): entity. A request you can run right now: GET /gauge/earthquake-region?entity=california-san-andreas&format=thin\nX-PAYMENT header is required. This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10 — raise maxValue to at least 250000 atomic units, or your own client rejects this payment locally and no request ever reaches us. Do not want to raise it? A cheaper alternative you can run right now: GET /gauge?signal_id=hydrology.river-level&entity=07010000&format=thin ($0.01 USDC) - the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only.",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "250000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/gauge/earthquake-region",
"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["
}
},
"output": {
"type": "json",
"example": {
"legs": {
"swarm_rate": {
"band": "baseline",
"source_ref": "https://earthquake.usgs.gov/",
"record_hash": "sha256:af7d5ce3ff47de06f8c4d68751418cb34e01c10faee588a7eaac118bd4dac5bb"
},
"impact_realized": {
"band": "felt",
"source_ref": "https://earthquake.usgs.gov/",
"record_hash": "sha256:d953b6d5974998bcc4efe988dff6b6a7cf8382c9c8e417a88974c47796215bbe"
},
"current_activity": {
"band": "minor",
"source_ref": "https://earthquake.usgs.gov/",
"record_hash": "sha256:a840cddfd12ff422ef70ddd9aa3ef96a8fbeb0bf942e7ebc4a220a24fa4b0eec"
}
},
"name": "California (San Andreas)",
"grade": "screening-level, not decision-grade",
"scope": {
"full": "https://api.truthbear.co/scope/v1",
"verifiability": "unknown",
"monitoring_not_forecast": true,
"intelligence_not_command": true
},
"entity": "california-san-andreas",
"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.",
"provenance": {
"freshness": "fresh",
"age_hours_now": 0,
"freshness_basis": "cadence=default; fresh<=24h; recent<=192h; dead_source>1440h; age_basis=request-time(now minus observed_at)"
}
}
}
},
"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": [
"entity"
],
"properties": {
"entity": {
"type": "string",
"examples": [
"california-san-andreas",
"cascadia-pnw",
"alaska-aleutians",
"japan",
"sumatra-indonesia",
"philippines"
],
"description": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]",
"x-accepted-values": {
"all": "https://api.truthbear.co/schemas/gauge-earthquake-region.input.json",
"shown": 6,
"total": 18
}
}
},
"additionalProperties": false
}
}
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"const": "json"
},
"example": {}
}
}
}
},
"priceUsd": "$0.25",
"discoverable": true,
"outputSchema": {
"type": "object",
"required": [
"nature",
"legs"
],
"properties": {
"legs": {
"type": "object",
"description": "CORE DELIVERY: per-leg readings, keyed by leg name (e.g. drought/heat/crop-vhi); each value carries signal_id/current/observed_at/data_age_hours/record_hash"
},
"name": {
"type": [
"string",
"null"
],
"description": "Human-readable name of the object"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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": "The object key of this bundle - the ?entity= you passed in"
},
"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"
},
"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"
},
"data_timespans": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Per-leg observation time and hours elapsed since"
},
"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"
},
"cross_line_narrative": {
"type": "string",
"description": "Cross-line comparison narrative (purely descriptive; no judgement, no prediction)"
}
},
"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/earthquake-region",
"priceUsdNumber": 0.25
}
},
"description": "[3-LEG] Seismic activity chain, one seismic zone (?entity=california-san-andreas): leading swarm rate, USGS micro-event rate rising - DESCRIPTIVE and explicitly not a prediction -> current current max magnitude and count -> realized felt and impact reports (confirmation gate). A chain, not one reading: confidence = how many legs are lit, in order. Sources: USGS. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call.",
"outputSchema": {
"input": {
"type": "http",
"method": "GET",
"example": {
"entity": "california-san-andreas",
"format": "thin"
},
"required": [
"entity"
],
"properties": {
"entity": {
"type": "string",
"examples": [
"california-san-andreas",
"cascadia-pnw",
"alaska-aleutians",
"japan",
"sumatra-indonesia",
"philippines"
],
"description": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]",
"x-accepted-values": {
"all": "https://api.truthbear.co/schemas/gauge-earthquake-region.input.json",
"shown": 6,
"total": 18
}
}
},
"queryParams": {
"entity": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]"
},
"discoverable": true,
"exampleRequest": "/gauge/earthquake-region?entity=california-san-andreas&format=thin"
},
"output": {
"type": "object",
"required": [
"nature",
"legs"
],
"properties": {
"legs": {
"type": "object",
"description": "CORE DELIVERY: per-leg readings, keyed by leg name (e.g. drought/heat/crop-vhi); each value carries signal_id/current/observed_at/data_age_hours/record_hash"
},
"name": {
"type": [
"string",
"null"
],
"description": "Human-readable name of the object"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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": "The object key of this bundle - the ?entity= you passed in"
},
"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"
},
"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"
},
"data_timespans": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Per-leg observation time and hours elapsed since"
},
"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"
},
"cross_line_narrative": {
"type": "string",
"description": "Cross-line comparison narrative (purely descriptive; no judgement, no prediction)"
}
},
"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": "250000",
"maxTimeoutSeconds": 300
}
],
"client_hint": {
"action": "This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10. Raise your client maxValue to at least required_atomic; otherwise the payment is rejected locally inside your own client and never reaches this server, so you will see no error from us.",
"reason": "price_above_default_client_max_value",
"example": "wrapFetchWithPayment(fetch, account, BigInt(250000)) // atomic units, USDC 6dp",
"required_usdc": "0.25",
"required_atomic": "250000",
"within_your_budget": [
{
"try": "/gauge?signal_id=hydrology.river-level&entity=07010000&format=thin",
"gets": "the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only",
"path": "/gauge",
"usdc": "0.01"
}
],
"default_client_max_atomic": "100000"
},
"x402Version": 1
},
{
"hint": {
"miss": "missing_parameter",
"usage": "/gauge/stablecoin-region?entity=<value>",
"preview": "/gauge/preview",
"missing_params": [
"entity"
],
"example_request": "/gauge/stablecoin-region?entity=terrausd-ust&format=thin"
},
"error": "Missing required query parameter(s): entity. A request you can run right now: GET /gauge/stablecoin-region?entity=terrausd-ust&format=thin\nX-PAYMENT header is required. This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10 — raise maxValue to at least 250000 atomic units, or your own client rejects this payment locally and no request ever reaches us. Do not want to raise it? A cheaper alternative you can run right now: GET /gauge?signal_id=hydrology.river-level&entity=07010000&format=thin ($0.01 USDC) - the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only.",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "250000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/gauge/stablecoin-region",
"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["
}
},
"output": {
"type": "json",
"example": {
"legs": {
"lifecycle": {
"band": "dead",
"source_ref": "https://www.reuters.com/technology/how-terra-collapse-triggered-crypto-panic-2022-05-13/",
"record_hash": "sha256:a009c4f22c72a04c50f598b09aa35663f16a1eaa106754de1298c568ec834cef"
},
"peg_distress": {
"band": "depegged",
"source_ref": "https://www.reuters.com/technology/how-terra-collapse-triggered-crypto-panic-2022-05-13/",
"record_hash": "sha256:d69b4a36144a8d104557bf38fd8350011003738a0d26cd3d6e10f75d06416880"
},
"redemption_flight": {
"band": "collapsed",
"source_ref": "https://www.reuters.com/technology/how-terra-collapse-triggered-crypto-panic-2022-05-13/",
"record_hash": "sha256:8051f4bbe6bdc4d250e88078fc3120763ed93a11f92e72aa8802da012da6cfd9"
}
},
"name": "TerraUSD (UST)",
"grade": "screening-level, not decision-grade",
"scope": {
"full": "https://api.truthbear.co/scope/v1",
"verifiability": "unknown",
"monitoring_not_forecast": true,
"intelligence_not_command": true
},
"entity": "terrausd-ust",
"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.",
"provenance": {
"freshness": "recent",
"age_hours_now": 154,
"freshness_basis": "cadence=default; fresh<=24h; recent<=192h; dead_source>1440h; age_basis=request-time(now minus observed_at)"
}
}
}
},
"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": [
"entity"
],
"properties": {
"entity": {
"type": "string",
"examples": [
"terrausd-ust",
"iron-titan",
"basis-cash-bac",
"empty-set-dollar-esd",
"dynamic-set-dollar-dsd",
"dei-deus"
],
"description": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]",
"x-accepted-values": {
"all": "https://api.truthbear.co/schemas/gauge-stablecoin-region.input.json",
"shown": 6,
"total": 22
}
}
},
"additionalProperties": false
}
}
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"const": "json"
},
"example": {}
}
}
}
},
"priceUsd": "$0.25",
"discoverable": true,
"outputSchema": {
"type": "object",
"required": [
"nature",
"legs"
],
"properties": {
"legs": {
"type": "object",
"description": "CORE DELIVERY: per-leg readings, keyed by leg name (e.g. drought/heat/crop-vhi); each value carries signal_id/current/observed_at/data_age_hours/record_hash"
},
"name": {
"type": [
"string",
"null"
],
"description": "Human-readable name of the object"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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": "The object key of this bundle - the ?entity= you passed in"
},
"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"
},
"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"
},
"data_timespans": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Per-leg observation time and hours elapsed since"
},
"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"
},
"cross_line_narrative": {
"type": "string",
"description": "Cross-line comparison narrative (purely descriptive; no judgement, no prediction)"
}
},
"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/stablecoin-region",
"priceUsdNumber": 0.25
}
},
"description": "[3-LEG] Stablecoin chain, one stablecoin (?entity=terrausd-ust): leading depeg pressure - peg deviation, reserves, regulatory notices -> current current peg and market cap -> realized redemption and lifecycle outcome (confirmation gate). A chain, not one reading: confidence = how many legs are lit, in order. Sources: exchange and registry feeds. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call.",
"outputSchema": {
"input": {
"type": "http",
"method": "GET",
"example": {
"entity": "terrausd-ust",
"format": "thin"
},
"required": [
"entity"
],
"properties": {
"entity": {
"type": "string",
"examples": [
"terrausd-ust",
"iron-titan",
"basis-cash-bac",
"empty-set-dollar-esd",
"dynamic-set-dollar-dsd",
"dei-deus"
],
"description": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]",
"x-accepted-values": {
"all": "https://api.truthbear.co/schemas/gauge-stablecoin-region.input.json",
"shown": 6,
"total": 22
}
}
},
"queryParams": {
"entity": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]"
},
"discoverable": true,
"exampleRequest": "/gauge/stablecoin-region?entity=terrausd-ust&format=thin"
},
"output": {
"type": "object",
"required": [
"nature",
"legs"
],
"properties": {
"legs": {
"type": "object",
"description": "CORE DELIVERY: per-leg readings, keyed by leg name (e.g. drought/heat/crop-vhi); each value carries signal_id/current/observed_at/data_age_hours/record_hash"
},
"name": {
"type": [
"string",
"null"
],
"description": "Human-readable name of the object"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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": "The object key of this bundle - the ?entity= you passed in"
},
"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"
},
"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"
},
"data_timespans": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Per-leg observation time and hours elapsed since"
},
"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"
},
"cross_line_narrative": {
"type": "string",
"description": "Cross-line comparison narrative (purely descriptive; no judgement, no prediction)"
}
},
"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": "250000",
"maxTimeoutSeconds": 300
}
],
"client_hint": {
"action": "This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10. Raise your client maxValue to at least required_atomic; otherwise the payment is rejected locally inside your own client and never reaches this server, so you will see no error from us.",
"reason": "price_above_default_client_max_value",
"example": "wrapFetchWithPayment(fetch, account, BigInt(250000)) // atomic units, USDC 6dp",
"required_usdc": "0.25",
"required_atomic": "250000",
"within_your_budget": [
{
"try": "/gauge?signal_id=hydrology.river-level&entity=07010000&format=thin",
"gets": "the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only",
"path": "/gauge",
"usdc": "0.01"
}
],
"default_client_max_atomic": "100000"
},
"x402Version": 1
},
{
"hint": {
"miss": "missing_parameter",
"usage": "/gauge/severe-convection-region?entity=<value>",
"preview": "/gauge/preview",
"missing_params": [
"entity"
],
"example_request": "/gauge/severe-convection-region?entity=tornado-alley-core&format=thin"
},
"error": "Missing required query parameter(s): entity. A request you can run right now: GET /gauge/severe-convection-region?entity=tornado-alley-core&format=thin\nX-PAYMENT header is required. This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10 — raise maxValue to at least 250000 atomic units, or your own client rejects this payment locally and no request ever reaches us. Do not want to raise it? A cheaper alternative you can run right now: GET /gauge?signal_id=hydrology.river-level&entity=07010000&format=thin ($0.01 USDC) - the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only.",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "250000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/gauge/severe-convection-region",
"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["
}
},
"output": {
"type": "json",
"example": {
"legs": {
"forecast_risk_env": {
"band": "slight",
"source_ref": "https://www.spc.noaa.gov/products/outlook/",
"record_hash": "sha256:bc0a48f3666ce6a62c3f9585c493efc1a25cbd18a28e5cd62c8f6ab905d7a075"
},
"active_warning_state": {
"band": "none",
"source_ref": "https://api.weather.gov/",
"record_hash": "sha256:1df656530e8dd69fe59f82579c2e5cf4585066015777a6e8a2975a6eb54c8ece"
},
"realized_severe_reports": {
"band": "none",
"source_ref": "https://www.spc.noaa.gov/climo/reports/",
"record_hash": "sha256:7285e2d5fafd2a6078ef1781a661d704627bbcaadaafeb3c3ff735b777da58a3"
}
},
"name": "Tornado Alley Core (OK/S-KS)",
"grade": "screening-level, not decision-grade",
"scope": {
"full": "https://api.truthbear.co/scope/v1",
"verifiability": "unknown",
"monitoring_not_forecast": true,
"intelligence_not_command": true
},
"entity": "tornado-alley-core",
"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.",
"provenance": {
"freshness": "fresh",
"age_hours_now": 0,
"freshness_basis": "cadence=default; fresh<=24h; recent<=192h; dead_source>1440h; age_basis=request-time(now minus observed_at)"
}
}
}
},
"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": [
"entity"
],
"properties": {
"entity": {
"type": "string",
"examples": [
"tornado-alley-core",
"tx-panhandle-hail",
"central-kansas",
"high-plains-hail-alley",
"front-range-co",
"northern-plains"
],
"description": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]",
"x-accepted-values": {
"all": "https://api.truthbear.co/schemas/gauge-severe-convection-region.input.json",
"shown": 6,
"total": 16
}
}
},
"additionalProperties": false
}
}
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"const": "json"
},
"example": {}
}
}
}
},
"priceUsd": "$0.25",
"discoverable": true,
"outputSchema": {
"type": "object",
"required": [
"nature",
"legs"
],
"properties": {
"legs": {
"type": "object",
"description": "CORE DELIVERY: per-leg readings, keyed by leg name (e.g. drought/heat/crop-vhi); each value carries signal_id/current/observed_at/data_age_hours/record_hash"
},
"name": {
"type": [
"string",
"null"
],
"description": "Human-readable name of the object"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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": "The object key of this bundle - the ?entity= you passed in"
},
"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"
},
"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"
},
"data_timespans": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Per-leg observation time and hours elapsed since"
},
"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"
},
"cross_line_narrative": {
"type": "string",
"description": "Cross-line comparison narrative (purely descriptive; no judgement, no prediction)"
}
},
"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/severe-convection-region",
"priceUsdNumber": 0.25
}
},
"description": "[3-LEG] Severe convection and hail chain, one convective region (?entity=tornado-alley-core): leading SPC Day-1 outlook with CAPE, CIN and shear - hours of lead -> current current storm reports -> realized hail and wind damage reports (confirmation gate). A chain, not one reading: confidence = how many legs are lit, in order. Sources: NOAA SPC. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call.",
"outputSchema": {
"input": {
"type": "http",
"method": "GET",
"example": {
"entity": "tornado-alley-core",
"format": "thin"
},
"required": [
"entity"
],
"properties": {
"entity": {
"type": "string",
"examples": [
"tornado-alley-core",
"tx-panhandle-hail",
"central-kansas",
"high-plains-hail-alley",
"front-range-co",
"northern-plains"
],
"description": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]",
"x-accepted-values": {
"all": "https://api.truthbear.co/schemas/gauge-severe-convection-region.input.json",
"shown": 6,
"total": 16
}
}
},
"queryParams": {
"entity": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]"
},
"discoverable": true,
"exampleRequest": "/gauge/severe-convection-region?entity=tornado-alley-core&format=thin"
},
"output": {
"type": "object",
"required": [
"nature",
"legs"
],
"properties": {
"legs": {
"type": "object",
"description": "CORE DELIVERY: per-leg readings, keyed by leg name (e.g. drought/heat/crop-vhi); each value carries signal_id/current/observed_at/data_age_hours/record_hash"
},
"name": {
"type": [
"string",
"null"
],
"description": "Human-readable name of the object"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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": "The object key of this bundle - the ?entity= you passed in"
},
"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"
},
"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"
},
"data_timespans": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Per-leg observation time and hours elapsed since"
},
"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"
},
"cross_line_narrative": {
"type": "string",
"description": "Cross-line comparison narrative (purely descriptive; no judgement, no prediction)"
}
},
"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": "250000",
"maxTimeoutSeconds": 300
}
],
"client_hint": {
"action": "This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10. Raise your client maxValue to at least required_atomic; otherwise the payment is rejected locally inside your own client and never reaches this server, so you will see no error from us.",
"reason": "price_above_default_client_max_value",
"example": "wrapFetchWithPayment(fetch, account, BigInt(250000)) // atomic units, USDC 6dp",
"required_usdc": "0.25",
"required_atomic": "250000",
"within_your_budget": [
{
"try": "/gauge?signal_id=hydrology.river-level&entity=07010000&format=thin",
"gets": "the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only",
"path": "/gauge",
"usdc": "0.01"
}
],
"default_client_max_atomic": "100000"
},
"x402Version": 1
},
{
"hint": {
"miss": "missing_parameter",
"usage": "/gauge/drug-shortage-region?entity=<value>",
"preview": "/gauge/preview",
"missing_params": [
"entity"
],
"example_request": "/gauge/drug-shortage-region?entity=anesthesia&format=thin"
},
"error": "Missing required query parameter(s): entity. A request you can run right now: GET /gauge/drug-shortage-region?entity=anesthesia&format=thin\nX-PAYMENT header is required. This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10 — raise maxValue to at least 250000 atomic units, or your own client rejects this payment locally and no request ever reaches us. Do not want to raise it? A cheaper alternative you can run right now: GET /gauge?signal_id=hydrology.river-level&entity=07010000&format=thin ($0.01 USDC) - the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only.",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "250000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/gauge/drug-shortage-region",
"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["
}
},
"output": {
"type": "json",
"example": {
"legs": {
"onset": {
"band": "surging",
"source_ref": "https://api.fda.gov/drug/shortages.json",
"record_hash": "sha256:c1ca2eec2f8f1898a48deca396ed9f5e24005dc4de019180094c79a7ff32988d"
},
"burden": {
"band": "severe",
"source_ref": "https://api.fda.gov/drug/shortages.json",
"record_hash": "sha256:95c901069fbd9db272dce74457eaca702df546c8d3e35433a07af662c9aa8bd3"
},
"entrenchment": {
"band": "entrenched",
"source_ref": "https://api.fda.gov/drug/shortages.json",
"record_hash": "sha256:be5b2a361a74d8980e135977cba95fad95779b87273fa92966aa76b9dc22ea2a"
}
},
"name": "Anesthesia / Anesthetics",
"grade": "screening-level, not decision-grade",
"scope": {
"full": "https://api.truthbear.co/scope/v1",
"verifiability": "unknown",
"monitoring_not_forecast": true,
"intelligence_not_command": true
},
"entity": "anesthesia",
"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.",
"provenance": {
"freshness": "fresh",
"age_hours_now": 23,
"freshness_basis": "cadence=default; fresh<=24h; recent<=192h; dead_source>1440h; age_basis=request-time(now minus observed_at)"
}
}
}
},
"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": [
"entity"
],
"properties": {
"entity": {
"type": "string",
"examples": [
"anesthesia",
"oncology",
"psychiatry-cns",
"analgesia-opioid",
"anti-infective",
"cardiovascular"
],
"description": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]",
"x-accepted-values": {
"all": "https://api.truthbear.co/schemas/gauge-drug-shortage-region.input.json",
"shown": 6,
"total": 18
}
}
},
"additionalProperties": false
}
}
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"const": "json"
},
"example": {}
}
}
}
},
"priceUsd": "$0.25",
"discoverable": true,
"outputSchema": {
"type": "object",
"required": [
"nature",
"legs"
],
"properties": {
"legs": {
"type": "object",
"description": "CORE DELIVERY: per-leg readings, keyed by leg name (e.g. drought/heat/crop-vhi); each value carries signal_id/current/observed_at/data_age_hours/record_hash"
},
"name": {
"type": [
"string",
"null"
],
"description": "Human-readable name of the object"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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": "The object key of this bundle - the ?entity= you passed in"
},
"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"
},
"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"
},
"data_timespans": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Per-leg observation time and hours elapsed since"
},
"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"
},
"cross_line_narrative": {
"type": "string",
"description": "Cross-line comparison narrative (purely descriptive; no judgement, no prediction)"
}
},
"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/drug-shortage-region",
"priceUsdNumber": 0.25
}
},
"description": "[3-LEG] Drug shortage chain, one therapeutic class (?entity=oncology): leading new-shortage incidence from openFDA new listings, which leads the burden peak -> current current active shortages in the class -> realized resolution rate (confirmation gate). A chain, not one reading: confidence = how many legs are lit, in order. Sources: openFDA. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call.",
"outputSchema": {
"input": {
"type": "http",
"method": "GET",
"example": {
"entity": "anesthesia",
"format": "thin"
},
"required": [
"entity"
],
"properties": {
"entity": {
"type": "string",
"examples": [
"anesthesia",
"oncology",
"psychiatry-cns",
"analgesia-opioid",
"anti-infective",
"cardiovascular"
],
"description": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]",
"x-accepted-values": {
"all": "https://api.truthbear.co/schemas/gauge-drug-shortage-region.input.json",
"shown": 6,
"total": 18
}
}
},
"queryParams": {
"entity": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]"
},
"discoverable": true,
"exampleRequest": "/gauge/drug-shortage-region?entity=anesthesia&format=thin"
},
"output": {
"type": "object",
"required": [
"nature",
"legs"
],
"properties": {
"legs": {
"type": "object",
"description": "CORE DELIVERY: per-leg readings, keyed by leg name (e.g. drought/heat/crop-vhi); each value carries signal_id/current/observed_at/data_age_hours/record_hash"
},
"name": {
"type": [
"string",
"null"
],
"description": "Human-readable name of the object"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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": "The object key of this bundle - the ?entity= you passed in"
},
"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"
},
"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"
},
"data_timespans": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Per-leg observation time and hours elapsed since"
},
"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"
},
"cross_line_narrative": {
"type": "string",
"description": "Cross-line comparison narrative (purely descriptive; no judgement, no prediction)"
}
},
"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": "250000",
"maxTimeoutSeconds": 300
}
],
"client_hint": {
"action": "This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10. Raise your client maxValue to at least required_atomic; otherwise the payment is rejected locally inside your own client and never reaches this server, so you will see no error from us.",
"reason": "price_above_default_client_max_value",
"example": "wrapFetchWithPayment(fetch, account, BigInt(250000)) // atomic units, USDC 6dp",
"required_usdc": "0.25",
"required_atomic": "250000",
"within_your_budget": [
{
"try": "/gauge?signal_id=hydrology.river-level&entity=07010000&format=thin",
"gets": "the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only",
"path": "/gauge",
"usdc": "0.01"
}
],
"default_client_max_atomic": "100000"
},
"x402Version": 1
},
{
"error": "X-PAYMENT header is required",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "90000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/mcp/census",
"extensions": {
"bazaar": {
"info": {
"input": {
"type": "http",
"method": "GET",
"queryParams": {
"verifiable": "optional - set to 1 to attach `_hash_core` per row (the canonical pre-image of the record_hash for that row) so you can "
}
},
"output": {
"type": "json",
"example": {
"entity": "(unlocked on payment)",
"current": {
"name": "x711",
"status": "active",
"missing_streak": 0
},
"lifecycle": {
"basis": "Imported from the surviving registry (2026-07-25); state is derived from status + missing_streak, 7 consecutive disap...",
"state": "operating",
"last_seen": "2026-07-08",
"first_seen": "2026-07-07",
"lifespan_days": 1,
"missing_streak": 0
},
"signal_id": "mcp.server-census",
"source_ref": "https://github.com/modelcontextprotocol",
"entity_name": "(unlocked on payment)",
"observed_at": "2026-07-08T00:00:00.000Z",
"record_hash": "sha256:051650e9a2042e4530442ff7b73a6d8b4d9e943c109994f61a5c92a760e3068f",
"source_tier": "T2-observable",
"snapshot_date": "2026-07-08",
"data_age_hours": 422,
"hash_core_version": 4
}
}
},
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method"
],
"properties": {
"type": {
"const": "http"
},
"method": {
"enum": [
"GET"
],
"type": "string"
},
"queryParams": {
"type": "object",
"properties": {
"verifiable": {
"type": "string",
"description": "optional - set to 1 to attach `_hash_core` per row (the canonical pre-image of the record_hash for that row) so you can recompute and verify fully offline; omitted by default to keep the payload small - for online verification use free GET /gauge/verify?hash="
}
},
"additionalProperties": false
}
}
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"const": "json"
},
"example": {}
}
}
}
},
"priceUsd": "$0.09",
"discoverable": true,
"outputSchema": {
"type": "object",
"properties": {
"rows": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"status": {
"type": [
"string",
"null"
]
},
"lifecycle": {
"type": [
"object",
"null"
]
},
"record_hash": {
"type": [
"string",
"null"
]
},
"missing_streak": {
"type": [
"integer",
"null"
]
}
}
}
},
"count": {
"type": "integer"
},
"provenance": {
"type": "object",
"description": "Freshness and lineage: freshness / freshness_basis / age_hours_now / data_lineage, with the oldest row representing the whole batch"
},
"observed_at": {
"type": [
"string",
"null"
],
"description": "Observation time of the OLDEST row in this batch (ISO) - the most conservative basis"
}
}
},
"routeTemplate": "/mcp/census",
"priceUsdNumber": 0.09
}
},
"description": "[BATCH+PROOF] Full MCP ecosystem census (21,236 servers, latest day): status, lifecycle, missing_streak, record_hash. DEGRADED DELIVERY, see unavailable_fields - prominence, maturity, github_stars and downloads have no data, so rows are no longer ranked. Snapshot 2026-07-08. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.09 per call.",
"outputSchema": {
"input": {
"type": "http",
"method": "GET",
"required": [],
"properties": {
"verifiable": {
"type": "string",
"description": "optional - set to 1 to attach `_hash_core` per row (the canonical pre-image of the record_hash for that row) so you can recompute and verify fully offline; omitted by default to keep the payload small - for online verification use free GET /gauge/verify?hash="
}
},
"queryParams": {
"verifiable": "optional - set to 1 to attach `_hash_core` per row (the canonical pre-image of the record_hash for that row) so you can recompute and verify fully offline; omitted by default to keep the payload small - for online verification use free GET /gauge/verify?hash="
},
"discoverable": true
},
"output": {
"type": "object",
"properties": {
"rows": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"status": {
"type": [
"string",
"null"
]
},
"lifecycle": {
"type": [
"object",
"null"
]
},
"record_hash": {
"type": [
"string",
"null"
]
},
"missing_streak": {
"type": [
"integer",
"null"
]
}
}
}
},
"count": {
"type": "integer"
},
"provenance": {
"type": "object",
"description": "Freshness and lineage: freshness / freshness_basis / age_hours_now / data_lineage, with the oldest row representing the whole batch"
},
"observed_at": {
"type": [
"string",
"null"
],
"description": "Observation time of the OLDEST row in this batch (ISO) - the most conservative basis"
}
}
}
},
"maxAmountRequired": "90000",
"maxTimeoutSeconds": 300
}
],
"x402Version": 1
},
{
"hint": {
"miss": "missing_parameter",
"usage": "/gauge/policy-region?entity=<value>",
"preview": "/gauge/preview",
"missing_params": [
"entity"
],
"example_request": "/gauge/policy-region?entity=eu-ets&format=thin"
},
"error": "Missing required query parameter(s): entity. A request you can run right now: GET /gauge/policy-region?entity=eu-ets&format=thin\nX-PAYMENT header is required. This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10 — raise maxValue to at least 250000 atomic units, or your own client rejects this payment locally and no request ever reaches us. Do not want to raise it? A cheaper alternative you can run right now: GET /gauge?signal_id=hydrology.river-level&entity=07010000&format=thin ($0.01 USDC) - the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only.",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "250000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/gauge/policy-region",
"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["
}
},
"output": {
"type": "json",
"example": {
"legs": {
"cascade": {
"band": "stable",
"source_ref": "https://climate.ec.europa.eu/eu-action/eu-emissions-trading-system-eu-ets_en",
"record_hash": "sha256:2e2872aee53815d423a9be1224309d822c30e7fb5eed99b037feb501985a8178"
},
"distress": {
"band": "none",
"source_ref": "https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:52021PC0551",
"record_hash": "sha256:87a1985d5cc336ac39d2947c1a44e50e535e0808bf31e2848bed5de49e808d7d"
},
"lifecycle": {
"band": "operating",
"source_ref": "https://climate.ec.europa.eu/eu-action/eu-emissions-trading-system-eu-ets_en",
"record_hash": "sha256:2803954f008904c532d708effbf26a64673a9516e1dfe7a54c82472a88ae3cd7"
}
},
"name": "EU - Emissions Trading System (EU ETS)",
"grade": "screening-level, not decision-grade",
"scope": {
"full": "https://api.truthbear.co/scope/v1",
"verifiability": "unknown",
"monitoring_not_forecast": true,
"intelligence_not_command": true
},
"entity": "eu-ets",
"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.",
"provenance": {
"freshness": "recent",
"age_hours_now": 106,
"freshness_basis": "cadence=default; fresh<=24h; recent<=192h; dead_source>1440h; age_basis=request-time(now minus observed_at)"
}
}
}
},
"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": [
"entity"
],
"properties": {
"entity": {
"type": "string",
"examples": [
"eu-ets",
"us-inflation-reduction-act",
"kyoto-protocol",
"au-carbon-pricing",
"us-clean-power-plan",
"uk-green-homes-grant"
],
"description": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]",
"x-accepted-values": {
"all": "https://api.truthbear.co/schemas/gauge-policy-region.input.json",
"shown": 6,
"total": 23
}
}
},
"additionalProperties": false
}
}
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"const": "json"
},
"example": {}
}
}
}
},
"priceUsd": "$0.25",
"discoverable": true,
"outputSchema": {
"type": "object",
"required": [
"nature",
"legs"
],
"properties": {
"legs": {
"type": "object",
"description": "CORE DELIVERY: per-leg readings, keyed by leg name (e.g. drought/heat/crop-vhi); each value carries signal_id/current/observed_at/data_age_hours/record_hash"
},
"name": {
"type": [
"string",
"null"
],
"description": "Human-readable name of the object"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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": "The object key of this bundle - the ?entity= you passed in"
},
"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"
},
"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"
},
"data_timespans": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Per-leg observation time and hours elapsed since"
},
"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"
},
"cross_line_narrative": {
"type": "string",
"description": "Cross-line comparison narrative (purely descriptive; no judgement, no prediction)"
}
},
"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/policy-region",
"priceUsdNumber": 0.25
}
},
"description": "[3-LEG] Climate policy chain, one policy (?entity=kyoto-protocol): leading repeal proposals and judicial challenge -> current lifecycle from enacted to repealed, days alive -> realized dependency cascade when a policy dies (confirmation gate). A chain, not one reading: confidence = how many legs are lit, in order. Sources: Federal Register, UNFCCC. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call.",
"outputSchema": {
"input": {
"type": "http",
"method": "GET",
"example": {
"entity": "eu-ets",
"format": "thin"
},
"required": [
"entity"
],
"properties": {
"entity": {
"type": "string",
"examples": [
"eu-ets",
"us-inflation-reduction-act",
"kyoto-protocol",
"au-carbon-pricing",
"us-clean-power-plan",
"uk-green-homes-grant"
],
"description": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]",
"x-accepted-values": {
"all": "https://api.truthbear.co/schemas/gauge-policy-region.input.json",
"shown": 6,
"total": 23
}
}
},
"queryParams": {
"entity": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]"
},
"discoverable": true,
"exampleRequest": "/gauge/policy-region?entity=eu-ets&format=thin"
},
"output": {
"type": "object",
"required": [
"nature",
"legs"
],
"properties": {
"legs": {
"type": "object",
"description": "CORE DELIVERY: per-leg readings, keyed by leg name (e.g. drought/heat/crop-vhi); each value carries signal_id/current/observed_at/data_age_hours/record_hash"
},
"name": {
"type": [
"string",
"null"
],
"description": "Human-readable name of the object"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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": "The object key of this bundle - the ?entity= you passed in"
},
"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"
},
"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"
},
"data_timespans": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Per-leg observation time and hours elapsed since"
},
"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"
},
"cross_line_narrative": {
"type": "string",
"description": "Cross-line comparison narrative (purely descriptive; no judgement, no prediction)"
}
},
"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": "250000",
"maxTimeoutSeconds": 300
}
],
"client_hint": {
"action": "This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10. Raise your client maxValue to at least required_atomic; otherwise the payment is rejected locally inside your own client and never reaches this server, so you will see no error from us.",
"reason": "price_above_default_client_max_value",
"example": "wrapFetchWithPayment(fetch, account, BigInt(250000)) // atomic units, USDC 6dp",
"required_usdc": "0.25",
"required_atomic": "250000",
"within_your_budget": [
{
"try": "/gauge?signal_id=hydrology.river-level&entity=07010000&format=thin",
"gets": "the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only",
"path": "/gauge",
"usdc": "0.01"
}
],
"default_client_max_atomic": "100000"
},
"x402Version": 1
},
{
"hint": {
"miss": "missing_parameter",
"usage": "/resolve/proposer?entity=<ticker|CIK>&form=<10-K|8-K|...>&cutoff=<ISO|as_of>[&event_class=1.03][&source_class=sec-edgar]",
"preview": "/resolve/proposer/preview",
"missing_params": [
"entity",
"form",
"cutoff"
],
"example_request": "/resolve/proposer?entity=AAPL&form=10-K&cutoff=2025-01-01"
},
"error": "Missing required query parameter(s): entity, form, cutoff. A request you can run right now: GET /resolve/proposer?entity=AAPL&form=10-K&cutoff=2025-01-01\nX-PAYMENT header is required",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "10000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/resolve/proposer",
"extensions": {
"bazaar": {
"info": {
"input": {
"type": "http",
"method": "GET",
"queryParams": {
"form": "required - filing type (e.g. 10-K, 8-K, NT 10-K, SC 13D, 4)",
"as_of": "optional - alias of cutoff",
"cutoff": "required - settlement cutoff, ISO 8601 (?as_of= is an alias; point-in-time)",
"entity": "required - ticker or CIK (e.g. AAPL or 320193)",
"event_class": "optional - 8-K item (e.g. 1.03 bankruptcy)",
"source_class": "optional - defaults to sec-edgar",
"market_or_event": "optional - market/event label, echoed back verbatim"
}
},
"output": {
"type": "json"
}
},
"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": [
"entity",
"form",
"cutoff"
],
"properties": {
"form": {
"type": "string",
"examples": [
"10-K"
],
"description": "required - filing type (e.g. 10-K, 8-K, NT 10-K, SC 13D, 4)"
},
"as_of": {
"type": "string",
"description": "optional - alias of cutoff"
},
"cutoff": {
"type": "string",
"examples": [
"2025-01-01"
],
"description": "required - settlement cutoff, ISO 8601 (?as_of= is an alias; point-in-time)"
},
"entity": {
"type": "string",
"examples": [
"AAPL"
],
"description": "required - ticker or CIK (e.g. AAPL or 320193)"
},
"event_class": {
"type": "string",
"description": "optional - 8-K item (e.g. 1.03 bankruptcy)"
},
"source_class": {
"type": "string",
"description": "optional - defaults to sec-edgar"
},
"market_or_event": {
"type": "string",
"description": "optional - market/event label, echoed back verbatim"
}
},
"additionalProperties": false
}
}
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"const": "json"
}
}
}
}
},
"priceUsd": "$0.01",
"discoverable": true,
"outputSchema": {
"type": "object",
"required": [
"answer",
"confidence"
],
"properties": {
"answer": {
"type": [
"boolean",
"null"
]
},
"_citation": {
"type": "object"
},
"timestamp": {
"type": [
"string",
"null"
]
},
"confidence": {
"type": "number"
},
"source_tier": {
"type": [
"string",
"null"
]
},
"evidence_url": {
"type": [
"string",
"null"
]
}
}
},
"routeTemplate": "/resolve/proposer",
"priceUsdNumber": 0.01
}
},
"description": "Proposer feed for prediction-market settlement: SEC EDGAR official facts mapped to a machine-friendly answer / timestamp / evidence shape for automated proposal and dispute flows. Three separated times, explicit resolution_status, candidate sources listed. We describe what was filed - the adjudication stays yours. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.01 per call.",
"outputSchema": {
"input": {
"type": "http",
"method": "GET",
"example": {
"form": "10-K",
"cutoff": "2025-01-01",
"entity": "AAPL"
},
"required": [
"entity",
"form",
"cutoff"
],
"properties": {
"form": {
"type": "string",
"examples": [
"10-K"
],
"description": "required - filing type (e.g. 10-K, 8-K, NT 10-K, SC 13D, 4)"
},
"as_of": {
"type": "string",
"description": "optional - alias of cutoff"
},
"cutoff": {
"type": "string",
"examples": [
"2025-01-01"
],
"description": "required - settlement cutoff, ISO 8601 (?as_of= is an alias; point-in-time)"
},
"entity": {
"type": "string",
"examples": [
"AAPL"
],
"description": "required - ticker or CIK (e.g. AAPL or 320193)"
},
"event_class": {
"type": "string",
"description": "optional - 8-K item (e.g. 1.03 bankruptcy)"
},
"source_class": {
"type": "string",
"description": "optional - defaults to sec-edgar"
},
"market_or_event": {
"type": "string",
"description": "optional - market/event label, echoed back verbatim"
}
},
"queryParams": {
"form": "required - filing type (e.g. 10-K, 8-K, NT 10-K, SC 13D, 4)",
"as_of": "optional - alias of cutoff",
"cutoff": "required - settlement cutoff, ISO 8601 (?as_of= is an alias; point-in-time)",
"entity": "required - ticker or CIK (e.g. AAPL or 320193)",
"event_class": "optional - 8-K item (e.g. 1.03 bankruptcy)",
"source_class": "optional - defaults to sec-edgar",
"market_or_event": "optional - market/event label, echoed back verbatim"
},
"discoverable": true,
"exampleRequest": "/resolve/proposer?entity=AAPL&form=10-K&cutoff=2025-01-01"
},
"output": {
"type": "object",
"required": [
"answer",
"confidence"
],
"properties": {
"answer": {
"type": [
"boolean",
"null"
]
},
"_citation": {
"type": "object"
},
"timestamp": {
"type": [
"string",
"null"
]
},
"confidence": {
"type": "number"
},
"source_tier": {
"type": [
"string",
"null"
]
},
"evidence_url": {
"type": [
"string",
"null"
]
}
}
}
},
"maxAmountRequired": "10000",
"maxTimeoutSeconds": 300
}
],
"x402Version": 1
},
{
"error": "X-PAYMENT header is required",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "90000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/stablecoin-deaths",
"extensions": {
"bazaar": {
"info": {
"input": {
"type": "http",
"method": "GET",
"queryParams": {
"verifiable": "optional - set to 1 to attach `_hash_core` per row (the canonical pre-image of the record_hash for that row) so you can "
}
},
"output": {
"type": "json"
}
},
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method"
],
"properties": {
"type": {
"const": "http"
},
"method": {
"enum": [
"GET"
],
"type": "string"
},
"queryParams": {
"type": "object",
"properties": {
"verifiable": {
"type": "string",
"description": "optional - set to 1 to attach `_hash_core` per row (the canonical pre-image of the record_hash for that row) so you can recompute and verify fully offline; omitted by default to keep the payload small - for online verification use free GET /gauge/verify?hash="
}
},
"additionalProperties": false
}
}
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"const": "json"
}
}
}
}
},
"priceUsd": "$0.09",
"discoverable": true,
"outputSchema": {
"type": "object",
"required": [
"count",
"records"
],
"properties": {
"count": {
"type": "integer",
"description": "Number of rows in records"
},
"nature": {
"type": "string",
"description": "Neutral-record statement"
},
"records": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"symbol": {
"type": "string"
},
"death_type": {
"type": "string",
"description": "Termination type, labelled algorithmically from observed signals - not an adjudication"
},
"source_ref": {
"type": [
"string",
"null"
],
"description": "Official source URL"
},
"record_hash": {
"type": [
"string",
"null"
],
"description": "Canonical sha256; verify it via /verify or the offline verifier"
},
"source_tier": {
"type": [
"string",
"null"
],
"description": "Source tier"
},
"death_context": {
"type": [
"object",
"null"
],
"description": "Factualised context (not verbatim, to avoid copyright); delivered in full only on the paid call"
},
"lifespan_days": {
"type": [
"integer",
"null"
],
"description": "Days alive (present only when lifecycle supplies it)"
},
"confirmed_dead_at": {
"type": "string",
"format": "date-time"
},
"first_distress_at": {
"type": [
"string",
"null"
],
"format": "date-time",
"description": "First observed (lifecycle.birth_at / first_seen)"
},
"hash_core_version": {
"type": [
"integer",
"null"
],
"description": "Core-contract version of record_hash (currently 3)"
},
"pre_death_payload": {
"type": "object",
"description": "Full pre-death snapshot (price / supply / collateral / redemption / per-chain); delivered in full only on the paid call"
},
"pre_death_observed_at": {
"type": "string",
"format": "date-time"
}
}
},
"description": "Death samples, row by row (field shape in items)"
},
"provenance": {
"type": "object",
"description": "Freshness and lineage: freshness / freshness_basis / age_hours_now / data_lineage, with the oldest row representing the whole batch"
},
"observed_at": {
"type": [
"string",
"null"
],
"description": "Observation time of the OLDEST row in this batch (ISO) - the most conservative basis"
}
}
},
"routeTemplate": "/stablecoin-deaths",
"priceUsdNumber": 0.09
}
},
"description": "[BATCH+PROOF] Stablecoin death samples - a neutral record: the full pre-mortem snapshot of terminated stablecoins (price, supply, collateral, redemption) plus lifecycle context (termination type, confirmed death date, days alive). Forensic depth for base-rate and post-mortem work, not a rating and not an endorsement. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. Every record carries an offline-recomputable record_hash. $0.09 per call.",
"outputSchema": {
"input": {
"type": "http",
"method": "GET",
"required": [],
"properties": {
"verifiable": {
"type": "string",
"description": "optional - set to 1 to attach `_hash_core` per row (the canonical pre-image of the record_hash for that row) so you can recompute and verify fully offline; omitted by default to keep the payload small - for online verification use free GET /gauge/verify?hash="
}
},
"queryParams": {
"verifiable": "optional - set to 1 to attach `_hash_core` per row (the canonical pre-image of the record_hash for that row) so you can recompute and verify fully offline; omitted by default to keep the payload small - for online verification use free GET /gauge/verify?hash="
},
"discoverable": true
},
"output": {
"type": "object",
"required": [
"count",
"records"
],
"properties": {
"count": {
"type": "integer",
"description": "Number of rows in records"
},
"nature": {
"type": "string",
"description": "Neutral-record statement"
},
"records": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"symbol": {
"type": "string"
},
"death_type": {
"type": "string",
"description": "Termination type, labelled algorithmically from observed signals - not an adjudication"
},
"source_ref": {
"type": [
"string",
"null"
],
"description": "Official source URL"
},
"record_hash": {
"type": [
"string",
"null"
],
"description": "Canonical sha256; verify it via /verify or the offline verifier"
},
"source_tier": {
"type": [
"string",
"null"
],
"description": "Source tier"
},
"death_context": {
"type": [
"object",
"null"
],
"description": "Factualised context (not verbatim, to avoid copyright); delivered in full only on the paid call"
},
"lifespan_days": {
"type": [
"integer",
"null"
],
"description": "Days alive (present only when lifecycle supplies it)"
},
"confirmed_dead_at": {
"type": "string",
"format": "date-time"
},
"first_distress_at": {
"type": [
"string",
"null"
],
"format": "date-time",
"description": "First observed (lifecycle.birth_at / first_seen)"
},
"hash_core_version": {
"type": [
"integer",
"null"
],
"description": "Core-contract version of record_hash (currently 3)"
},
"pre_death_payload": {
"type": "object",
"description": "Full pre-death snapshot (price / supply / collateral / redemption / per-chain); delivered in full only on the paid call"
},
"pre_death_observed_at": {
"type": "string",
"format": "date-time"
}
}
},
"description": "Death samples, row by row (field shape in items)"
},
"provenance": {
"type": "object",
"description": "Freshness and lineage: freshness / freshness_basis / age_hours_now / data_lineage, with the oldest row representing the whole batch"
},
"observed_at": {
"type": [
"string",
"null"
],
"description": "Observation time of the OLDEST row in this batch (ISO) - the most conservative basis"
}
}
}
},
"maxAmountRequired": "90000",
"maxTimeoutSeconds": 300
}
],
"x402Version": 1
},
{
"hint": {
"miss": "missing_parameter",
"usage": "/gauge/drought-region?entity=<value>",
"preview": "/gauge/preview",
"missing_params": [
"entity"
],
"example_request": "/gauge/drought-region?entity=us-california&format=thin"
},
"error": "Missing required query parameter(s): entity. A request you can run right now: GET /gauge/drought-region?entity=us-california&format=thin\nX-PAYMENT header is required. This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10 — raise maxValue to at least 250000 atomic units, or your own client rejects this payment locally and no request ever reaches us. Do not want to raise it? A cheaper alternative you can run right now: GET /gauge?signal_id=hydrology.river-level&entity=07010000&format=thin ($0.01 USDC) - the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only.",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "250000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/gauge/drought-region",
"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["
}
},
"output": {
"type": "json",
"example": {
"legs": {
"status": {
"band": "D0-abnormally-dry",
"source_ref": "https://droughtmonitor.unl.edu/",
"record_hash": "sha256:e69894d0ac7054f477bc1e62e906bc98be89ae3ceeb06aa71506be150fb0312a"
},
"impact_cascade": {
"band": "emerging",
"source_ref": "https://www.drought.gov/",
"record_hash": "sha256:7ae14db69710e919ab1517129ef8dc347820b4b6b9402fa174c1ef195271ddb6"
},
"onset_pressure": {
"band": "ED3-extreme-demand",
"source_ref": "https://www.drought.gov/data-maps-tools/evaporative-demand-drought-index-eddi",
"record_hash": "sha256:931c7e44e74d37b1eaf30f8fe08179882b621904f43e86772cc530bf0c577cca"
},
"season_timeline": {
"band": "above-normal",
"source_ref": null,
"record_hash": null
}
},
"name": "US — California (evaporative-demand onset)",
"grade": "screening-level, not decision-grade",
"scope": {
"full": "https://api.truthbear.co/scope/v1",
"verifiability": "unknown",
"monitoring_not_forecast": true,
"intelligence_not_command": true
},
"entity": "us-california",
"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.",
"provenance": {
"freshness": "recent",
"age_hours_now": 156,
"freshness_basis": "cadence=default; fresh<=24h; recent<=192h; dead_source>1440h; age_basis=request-time(now minus observed_at)"
}
}
}
},
"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": [
"entity"
],
"properties": {
"entity": {
"type": "string",
"examples": [
"us-california",
"us-southwest",
"us-southernplains",
"us-northernplains",
"us-cornbelt",
"us-southeast"
],
"description": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]",
"x-accepted-values": {
"all": "https://api.truthbear.co/schemas/gauge-drought-region.input.json",
"shown": 6,
"total": 10
}
}
},
"additionalProperties": false
}
}
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"const": "json"
},
"example": {}
}
}
}
},
"priceUsd": "$0.25",
"discoverable": true,
"outputSchema": {
"type": "object",
"required": [
"nature",
"legs"
],
"properties": {
"legs": {
"type": "object",
"description": "CORE DELIVERY: per-leg readings, keyed by leg name (e.g. drought/heat/crop-vhi); each value carries signal_id/current/observed_at/data_age_hours/record_hash"
},
"name": {
"type": [
"string",
"null"
],
"description": "Human-readable name of the object"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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": "The object key of this bundle - the ?entity= you passed in"
},
"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"
},
"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"
},
"data_timespans": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Per-leg observation time and hours elapsed since"
},
"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"
},
"cross_line_narrative": {
"type": "string",
"description": "Cross-line comparison narrative (purely descriptive; no judgement, no prediction)"
}
},
"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/drought-region",
"priceUsdNumber": 0.25
}
},
"description": "[3-LEG] Drought chain, one drought region (?entity=us-california): leading precipitation deficit, soil moisture and snowpack -> current the OFFICIAL US Drought Monitor class and area coverage -> realized streamflow and impact (confirmation gate). A chain, not one reading: confidence = how many legs are lit, in order. Sources: USDM/NDMC, USGS. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call.",
"outputSchema": {
"input": {
"type": "http",
"method": "GET",
"example": {
"entity": "us-california",
"format": "thin"
},
"required": [
"entity"
],
"properties": {
"entity": {
"type": "string",
"examples": [
"us-california",
"us-southwest",
"us-southernplains",
"us-northernplains",
"us-cornbelt",
"us-southeast"
],
"description": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]",
"x-accepted-values": {
"all": "https://api.truthbear.co/schemas/gauge-drought-region.input.json",
"shown": 6,
"total": 10
}
}
},
"queryParams": {
"entity": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]"
},
"discoverable": true,
"exampleRequest": "/gauge/drought-region?entity=us-california&format=thin"
},
"output": {
"type": "object",
"required": [
"nature",
"legs"
],
"properties": {
"legs": {
"type": "object",
"description": "CORE DELIVERY: per-leg readings, keyed by leg name (e.g. drought/heat/crop-vhi); each value carries signal_id/current/observed_at/data_age_hours/record_hash"
},
"name": {
"type": [
"string",
"null"
],
"description": "Human-readable name of the object"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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": "The object key of this bundle - the ?entity= you passed in"
},
"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"
},
"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"
},
"data_timespans": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Per-leg observation time and hours elapsed since"
},
"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"
},
"cross_line_narrative": {
"type": "string",
"description": "Cross-line comparison narrative (purely descriptive; no judgement, no prediction)"
}
},
"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": "250000",
"maxTimeoutSeconds": 300
}
],
"client_hint": {
"action": "This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10. Raise your client maxValue to at least required_atomic; otherwise the payment is rejected locally inside your own client and never reaches this server, so you will see no error from us.",
"reason": "price_above_default_client_max_value",
"example": "wrapFetchWithPayment(fetch, account, BigInt(250000)) // atomic units, USDC 6dp",
"required_usdc": "0.25",
"required_atomic": "250000",
"within_your_budget": [
{
"try": "/gauge?signal_id=hydrology.river-level&entity=07010000&format=thin",
"gets": "the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only",
"path": "/gauge",
"usdc": "0.01"
}
],
"default_client_max_atomic": "100000"
},
"x402Version": 1
},
{
"hint": {
"miss": "missing_parameter",
"usage": "/gauge?signal_id=<value>&entity=<value>",
"preview": "/gauge/sample",
"missing_params": [
"signal_id",
"entity"
],
"example_request": "/gauge?signal_id=hydrology.river-level&entity=07010000&format=thin"
},
"error": "Missing required query parameter(s): signal_id, entity. A request you can run right now: GET /gauge?signal_id=hydrology.river-level&entity=07010000&format=thin\nX-PAYMENT header is required",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "10000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/gauge",
"extensions": {
"bazaar": {
"info": {
"input": {
"type": "http",
"method": "GET",
"queryParams": {
"entity": "required - monitored object id, PAIRED WITH signal_id (e.g. 07010000 for hydrology.river-level, japan for earthquake.cur",
"signal_id": "required - signal id in genus.species ASCII form (e.g. hydrology.river-level, crypto.spot, macro.unemployment, earthquak"
}
},
"output": {
"type": "json",
"example": {
"grade": "screening-level, not decision-grade",
"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.",
"current": {
"gauge_height_ft": 30.69
},
"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/",
"summary_en": "Ohio River at Cincinnati, OH: 30.69 ft gauge height - no flooding, 9.31 ft below the first official alert (action stage 40 ft). seasonal percentile 0.922 (rare). falling vs 24h ago.",
"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 (e.g. 07010000 for hydrology.river-level, japan for earthquake.current_activity). Valid pairs: free GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]"
},
"signal_id": {
"type": "string",
"examples": [
"hydrology.river-level"
],
"description": "required - signal id in genus.species ASCII form (e.g. hydrology.river-level, crypto.spot, macro.unemployment, earthquake.current_activity). Full list: free GET /gauge/catalog"
}
},
"additionalProperties": false
}
}
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"const": "json"
},
"example": {}
}
}
}
},
"priceUsd": "$0.01",
"discoverable": true,
"outputSchema": {
"type": "object",
"required": [
"nature"
],
"properties": {
"tier": {
"type": "string",
"description": "Marker for the main single-point or history-series response (full / history-series); mutually exclusive with dim/addon"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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"
},
"change": {
"type": [
"object",
"null"
],
"description": "Change, nested per metric: change.<metric> = {delta, direction, direction_reason?}, plus the scalar change.period (e.g. \"vs_previous\"). direction is one of rising/falling/stable/unknown - unknown means the direction CANNOT BE DETERMINED, it does not mean stable; in that case direction_reason carries a machine-readable cause: no-previous-record / metric-absent-in-previous / metric-absent-in-current / non-numeric-value"
},
"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"
},
"strata": {
"type": [
"object",
"null"
],
"description": "Statistical strata: share of each official band over the last 5 same-season years plus the band the current value falls in; null when there are no statistics"
},
"current": {
"type": [
"object",
"null"
],
"description": "Current reading. The inner metric structure varies by signal (crypto -> {price_usd, volume_24h, ...}; shipping -> {wind_kmh, wave_height_m, ...}). Units are carried in the field-name suffix; see also standard_ruler.unit"
},
"sources": {
"type": [
"array",
"null"
],
"items": {
"type": "object"
},
"description": "Source list [{name, value, weight, as_of, role, independent, relay_of?}]. independent:true = confirmed independent source; false = confirmed relay channel of another source (relay_of names the origin); null = independence unconfirmed (neither denied nor claimed). name/weight/independent/relay_of are record_hash core fields, so tampering with an independence claim breaks self-verification; as_of/value/role drift easily and are not hashed"
},
"previous": {
"type": [
"object",
"null"
],
"description": "Previous-period reading (a subset of the metrics in current; or {note} explaining that there is no previous value)"
},
"trend_7d": {
"type": [
"array",
"null"
],
"items": {
"type": "object"
},
"description": "Array of the last 7 trend points; [] means this signal has no series yet or the series does not apply - it is not an error"
},
"_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"
},
"lifecycle": {
"type": [
"object",
"null"
],
"description": "Lifecycle block (state / birth_at / end_at / death_type / context). Part of the record_hash v3 core, so offline recomputation must include it; null for non-lifecycle lines"
},
"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"
},
"ots_status": {
"type": [
"string",
"null"
],
"description": "RETIRED FIELD - always \"pending\" or null; this field is no longer updated and is kept only for older parsers. Anchoring is done per write-batch (previously one root per day): each batch of writes gets a Merkle root stamped via OpenTimestamps, typically confirmed into a Bitcoin block within hours. See GET /gauge/anchor?hash= for the inclusion proof and the block number."
},
"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)"
},
"stat_ruler": {
"type": [
"object",
"null"
],
"description": "Statistical ruler: empirical percentile position across the last 5 same-season years; null when there are no statistics"
},
"summary_en": {
"type": "string",
"description": "Conditional - English one-line verdict derived at request time from this same record: reading + where it sits on the official ruler (distance to the first official alert) + seasonal percentile + direction, and staleness only when the data is actually old. Purely descriptive, never advice or forecast. Absent when this line carries no official ruler and no seasonal statistics (there is then nothing to conclude beyond the raw upstream reading). Not part of the record_hash core"
},
"summary_zh": {
"type": [
"string",
"null"
],
"description": "Human-readable one-line summary, IN CHINESE (zh-TW): reading + where it sits on the official ruler + statistical position. This is the HUMAN front-desk copy - machine consumers should read summary_en (English verdict) instead"
},
"unverified": {
"type": "boolean",
"description": "true = the source is untiered (source_tier is null); buyers and agents can filter on this"
},
"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)"
},
"source_tier": {
"type": [
"string",
"null"
],
"description": "Source tier: T1 (first-hand official) / T2 or T2-<subtype, e.g. T2-exchange> (observable, curated) / screen-viewpoint; null = untiered (see unverified)"
},
"snapshot_date": {
"type": "string",
"description": "ISO-8601 date-time in UTC (e.g. 2026-07-24T00:00:00.000Z; aligned to midnight of that day)"
},
"update_status": {
"type": "object",
"properties": {
"text": {
"type": "string",
"description": "One-line human-readable form of the same fact"
},
"state": {
"type": "string",
"description": "on_schedule | overdue | not_published | unknown"
},
"overdue_days": {
"type": [
"integer",
"null"
],
"description": "How many days past that cadence; null when it cannot be determined"
},
"official_cadence": {
"type": [
"string",
"null"
],
"description": "The cadence the official source declares for this line (hourly/daily/weekly/monthly/quarterly/yearly/as-events)"
}
},
"description": "Did the OFFICIAL source keep its own declared publication cadence? Separate dimension from freshness: a record can be freshness=recent and update_status=overdue at the same time. state: on_schedule | overdue | not_published | unknown"
},
"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"
},
"standard_ruler": {
"type": [
"object",
"null"
],
"description": "Official standard ruler (band / thresholds / normalized_index / pct_to_action, with unit and provenance); null when the line has no official ruler. Inner structure varies by signal"
},
"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"
},
"hash_core_version": {
"type": [
"integer",
"null"
],
"description": "Core-contract version of record_hash (currently 3); use it to pick the right core composition when recomputing offline"
},
"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",
"priceUsdNumber": 0.01
}
},
"description": "[SIGNAL+PROOF] One official signal record for any signal_id and entity: current reading against the OFFICIAL threshold ladder (band, distance-to-action) plus a 5-year same-season percentile so you can tell routine from unusual. 180+ signals across macro, weather, hazard, shipping, filings, crypto and lifecycle lines. Free coverage check first at /gauge/coverage. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.01 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 (e.g. 07010000 for hydrology.river-level, japan for earthquake.current_activity). Valid pairs: free GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]"
},
"signal_id": {
"type": "string",
"examples": [
"hydrology.river-level"
],
"description": "required - signal id in genus.species ASCII form (e.g. hydrology.river-level, crypto.spot, macro.unemployment, earthquake.current_activity). Full list: free GET /gauge/catalog"
}
},
"queryParams": {
"entity": "required - monitored object id, PAIRED WITH signal_id (e.g. 07010000 for hydrology.river-level, japan for earthquake.current_activity). Valid pairs: free GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]",
"signal_id": "required - signal id in genus.species ASCII form (e.g. hydrology.river-level, crypto.spot, macro.unemployment, earthquake.current_activity). Full list: free GET /gauge/catalog"
},
"discoverable": true,
"exampleRequest": "/gauge?signal_id=hydrology.river-level&entity=07010000&format=thin"
},
"output": {
"type": "object",
"required": [
"nature"
],
"properties": {
"tier": {
"type": "string",
"description": "Marker for the main single-point or history-series response (full / history-series); mutually exclusive with dim/addon"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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"
},
"change": {
"type": [
"object",
"null"
],
"description": "Change, nested per metric: change.<metric> = {delta, direction, direction_reason?}, plus the scalar change.period (e.g. \"vs_previous\"). direction is one of rising/falling/stable/unknown - unknown means the direction CANNOT BE DETERMINED, it does not mean stable; in that case direction_reason carries a machine-readable cause: no-previous-record / metric-absent-in-previous / metric-absent-in-current / non-numeric-value"
},
"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"
},
"strata": {
"type": [
"object",
"null"
],
"description": "Statistical strata: share of each official band over the last 5 same-season years plus the band the current value falls in; null when there are no statistics"
},
"current": {
"type": [
"object",
"null"
],
"description": "Current reading. The inner metric structure varies by signal (crypto -> {price_usd, volume_24h, ...}; shipping -> {wind_kmh, wave_height_m, ...}). Units are carried in the field-name suffix; see also standard_ruler.unit"
},
"sources": {
"type": [
"array",
"null"
],
"items": {
"type": "object"
},
"description": "Source list [{name, value, weight, as_of, role, independent, relay_of?}]. independent:true = confirmed independent source; false = confirmed relay channel of another source (relay_of names the origin); null = independence unconfirmed (neither denied nor claimed). name/weight/independent/relay_of are record_hash core fields, so tampering with an independence claim breaks self-verification; as_of/value/role drift easily and are not hashed"
},
"previous": {
"type": [
"object",
"null"
],
"description": "Previous-period reading (a subset of the metrics in current; or {note} explaining that there is no previous value)"
},
"trend_7d": {
"type": [
"array",
"null"
],
"items": {
"type": "object"
},
"description": "Array of the last 7 trend points; [] means this signal has no series yet or the series does not apply - it is not an error"
},
"_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"
},
"lifecycle": {
"type": [
"object",
"null"
],
"description": "Lifecycle block (state / birth_at / end_at / death_type / context). Part of the record_hash v3 core, so offline recomputation must include it; null for non-lifecycle lines"
},
"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"
},
"ots_status": {
"type": [
"string",
"null"
],
"description": "RETIRED FIELD - always \"pending\" or null; this field is no longer updated and is kept only for older parsers. Anchoring is done per write-batch (previously one root per day): each batch of writes gets a Merkle root stamped via OpenTimestamps, typically confirmed into a Bitcoin block within hours. See GET /gauge/anchor?hash= for the inclusion proof and the block number."
},
"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)"
},
"stat_ruler": {
"type": [
"object",
"null"
],
"description": "Statistical ruler: empirical percentile position across the last 5 same-season years; null when there are no statistics"
},
"summary_en": {
"type": "string",
"description": "Conditional - English one-line verdict derived at request time from this same record: reading + where it sits on the official ruler (distance to the first official alert) + seasonal percentile + direction, and staleness only when the data is actually old. Purely descriptive, never advice or forecast. Absent when this line carries no official ruler and no seasonal statistics (there is then nothing to conclude beyond the raw upstream reading). Not part of the record_hash core"
},
"summary_zh": {
"type": [
"string",
"null"
],
"description": "Human-readable one-line summary, IN CHINESE (zh-TW): reading + where it sits on the official ruler + statistical position. This is the HUMAN front-desk copy - machine consumers should read summary_en (English verdict) instead"
},
"unverified": {
"type": "boolean",
"description": "true = the source is untiered (source_tier is null); buyers and agents can filter on this"
},
"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)"
},
"source_tier": {
"type": [
"string",
"null"
],
"description": "Source tier: T1 (first-hand official) / T2 or T2-<subtype, e.g. T2-exchange> (observable, curated) / screen-viewpoint; null = untiered (see unverified)"
},
"snapshot_date": {
"type": "string",
"description": "ISO-8601 date-time in UTC (e.g. 2026-07-24T00:00:00.000Z; aligned to midnight of that day)"
},
"update_status": {
"type": "object",
"properties": {
"text": {
"type": "string",
"description": "One-line human-readable form of the same fact"
},
"state": {
"type": "string",
"description": "on_schedule | overdue | not_published | unknown"
},
"overdue_days": {
"type": [
"integer",
"null"
],
"description": "How many days past that cadence; null when it cannot be determined"
},
"official_cadence": {
"type": [
"string",
"null"
],
"description": "The cadence the official source declares for this line (hourly/daily/weekly/monthly/quarterly/yearly/as-events)"
}
},
"description": "Did the OFFICIAL source keep its own declared publication cadence? Separate dimension from freshness: a record can be freshness=recent and update_status=overdue at the same time. state: on_schedule | overdue | not_published | unknown"
},
"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"
},
"standard_ruler": {
"type": [
"object",
"null"
],
"description": "Official standard ruler (band / thresholds / normalized_index / pct_to_action, with unit and provenance); null when the line has no official ruler. Inner structure varies by signal"
},
"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"
},
"hash_core_version": {
"type": [
"integer",
"null"
],
"description": "Core-contract version of record_hash (currently 3); use it to pick the right core composition when recomputing offline"
},
"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": "10000",
"maxTimeoutSeconds": 300
}
],
"x402Version": 1
},
{
"hint": {
"miss": "missing_parameter",
"usage": "/gauge/tool-region?entity=<value>",
"preview": "/gauge/preview",
"missing_params": [
"entity"
],
"example_request": "/gauge/tool-region?entity=jasper-ai&format=thin"
},
"error": "Missing required query parameter(s): entity. A request you can run right now: GET /gauge/tool-region?entity=jasper-ai&format=thin\nX-PAYMENT header is required. This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10 — raise maxValue to at least 250000 atomic units, or your own client rejects this payment locally and no request ever reaches us. Do not want to raise it? A cheaper alternative you can run right now: GET /gauge?signal_id=hydrology.river-level&entity=07010000&format=thin ($0.01 USDC) - the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only.",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "250000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/gauge/tool-region",
"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["
}
},
"output": {
"type": "json",
"example": {
"legs": {
"zombie": {
"band": "alive",
"source_ref": "https://www.jasper.ai/",
"record_hash": "sha256:b673e1bffcd24f12089142cce0a41232145b800ea0eace8c25dc498cf942fbfb"
},
"distress": {
"band": "none",
"source_ref": "https://www.jasper.ai/pricing",
"record_hash": "sha256:4c70f92b60303eeab15e78f9894056e3ff629df78dc7e2ca1a0a01ed798f44fc"
},
"lifecycle": {
"band": "operating",
"source_ref": "https://www.jasper.ai/",
"record_hash": "sha256:48c595f05aae382cbbe93f85ca74be5a258bdccde6915d36c7f45212dc8a32c5"
}
},
"name": "Jasper AI",
"grade": "screening-level, not decision-grade",
"scope": {
"full": "https://api.truthbear.co/scope/v1",
"verifiability": "unknown",
"monitoring_not_forecast": true,
"intelligence_not_command": true
},
"entity": "jasper-ai",
"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.",
"provenance": {
"freshness": "recent",
"age_hours_now": 120.4,
"freshness_basis": "cadence=default; fresh<=24h; recent<=192h; dead_source>1440h; age_basis=request-time(now minus observed_at)"
}
}
}
},
"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": [
"entity"
],
"properties": {
"entity": {
"type": "string",
"examples": [
"jasper-ai",
"perplexity-ai",
"midjourney",
"runwayml",
"elevenlabs",
"cursor"
],
"description": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]",
"x-accepted-values": {
"all": "https://api.truthbear.co/schemas/gauge-tool-region.input.json",
"shown": 6,
"total": 21
}
}
},
"additionalProperties": false
}
}
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"const": "json"
},
"example": {}
}
}
}
},
"priceUsd": "$0.25",
"discoverable": true,
"outputSchema": {
"type": "object",
"required": [
"nature",
"legs"
],
"properties": {
"legs": {
"type": "object",
"description": "CORE DELIVERY: per-leg readings, keyed by leg name (e.g. drought/heat/crop-vhi); each value carries signal_id/current/observed_at/data_age_hours/record_hash"
},
"name": {
"type": [
"string",
"null"
],
"description": "Human-readable name of the object"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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": "The object key of this bundle - the ?entity= you passed in"
},
"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"
},
"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"
},
"data_timespans": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Per-leg observation time and hours elapsed since"
},
"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"
},
"cross_line_narrative": {
"type": "string",
"description": "Cross-line comparison narrative (purely descriptive; no judgement, no prediction)"
}
},
"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/tool-region",
"priceUsdNumber": 0.25
}
},
"description": "[3-LEG] AI tool and MCP chain, one tool (?entity=mammoth-ai): leading decay warnings, release cadence stalling and docs going dark -> current live or dead status from real DNS and GitHub checks -> realized lifecycle from launch to death with days alive (confirmation gate). A chain, not one reading: confidence = how many legs are lit, in order. Sources: DNS, GitHub, package registries. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call.",
"outputSchema": {
"input": {
"type": "http",
"method": "GET",
"example": {
"entity": "jasper-ai",
"format": "thin"
},
"required": [
"entity"
],
"properties": {
"entity": {
"type": "string",
"examples": [
"jasper-ai",
"perplexity-ai",
"midjourney",
"runwayml",
"elevenlabs",
"cursor"
],
"description": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]",
"x-accepted-values": {
"all": "https://api.truthbear.co/schemas/gauge-tool-region.input.json",
"shown": 6,
"total": 21
}
}
},
"queryParams": {
"entity": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]"
},
"discoverable": true,
"exampleRequest": "/gauge/tool-region?entity=jasper-ai&format=thin"
},
"output": {
"type": "object",
"required": [
"nature",
"legs"
],
"properties": {
"legs": {
"type": "object",
"description": "CORE DELIVERY: per-leg readings, keyed by leg name (e.g. drought/heat/crop-vhi); each value carries signal_id/current/observed_at/data_age_hours/record_hash"
},
"name": {
"type": [
"string",
"null"
],
"description": "Human-readable name of the object"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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": "The object key of this bundle - the ?entity= you passed in"
},
"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"
},
"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"
},
"data_timespans": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Per-leg observation time and hours elapsed since"
},
"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"
},
"cross_line_narrative": {
"type": "string",
"description": "Cross-line comparison narrative (purely descriptive; no judgement, no prediction)"
}
},
"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": "250000",
"maxTimeoutSeconds": 300
}
],
"client_hint": {
"action": "This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10. Raise your client maxValue to at least required_atomic; otherwise the payment is rejected locally inside your own client and never reaches this server, so you will see no error from us.",
"reason": "price_above_default_client_max_value",
"example": "wrapFetchWithPayment(fetch, account, BigInt(250000)) // atomic units, USDC 6dp",
"required_usdc": "0.25",
"required_atomic": "250000",
"within_your_budget": [
{
"try": "/gauge?signal_id=hydrology.river-level&entity=07010000&format=thin",
"gets": "the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only",
"path": "/gauge",
"usdc": "0.01"
}
],
"default_client_max_atomic": "100000"
},
"x402Version": 1
},
{
"error": "X-PAYMENT header is required",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "90000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/trust/scorecard",
"extensions": {
"bazaar": {
"info": {
"input": {
"type": "http",
"method": "GET",
"queryParams": {
"verifiable": "optional - set to 1 to attach `_hash_core` per row (the canonical pre-image of the record_hash for that row) so you can "
}
},
"output": {
"type": "json",
"example": {
"entity": "(unlocked on payment)",
"current": {
"alive": true,
"domain": "api.onesource.io",
"calls_30d": 15448,
"endpoints": 25,
"last_price": 0.001,
"score_total": 1,
"demand_class": "REAL",
"demand_depth": "BREADTH",
"score_version": "demand-v1",
"first_endpoint": "https://api.onesource.io/api/chain/erc20-balance",
"last_called_at": "2026-08-25T06:44:08.121Z",
"liveness_state": "live",
"unique_payers_30d": 1093,
"endpoints_by_class": {
"REAL": 25
}
},
"lifecycle": {
"basis": "CDP discovery quality fields (l30DaysTotalCalls / l30DaysUniquePayers). demand_class is computed by the same classifi...",
"state": "operating",
"last_seen": "2026-08-25"
},
"signal_id": "trust.service-score",
"source_ref": "https://api.cdp.coinbase.com/platform/v2/x402/discovery/resources",
"entity_name": "(unlocked on payment)",
"observed_at": "2026-08-25T09:56:15.825Z",
"record_hash": "sha256:351f42610f5b3f386f88ba9c5a9d01d80f287a12a02b2bed05c864f374cd65aa",
"source_tier": "T2-observable",
"snapshot_date": "2026-08-25",
"data_age_hours": 0,
"hash_core_version": 4
}
}
},
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method"
],
"properties": {
"type": {
"const": "http"
},
"method": {
"enum": [
"GET"
],
"type": "string"
},
"queryParams": {
"type": "object",
"properties": {
"verifiable": {
"type": "string",
"description": "optional - set to 1 to attach `_hash_core` per row (the canonical pre-image of the record_hash for that row) so you can recompute and verify fully offline; omitted by default to keep the payload small - for online verification use free GET /gauge/verify?hash="
}
},
"additionalProperties": false
}
}
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"const": "json"
},
"example": {}
}
}
}
},
"priceUsd": "$0.09",
"discoverable": true,
"outputSchema": {
"type": "object",
"properties": {
"rows": {
"type": "array",
"items": {
"type": "object",
"properties": {
"service": {
"type": "string"
},
"lifecycle": {
"type": [
"object",
"null"
]
},
"record_hash": {
"type": [
"string",
"null"
]
},
"score_total": {
"type": [
"number",
"null"
]
},
"liveness_state": {
"type": [
"string",
"null"
]
}
}
}
},
"count": {
"type": "integer"
},
"provenance": {
"type": "object",
"description": "Freshness and lineage: freshness / freshness_basis / age_hours_now / data_lineage, with the oldest row representing the whole batch"
},
"observed_at": {
"type": [
"string",
"null"
],
"description": "Observation time of the OLDEST row in this batch (ISO) - the most conservative basis"
}
}
},
"routeTemplate": "/trust/scorecard",
"priceUsdNumber": 0.09
}
},
"description": "[BATCH+PROOF] Full x402 service demand roster, latest day: demand_class, calls_30d, unique_payers_30d, score_total, liveness_state, lifecycle, record_hash per service. Model demand-v1, refreshed daily from the public CDP catalogue; unique_payers_30d is a lower bound, never a sum. DEGRADED DELIVERY, see unavailable_fields - the five-axis sub-scores, action_hint, tier and verified are empty. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.09 per call.",
"outputSchema": {
"input": {
"type": "http",
"method": "GET",
"required": [],
"properties": {
"verifiable": {
"type": "string",
"description": "optional - set to 1 to attach `_hash_core` per row (the canonical pre-image of the record_hash for that row) so you can recompute and verify fully offline; omitted by default to keep the payload small - for online verification use free GET /gauge/verify?hash="
}
},
"queryParams": {
"verifiable": "optional - set to 1 to attach `_hash_core` per row (the canonical pre-image of the record_hash for that row) so you can recompute and verify fully offline; omitted by default to keep the payload small - for online verification use free GET /gauge/verify?hash="
},
"discoverable": true
},
"output": {
"type": "object",
"properties": {
"rows": {
"type": "array",
"items": {
"type": "object",
"properties": {
"service": {
"type": "string"
},
"lifecycle": {
"type": [
"object",
"null"
]
},
"record_hash": {
"type": [
"string",
"null"
]
},
"score_total": {
"type": [
"number",
"null"
]
},
"liveness_state": {
"type": [
"string",
"null"
]
}
}
}
},
"count": {
"type": "integer"
},
"provenance": {
"type": "object",
"description": "Freshness and lineage: freshness / freshness_basis / age_hours_now / data_lineage, with the oldest row representing the whole batch"
},
"observed_at": {
"type": [
"string",
"null"
],
"description": "Observation time of the OLDEST row in this batch (ISO) - the most conservative basis"
}
}
}
},
"maxAmountRequired": "90000",
"maxTimeoutSeconds": 300
}
],
"x402Version": 1
},
{
"error": "X-PAYMENT header is required",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "90000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/stable/graveyard",
"extensions": {
"bazaar": {
"info": {
"input": {
"type": "http",
"method": "GET",
"queryParams": {
"verifiable": "optional - set to 1 to attach `_hash_core` per row (the canonical pre-image of the record_hash for that row) so you can "
}
},
"output": {
"type": "json",
"example": {
"entity": "basis-cash-bac",
"current": {
"state": "dead",
"ongoing": false,
"death_type": "depeg-abandoned",
"lifespan_days": 152
},
"lifecycle": {
"peg": "usd",
"state": "dead",
"end_at": "2021-05-01",
"issuer": "Basis Cash (anon)",
"context": "The algorithmic stablecoin BAC traded below USD 1 for a long period and never regained its peg; after the seigniorage...",
"ongoing": false,
"birth_at": "2020-11-30",
"mechanism": "algorithmic",
"death_type": "depeg-abandoned",
"lifespan_days": 152
},
"signal_id": "stablecoin.lifecycle",
"source_ref": "https://www.coingecko.com/en/coins/basis-cash",
"entity_name": "Basis Cash (BAC)",
"observed_at": "2026-08-24T15:00:00.121Z",
"record_hash": "sha256:664da5b5c8cc399928a3149a49732e15d67f66d69b683e1469c0ab9871d8d702",
"source_tier": "T1",
"snapshot_date": "2026-08-24",
"data_age_hours": 0,
"hash_core_version": 4
}
}
},
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method"
],
"properties": {
"type": {
"const": "http"
},
"method": {
"enum": [
"GET"
],
"type": "string"
},
"queryParams": {
"type": "object",
"properties": {
"verifiable": {
"type": "string",
"description": "optional - set to 1 to attach `_hash_core` per row (the canonical pre-image of the record_hash for that row) so you can recompute and verify fully offline; omitted by default to keep the payload small - for online verification use free GET /gauge/verify?hash="
}
},
"additionalProperties": false
}
}
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"const": "json"
},
"example": {}
}
}
}
},
"priceUsd": "$0.09",
"discoverable": true,
"outputSchema": {
"type": "object",
"properties": {
"count": {
"type": "integer"
},
"deaths": {
"type": "array"
},
"provenance": {
"type": "object",
"description": "Freshness and lineage: freshness / freshness_basis / age_hours_now / data_lineage, with the oldest row representing the whole batch"
},
"observed_at": {
"type": [
"string",
"null"
],
"description": "Observation time of the OLDEST row in this batch (ISO) - the most conservative basis"
},
"record_hash_verifiable": {
"type": "object"
}
}
},
"routeTemplate": "/stable/graveyard",
"priceUsdNumber": 0.09
}
},
"description": "[BATCH+PROOF] Stablecoin death register - terminated below 0.10 or persistently absent. Add ?verifiable=1 for per-row _hash_core, fully offline-recomputable. A neutral observation record: not a rating, not an endorsement. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.09 per call.",
"outputSchema": {
"input": {
"type": "http",
"method": "GET",
"required": [],
"properties": {
"verifiable": {
"type": "string",
"description": "optional - set to 1 to attach `_hash_core` per row (the canonical pre-image of the record_hash for that row) so you can recompute and verify fully offline; omitted by default to keep the payload small - for online verification use free GET /gauge/verify?hash="
}
},
"queryParams": {
"verifiable": "optional - set to 1 to attach `_hash_core` per row (the canonical pre-image of the record_hash for that row) so you can recompute and verify fully offline; omitted by default to keep the payload small - for online verification use free GET /gauge/verify?hash="
},
"discoverable": true
},
"output": {
"type": "object",
"properties": {
"count": {
"type": "integer"
},
"deaths": {
"type": "array"
},
"provenance": {
"type": "object",
"description": "Freshness and lineage: freshness / freshness_basis / age_hours_now / data_lineage, with the oldest row representing the whole batch"
},
"observed_at": {
"type": [
"string",
"null"
],
"description": "Observation time of the OLDEST row in this batch (ISO) - the most conservative basis"
},
"record_hash_verifiable": {
"type": "object"
}
}
}
},
"maxAmountRequired": "90000",
"maxTimeoutSeconds": 300
}
],
"x402Version": 1
},
{
"hint": {
"miss": "missing_parameter",
"usage": "/gauge/history-series?signal_id=<value>&entity=<value>",
"preview": "/gauge/history-preview",
"missing_params": [
"signal_id",
"entity"
],
"example_request": "/gauge/history-series?signal_id=hydrology.river-level&entity=07010000"
},
"error": "Missing required query parameter(s): signal_id, entity. A request you can run right now: GET /gauge/history-series?signal_id=hydrology.river-level&entity=07010000\nX-PAYMENT header is required",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "90000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/gauge/history-series",
"extensions": {
"bazaar": {
"info": {
"input": {
"type": "http",
"method": "GET",
"queryParams": {
"days": "optional - lookback window in days; default 400, minimum 1, capped at 1000. Windows are UTC days (snapshot_date), not lo",
"entity": "required - object id within that line, e.g. 07010000 (see /gauge/coverage)",
"format": "optional - json (default) or csv",
"signal_id": "required - line id, e.g. hydrology.river-level (see /gauge/coverage)"
}
},
"output": {
"type": "json"
}
},
"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": {
"days": {
"type": "string",
"description": "optional - lookback window in days; default 400, minimum 1, capped at 1000. Windows are UTC days (snapshot_date), not local days"
},
"entity": {
"type": "string",
"examples": [
"07010000"
],
"description": "required - object id within that line, e.g. 07010000 (see /gauge/coverage)"
},
"format": {
"type": "string",
"description": "optional - json (default) or csv"
},
"signal_id": {
"type": "string",
"examples": [
"hydrology.river-level"
],
"description": "required - line id, e.g. hydrology.river-level (see /gauge/coverage)"
}
},
"additionalProperties": false
}
}
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"const": "json"
}
}
}
}
},
"priceUsd": "$0.09",
"discoverable": true,
"outputSchema": {
"type": "object",
"required": [
"count",
"series"
],
"properties": {
"days": {
"type": "integer",
"description": "Days actually covered (capped at 1000)"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"tier": {
"type": "string",
"description": "Always the literal \"history-series\""
},
"count": {
"type": "integer",
"description": "Number of rows in series"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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"
},
"format": {
"enum": [
"json",
"csv"
],
"type": "string"
},
"nature": {
"type": "string",
"description": "Neutrality statement: GAUGE supplies observations and trend description only - no judgement, no prediction, no recommendation"
},
"series": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "CORE DELIVERY: the full time series for this (signal_id, entity) pair, snapshot_date ascending; each row carries snapshot_date / observed_at / data_age_hours / current / band / record_hash"
},
"_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"
},
"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"
}
},
"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/history-series",
"priceUsdNumber": 0.09
}
},
"description": "[TIME SERIES EXPORT] Full retained series for one signal and entity (?days=, ?format=json or csv): every snapshot up to days (default 400, cap 1000) with snapshot_date, observed_at, data_age_hours, current, band and record_hash. For research, actuarial and base-rate work. Free 7-snapshot shape preview at /gauge/history-preview. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.09 per call.",
"outputSchema": {
"input": {
"type": "http",
"method": "GET",
"example": {
"entity": "07010000",
"signal_id": "hydrology.river-level"
},
"required": [
"signal_id",
"entity"
],
"properties": {
"days": {
"type": "string",
"description": "optional - lookback window in days; default 400, minimum 1, capped at 1000. Windows are UTC days (snapshot_date), not local days"
},
"entity": {
"type": "string",
"examples": [
"07010000"
],
"description": "required - object id within that line, e.g. 07010000 (see /gauge/coverage)"
},
"format": {
"type": "string",
"description": "optional - json (default) or csv"
},
"signal_id": {
"type": "string",
"examples": [
"hydrology.river-level"
],
"description": "required - line id, e.g. hydrology.river-level (see /gauge/coverage)"
}
},
"queryParams": {
"days": "optional - lookback window in days; default 400, minimum 1, capped at 1000. Windows are UTC days (snapshot_date), not local days",
"entity": "required - object id within that line, e.g. 07010000 (see /gauge/coverage)",
"format": "optional - json (default) or csv",
"signal_id": "required - line id, e.g. hydrology.river-level (see /gauge/coverage)"
},
"discoverable": true,
"exampleRequest": "/gauge/history-series?signal_id=hydrology.river-level&entity=07010000"
},
"output": {
"type": "object",
"required": [
"count",
"series"
],
"properties": {
"days": {
"type": "integer",
"description": "Days actually covered (capped at 1000)"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"tier": {
"type": "string",
"description": "Always the literal \"history-series\""
},
"count": {
"type": "integer",
"description": "Number of rows in series"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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"
},
"format": {
"enum": [
"json",
"csv"
],
"type": "string"
},
"nature": {
"type": "string",
"description": "Neutrality statement: GAUGE supplies observations and trend description only - no judgement, no prediction, no recommendation"
},
"series": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "CORE DELIVERY: the full time series for this (signal_id, entity) pair, snapshot_date ascending; each row carries snapshot_date / observed_at / data_age_hours / current / band / record_hash"
},
"_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"
},
"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"
}
},
"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": "90000",
"maxTimeoutSeconds": 300
}
],
"x402Version": 1
},
{
"hint": {
"miss": "missing_parameter",
"usage": "/mcp/server?name=<value>",
"preview": "/mcp/preview",
"missing_params": [
"name"
],
"example_request": "/mcp/server?name=0580iris-lang-x711"
},
"error": "Missing required query parameter(s): name. A request you can run right now: GET /mcp/server?name=0580iris-lang-x711\nX-PAYMENT header is required",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "10000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/mcp/server",
"extensions": {
"bazaar": {
"info": {
"input": {
"type": "http",
"method": "GET",
"queryParams": {
"name": "required - MCP server id; samples at free /mcp/preview (sample_ids)"
}
},
"output": {
"type": "json",
"example": {
"entity": "(unlocked on payment)",
"current": {
"name": "x711",
"status": "active",
"missing_streak": 0
},
"lifecycle": {
"basis": "Imported from the surviving registry (2026-07-25); state is derived from status + missing_streak, 7 consecutive disap...",
"state": "operating",
"last_seen": "2026-07-08",
"first_seen": "2026-07-07",
"lifespan_days": 1,
"missing_streak": 0
},
"signal_id": "mcp.server-census",
"source_ref": "https://github.com/modelcontextprotocol",
"entity_name": "(unlocked on payment)",
"observed_at": "2026-07-08T00:00:00.000Z",
"record_hash": "sha256:051650e9a2042e4530442ff7b73a6d8b4d9e943c109994f61a5c92a760e3068f",
"source_tier": "T2-observable",
"snapshot_date": "2026-07-08",
"data_age_hours": 422,
"hash_core_version": 4
}
}
},
"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": [
"name"
],
"properties": {
"name": {
"type": "string",
"examples": [
"0580iris-lang-x711"
],
"description": "required - MCP server id; samples at free /mcp/preview (sample_ids)"
}
},
"additionalProperties": false
}
}
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"const": "json"
},
"example": {}
}
}
}
},
"priceUsd": "$0.01",
"discoverable": true,
"outputSchema": {
"type": "object",
"required": [
"server_id",
"status"
],
"properties": {
"name": {
"type": [
"string",
"null"
]
},
"status": {
"type": [
"string",
"null"
]
},
"lifecycle": {
"type": [
"object",
"null"
]
},
"server_id": {
"type": "string"
},
"source_ref": {
"type": [
"string",
"null"
]
},
"observed_at": {
"type": "string",
"format": "date-time"
},
"record_hash": {
"type": [
"string",
"null"
]
},
"source_note": {
"type": "string"
},
"source_tier": {
"type": [
"string",
"null"
]
},
"capture_date": {
"type": "string",
"format": "date"
},
"data_age_hours": {
"type": "number"
},
"missing_streak": {
"type": [
"integer",
"null"
]
},
"hash_core_version": {
"type": [
"string",
"null"
]
},
"unavailable_fields": {
"type": "array",
"description": "DEGRADED DELIVERY: fields with no data because the original collector stopped running (prominence / maturity / stars / downloads)"
},
"unavailable_reason": {
"type": "string"
}
}
},
"routeTemplate": "/mcp/server",
"priceUsdNumber": 0.01
}
},
"description": "[SIGNAL+PROOF] Census record for one MCP server (?name=): status, missing_streak, lifecycle, record_hash. DEGRADED DELIVERY, see unavailable_fields - prominence, maturity, github_stars, downloads and source_code_url have no data because the original collector stopped. Snapshot 2026-07-08. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.01 per call.",
"outputSchema": {
"input": {
"type": "http",
"method": "GET",
"example": {
"name": "0580iris-lang-x711"
},
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"examples": [
"0580iris-lang-x711"
],
"description": "required - MCP server id; samples at free /mcp/preview (sample_ids)"
}
},
"queryParams": {
"name": "required - MCP server id; samples at free /mcp/preview (sample_ids)"
},
"discoverable": true,
"exampleRequest": "/mcp/server?name=0580iris-lang-x711"
},
"output": {
"type": "object",
"required": [
"server_id",
"status"
],
"properties": {
"name": {
"type": [
"string",
"null"
]
},
"status": {
"type": [
"string",
"null"
]
},
"lifecycle": {
"type": [
"object",
"null"
]
},
"server_id": {
"type": "string"
},
"source_ref": {
"type": [
"string",
"null"
]
},
"observed_at": {
"type": "string",
"format": "date-time"
},
"record_hash": {
"type": [
"string",
"null"
]
},
"source_note": {
"type": "string"
},
"source_tier": {
"type": [
"string",
"null"
]
},
"capture_date": {
"type": "string",
"format": "date"
},
"data_age_hours": {
"type": "number"
},
"missing_streak": {
"type": [
"integer",
"null"
]
},
"hash_core_version": {
"type": [
"string",
"null"
]
},
"unavailable_fields": {
"type": "array",
"description": "DEGRADED DELIVERY: fields with no data because the original collector stopped running (prominence / maturity / stars / downloads)"
},
"unavailable_reason": {
"type": "string"
}
}
}
},
"maxAmountRequired": "10000",
"maxTimeoutSeconds": 300
}
],
"x402Version": 1
},
{
"hint": {
"miss": "missing_parameter",
"usage": "/resolve?entity=<ticker|CIK>&form=<10-K|8-K|...>&cutoff=<ISO>[&event_class=1.03][&source_class=sec-edgar]",
"preview": "/resolve/preview",
"missing_params": [
"entity",
"form",
"cutoff"
],
"example_request": "/resolve?entity=AAPL&form=10-K&cutoff=2025-01-01"
},
"error": "Missing required query parameter(s): entity, form, cutoff. A request you can run right now: GET /resolve?entity=AAPL&form=10-K&cutoff=2025-01-01\nX-PAYMENT header is required",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "90000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/resolve",
"extensions": {
"bazaar": {
"info": {
"input": {
"type": "http",
"method": "GET",
"queryParams": {
"form": "required - filing type (e.g. 10-K, 8-K, NT 10-K, SC 13D, 4)",
"cutoff": "required - settlement cutoff, ISO 8601 (e.g. 2026-07-31 or 2026-07-31T23:59:59Z)",
"entity": "required - ticker or CIK (e.g. AAPL or 320193)",
"event_class": "optional - 8-K item (e.g. 1.03 bankruptcy)",
"source_class": "optional - defaults to sec-edgar (the only source in v0)",
"market_or_event": "optional - market/event label, echoed back verbatim"
}
},
"output": {
"type": "json"
}
},
"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": [
"entity",
"form",
"cutoff"
],
"properties": {
"form": {
"type": "string",
"examples": [
"10-K"
],
"description": "required - filing type (e.g. 10-K, 8-K, NT 10-K, SC 13D, 4)"
},
"cutoff": {
"type": "string",
"examples": [
"2025-01-01"
],
"description": "required - settlement cutoff, ISO 8601 (e.g. 2026-07-31 or 2026-07-31T23:59:59Z)"
},
"entity": {
"type": "string",
"examples": [
"AAPL"
],
"description": "required - ticker or CIK (e.g. AAPL or 320193)"
},
"event_class": {
"type": "string",
"description": "optional - 8-K item (e.g. 1.03 bankruptcy)"
},
"source_class": {
"type": "string",
"description": "optional - defaults to sec-edgar (the only source in v0)"
},
"market_or_event": {
"type": "string",
"description": "optional - market/event label, echoed back verbatim"
}
},
"additionalProperties": false
}
}
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"const": "json"
}
}
}
}
},
"priceUsd": "$0.09",
"discoverable": true,
"outputSchema": {
"type": "object",
"properties": {
"_citation": {
"type": "object"
},
"event_time": {
"type": [
"string",
"null"
]
},
"cutoff_time": {
"type": "string"
},
"disclosure_time": {
"type": [
"string",
"null"
]
},
"filed_by_cutoff": {
"type": [
"boolean",
"null"
]
},
"candidate_sources": {
"type": "array"
},
"resolution_status": {
"type": "string"
}
}
},
"routeTemplate": "/resolve",
"priceUsdNumber": 0.09
}
},
"description": "Settlement evidence v0 for prediction-market and dispute workflows: did an issuer file a given SEC EDGAR form before your cutoff? Returns THREE SEPARATED TIMES (event / disclosure / cutoff), a resolution_status of resolved, no_authoritative_source, ambiguous or conflicting, and candidate_sources. We describe the filing record; we never adjudicate the real-world event. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.09 per call.",
"outputSchema": {
"input": {
"type": "http",
"method": "GET",
"example": {
"form": "10-K",
"cutoff": "2025-01-01",
"entity": "AAPL"
},
"required": [
"entity",
"form",
"cutoff"
],
"properties": {
"form": {
"type": "string",
"examples": [
"10-K"
],
"description": "required - filing type (e.g. 10-K, 8-K, NT 10-K, SC 13D, 4)"
},
"cutoff": {
"type": "string",
"examples": [
"2025-01-01"
],
"description": "required - settlement cutoff, ISO 8601 (e.g. 2026-07-31 or 2026-07-31T23:59:59Z)"
},
"entity": {
"type": "string",
"examples": [
"AAPL"
],
"description": "required - ticker or CIK (e.g. AAPL or 320193)"
},
"event_class": {
"type": "string",
"description": "optional - 8-K item (e.g. 1.03 bankruptcy)"
},
"source_class": {
"type": "string",
"description": "optional - defaults to sec-edgar (the only source in v0)"
},
"market_or_event": {
"type": "string",
"description": "optional - market/event label, echoed back verbatim"
}
},
"queryParams": {
"form": "required - filing type (e.g. 10-K, 8-K, NT 10-K, SC 13D, 4)",
"cutoff": "required - settlement cutoff, ISO 8601 (e.g. 2026-07-31 or 2026-07-31T23:59:59Z)",
"entity": "required - ticker or CIK (e.g. AAPL or 320193)",
"event_class": "optional - 8-K item (e.g. 1.03 bankruptcy)",
"source_class": "optional - defaults to sec-edgar (the only source in v0)",
"market_or_event": "optional - market/event label, echoed back verbatim"
},
"discoverable": true,
"exampleRequest": "/resolve?entity=AAPL&form=10-K&cutoff=2025-01-01"
},
"output": {
"type": "object",
"properties": {
"_citation": {
"type": "object"
},
"event_time": {
"type": [
"string",
"null"
]
},
"cutoff_time": {
"type": "string"
},
"disclosure_time": {
"type": [
"string",
"null"
]
},
"filed_by_cutoff": {
"type": [
"boolean",
"null"
]
},
"candidate_sources": {
"type": "array"
},
"resolution_status": {
"type": "string"
}
}
}
},
"maxAmountRequired": "90000",
"maxTimeoutSeconds": 300
}
],
"x402Version": 1
},
{
"hint": {
"miss": "missing_parameter",
"usage": "/gauge/dependency-region?entity=<value>",
"preview": "/gauge/preview",
"missing_params": [
"entity"
],
"example_request": "/gauge/dependency-region?entity=openai-text-davinci-003&format=thin"
},
"error": "Missing required query parameter(s): entity. A request you can run right now: GET /gauge/dependency-region?entity=openai-text-davinci-003&format=thin\nX-PAYMENT header is required. This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10 — raise maxValue to at least 250000 atomic units, or your own client rejects this payment locally and no request ever reaches us. Do not want to raise it? A cheaper alternative you can run right now: GET /gauge?signal_id=hydrology.river-level&entity=07010000&format=thin ($0.01 USDC) - the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only.",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "250000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/gauge/dependency-region",
"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["
}
},
"output": {
"type": "json",
"example": {
"legs": {
"cascade": {
"band": "exposed",
"source_ref": "https://platform.openai.com/docs/deprecations",
"record_hash": "sha256:6994c98ef3317b95ba9c2b533b36f3b22b0b358bdccadd6b9e855570c39a8c90"
},
"lifecycle": {
"band": "ended",
"source_ref": "https://platform.openai.com/docs/deprecations",
"record_hash": "sha256:2f0f6e0b17d4155f8371f5d5e5b976ae9f4a4cd3b76fca82366dd4d0993a1308"
},
"deprecation": {
"band": "sunset-scheduled",
"source_ref": "https://platform.openai.com/docs/deprecations",
"record_hash": "sha256:cf135f73c6c5189a5518471108f344f5a35f0b1e4dd339bfa2905dd768335c60"
}
},
"name": "OpenAI - text-davinci-003 (GPT-3.5 completions)",
"grade": "screening-level, not decision-grade",
"scope": {
"full": "https://api.truthbear.co/scope/v1",
"verifiability": "unknown",
"monitoring_not_forecast": true,
"intelligence_not_command": true
},
"entity": "openai-text-davinci-003",
"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.",
"provenance": {
"freshness": "recent",
"age_hours_now": 120,
"freshness_basis": "cadence=default; fresh<=24h; recent<=192h; dead_source>1440h; age_basis=request-time(now minus observed_at)"
}
}
}
},
"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": [
"entity"
],
"properties": {
"entity": {
"type": "string",
"examples": [
"openai-text-davinci-003",
"openai-davinci-gpt3-base",
"openai-code-davinci-002",
"openai-gpt-4-vision-preview",
"openai-gpt-3.5-turbo-0301",
"openai-gpt-4-32k"
],
"description": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]",
"x-accepted-values": {
"all": "https://api.truthbear.co/schemas/gauge-dependency-region.input.json",
"shown": 6,
"total": 20
}
}
},
"additionalProperties": false
}
}
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"const": "json"
},
"example": {}
}
}
}
},
"priceUsd": "$0.25",
"discoverable": true,
"outputSchema": {
"type": "object",
"required": [
"nature",
"legs"
],
"properties": {
"legs": {
"type": "object",
"description": "CORE DELIVERY: per-leg readings, keyed by leg name (e.g. drought/heat/crop-vhi); each value carries signal_id/current/observed_at/data_age_hours/record_hash"
},
"name": {
"type": [
"string",
"null"
],
"description": "Human-readable name of the object"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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": "The object key of this bundle - the ?entity= you passed in"
},
"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"
},
"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"
},
"data_timespans": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Per-leg observation time and hours elapsed since"
},
"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"
},
"cross_line_narrative": {
"type": "string",
"description": "Cross-line comparison narrative (purely descriptive; no judgement, no prediction)"
}
},
"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/dependency-region",
"priceUsdNumber": 0.25
}
},
"description": "[3-LEG] AI dependency chain, one dependency (?entity=openai-text-davinci-003): leading deprecation notices INCLUDING the sunset date the publisher itself scheduled -> current current availability -> realized lifecycle to deprecation, days alive (confirmation gate). A chain, not one reading: confidence = how many legs are lit, in order. Sources: vendor notices, source URL per record. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call.",
"outputSchema": {
"input": {
"type": "http",
"method": "GET",
"example": {
"entity": "openai-text-davinci-003",
"format": "thin"
},
"required": [
"entity"
],
"properties": {
"entity": {
"type": "string",
"examples": [
"openai-text-davinci-003",
"openai-davinci-gpt3-base",
"openai-code-davinci-002",
"openai-gpt-4-vision-preview",
"openai-gpt-3.5-turbo-0301",
"openai-gpt-4-32k"
],
"description": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]",
"x-accepted-values": {
"all": "https://api.truthbear.co/schemas/gauge-dependency-region.input.json",
"shown": 6,
"total": 20
}
}
},
"queryParams": {
"entity": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]"
},
"discoverable": true,
"exampleRequest": "/gauge/dependency-region?entity=openai-text-davinci-003&format=thin"
},
"output": {
"type": "object",
"required": [
"nature",
"legs"
],
"properties": {
"legs": {
"type": "object",
"description": "CORE DELIVERY: per-leg readings, keyed by leg name (e.g. drought/heat/crop-vhi); each value carries signal_id/current/observed_at/data_age_hours/record_hash"
},
"name": {
"type": [
"string",
"null"
],
"description": "Human-readable name of the object"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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": "The object key of this bundle - the ?entity= you passed in"
},
"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"
},
"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"
},
"data_timespans": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Per-leg observation time and hours elapsed since"
},
"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"
},
"cross_line_narrative": {
"type": "string",
"description": "Cross-line comparison narrative (purely descriptive; no judgement, no prediction)"
}
},
"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": "250000",
"maxTimeoutSeconds": 300
}
],
"client_hint": {
"action": "This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10. Raise your client maxValue to at least required_atomic; otherwise the payment is rejected locally inside your own client and never reaches this server, so you will see no error from us.",
"reason": "price_above_default_client_max_value",
"example": "wrapFetchWithPayment(fetch, account, BigInt(250000)) // atomic units, USDC 6dp",
"required_usdc": "0.25",
"required_atomic": "250000",
"within_your_budget": [
{
"try": "/gauge?signal_id=hydrology.river-level&entity=07010000&format=thin",
"gets": "the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only",
"path": "/gauge",
"usdc": "0.01"
}
],
"default_client_max_atomic": "100000"
},
"x402Version": 1
},
{
"hint": {
"miss": "missing_parameter",
"usage": "/gauge/region?loc=<value>",
"preview": "/gauge/preview",
"missing_params": [
"loc"
],
"example_request": "/gauge/region?loc=us-stlouis&format=thin"
},
"error": "Missing required query parameter(s): loc. A request you can run right now: GET /gauge/region?loc=us-stlouis&format=thin\nX-PAYMENT header is required. This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10 — raise maxValue to at least 250000 atomic units, or your own client rejects this payment locally and no request ever reaches us. Do not want to raise it? A cheaper alternative you can run right now: GET /gauge?signal_id=hydrology.river-level&entity=07010000&format=thin ($0.01 USDC) - the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only.",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "250000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/gauge/region",
"extensions": {
"bazaar": {
"info": {
"input": {
"type": "http",
"method": "GET",
"queryParams": {
"loc": "required - location id; full list at free /gauge/preview"
}
},
"output": {
"type": "json",
"example": {
"legs": {
"air": {
"airquality.aqi": {
"band": "below_moderate",
"source_ref": "https://open-meteo.com/en/docs/air-quality-api(Copernicus CAMS)",
"record_hash": "sha256:614778264bba65021acbc1bf522d5f2b4f22599190614bed03c2139a96bd7a31"
},
"airquality.pm25": {
"band": "below_moderate",
"source_ref": "https://open-meteo.com/en/docs/air-quality-api(Copernicus CAMS)",
"record_hash": "sha256:2df3210c2a75ac7b1e5652c45649b7d1d3014400338096edd32d3f0afe1e330d"
}
},
"river": {
"band": "below_action",
"source_ref": "https://waterdata.usgs.gov/monitoring-location/07010000/",
"record_hash": "sha256:a3986d8689a1d9f6e8b4b92c2318d5af64291cdedbdbd3d706e0049e16fcb42e"
},
"precipitation": {
"precipitation.daily": {
"band": "below_moderate",
"source_ref": "https://open-meteo.com/en/docs(ECMWF / archive ERA5)",
"record_hash": "sha256:011f2bf5882fc9bdef3eb11a4ad2fadb13e99edc45e1628efed88d899715cb53"
},
"precipitation.wetness30d": {
"band": "unrated",
"source_ref": "https://open-meteo.com/en/docs(ECMWF / archive ERA5)",
"record_hash": "sha256:cecdb2c3f4fe8e3c7bbf73b735b99d0396fb19564cbe6c80cb09dde3ef3fa1f8"
}
}
},
"name": "St. Louis, MO",
"grade": "screening-level, not decision-grade",
"scope": {
"full": "https://api.truthbear.co/scope/v1",
"verifiability": "unknown",
"monitoring_not_forecast": true,
"intelligence_not_command": true
},
"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.",
"location": "us-stlouis",
"provenance": {
"freshness": "fresh",
"age_hours_now": 15,
"freshness_basis": "cadence=default; fresh<=24h; recent<=192h; dead_source>1440h; age_basis=request-time(now minus observed_at)"
}
}
}
},
"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": [
"loc"
],
"properties": {
"loc": {
"type": "string",
"examples": [
"us-stlouis",
"us-memphis",
"us-losangeles",
"us-fresno",
"us-phoenix",
"us-denver"
],
"description": "required - location id; full list at free /gauge/preview",
"x-accepted-values": {
"all": "https://api.truthbear.co/schemas/gauge-region.input.json",
"shown": 6,
"total": 12
}
}
},
"additionalProperties": false
}
}
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"const": "json"
},
"example": {}
}
}
}
},
"priceUsd": "$0.25",
"discoverable": true,
"outputSchema": {
"type": "object",
"required": [
"nature",
"legs"
],
"properties": {
"legs": {
"type": "object",
"description": "CORE DELIVERY: per-leg readings, keyed by leg name (e.g. drought/heat/crop-vhi); each value carries signal_id/current/observed_at/data_age_hours/record_hash"
},
"name": {
"type": [
"string",
"null"
],
"description": "Human-readable name of the object"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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"
},
"nature": {
"type": "string",
"description": "Neutrality statement: GAUGE supplies observations and trend description only - no judgement, no prediction, no recommendation"
},
"location": {
"type": "string",
"description": "The location key of this bundle - the ?loc= you passed in"
},
"_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"
},
"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"
},
"data_timespans": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Per-leg observation time and hours elapsed since"
},
"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"
},
"cross_line_narrative": {
"type": "string",
"description": "Cross-line comparison narrative (purely descriptive; no judgement, no prediction)"
}
},
"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/region",
"priceUsdNumber": 0.25
}
},
"description": "[3-LEG] Local three-leg environment chain, one location (?loc=): leading air quality (AQI) -> current precipitation, rain and 30-day dry-wet -> realized nearest river stage and streamflow (confirmation gate). A chain, not one reading: confidence = how many legs are lit, in order. Sources: EPA/CAMS, ERA5, USGS. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call.",
"outputSchema": {
"input": {
"type": "http",
"method": "GET",
"example": {
"loc": "us-stlouis",
"format": "thin"
},
"required": [
"loc"
],
"properties": {
"loc": {
"type": "string",
"examples": [
"us-stlouis",
"us-memphis",
"us-losangeles",
"us-fresno",
"us-phoenix",
"us-denver"
],
"description": "required - location id; full list at free /gauge/preview",
"x-accepted-values": {
"all": "https://api.truthbear.co/schemas/gauge-region.input.json",
"shown": 6,
"total": 12
}
}
},
"queryParams": {
"loc": "required - location id; full list at free /gauge/preview"
},
"discoverable": true,
"exampleRequest": "/gauge/region?loc=us-stlouis&format=thin"
},
"output": {
"type": "object",
"required": [
"nature",
"legs"
],
"properties": {
"legs": {
"type": "object",
"description": "CORE DELIVERY: per-leg readings, keyed by leg name (e.g. drought/heat/crop-vhi); each value carries signal_id/current/observed_at/data_age_hours/record_hash"
},
"name": {
"type": [
"string",
"null"
],
"description": "Human-readable name of the object"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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"
},
"nature": {
"type": "string",
"description": "Neutrality statement: GAUGE supplies observations and trend description only - no judgement, no prediction, no recommendation"
},
"location": {
"type": "string",
"description": "The location key of this bundle - the ?loc= you passed in"
},
"_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"
},
"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"
},
"data_timespans": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Per-leg observation time and hours elapsed since"
},
"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"
},
"cross_line_narrative": {
"type": "string",
"description": "Cross-line comparison narrative (purely descriptive; no judgement, no prediction)"
}
},
"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": "250000",
"maxTimeoutSeconds": 300
}
],
"client_hint": {
"action": "This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10. Raise your client maxValue to at least required_atomic; otherwise the payment is rejected locally inside your own client and never reaches this server, so you will see no error from us.",
"reason": "price_above_default_client_max_value",
"example": "wrapFetchWithPayment(fetch, account, BigInt(250000)) // atomic units, USDC 6dp",
"required_usdc": "0.25",
"required_atomic": "250000",
"within_your_budget": [
{
"try": "/gauge?signal_id=hydrology.river-level&entity=07010000&format=thin",
"gets": "the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only",
"path": "/gauge",
"usdc": "0.01"
}
],
"default_client_max_atomic": "100000"
},
"x402Version": 1
},
{
"error": "X-PAYMENT header is required",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "90000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/gauge/macro-reconcile-full",
"extensions": {
"bazaar": {
"info": {
"input": {
"type": "http",
"method": "GET"
},
"output": {
"type": "json"
}
},
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method"
],
"properties": {
"type": {
"const": "http"
},
"method": {
"enum": [
"GET"
],
"type": "string"
}
}
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"const": "json"
}
}
}
}
},
"priceUsd": "$0.09",
"discoverable": true,
"outputSchema": {
"type": "object",
"required": [
"reconcile"
],
"properties": {
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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"
},
"nature": {
"type": "string",
"description": "Neutrality statement: GAUGE supplies observations and trend description only - no judgement, no prediction, no recommendation"
},
"product": {
"type": "string",
"description": "Product marker (macro reconciliation - market-implied vs official-realized)"
},
"_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"
},
"reconcile": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "CORE DELIVERY: metric-by-metric alignment; each row carries metric / kalshi_series / official_realized{value,kind,unit,period,source,age_hours} / market_implied / the divergence between them"
},
"disclaimer": {
"type": "string",
"description": "Statement of the difference in kind between market-implied and officially-realized values"
}
},
"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/macro-reconcile-full",
"priceUsdNumber": 0.09
}
},
"description": "[RECONCILIATION] Market-implied against officially-realized, side by side: Kalshi implied levels versus BLS official prints, aligned indicator by indicator, with the divergence quantified. The alignment key is returned so you can verify the pairing yourself. We show both numbers and the gap - the reading is yours. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.09 per call.",
"outputSchema": {
"input": {
"type": "http",
"method": "GET",
"required": [],
"properties": {},
"queryParams": {},
"discoverable": true
},
"output": {
"type": "object",
"required": [
"reconcile"
],
"properties": {
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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"
},
"nature": {
"type": "string",
"description": "Neutrality statement: GAUGE supplies observations and trend description only - no judgement, no prediction, no recommendation"
},
"product": {
"type": "string",
"description": "Product marker (macro reconciliation - market-implied vs official-realized)"
},
"_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"
},
"reconcile": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "CORE DELIVERY: metric-by-metric alignment; each row carries metric / kalshi_series / official_realized{value,kind,unit,period,source,age_hours} / market_implied / the divergence between them"
},
"disclaimer": {
"type": "string",
"description": "Statement of the difference in kind between market-implied and officially-realized values"
}
},
"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": "90000",
"maxTimeoutSeconds": 300
}
],
"x402Version": 1
},
{
"hint": {
"miss": "missing_parameter",
"usage": "/gauge/precip?loc=<value>",
"preview": "/gauge/preview",
"missing_params": [
"loc"
],
"example_request": "/gauge/precip?loc=us-stlouis"
},
"error": "Missing required query parameter(s): loc. A request you can run right now: GET /gauge/precip?loc=us-stlouis\nX-PAYMENT header is required",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "5000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/gauge/precip",
"extensions": {
"bazaar": {
"info": {
"input": {
"type": "http",
"method": "GET",
"queryParams": {
"loc": "required - location id; full list at free /gauge/preview"
}
},
"output": {
"type": "json"
}
},
"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": [
"loc"
],
"properties": {
"loc": {
"type": "string",
"examples": [
"us-stlouis",
"us-memphis",
"us-losangeles",
"us-fresno",
"us-phoenix",
"us-denver"
],
"description": "required - location id; full list at free /gauge/preview",
"x-accepted-values": {
"all": "https://api.truthbear.co/schemas/gauge-precip.input.json",
"shown": 6,
"total": 12
}
}
},
"additionalProperties": false
}
}
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"const": "json"
}
}
}
}
},
"priceUsd": "$0.005",
"discoverable": true,
"outputSchema": {
"type": "object",
"required": [
"nature",
"readings"
],
"properties": {
"line": {
"type": "string",
"description": "The line this bundle belongs to (e.g. airquality)"
},
"name": {
"type": [
"string",
"null"
],
"description": "Human-readable name of the object"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"addon": {
"enum": [
"air",
"precip"
],
"type": "string",
"description": "Conditional - returned only by the /gauge/air and /gauge/precip sub-endpoints: the add-on line marker"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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"
},
"nature": {
"type": "string",
"description": "Neutrality statement: GAUGE supplies observations and trend description only - no judgement, no prediction, no recommendation"
},
"location": {
"type": "string",
"description": "The location key of this bundle - the ?loc= you passed in"
},
"readings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"change": {
"type": [
"object",
"null"
],
"description": "Change, nested per metric: change.<metric> = {delta, direction, direction_reason?}, plus the scalar change.period (e.g. \"vs_previous\"). direction is one of rising/falling/stable/unknown - unknown means the direction CANNOT BE DETERMINED, it does not mean stable; in that case direction_reason carries a machine-readable cause: no-previous-record / metric-absent-in-previous / metric-absent-in-current / non-numeric-value"
},
"entity": {
"type": "string",
"description": "Monitored object id (e.g. btc / us / hormuz); full list at free /gauge/catalog or /gauge/preview"
},
"strata": {
"type": [
"object",
"null"
],
"description": "Statistical strata: share of each official band over the last 5 same-season years plus the band the current value falls in; null when there are no statistics"
},
"current": {
"type": [
"object",
"null"
],
"description": "Current reading. The inner metric structure varies by signal (crypto -> {price_usd, volume_24h, ...}; shipping -> {wind_kmh, wave_height_m, ...}). Units are carried in the field-name suffix; see also standard_ruler.unit"
},
"sources": {
"type": [
"array",
"null"
],
"items": {
"type": "object"
},
"description": "Source list [{name, value, weight, as_of, role, independent, relay_of?}]. independent:true = confirmed independent source; false = confirmed relay channel of another source (relay_of names the origin); null = independence unconfirmed (neither denied nor claimed). name/weight/independent/relay_of are record_hash core fields, so tampering with an independence claim breaks self-verification; as_of/value/role drift easily and are not hashed"
},
"previous": {
"type": [
"object",
"null"
],
"description": "Previous-period reading (a subset of the metrics in current; or {note} explaining that there is no previous value)"
},
"trend_7d": {
"type": [
"array",
"null"
],
"items": {
"type": "object"
},
"description": "Array of the last 7 trend points; [] means this signal has no series yet or the series does not apply - it is not an error"
},
"lifecycle": {
"type": [
"object",
"null"
],
"description": "Lifecycle block (state / birth_at / end_at / death_type / context). Part of the record_hash v3 core, so offline recomputation must include it; null for non-lifecycle lines"
},
"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"
},
"ots_status": {
"type": [
"string",
"null"
],
"description": "RETIRED FIELD - always \"pending\" or null; this field is no longer updated and is kept only for older parsers. Anchoring is done per write-batch (previously one root per day): each batch of writes gets a Merkle root stamped via OpenTimestamps, typically confirmed into a Bitcoin block within hours. See GET /gauge/anchor?hash= for the inclusion proof and the block number."
},
"source_ref": {
"type": [
"string",
"null"
],
"description": "Official source URL (provenance)"
},
"stat_ruler": {
"type": [
"object",
"null"
],
"description": "Statistical ruler: empirical percentile position across the last 5 same-season years; null when there are no statistics"
},
"summary_zh": {
"type": [
"string",
"null"
],
"description": "Human-readable one-line summary, IN CHINESE (zh-TW): reading + where it sits on the official ruler + statistical position. This is the HUMAN front-desk copy - machine consumers should read summary_en (English verdict) instead"
},
"unverified": {
"type": "boolean",
"description": "true = the source is untiered (source_tier is null); buyers and agents can filter on this"
},
"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)"
},
"source_tier": {
"type": [
"string",
"null"
],
"description": "Source tier: T1 (first-hand official) / T2 or T2-<subtype, e.g. T2-exchange> (observable, curated) / screen-viewpoint; null = untiered (see unverified)"
},
"snapshot_date": {
"type": "string",
"description": "ISO-8601 date-time in UTC (e.g. 2026-07-24T00:00:00.000Z; aligned to midnight of that day)"
},
"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"
},
"standard_ruler": {
"type": [
"object",
"null"
],
"description": "Official standard ruler (band / thresholds / normalized_index / pct_to_action, with unit and provenance); null when the line has no official ruler. Inner structure varies by signal"
},
"hash_core_version": {
"type": [
"integer",
"null"
],
"description": "Core-contract version of record_hash (currently 3); use it to pick the right core composition when recomputing offline"
},
"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
},
"description": "CORE DELIVERY of this endpoint: multiple signal readings for the same location. Per-row shape is in items - the single-signal fields live INSIDE items, not at the top level"
},
"_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"
},
"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"
},
"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"
}
},
"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/precip",
"priceUsdNumber": 0.005
}
},
"description": "Add-on, precipitation for one location: daily rainfall plus 30-day accumulated wet-dry drought context from ERA5. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. Every record carries an offline-recomputable record_hash. $0.0050 per call.",
"outputSchema": {
"input": {
"type": "http",
"method": "GET",
"example": {
"loc": "us-stlouis"
},
"required": [
"loc"
],
"properties": {
"loc": {
"type": "string",
"examples": [
"us-stlouis",
"us-memphis",
"us-losangeles",
"us-fresno",
"us-phoenix",
"us-denver"
],
"description": "required - location id; full list at free /gauge/preview",
"x-accepted-values": {
"all": "https://api.truthbear.co/schemas/gauge-precip.input.json",
"shown": 6,
"total": 12
}
}
},
"queryParams": {
"loc": "required - location id; full list at free /gauge/preview"
},
"discoverable": true,
"exampleRequest": "/gauge/precip?loc=us-stlouis"
},
"output": {
"type": "object",
"required": [
"nature",
"readings"
],
"properties": {
"line": {
"type": "string",
"description": "The line this bundle belongs to (e.g. airquality)"
},
"name": {
"type": [
"string",
"null"
],
"description": "Human-readable name of the object"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"addon": {
"enum": [
"air",
"precip"
],
"type": "string",
"description": "Conditional - returned only by the /gauge/air and /gauge/precip sub-endpoints: the add-on line marker"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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"
},
"nature": {
"type": "string",
"description": "Neutrality statement: GAUGE supplies observations and trend description only - no judgement, no prediction, no recommendation"
},
"location": {
"type": "string",
"description": "The location key of this bundle - the ?loc= you passed in"
},
"readings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"change": {
"type": [
"object",
"null"
],
"description": "Change, nested per metric: change.<metric> = {delta, direction, direction_reason?}, plus the scalar change.period (e.g. \"vs_previous\"). direction is one of rising/falling/stable/unknown - unknown means the direction CANNOT BE DETERMINED, it does not mean stable; in that case direction_reason carries a machine-readable cause: no-previous-record / metric-absent-in-previous / metric-absent-in-current / non-numeric-value"
},
"entity": {
"type": "string",
"description": "Monitored object id (e.g. btc / us / hormuz); full list at free /gauge/catalog or /gauge/preview"
},
"strata": {
"type": [
"object",
"null"
],
"description": "Statistical strata: share of each official band over the last 5 same-season years plus the band the current value falls in; null when there are no statistics"
},
"current": {
"type": [
"object",
"null"
],
"description": "Current reading. The inner metric structure varies by signal (crypto -> {price_usd, volume_24h, ...}; shipping -> {wind_kmh, wave_height_m, ...}). Units are carried in the field-name suffix; see also standard_ruler.unit"
},
"sources": {
"type": [
"array",
"null"
],
"items": {
"type": "object"
},
"description": "Source list [{name, value, weight, as_of, role, independent, relay_of?}]. independent:true = confirmed independent source; false = confirmed relay channel of another source (relay_of names the origin); null = independence unconfirmed (neither denied nor claimed). name/weight/independent/relay_of are record_hash core fields, so tampering with an independence claim breaks self-verification; as_of/value/role drift easily and are not hashed"
},
"previous": {
"type": [
"object",
"null"
],
"description": "Previous-period reading (a subset of the metrics in current; or {note} explaining that there is no previous value)"
},
"trend_7d": {
"type": [
"array",
"null"
],
"items": {
"type": "object"
},
"description": "Array of the last 7 trend points; [] means this signal has no series yet or the series does not apply - it is not an error"
},
"lifecycle": {
"type": [
"object",
"null"
],
"description": "Lifecycle block (state / birth_at / end_at / death_type / context). Part of the record_hash v3 core, so offline recomputation must include it; null for non-lifecycle lines"
},
"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"
},
"ots_status": {
"type": [
"string",
"null"
],
"description": "RETIRED FIELD - always \"pending\" or null; this field is no longer updated and is kept only for older parsers. Anchoring is done per write-batch (previously one root per day): each batch of writes gets a Merkle root stamped via OpenTimestamps, typically confirmed into a Bitcoin block within hours. See GET /gauge/anchor?hash= for the inclusion proof and the block number."
},
"source_ref": {
"type": [
"string",
"null"
],
"description": "Official source URL (provenance)"
},
"stat_ruler": {
"type": [
"object",
"null"
],
"description": "Statistical ruler: empirical percentile position across the last 5 same-season years; null when there are no statistics"
},
"summary_zh": {
"type": [
"string",
"null"
],
"description": "Human-readable one-line summary, IN CHINESE (zh-TW): reading + where it sits on the official ruler + statistical position. This is the HUMAN front-desk copy - machine consumers should read summary_en (English verdict) instead"
},
"unverified": {
"type": "boolean",
"description": "true = the source is untiered (source_tier is null); buyers and agents can filter on this"
},
"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)"
},
"source_tier": {
"type": [
"string",
"null"
],
"description": "Source tier: T1 (first-hand official) / T2 or T2-<subtype, e.g. T2-exchange> (observable, curated) / screen-viewpoint; null = untiered (see unverified)"
},
"snapshot_date": {
"type": "string",
"description": "ISO-8601 date-time in UTC (e.g. 2026-07-24T00:00:00.000Z; aligned to midnight of that day)"
},
"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"
},
"standard_ruler": {
"type": [
"object",
"null"
],
"description": "Official standard ruler (band / thresholds / normalized_index / pct_to_action, with unit and provenance); null when the line has no official ruler. Inner structure varies by signal"
},
"hash_core_version": {
"type": [
"integer",
"null"
],
"description": "Core-contract version of record_hash (currently 3); use it to pick the right core composition when recomputing offline"
},
"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
},
"description": "CORE DELIVERY of this endpoint: multiple signal readings for the same location. Per-row shape is in items - the single-signal fields live INSIDE items, not at the top level"
},
"_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"
},
"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"
},
"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"
}
},
"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
}
],
"x402Version": 1
},
{
"hint": {
"miss": "missing_parameter",
"usage": "/gauge/census?signal_id=<value>",
"preview": "/gauge/preview",
"missing_params": [
"signal_id"
],
"example_request": "/gauge/census?signal_id=hydrology.river-level"
},
"error": "Missing required query parameter(s): signal_id. A request you can run right now: GET /gauge/census?signal_id=hydrology.river-level\nX-PAYMENT header is required",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "90000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/gauge/census",
"extensions": {
"bazaar": {
"info": {
"input": {
"type": "http",
"method": "GET",
"queryParams": {
"signal_id": "required - signal id (genus.species); free list at GET /gauge/catalog (paged; ?all=1 for every line)"
}
},
"output": {
"type": "json"
}
},
"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"
],
"properties": {
"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"
}
}
}
}
},
"priceUsd": "$0.09",
"discoverable": true,
"outputSchema": {
"type": "object",
"required": [
"count",
"rows"
],
"properties": {
"rows": {
"type": "array",
"items": {
"type": "object",
"properties": {
"change": {
"type": [
"object",
"null"
],
"description": "Change, nested per metric: change.<metric> = {delta, direction, direction_reason?}, plus the scalar change.period (e.g. \"vs_previous\"). direction is one of rising/falling/stable/unknown - unknown means the direction CANNOT BE DETERMINED, it does not mean stable; in that case direction_reason carries a machine-readable cause: no-previous-record / metric-absent-in-previous / metric-absent-in-current / non-numeric-value"
},
"entity": {
"type": "string",
"description": "Monitored object id (e.g. btc / us / hormuz); full list at free /gauge/catalog or /gauge/preview"
},
"strata": {
"type": [
"object",
"null"
],
"description": "Statistical strata: share of each official band over the last 5 same-season years plus the band the current value falls in; null when there are no statistics"
},
"current": {
"type": [
"object",
"null"
],
"description": "Current reading. The inner metric structure varies by signal (crypto -> {price_usd, volume_24h, ...}; shipping -> {wind_kmh, wave_height_m, ...}). Units are carried in the field-name suffix; see also standard_ruler.unit"
},
"sources": {
"type": [
"array",
"null"
],
"items": {
"type": "object"
},
"description": "Source list [{name, value, weight, as_of, role, independent, relay_of?}]. independent:true = confirmed independent source; false = confirmed relay channel of another source (relay_of names the origin); null = independence unconfirmed (neither denied nor claimed). name/weight/independent/relay_of are record_hash core fields, so tampering with an independence claim breaks self-verification; as_of/value/role drift easily and are not hashed"
},
"previous": {
"type": [
"object",
"null"
],
"description": "Previous-period reading (a subset of the metrics in current; or {note} explaining that there is no previous value)"
},
"trend_7d": {
"type": [
"array",
"null"
],
"items": {
"type": "object"
},
"description": "Array of the last 7 trend points; [] means this signal has no series yet or the series does not apply - it is not an error"
},
"lifecycle": {
"type": [
"object",
"null"
],
"description": "Lifecycle block (state / birth_at / end_at / death_type / context). Part of the record_hash v3 core, so offline recomputation must include it; null for non-lifecycle lines"
},
"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"
},
"ots_status": {
"type": [
"string",
"null"
],
"description": "RETIRED FIELD - always \"pending\" or null; this field is no longer updated and is kept only for older parsers. Anchoring is done per write-batch (previously one root per day): each batch of writes gets a Merkle root stamped via OpenTimestamps, typically confirmed into a Bitcoin block within hours. See GET /gauge/anchor?hash= for the inclusion proof and the block number."
},
"source_ref": {
"type": [
"string",
"null"
],
"description": "Official source URL (provenance)"
},
"stat_ruler": {
"type": [
"object",
"null"
],
"description": "Statistical ruler: empirical percentile position across the last 5 same-season years; null when there are no statistics"
},
"summary_zh": {
"type": [
"string",
"null"
],
"description": "Human-readable one-line summary, IN CHINESE (zh-TW): reading + where it sits on the official ruler + statistical position. This is the HUMAN front-desk copy - machine consumers should read summary_en (English verdict) instead"
},
"unverified": {
"type": "boolean",
"description": "true = the source is untiered (source_tier is null); buyers and agents can filter on this"
},
"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)"
},
"source_tier": {
"type": [
"string",
"null"
],
"description": "Source tier: T1 (first-hand official) / T2 or T2-<subtype, e.g. T2-exchange> (observable, curated) / screen-viewpoint; null = untiered (see unverified)"
},
"snapshot_date": {
"type": "string",
"description": "ISO-8601 date-time in UTC (e.g. 2026-07-24T00:00:00.000Z; aligned to midnight of that day)"
},
"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"
},
"standard_ruler": {
"type": [
"object",
"null"
],
"description": "Official standard ruler (band / thresholds / normalized_index / pct_to_action, with unit and provenance); null when the line has no official ruler. Inner structure varies by signal"
},
"hash_core_version": {
"type": [
"integer",
"null"
],
"description": "Core-contract version of record_hash (currently 3); use it to pick the right core composition when recomputing offline"
},
"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
},
"description": "CORE DELIVERY: latest readings for every object of one signal. Per-row shape is in items - the fields live INSIDE items, not at the top level"
},
"count": {
"type": "integer",
"description": "Number of rows (all objects for this signal)"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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"
},
"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"
}
},
"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/census",
"priceUsdNumber": 0.09
}
},
"description": "[BATCH+PROOF] All entities for one signal at their latest reading, with band, frequency_label and percentile columns so you can rank across stations and screen for the unusual in one call. Cross-station comparison is the point: one river gauge alone tells you little, 200 of them ranked by distance-to-action tells you a lot. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.09 per call.",
"outputSchema": {
"input": {
"type": "http",
"method": "GET",
"example": {
"signal_id": "hydrology.river-level"
},
"required": [
"signal_id"
],
"properties": {
"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": {
"signal_id": "required - signal id (genus.species); free list at GET /gauge/catalog (paged; ?all=1 for every line)"
},
"discoverable": true,
"exampleRequest": "/gauge/census?signal_id=hydrology.river-level"
},
"output": {
"type": "object",
"required": [
"count",
"rows"
],
"properties": {
"rows": {
"type": "array",
"items": {
"type": "object",
"properties": {
"change": {
"type": [
"object",
"null"
],
"description": "Change, nested per metric: change.<metric> = {delta, direction, direction_reason?}, plus the scalar change.period (e.g. \"vs_previous\"). direction is one of rising/falling/stable/unknown - unknown means the direction CANNOT BE DETERMINED, it does not mean stable; in that case direction_reason carries a machine-readable cause: no-previous-record / metric-absent-in-previous / metric-absent-in-current / non-numeric-value"
},
"entity": {
"type": "string",
"description": "Monitored object id (e.g. btc / us / hormuz); full list at free /gauge/catalog or /gauge/preview"
},
"strata": {
"type": [
"object",
"null"
],
"description": "Statistical strata: share of each official band over the last 5 same-season years plus the band the current value falls in; null when there are no statistics"
},
"current": {
"type": [
"object",
"null"
],
"description": "Current reading. The inner metric structure varies by signal (crypto -> {price_usd, volume_24h, ...}; shipping -> {wind_kmh, wave_height_m, ...}). Units are carried in the field-name suffix; see also standard_ruler.unit"
},
"sources": {
"type": [
"array",
"null"
],
"items": {
"type": "object"
},
"description": "Source list [{name, value, weight, as_of, role, independent, relay_of?}]. independent:true = confirmed independent source; false = confirmed relay channel of another source (relay_of names the origin); null = independence unconfirmed (neither denied nor claimed). name/weight/independent/relay_of are record_hash core fields, so tampering with an independence claim breaks self-verification; as_of/value/role drift easily and are not hashed"
},
"previous": {
"type": [
"object",
"null"
],
"description": "Previous-period reading (a subset of the metrics in current; or {note} explaining that there is no previous value)"
},
"trend_7d": {
"type": [
"array",
"null"
],
"items": {
"type": "object"
},
"description": "Array of the last 7 trend points; [] means this signal has no series yet or the series does not apply - it is not an error"
},
"lifecycle": {
"type": [
"object",
"null"
],
"description": "Lifecycle block (state / birth_at / end_at / death_type / context). Part of the record_hash v3 core, so offline recomputation must include it; null for non-lifecycle lines"
},
"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"
},
"ots_status": {
"type": [
"string",
"null"
],
"description": "RETIRED FIELD - always \"pending\" or null; this field is no longer updated and is kept only for older parsers. Anchoring is done per write-batch (previously one root per day): each batch of writes gets a Merkle root stamped via OpenTimestamps, typically confirmed into a Bitcoin block within hours. See GET /gauge/anchor?hash= for the inclusion proof and the block number."
},
"source_ref": {
"type": [
"string",
"null"
],
"description": "Official source URL (provenance)"
},
"stat_ruler": {
"type": [
"object",
"null"
],
"description": "Statistical ruler: empirical percentile position across the last 5 same-season years; null when there are no statistics"
},
"summary_zh": {
"type": [
"string",
"null"
],
"description": "Human-readable one-line summary, IN CHINESE (zh-TW): reading + where it sits on the official ruler + statistical position. This is the HUMAN front-desk copy - machine consumers should read summary_en (English verdict) instead"
},
"unverified": {
"type": "boolean",
"description": "true = the source is untiered (source_tier is null); buyers and agents can filter on this"
},
"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)"
},
"source_tier": {
"type": [
"string",
"null"
],
"description": "Source tier: T1 (first-hand official) / T2 or T2-<subtype, e.g. T2-exchange> (observable, curated) / screen-viewpoint; null = untiered (see unverified)"
},
"snapshot_date": {
"type": "string",
"description": "ISO-8601 date-time in UTC (e.g. 2026-07-24T00:00:00.000Z; aligned to midnight of that day)"
},
"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"
},
"standard_ruler": {
"type": [
"object",
"null"
],
"description": "Official standard ruler (band / thresholds / normalized_index / pct_to_action, with unit and provenance); null when the line has no official ruler. Inner structure varies by signal"
},
"hash_core_version": {
"type": [
"integer",
"null"
],
"description": "Core-contract version of record_hash (currently 3); use it to pick the right core composition when recomputing offline"
},
"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
},
"description": "CORE DELIVERY: latest readings for every object of one signal. Per-row shape is in items - the fields live INSIDE items, not at the top level"
},
"count": {
"type": "integer",
"description": "Number of rows (all objects for this signal)"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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"
},
"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"
}
},
"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": "90000",
"maxTimeoutSeconds": 300
}
],
"x402Version": 1
},
{
"error": "X-PAYMENT header is required",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "90000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/mcp/graveyard",
"extensions": {
"bazaar": {
"info": {
"input": {
"type": "http",
"method": "GET",
"queryParams": {
"verifiable": "optional - set to 1 to attach `_hash_core` per row (the canonical pre-image of the record_hash for that row) so you can "
}
},
"output": {
"type": "json",
"example": {
"entity": "(unlocked on payment)",
"current": {
"name": "x711",
"status": "active",
"missing_streak": 0
},
"lifecycle": {
"basis": "Imported from the surviving registry (2026-07-25); state is derived from status + missing_streak, 7 consecutive disap...",
"state": "operating",
"last_seen": "2026-07-08",
"first_seen": "2026-07-07",
"lifespan_days": 1,
"missing_streak": 0
},
"signal_id": "mcp.server-census",
"source_ref": "https://github.com/modelcontextprotocol",
"entity_name": "(unlocked on payment)",
"observed_at": "2026-07-08T00:00:00.000Z",
"record_hash": "sha256:051650e9a2042e4530442ff7b73a6d8b4d9e943c109994f61a5c92a760e3068f",
"source_tier": "T2-observable",
"snapshot_date": "2026-07-08",
"data_age_hours": 422,
"hash_core_version": 4
}
}
},
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method"
],
"properties": {
"type": {
"const": "http"
},
"method": {
"enum": [
"GET"
],
"type": "string"
},
"queryParams": {
"type": "object",
"properties": {
"verifiable": {
"type": "string",
"description": "optional - set to 1 to attach `_hash_core` per row (the canonical pre-image of the record_hash for that row) so you can recompute and verify fully offline; omitted by default to keep the payload small - for online verification use free GET /gauge/verify?hash="
}
},
"additionalProperties": false
}
}
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"const": "json"
},
"example": {}
}
}
}
},
"priceUsd": "$0.09",
"discoverable": true,
"outputSchema": {
"type": "object",
"properties": {
"count": {
"type": "integer"
},
"deaths": {
"type": "array"
},
"provenance": {
"type": "object",
"description": "Freshness and lineage: freshness / freshness_basis / age_hours_now / data_lineage, with the oldest row representing the whole batch"
},
"observed_at": {
"type": [
"string",
"null"
],
"description": "Observation time of the OLDEST row in this batch (ISO) - the most conservative basis"
},
"record_hash_verifiable": {
"type": "object"
}
}
},
"routeTemplate": "/mcp/graveyard",
"priceUsdNumber": 0.09
}
},
"description": "[BATCH+PROOF] MCP server graveyard - servers that vanished from the census. THRESHOLD stated plainly: listed on FIRST confirmed absence (confirm_absences=1), not multi-day confirmation; only two snapshot days exist. record_hash is null on these rows (imported from a surviving registry, the original collector never produced hashes). Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.09 per call.",
"outputSchema": {
"input": {
"type": "http",
"method": "GET",
"required": [],
"properties": {
"verifiable": {
"type": "string",
"description": "optional - set to 1 to attach `_hash_core` per row (the canonical pre-image of the record_hash for that row) so you can recompute and verify fully offline; omitted by default to keep the payload small - for online verification use free GET /gauge/verify?hash="
}
},
"queryParams": {
"verifiable": "optional - set to 1 to attach `_hash_core` per row (the canonical pre-image of the record_hash for that row) so you can recompute and verify fully offline; omitted by default to keep the payload small - for online verification use free GET /gauge/verify?hash="
},
"discoverable": true
},
"output": {
"type": "object",
"properties": {
"count": {
"type": "integer"
},
"deaths": {
"type": "array"
},
"provenance": {
"type": "object",
"description": "Freshness and lineage: freshness / freshness_basis / age_hours_now / data_lineage, with the oldest row representing the whole batch"
},
"observed_at": {
"type": [
"string",
"null"
],
"description": "Observation time of the OLDEST row in this batch (ISO) - the most conservative basis"
},
"record_hash_verifiable": {
"type": "object"
}
}
}
},
"maxAmountRequired": "90000",
"maxTimeoutSeconds": 300
}
],
"x402Version": 1
},
{
"hint": {
"miss": "missing_parameter",
"usage": "/stable/coin?symbol=<value>",
"preview": "/stable/preview",
"missing_params": [
"symbol"
],
"example_request": "/stable/coin?symbol=basis-cash-bac"
},
"error": "Missing required query parameter(s): symbol. A request you can run right now: GET /stable/coin?symbol=basis-cash-bac\nX-PAYMENT header is required",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "10000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/stable/coin",
"extensions": {
"bazaar": {
"info": {
"input": {
"type": "http",
"method": "GET",
"queryParams": {
"symbol": "required - stablecoin symbol; samples at free /stable/preview (sample_ids)"
}
},
"output": {
"type": "json",
"example": {
"entity": "basis-cash-bac",
"current": {
"state": "dead",
"ongoing": false,
"death_type": "depeg-abandoned",
"lifespan_days": 152
},
"lifecycle": {
"peg": "usd",
"state": "dead",
"end_at": "2021-05-01",
"issuer": "Basis Cash (anon)",
"context": "The algorithmic stablecoin BAC traded below USD 1 for a long period and never regained its peg; after the seigniorage...",
"ongoing": false,
"birth_at": "2020-11-30",
"mechanism": "algorithmic",
"death_type": "depeg-abandoned",
"lifespan_days": 152
},
"signal_id": "stablecoin.lifecycle",
"source_ref": "https://www.coingecko.com/en/coins/basis-cash",
"entity_name": "Basis Cash (BAC)",
"observed_at": "2026-08-24T15:00:00.121Z",
"record_hash": "sha256:664da5b5c8cc399928a3149a49732e15d67f66d69b683e1469c0ab9871d8d702",
"source_tier": "T1",
"snapshot_date": "2026-08-24",
"data_age_hours": 0,
"hash_core_version": 4
}
}
},
"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": [
"symbol"
],
"properties": {
"symbol": {
"type": "string",
"examples": [
"basis-cash-bac"
],
"description": "required - stablecoin symbol; samples at free /stable/preview (sample_ids)"
}
},
"additionalProperties": false
}
}
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"const": "json"
},
"example": {}
}
}
}
},
"priceUsd": "$0.01",
"discoverable": true,
"outputSchema": {
"type": "object",
"required": [
"coin_id",
"current"
],
"properties": {
"name": {
"type": "string"
},
"coin_id": {
"type": "string"
},
"current": {
"type": "object",
"description": "Latest observation for this coin; fields depend on the source (e.g. state / ongoing / death_type / lifespan_days)"
},
"companion": {
"type": "string",
"description": "Where to fetch companion signals such as depeg and redemption pressure"
},
"lifecycle": {
"type": [
"object",
"null"
],
"description": "Lifecycle: peg / state / first_seen / last_seen / end_at"
},
"source_ref": {
"type": [
"string",
"null"
]
},
"observed_at": {
"type": "string",
"format": "date-time"
},
"record_hash": {
"type": "string"
},
"source_tier": {
"type": [
"string",
"null"
]
},
"capture_date": {
"type": "string",
"format": "date"
},
"data_age_hours": {
"type": "number"
},
"hash_core_version": {
"type": "string"
}
}
},
"routeTemplate": "/stable/coin",
"priceUsdNumber": 0.01
}
},
"description": "[SIGNAL+PROOF] Census record for one stablecoin (?symbol=): market cap, price, depeg state, lifecycle and time series, each with record_hash. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.01 per call.",
"outputSchema": {
"input": {
"type": "http",
"method": "GET",
"example": {
"symbol": "basis-cash-bac"
},
"required": [
"symbol"
],
"properties": {
"symbol": {
"type": "string",
"examples": [
"basis-cash-bac"
],
"description": "required - stablecoin symbol; samples at free /stable/preview (sample_ids)"
}
},
"queryParams": {
"symbol": "required - stablecoin symbol; samples at free /stable/preview (sample_ids)"
},
"discoverable": true,
"exampleRequest": "/stable/coin?symbol=basis-cash-bac"
},
"output": {
"type": "object",
"required": [
"coin_id",
"current"
],
"properties": {
"name": {
"type": "string"
},
"coin_id": {
"type": "string"
},
"current": {
"type": "object",
"description": "Latest observation for this coin; fields depend on the source (e.g. state / ongoing / death_type / lifespan_days)"
},
"companion": {
"type": "string",
"description": "Where to fetch companion signals such as depeg and redemption pressure"
},
"lifecycle": {
"type": [
"object",
"null"
],
"description": "Lifecycle: peg / state / first_seen / last_seen / end_at"
},
"source_ref": {
"type": [
"string",
"null"
]
},
"observed_at": {
"type": "string",
"format": "date-time"
},
"record_hash": {
"type": "string"
},
"source_tier": {
"type": [
"string",
"null"
]
},
"capture_date": {
"type": "string",
"format": "date"
},
"data_age_hours": {
"type": "number"
},
"hash_core_version": {
"type": "string"
}
}
}
},
"maxAmountRequired": "10000",
"maxTimeoutSeconds": 300
}
],
"x402Version": 1
},
{
"hint": {
"miss": "missing_parameter",
"usage": "/gauge/chokepoint-region?loc=<value>",
"preview": "/gauge/preview",
"missing_params": [
"loc"
],
"example_request": "/gauge/chokepoint-region?loc=hormuz&format=thin"
},
"error": "Missing required query parameter(s): loc. A request you can run right now: GET /gauge/chokepoint-region?loc=hormuz&format=thin\nX-PAYMENT header is required. This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10 — raise maxValue to at least 250000 atomic units, or your own client rejects this payment locally and no request ever reaches us. Do not want to raise it? A cheaper alternative you can run right now: GET /gauge?signal_id=hydrology.river-level&entity=07010000&format=thin ($0.01 USDC) - the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only.",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "250000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/gauge/chokepoint-region",
"extensions": {
"bazaar": {
"info": {
"input": {
"type": "http",
"method": "GET",
"queryParams": {
"loc": "required - location id; full list at free /gauge/preview"
}
},
"output": {
"type": "json",
"example": {
"legs": {
"transit": {
"band": null,
"source_ref": "IMF PortWatch Daily_Chokepoints_Data portid=chokepoint6(Strait of Hormuz,2026-08-21)",
"record_hash": "sha256:699bbca83ca77e0570a48c767d25e174e37cf51ceed012b13793f3c485ddc1f6"
},
"sea_state": {
"band": null,
"source_ref": "https://open-meteo.com/en/docs/marine-weather-api",
"record_hash": "sha256:6210ac5c3a486067756bca585c841541397171e0310cd9bae667b8a848563b5b"
},
"congestion": {
"band": "no-coverage",
"source_ref": "https://aisstream.io/documentation",
"record_hash": "sha256:a2a9e86d3147cee9f7ecbeb797ae8717a73f734a04b77af195c0f33874b906cd"
},
"disruption": {
"band": "operable",
"source_ref": "https://open-meteo.com/en/docs/marine-weather-api",
"record_hash": "sha256:5ced2956a016d5b4523e3eff6def79ee891f576ead9c805455c0df6b94df2bef"
}
},
"name": "Strait of Hormuz",
"grade": "screening-level, not decision-grade",
"scope": {
"full": "https://api.truthbear.co/scope/v1",
"verifiability": "unknown",
"monitoring_not_forecast": true,
"intelligence_not_command": true
},
"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.",
"provenance": {
"freshness": "recent",
"age_hours_now": 135.4,
"freshness_basis": "cadence=default; fresh<=24h; recent<=192h; dead_source>1440h; age_basis=request-time(now minus observed_at)"
}
}
}
},
"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": [
"loc"
],
"properties": {
"loc": {
"type": "string",
"examples": [
"suez-redsea",
"panama-pacific",
"malacca",
"hormuz",
"goodhope",
"channel"
],
"description": "required - location id; full list at free /gauge/preview",
"x-accepted-values": {
"all": "https://api.truthbear.co/schemas/gauge-chokepoint-region.input.json",
"shown": 6,
"total": 12
}
}
},
"additionalProperties": false
}
}
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"const": "json"
},
"example": {}
}
}
}
},
"priceUsd": "$0.25",
"discoverable": true,
"outputSchema": {
"type": "object",
"required": [
"legs",
"provenance"
],
"properties": {
"legs": {
"type": "object",
"properties": {
"transit": {
"type": [
"object",
"null"
],
"description": "Realized transits observed (main leg)."
},
"sea_state": {
"type": [
"object",
"null"
],
"description": "Sea/weather workability (upstream cause leg)."
},
"congestion": {
"type": [
"object",
"null"
],
"description": "Anchorage congestion (upstream leg)."
},
"disruption": {
"type": [
"object",
"null"
],
"description": "Route disruption (downstream cross-check leg)."
}
},
"description": "The three-plus legs of this chokepoint, each the latest stored reading or null."
},
"name": {
"type": "string",
"description": "Human-readable name of the chokepoint."
},
"note": {
"type": "string",
"description": "Descriptive-only statement of what was restated and from whom."
},
"chokepoint": {
"type": "string",
"description": "The chokepoint id that was requested."
},
"provenance": {
"type": "object",
"description": "served_from, data_as_of, oldest_leg_as_of, age_hours_now, freshness."
}
},
"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/chokepoint-region",
"priceUsdNumber": 0.25
}
},
"description": "[4-LEG] Maritime chokepoint passage chain, one chokepoint (?loc=hormuz, suez, panama, malacca and more): leading sea state against operating thresholds -> current anchorage congestion, vessels waiting -> realized daily transits from IMF PortWatch (confirmation gate). A chain, not one reading: confidence = how many legs are lit, in order. Sources: IMF PortWatch, NOAA, Open-Meteo. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call.",
"outputSchema": {
"input": {
"type": "http",
"method": "GET",
"example": {
"loc": "hormuz",
"format": "thin"
},
"required": [
"loc"
],
"properties": {
"loc": {
"type": "string",
"examples": [
"suez-redsea",
"panama-pacific",
"malacca",
"hormuz",
"goodhope",
"channel"
],
"description": "required - location id; full list at free /gauge/preview",
"x-accepted-values": {
"all": "https://api.truthbear.co/schemas/gauge-chokepoint-region.input.json",
"shown": 6,
"total": 12
}
}
},
"queryParams": {
"loc": "required - location id; full list at free /gauge/preview"
},
"discoverable": true,
"exampleRequest": "/gauge/chokepoint-region?loc=hormuz&format=thin"
},
"output": {
"type": "object",
"required": [
"legs",
"provenance"
],
"properties": {
"legs": {
"type": "object",
"properties": {
"transit": {
"type": [
"object",
"null"
],
"description": "Realized transits observed (main leg)."
},
"sea_state": {
"type": [
"object",
"null"
],
"description": "Sea/weather workability (upstream cause leg)."
},
"congestion": {
"type": [
"object",
"null"
],
"description": "Anchorage congestion (upstream leg)."
},
"disruption": {
"type": [
"object",
"null"
],
"description": "Route disruption (downstream cross-check leg)."
}
},
"description": "The three-plus legs of this chokepoint, each the latest stored reading or null."
},
"name": {
"type": "string",
"description": "Human-readable name of the chokepoint."
},
"note": {
"type": "string",
"description": "Descriptive-only statement of what was restated and from whom."
},
"chokepoint": {
"type": "string",
"description": "The chokepoint id that was requested."
},
"provenance": {
"type": "object",
"description": "served_from, data_as_of, oldest_leg_as_of, age_hours_now, freshness."
}
},
"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": "250000",
"maxTimeoutSeconds": 300
}
],
"client_hint": {
"action": "This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10. Raise your client maxValue to at least required_atomic; otherwise the payment is rejected locally inside your own client and never reaches this server, so you will see no error from us.",
"reason": "price_above_default_client_max_value",
"example": "wrapFetchWithPayment(fetch, account, BigInt(250000)) // atomic units, USDC 6dp",
"required_usdc": "0.25",
"required_atomic": "250000",
"within_your_budget": [
{
"try": "/gauge?signal_id=hydrology.river-level&entity=07010000&format=thin",
"gets": "the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only",
"path": "/gauge",
"usdc": "0.01"
}
],
"default_client_max_atomic": "100000"
},
"x402Version": 1
},
{
"error": "X-PAYMENT header is required",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "90000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/stable/census",
"extensions": {
"bazaar": {
"info": {
"input": {
"type": "http",
"method": "GET",
"queryParams": {
"verifiable": "optional - set to 1 to attach `_hash_core` per row (the canonical pre-image of the record_hash for that row) so you can "
}
},
"output": {
"type": "json",
"example": {
"entity": "basis-cash-bac",
"current": {
"state": "dead",
"ongoing": false,
"death_type": "depeg-abandoned",
"lifespan_days": 152
},
"lifecycle": {
"peg": "usd",
"state": "dead",
"end_at": "2021-05-01",
"issuer": "Basis Cash (anon)",
"context": "The algorithmic stablecoin BAC traded below USD 1 for a long period and never regained its peg; after the seigniorage...",
"ongoing": false,
"birth_at": "2020-11-30",
"mechanism": "algorithmic",
"death_type": "depeg-abandoned",
"lifespan_days": 152
},
"signal_id": "stablecoin.lifecycle",
"source_ref": "https://www.coingecko.com/en/coins/basis-cash",
"entity_name": "Basis Cash (BAC)",
"observed_at": "2026-08-24T15:00:00.121Z",
"record_hash": "sha256:664da5b5c8cc399928a3149a49732e15d67f66d69b683e1469c0ab9871d8d702",
"source_tier": "T1",
"snapshot_date": "2026-08-24",
"data_age_hours": 0,
"hash_core_version": 4
}
}
},
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method"
],
"properties": {
"type": {
"const": "http"
},
"method": {
"enum": [
"GET"
],
"type": "string"
},
"queryParams": {
"type": "object",
"properties": {
"verifiable": {
"type": "string",
"description": "optional - set to 1 to attach `_hash_core` per row (the canonical pre-image of the record_hash for that row) so you can recompute and verify fully offline; omitted by default to keep the payload small - for online verification use free GET /gauge/verify?hash="
}
},
"additionalProperties": false
}
}
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"const": "json"
},
"example": {}
}
}
}
},
"priceUsd": "$0.09",
"discoverable": true,
"outputSchema": {
"type": "object",
"properties": {
"rows": {
"type": "array"
},
"count": {
"type": "integer"
},
"provenance": {
"type": "object",
"description": "Freshness and lineage: freshness / freshness_basis / age_hours_now / data_lineage, with the oldest row representing the whole batch"
},
"observed_at": {
"type": [
"string",
"null"
],
"description": "Observation time of the OLDEST row in this batch (ISO) - the most conservative basis"
}
}
},
"routeTemplate": "/stable/census",
"priceUsdNumber": 0.09
}
},
"description": "[BATCH+PROOF] Full stablecoin census, latest day, ranked by market cap; lifecycle flags terminated and depegged. Add ?verifiable=1 and every row carries _hash_core so you can recompute the hash offline without trusting us. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.09 per call.",
"outputSchema": {
"input": {
"type": "http",
"method": "GET",
"required": [],
"properties": {
"verifiable": {
"type": "string",
"description": "optional - set to 1 to attach `_hash_core` per row (the canonical pre-image of the record_hash for that row) so you can recompute and verify fully offline; omitted by default to keep the payload small - for online verification use free GET /gauge/verify?hash="
}
},
"queryParams": {
"verifiable": "optional - set to 1 to attach `_hash_core` per row (the canonical pre-image of the record_hash for that row) so you can recompute and verify fully offline; omitted by default to keep the payload small - for online verification use free GET /gauge/verify?hash="
},
"discoverable": true
},
"output": {
"type": "object",
"properties": {
"rows": {
"type": "array"
},
"count": {
"type": "integer"
},
"provenance": {
"type": "object",
"description": "Freshness and lineage: freshness / freshness_basis / age_hours_now / data_lineage, with the oldest row representing the whole batch"
},
"observed_at": {
"type": [
"string",
"null"
],
"description": "Observation time of the OLDEST row in this batch (ISO) - the most conservative basis"
}
}
}
},
"maxAmountRequired": "90000",
"maxTimeoutSeconds": 300
}
],
"x402Version": 1
},
{
"hint": {
"miss": "missing_parameter",
"usage": "/gauge/agri-region?loc=<value>",
"preview": "/gauge/preview",
"missing_params": [
"loc"
],
"example_request": "/gauge/agri-region?loc=us-iowa&format=thin"
},
"error": "Missing required query parameter(s): loc. A request you can run right now: GET /gauge/agri-region?loc=us-iowa&format=thin\nX-PAYMENT header is required. This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10 — raise maxValue to at least 250000 atomic units, or your own client rejects this payment locally and no request ever reaches us. Do not want to raise it? A cheaper alternative you can run right now: GET /gauge?signal_id=hydrology.river-level&entity=07010000&format=thin ($0.01 USDC) - the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only.",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "250000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/gauge/agri-region",
"extensions": {
"bazaar": {
"info": {
"input": {
"type": "http",
"method": "GET",
"queryParams": {
"loc": "required - location id; full list at free /gauge/preview"
}
},
"output": {
"type": "json",
"example": {
"legs": {
"heat": {
"band": "below_warning",
"source_ref": "https://open-meteo.com/en/docs (temperature_2m_max/min; GDD base 10 degC 86/50)",
"record_hash": "sha256:454bc7664c8f82954a12a52f1f425223c1dfb9d72ced46320a22a804cd0e8271"
},
"drought": {
"band": "normal",
"source_ref": "https://open-meteo.com/en/docs/historical-weather-api(ERA5 soil moisture)",
"record_hash": "sha256:5c5f46fb816028010748b0c081adade34d0330efd1b07401410e697d03b6580c"
},
"crop_vhi": {
"band": "normal",
"source_ref": "https://www.star.nesdis.noaa.gov/smcd/emb/vci/VH/(get_TS_admin.php CROP VHI)",
"record_hash": "sha256:3a2dae57b8bb21c1b8cf83bb25d2aace7204dc9a80fc62782a1f1621183a67d4"
}
},
"name": "US Corn Belt - Iowa",
"grade": "screening-level, not decision-grade",
"scope": {
"full": "https://api.truthbear.co/scope/v1",
"verifiability": "unknown",
"monitoring_not_forecast": true,
"intelligence_not_command": true
},
"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.",
"location": "us-iowa",
"provenance": {
"freshness": "stale",
"age_hours_now": 423,
"freshness_basis": "cadence=default; fresh<=24h; recent<=192h; dead_source>1440h; age_basis=request-time(now minus observed_at)"
}
}
}
},
"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": [
"loc"
],
"properties": {
"loc": {
"type": "string",
"examples": [
"us-iowa",
"us-illinois",
"us-nebraska",
"us-kansas",
"ar-pampas",
"br-matogrosso"
],
"description": "required - location id; full list at free /gauge/preview",
"x-accepted-values": {
"all": "https://api.truthbear.co/schemas/gauge-agri-region.input.json",
"shown": 6,
"total": 12
}
}
},
"additionalProperties": false
}
}
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"const": "json"
},
"example": {}
}
}
}
},
"priceUsd": "$0.25",
"discoverable": true,
"outputSchema": {
"type": "object",
"required": [
"nature",
"legs"
],
"properties": {
"legs": {
"type": "object",
"description": "CORE DELIVERY: per-leg readings, keyed by leg name (e.g. drought/heat/crop-vhi); each value carries signal_id/current/observed_at/data_age_hours/record_hash"
},
"name": {
"type": [
"string",
"null"
],
"description": "Human-readable name of the object"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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"
},
"nature": {
"type": "string",
"description": "Neutrality statement: GAUGE supplies observations and trend description only - no judgement, no prediction, no recommendation"
},
"location": {
"type": "string",
"description": "The location key of this bundle - the ?loc= you passed in"
},
"_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"
},
"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"
},
"data_timespans": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Per-leg observation time and hours elapsed since"
},
"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"
},
"cross_line_narrative": {
"type": "string",
"description": "Cross-line comparison narrative (purely descriptive; no judgement, no prediction)"
}
},
"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/agri-region",
"priceUsdNumber": 0.25
}
},
"description": "[3-LEG] Agriculture chain, one grain belt (?loc=us-iowa): leading soil drought (USDM D0-D4) -> current heat stress and growing degree days -> realized crop vigour VHI - did the drought actually reach the crop (confirmation gate). A chain, not one reading: confidence = how many legs are lit, in order. Sources: USDM/NDMC, NASA POWER, NOAA STAR. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call.",
"outputSchema": {
"input": {
"type": "http",
"method": "GET",
"example": {
"loc": "us-iowa",
"format": "thin"
},
"required": [
"loc"
],
"properties": {
"loc": {
"type": "string",
"examples": [
"us-iowa",
"us-illinois",
"us-nebraska",
"us-kansas",
"ar-pampas",
"br-matogrosso"
],
"description": "required - location id; full list at free /gauge/preview",
"x-accepted-values": {
"all": "https://api.truthbear.co/schemas/gauge-agri-region.input.json",
"shown": 6,
"total": 12
}
}
},
"queryParams": {
"loc": "required - location id; full list at free /gauge/preview"
},
"discoverable": true,
"exampleRequest": "/gauge/agri-region?loc=us-iowa&format=thin"
},
"output": {
"type": "object",
"required": [
"nature",
"legs"
],
"properties": {
"legs": {
"type": "object",
"description": "CORE DELIVERY: per-leg readings, keyed by leg name (e.g. drought/heat/crop-vhi); each value carries signal_id/current/observed_at/data_age_hours/record_hash"
},
"name": {
"type": [
"string",
"null"
],
"description": "Human-readable name of the object"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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"
},
"nature": {
"type": "string",
"description": "Neutrality statement: GAUGE supplies observations and trend description only - no judgement, no prediction, no recommendation"
},
"location": {
"type": "string",
"description": "The location key of this bundle - the ?loc= you passed in"
},
"_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"
},
"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"
},
"data_timespans": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Per-leg observation time and hours elapsed since"
},
"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"
},
"cross_line_narrative": {
"type": "string",
"description": "Cross-line comparison narrative (purely descriptive; no judgement, no prediction)"
}
},
"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": "250000",
"maxTimeoutSeconds": 300
}
],
"client_hint": {
"action": "This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10. Raise your client maxValue to at least required_atomic; otherwise the payment is rejected locally inside your own client and never reaches this server, so you will see no error from us.",
"reason": "price_above_default_client_max_value",
"example": "wrapFetchWithPayment(fetch, account, BigInt(250000)) // atomic units, USDC 6dp",
"required_usdc": "0.25",
"required_atomic": "250000",
"within_your_budget": [
{
"try": "/gauge?signal_id=hydrology.river-level&entity=07010000&format=thin",
"gets": "the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only",
"path": "/gauge",
"usdc": "0.01"
}
],
"default_client_max_atomic": "100000"
},
"x402Version": 1
},
{
"hint": {
"miss": "missing_parameter",
"usage": "/gauge/filing-company?entity=<value>",
"preview": "/gauge/preview",
"missing_params": [
"entity"
],
"example_request": "/gauge/filing-company?entity=AAPL&format=thin"
},
"error": "Missing required query parameter(s): entity. A request you can run right now: GET /gauge/filing-company?entity=AAPL&format=thin\nX-PAYMENT header is required. This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10 — raise maxValue to at least 250000 atomic units, or your own client rejects this payment locally and no request ever reaches us. Do not want to raise it? A cheaper alternative you can run right now: GET /gauge?signal_id=hydrology.river-level&entity=07010000&format=thin ($0.01 USDC) - the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only.",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "250000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/gauge/filing-company",
"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["
}
},
"output": {
"type": "json",
"example": {
"legs": {
"insider": {
"band": "net-selling",
"source_ref": "https://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=0000320193&type=4",
"record_hash": "sha256:08be1bbb612e774b55ac42d8169e6218d6a397eaf4a79849f6a95c5c30347610"
},
"delinquency": {
"band": "current",
"source_ref": "https://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=0000320193&type=NT",
"record_hash": "sha256:2d86d57eeba0bd58ea065d67bdd1e20cd9f9de04091d59e4135eaaa70e301526"
},
"material_events": {
"band": "routine",
"source_ref": "https://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=0000320193&type=8-K",
"record_hash": "sha256:00857f3ef5e7f88db3b042145a16e1b03ac2a3ab758b4d00d1fc1a45ed65b564"
}
},
"name": "Apple Inc.",
"grade": "screening-level, not decision-grade",
"scope": {
"full": "https://api.truthbear.co/scope/v1",
"verifiability": "unknown",
"monitoring_not_forecast": true,
"intelligence_not_command": true
},
"entity": "AAPL",
"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.",
"provenance": {
"freshness": "fresh",
"age_hours_now": 15,
"freshness_basis": "cadence=default; fresh<=24h; recent<=192h; dead_source>1440h; age_basis=request-time(now minus observed_at)"
}
}
}
},
"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": [
"entity"
],
"properties": {
"entity": {
"type": "string",
"examples": [
"AAPL",
"MSFT",
"NVDA",
"TSLA",
"AMZN",
"META"
],
"description": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]",
"x-accepted-values": {
"all": "https://api.truthbear.co/schemas/gauge-filing-company.input.json",
"shown": 6,
"total": 18
}
}
},
"additionalProperties": false
}
}
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"const": "json"
},
"example": {}
}
}
}
},
"priceUsd": "$0.25",
"discoverable": true,
"outputSchema": {
"type": "object",
"required": [
"nature",
"legs"
],
"properties": {
"legs": {
"type": "object",
"description": "CORE DELIVERY: per-leg readings, keyed by leg name (e.g. drought/heat/crop-vhi); each value carries signal_id/current/observed_at/data_age_hours/record_hash"
},
"name": {
"type": [
"string",
"null"
],
"description": "Human-readable name of the object"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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": "The object key of this bundle - the ?entity= you passed in"
},
"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"
},
"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"
},
"data_timespans": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Per-leg observation time and hours elapsed since"
},
"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"
},
"cross_line_narrative": {
"type": "string",
"description": "Cross-line comparison narrative (purely descriptive; no judgement, no prediction)"
}
},
"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/filing-company",
"priceUsdNumber": 0.25
}
},
"description": "[3-LEG] Regulatory filing chain, one issuer (?entity=AMC): leading NT late-filing notices, a distress leading indicator -> current 8-K material events graded by item severity -> realized Form 4 insider transactions (confirmation gate). A chain, not one reading: confidence = how many legs are lit, in order. Sources: SEC EDGAR. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call.",
"outputSchema": {
"input": {
"type": "http",
"method": "GET",
"example": {
"entity": "AAPL",
"format": "thin"
},
"required": [
"entity"
],
"properties": {
"entity": {
"type": "string",
"examples": [
"AAPL",
"MSFT",
"NVDA",
"TSLA",
"AMZN",
"META"
],
"description": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]",
"x-accepted-values": {
"all": "https://api.truthbear.co/schemas/gauge-filing-company.input.json",
"shown": 6,
"total": 18
}
}
},
"queryParams": {
"entity": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]"
},
"discoverable": true,
"exampleRequest": "/gauge/filing-company?entity=AAPL&format=thin"
},
"output": {
"type": "object",
"required": [
"nature",
"legs"
],
"properties": {
"legs": {
"type": "object",
"description": "CORE DELIVERY: per-leg readings, keyed by leg name (e.g. drought/heat/crop-vhi); each value carries signal_id/current/observed_at/data_age_hours/record_hash"
},
"name": {
"type": [
"string",
"null"
],
"description": "Human-readable name of the object"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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": "The object key of this bundle - the ?entity= you passed in"
},
"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"
},
"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"
},
"data_timespans": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Per-leg observation time and hours elapsed since"
},
"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"
},
"cross_line_narrative": {
"type": "string",
"description": "Cross-line comparison narrative (purely descriptive; no judgement, no prediction)"
}
},
"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": "250000",
"maxTimeoutSeconds": 300
}
],
"client_hint": {
"action": "This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10. Raise your client maxValue to at least required_atomic; otherwise the payment is rejected locally inside your own client and never reaches this server, so you will see no error from us.",
"reason": "price_above_default_client_max_value",
"example": "wrapFetchWithPayment(fetch, account, BigInt(250000)) // atomic units, USDC 6dp",
"required_usdc": "0.25",
"required_atomic": "250000",
"within_your_budget": [
{
"try": "/gauge?signal_id=hydrology.river-level&entity=07010000&format=thin",
"gets": "the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only",
"path": "/gauge",
"usdc": "0.01"
}
],
"default_client_max_atomic": "100000"
},
"x402Version": 1
},
{
"hint": {
"miss": "missing_parameter",
"usage": "/gauge/history?signal_id=<value>&entity=<value>",
"preview": "/gauge/sample",
"missing_params": [
"signal_id",
"entity"
],
"example_request": "/gauge/history?signal_id=hydrology.river-level&entity=07010000"
},
"error": "Missing required query parameter(s): signal_id, entity. A request you can run right now: GET /gauge/history?signal_id=hydrology.river-level&entity=07010000\nX-PAYMENT header is required",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "5000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/gauge/history",
"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"
}
},
"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"
}
}
}
}
},
"priceUsd": "$0.005",
"discoverable": true,
"outputSchema": {
"type": "object",
"required": [
"nature",
"dim",
"history"
],
"properties": {
"dim": {
"type": "string",
"description": "Always the literal \"history\""
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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"
},
"history": {
"type": [
"object",
"null"
],
"description": "Seasonal-percentile projection: single-point position + frequency + percentiles + method and source"
},
"_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"
},
"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/history",
"priceUsdNumber": 0.005
}
},
"description": "Add-on, historical placement: seasonal percentile for the current point, frequency, the percentile table, and the method and source used to compute them. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.0050 per call.",
"outputSchema": {
"input": {
"type": "http",
"method": "GET",
"example": {
"entity": "07010000",
"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/history?signal_id=hydrology.river-level&entity=07010000"
},
"output": {
"type": "object",
"required": [
"nature",
"dim",
"history"
],
"properties": {
"dim": {
"type": "string",
"description": "Always the literal \"history\""
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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"
},
"history": {
"type": [
"object",
"null"
],
"description": "Seasonal-percentile projection: single-point position + frequency + percentiles + method and source"
},
"_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"
},
"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
}
],
"x402Version": 1
},
{
"hint": {
"miss": "missing_parameter",
"usage": "/gauge/promise-region?entity=<value>",
"preview": "/gauge/preview",
"missing_params": [
"entity"
],
"example_request": "/gauge/promise-region?entity=figure-ai&format=thin"
},
"error": "Missing required query parameter(s): entity. A request you can run right now: GET /gauge/promise-region?entity=figure-ai&format=thin\nX-PAYMENT header is required. This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10 — raise maxValue to at least 250000 atomic units, or your own client rejects this payment locally and no request ever reaches us. Do not want to raise it? A cheaper alternative you can run right now: GET /gauge?signal_id=hydrology.river-level&entity=07010000&format=thin ($0.01 USDC) - the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only.",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "250000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/gauge/promise-region",
"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["
}
},
"output": {
"type": "json",
"example": {
"legs": {
"slippage": {
"band": "watch",
"source_ref": "https://www.figure.ai/news/helix",
"record_hash": "sha256:58fc26b76b6afae2f34d4e9029eeae7718a1840698b9330012eb86a6c2cfe731"
},
"lifecycle": {
"band": "operating",
"source_ref": "https://www.figure.ai/",
"record_hash": "sha256:27c96ce9c4f61655c3b859771fecf63efe9e1c9c2c5d0c427636e42be79fa0dc"
},
"delivery_recon": {
"band": "major-gap",
"source_ref": "https://www.figure.ai/",
"record_hash": "sha256:c4efb4f43f8585531135b8072b2ff11e9ae0a1e5bdab357b5ad871ff8f72ca5d"
}
},
"name": "Figure AI",
"grade": "screening-level, not decision-grade",
"scope": {
"full": "https://api.truthbear.co/scope/v1",
"verifiability": "unknown",
"monitoring_not_forecast": true,
"intelligence_not_command": true
},
"entity": "figure-ai",
"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.",
"provenance": {
"freshness": "recent",
"age_hours_now": 143,
"freshness_basis": "cadence=default; fresh<=24h; recent<=192h; dead_source>1440h; age_basis=request-time(now minus observed_at)"
}
}
}
},
"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": [
"entity"
],
"properties": {
"entity": {
"type": "string",
"examples": [
"figure-ai",
"tesla-optimus",
"1x-technologies",
"sanctuary-ai",
"humane-ai-pin",
"rabbit-r1"
],
"description": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]",
"x-accepted-values": {
"all": "https://api.truthbear.co/schemas/gauge-promise-region.input.json",
"shown": 6,
"total": 17
}
}
},
"additionalProperties": false
}
}
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"const": "json"
},
"example": {}
}
}
}
},
"priceUsd": "$0.25",
"discoverable": true,
"outputSchema": {
"type": "object",
"required": [
"nature",
"legs"
],
"properties": {
"legs": {
"type": "object",
"description": "CORE DELIVERY: per-leg readings, keyed by leg name (e.g. drought/heat/crop-vhi); each value carries signal_id/current/observed_at/data_age_hours/record_hash"
},
"name": {
"type": [
"string",
"null"
],
"description": "Human-readable name of the object"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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": "The object key of this bundle - the ?entity= you passed in"
},
"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"
},
"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"
},
"data_timespans": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Per-leg observation time and hours elapsed since"
},
"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"
},
"cross_line_narrative": {
"type": "string",
"description": "Cross-line comparison narrative (purely descriptive; no judgement, no prediction)"
}
},
"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/promise-region",
"priceUsdNumber": 0.25
}
},
"description": "[3-LEG] Promise-reconciliation chain, one promisor (?entity=humane-ai-pin): leading promise slippage - schedule slipping, spec shrinking, promise page vanishing -> current current company or project status -> realized lifecycle to death or acquisition (confirmation gate). A chain, not one reading: confidence = how many legs are lit, in order. Sources: official announcements and registries. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call.",
"outputSchema": {
"input": {
"type": "http",
"method": "GET",
"example": {
"entity": "figure-ai",
"format": "thin"
},
"required": [
"entity"
],
"properties": {
"entity": {
"type": "string",
"examples": [
"figure-ai",
"tesla-optimus",
"1x-technologies",
"sanctuary-ai",
"humane-ai-pin",
"rabbit-r1"
],
"description": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]",
"x-accepted-values": {
"all": "https://api.truthbear.co/schemas/gauge-promise-region.input.json",
"shown": 6,
"total": 17
}
}
},
"queryParams": {
"entity": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]"
},
"discoverable": true,
"exampleRequest": "/gauge/promise-region?entity=figure-ai&format=thin"
},
"output": {
"type": "object",
"required": [
"nature",
"legs"
],
"properties": {
"legs": {
"type": "object",
"description": "CORE DELIVERY: per-leg readings, keyed by leg name (e.g. drought/heat/crop-vhi); each value carries signal_id/current/observed_at/data_age_hours/record_hash"
},
"name": {
"type": [
"string",
"null"
],
"description": "Human-readable name of the object"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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": "The object key of this bundle - the ?entity= you passed in"
},
"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"
},
"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"
},
"data_timespans": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Per-leg observation time and hours elapsed since"
},
"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"
},
"cross_line_narrative": {
"type": "string",
"description": "Cross-line comparison narrative (purely descriptive; no judgement, no prediction)"
}
},
"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": "250000",
"maxTimeoutSeconds": 300
}
],
"client_hint": {
"action": "This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10. Raise your client maxValue to at least required_atomic; otherwise the payment is rejected locally inside your own client and never reaches this server, so you will see no error from us.",
"reason": "price_above_default_client_max_value",
"example": "wrapFetchWithPayment(fetch, account, BigInt(250000)) // atomic units, USDC 6dp",
"required_usdc": "0.25",
"required_atomic": "250000",
"within_your_budget": [
{
"try": "/gauge?signal_id=hydrology.river-level&entity=07010000&format=thin",
"gets": "the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only",
"path": "/gauge",
"usdc": "0.01"
}
],
"default_client_max_atomic": "100000"
},
"x402Version": 1
},
{
"hint": {
"miss": "missing_parameter",
"usage": "/gauge/hurricane-region?entity=<value>",
"preview": "/gauge/preview",
"missing_params": [
"entity"
],
"example_request": "/gauge/hurricane-region?entity=atlantic&format=thin"
},
"error": "Missing required query parameter(s): entity. A request you can run right now: GET /gauge/hurricane-region?entity=atlantic&format=thin\nX-PAYMENT header is required. This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10 — raise maxValue to at least 250000 atomic units, or your own client rejects this payment locally and no request ever reaches us. Do not want to raise it? A cheaper alternative you can run right now: GET /gauge?signal_id=hydrology.river-level&entity=07010000&format=thin ($0.01 USDC) - the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only.",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "250000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/gauge/hurricane-region",
"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["
}
},
"output": {
"type": "json",
"example": {
"legs": {
"active_storms": {
"band": "none",
"source_ref": "https://www.nhc.noaa.gov/cyclones/",
"record_hash": "sha256:dca1edeb7ee415a64e2c940922b1c857dbcd503da04bd155cd9bd3471bb4ff6f"
},
"impact_cascade": {
"band": "none",
"source_ref": "https://www.nhc.noaa.gov/surge/warning/",
"record_hash": "sha256:55d0bc6227559e6b1ac85525a358d905226994f8c08acc0562a8acc83ddd54fa"
},
"season_timeline": {
"band": "above-normal",
"source_ref": "https://www.nhc.noaa.gov/data/",
"record_hash": "sha256:29c038da3b62eda95f54cef7f5762ddf7efe9a21df4371c0839cc26a08f1ad2f"
},
"formation_outlook": {
"band": "none",
"source_ref": "https://www.nhc.noaa.gov/gtwo.php",
"record_hash": "sha256:d7ce15ac10d971218ddeff358bd9c24276f27b29f12c7db235a2744033c4a1a6"
}
},
"name": "Atlantic basin (formation outlook)",
"grade": "screening-level, not decision-grade",
"scope": {
"full": "https://api.truthbear.co/scope/v1",
"verifiability": "unknown",
"monitoring_not_forecast": true,
"intelligence_not_command": true
},
"entity": "atlantic",
"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.",
"provenance": {
"freshness": "stale",
"age_hours_now": 610,
"freshness_basis": "cadence=default; fresh<=24h; recent<=192h; dead_source>1440h; age_basis=request-time(now minus observed_at)"
}
}
}
},
"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": [
"entity"
],
"properties": {
"entity": {
"type": "string",
"examples": [
"atlantic",
"epacific",
"cpacific"
],
"description": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]"
}
},
"additionalProperties": false
}
}
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"const": "json"
},
"example": {}
}
}
}
},
"priceUsd": "$0.25",
"discoverable": true,
"outputSchema": {
"type": "object",
"required": [
"nature",
"legs"
],
"properties": {
"legs": {
"type": "object",
"description": "CORE DELIVERY: per-leg readings, keyed by leg name (e.g. drought/heat/crop-vhi); each value carries signal_id/current/observed_at/data_age_hours/record_hash"
},
"name": {
"type": [
"string",
"null"
],
"description": "Human-readable name of the object"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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": "The object key of this bundle - the ?entity= you passed in"
},
"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"
},
"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"
},
"data_timespans": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Per-leg observation time and hours elapsed since"
},
"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"
},
"cross_line_narrative": {
"type": "string",
"description": "Cross-line comparison narrative (purely descriptive; no judgement, no prediction)"
}
},
"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/hurricane-region",
"priceUsdNumber": 0.25
}
},
"description": "[3-LEG] Hurricane chain, one basin (?entity=atlantic|epacific|cpacific): leading NHC official 2/7-day genesis probability (NHC-quoted, not our forecast) -> current active storms - category, wind, pressure, position -> realized official watches, warnings, landfall (confirmation gate). A chain, not one reading: confidence = how many legs are lit, in order. Sources: NOAA NHC. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.25 per call.",
"outputSchema": {
"input": {
"type": "http",
"method": "GET",
"example": {
"entity": "atlantic",
"format": "thin"
},
"required": [
"entity"
],
"properties": {
"entity": {
"type": "string",
"examples": [
"atlantic",
"epacific",
"cpacific"
],
"description": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]"
}
},
"queryParams": {
"entity": "required - monitored object id, paired with signal_id; free list at GET /gauge/catalog?signal_id=<signal_id> -> signals[0].entities[]"
},
"discoverable": true,
"exampleRequest": "/gauge/hurricane-region?entity=atlantic&format=thin"
},
"output": {
"type": "object",
"required": [
"nature",
"legs"
],
"properties": {
"legs": {
"type": "object",
"description": "CORE DELIVERY: per-leg readings, keyed by leg name (e.g. drought/heat/crop-vhi); each value carries signal_id/current/observed_at/data_age_hours/record_hash"
},
"name": {
"type": [
"string",
"null"
],
"description": "Human-readable name of the object"
},
"note": {
"type": "string",
"description": "Conditional - endpoint-specific honest disclosure (limits, granularity, disclaimer); some endpoints omit it"
},
"grade": {
"type": [
"string",
"null"
],
"description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")"
},
"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": "The object key of this bundle - the ?entity= you passed in"
},
"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"
},
"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"
},
"data_timespans": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Per-leg observation time and hours elapsed since"
},
"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"
},
"cross_line_narrative": {
"type": "string",
"description": "Cross-line comparison narrative (purely descriptive; no judgement, no prediction)"
}
},
"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": "250000",
"maxTimeoutSeconds": 300
}
],
"client_hint": {
"action": "This endpoint costs $0.25 USDC, above the x402 client default maxValue of $0.10. Raise your client maxValue to at least required_atomic; otherwise the payment is rejected locally inside your own client and never reaches this server, so you will see no error from us.",
"reason": "price_above_default_client_max_value",
"example": "wrapFetchWithPayment(fetch, account, BigInt(250000)) // atomic units, USDC 6dp",
"required_usdc": "0.25",
"required_atomic": "250000",
"within_your_budget": [
{
"try": "/gauge?signal_id=hydrology.river-level&entity=07010000&format=thin",
"gets": "the same official signal plus its offline-recomputable proof - no three-leg chain, one signal only",
"path": "/gauge",
"usdc": "0.01"
}
],
"default_client_max_atomic": "100000"
},
"x402Version": 1
},
{
"error": "X-PAYMENT header is required",
"rails": {
"available": [
"base"
],
"advertised": [
"base"
],
"optin_hint": "Send \"X-Payment-Network: solana\" (or ?rails=all) to receive every available rail in accepts.",
"optin_header": "X-Payment-Network"
},
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"amount": "90000",
"scheme": "exact",
"network": "base",
"mimeType": "application/json",
"resource": "https://api.truthbear.co/trust/graveyard",
"extensions": {
"bazaar": {
"info": {
"input": {
"type": "http",
"method": "GET",
"queryParams": {
"verifiable": "optional - set to 1 to attach `_hash_core` per row (the canonical pre-image of the record_hash for that row) so you can "
}
},
"output": {
"type": "json",
"example": {
"entity": "(unlocked on payment)",
"current": {
"alive": true,
"domain": "api.onesource.io",
"calls_30d": 15448,
"endpoints": 25,
"last_price": 0.001,
"score_total": 1,
"demand_class": "REAL",
"demand_depth": "BREADTH",
"score_version": "demand-v1",
"first_endpoint": "https://api.onesource.io/api/chain/erc20-balance",
"last_called_at": "2026-08-25T06:44:08.121Z",
"liveness_state": "live",
"unique_payers_30d": 1093,
"endpoints_by_class": {
"REAL": 25
}
},
"lifecycle": {
"basis": "CDP discovery quality fields (l30DaysTotalCalls / l30DaysUniquePayers). demand_class is computed by the same classifi...",
"state": "operating",
"last_seen": "2026-08-25"
},
"signal_id": "trust.service-score",
"source_ref": "https://api.cdp.coinbase.com/platform/v2/x402/discovery/resources",
"entity_name": "(unlocked on payment)",
"observed_at": "2026-08-25T09:56:15.825Z",
"record_hash": "sha256:351f42610f5b3f386f88ba9c5a9d01d80f287a12a02b2bed05c864f374cd65aa",
"source_tier": "T2-observable",
"snapshot_date": "2026-08-25",
"data_age_hours": 0,
"hash_core_version": 4
}
}
},
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method"
],
"properties": {
"type": {
"const": "http"
},
"method": {
"enum": [
"GET"
],
"type": "string"
},
"queryParams": {
"type": "object",
"properties": {
"verifiable": {
"type": "string",
"description": "optional - set to 1 to attach `_hash_core` per row (the canonical pre-image of the record_hash for that row) so you can recompute and verify fully offline; omitted by default to keep the payload small - for online verification use free GET /gauge/verify?hash="
}
},
"additionalProperties": false
}
}
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"const": "json"
},
"example": {}
}
}
}
},
"priceUsd": "$0.09",
"discoverable": true,
"outputSchema": {
"type": "object",
"properties": {
"count": {
"type": "integer"
},
"deaths": {
"type": "array"
},
"provenance": {
"type": "object",
"description": "Freshness and lineage: freshness / freshness_basis / age_hours_now / data_lineage, with the oldest row representing the whole batch"
},
"observed_at": {
"type": [
"string",
"null"
],
"description": "Observation time of the OLDEST row in this batch (ISO) - the most conservative basis"
},
"record_hash_verifiable": {
"type": "object"
}
}
},
"routeTemplate": "/trust/graveyard",
"priceUsdNumber": 0.09
}
},
"description": "[BATCH+PROOF] x402 service graveyard - services that vanished from the census. THRESHOLD stated plainly: listed on FIRST confirmed absence (confirm_absences=1), NOT multi-day confirmation - only two snapshot days exist, which cannot support a streak test. Rows are hash-backed and recompute offline with ?verifiable=1; record_hash_verifiable reports the exact count per response. Descriptive only, never a forecast or advice. No data -> 422 no_charge, not billed. $0.09 per call.",
"outputSchema": {
"input": {
"type": "http",
"method": "GET",
"required": [],
"properties": {
"verifiable": {
"type": "string",
"description": "optional - set to 1 to attach `_hash_core` per row (the canonical pre-image of the record_hash for that row) so you can recompute and verify fully offline; omitted by default to keep the payload small - for online verification use free GET /gauge/verify?hash="
}
},
"queryParams": {
"verifiable": "optional - set to 1 to attach `_hash_core` per row (the canonical pre-image of the record_hash for that row) so you can recompute and verify fully offline; omitted by default to keep the payload small - for online verification use free GET /gauge/verify?hash="
},
"discoverable": true
},
"output": {
"type": "object",
"properties": {
"count": {
"type": "integer"
},
"deaths": {
"type": "array"
},
"provenance": {
"type": "object",
"description": "Freshness and lineage: freshness / freshness_basis / age_hours_now / data_lineage, with the oldest row representing the whole batch"
},
"observed_at": {
"type": [
"string",
"null"
],
"description": "Observation time of the OLDEST row in this batch (ISO) - the most conservative basis"
},
"record_hash_verifiable": {
"type": "object"
}
}
}
},
"maxAmountRequired": "90000",
"maxTimeoutSeconds": 300
}
],
"x402Version": 1
}
] OVER TIME
All charts use the 90d selector; each series spans only the dates it has data for. Every series is also served as JSON at /api/v1/services/truth-bear/price, /scores, /volume and /buyers. On-chain volume and distinct buyers are measured over the service's settlement address and are a conservative undercount (only settlements that reach a measured facilitator are counted). The on-chain series roll up hourly, so the latest day can be up to about an hour behind; distinct buyers are counted per payout address, so a service that settles to more than one address is an upper bound.
Median across 50 endpoints. Use the selector to isolate one.
checklist grew 11->14 on 2026-07-28; a step here is a metric change, not a regression
Measured site and economics pillars from the assessment history, so the latest value shown elsewhere on this page reads as a point on a trend rather than a permanent state.
COMPLIANCE
12/13 checks pass · grade A · failing: declares the current x402 version (2)last 402 captured 2026-09-25 · last up 2026-09-29
- 402 payload captured
- accepts[] array present
- payTo address recoverable
- payTo at accepts[0].payTo (conformant shape)
- payTo is a valid on-chain address
- atomic price declared
- atomic price in a sane range
- asset (token) address declared
- network resolves to CAIP-2
- payment scheme declared
- served over HTTPS
- declares the current x402 version (2)
- EIP-712 domain parameters present on every EVM entry
- x402 v2 envelope delivered in the payment-required header
SITE PILLARS
- homepage reachable
- openapi doc
- pricing page
- llms.txt
- robots.txt
- terms page
recent checks (18) live · click to expand
EMBED THIS BADGE
<a href="https://x402-list.com/services/truth-bear?utm_source=badge&utm_medium=referral&utm_campaign=embed"> <img src="https://x402-list.com/badge/truth-bear.svg" alt="Truth Bear listed on x402-list" height="28"> </a>
[](https://x402-list.com/services/truth-bear?utm_source=badge&utm_medium=referral&utm_campaign=embed)
<a href="https://x402-list.com/services/truth-bear?utm_source=badge&utm_medium=referral&utm_campaign=embed"> <img src="https://x402-list.com/badge/truth-bear.svg?data=uptime" alt="Truth Bear uptime on x402-list" height="28"> </a>