trust/precheck
GET api.truthbear.co/trust/precheck
Why an agent can trust this route.
Sonar evidence is advisory. Paid delivery is shown as verified only when paid probes are available; otherwise route estimates use the unpaid handshake as a clearly labeled proxy.
Observed outcomes
[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 is an ordering key, not a rating. 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.
Resource: api.truthbear.co/trust/precheck
Network: base · Asset: 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 · Pay to: 0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3
Payment methods: — · Last validation: 2026-10-15 11:57:10.649+00
{
"input": null,
"output": null,
"paymentRequirements": [
{
"raw": {
"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
},
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"payTo": "0x2d16a243ba9fAcC6AC85519d5efad2149DC4C6c3",
"scheme": "exact",
"network": "base",
"amountAtomic": "10000"
}
]
}Source catalog records are retained separately from live endpoint observations. Sonar score, uptime, and latency are advisory metrics. CDP indexing is not inferred from validation.