Platform
Health, readiness, live price list and provider inventory — all free.
The platform surfaces are free and unauthenticated. They exist so agents (and operators) can orient before spending anything.
GET /healthz (free)
Liveness + provider health rollup.
curl https://api.tollbridge.app/healthzimport httpx
# Reference snippet — official Python SDK in progress.
r = httpx.get("https://api.tollbridge.app/healthz")
status = r.json()["data"]["status"]GET /health (free)
Alias of /healthz (operator convention — the same payload on the un-namespaced path).
curl https://api.tollbridge.app/healthGET /readyz (free)
Readiness: degraded when any provider is degraded, 503 when down.
curl https://api.tollbridge.app/readyzResponse data: { "status", "uptime_s", "providers": [{ "slug", "kind", "status", "last_success_at", "latency_ms", "error_class" }] }.
GET /v1/pricing (free)
The per-endpoint price list, generated from @tollbridge/core PRICING — the same table rendered
on the Pricing page. Includes the credit plans and booster packs with the
credit anchor (credit_to_usd).
curl https://api.tollbridge.app/v1/pricingGET /v1/providers (free)
Provider inventory + health.
curl https://api.tollbridge.app/v1/providersGET /v1/signals (free)
The question catalog with its DERIVED capability: for each of the eleven questions,
whether it is available (a resolver is registered and the emit is wired) or
blocked, with the exact reason. Computed from the resolution-evaluator registry and
the emit gates — never a hand-maintained list — so the available set can never drift
from what the engine will actually grade.
curl https://api.tollbridge.app/v1/signalsGET /v1/openapi.json (free)
The complete OpenAPI 3.1 specification — alias of /openapi.json, served at the versioned path
so code generators can pin it.
curl https://api.tollbridge.app/v1/openapi.jsonGET /docs (free)
Human documentation pointer: 302 to the docs deployment when TOLLBRIDGE_DOCS_URL is set,
otherwise to /openapi.json.
curl -i https://api.tollbridge.app/docsGET /v1/ops/surge (operator only)
The pre-turn surge meter (ADR-004 §2.3): revenue in the 7 days before a ladder turn ÷ revenue
in the 7 days after, read from the payments journal (settled x402 settlements). An OPERATOR
metric for the doctrine's feedback loop ("tune notice length, not the multiplier") — never
public persuasion. Gated by the x-tollbridge-ops header (OPS_UNSET when unset);
?turn_at=<ISO> defaults to now.
curl "https://api.tollbridge.app/v1/ops/surge?turn_at=2026-09-20T00:00:00Z" \
-H "x-tollbridge-ops: <operator secret>"data: { before_usd, after_usd, ratio } — ratio is null when the after-window has no
settled revenue yet (a division the record cannot make yet), never a guessed number.
GET /v1/policy/seal (free) — the ruleset seal
The checksum-sealed ruleset that drives every refusal: { version, checksum, ruleset }.
Recompute the checksum from the body and compare — the seal proves which rules were in force,
not that storage works.
curl "https://api.tollbridge.app/v1/policy/seal"GET /v1/priors (free) — measured base rates
The pooled prior per question: rate, Wilson interval, n, successes, verdict. S01 carries its
label histogram; where no prior exists the field is an explicit null with the honest reason —
never a guess. The same read path the emit path reconciles against. A prior is a base rate,
not a forecast.
curl "https://api.tollbridge.app/v1/priors"POST /v1/verify (free) — the open claim-checker
Paste a POJ receipt (body) — the exact object the starter prints — and this
route recomputes the id with the frozen JCS sha256s canon: the same arithmetic that froze
the decision record. valid: true means internally consistent, nothing more: the ledger row
is the reference, and the resolution alone says whether a claim came true. A tampered field
returns valid: false with the recomputed id shown right beside the claimed one.
curl -X POST "https://api.tollbridge.app/v1/verify" \
-H "content-type: application/json" \
-d @receipt.jsonPOST /v1/verify (free) — the open claim-checker
Paste a POJ receipt (the { poj_id, body } object the starter prints) and this route
recomputes the id with the frozen JCS sha256 canon: the arithmetic that froze the decision
record, recomputed in the open. valid: true means internally consistent — nothing more.
The ledger row is the reference and the resolution alone says whether a claim came true. A
tampered field returns valid: false with the recomputed id beside the claimed one.
curl -X POST "https://api.tollbridge.app/v1/verify" \
-H "content-type: application/json" \
\
-d @receipt.jsonTypeScript
The facade exposes the platform surfaces directly (free — no signer needed):
import { Tollbridge } from '@tollbridge/sdk-typescript';
const toll = new Tollbridge({ baseUrl: 'https://api.tollbridge.app' });
const pricing = await toll.pricing(); // per-endpoint price list + plans + packs
const providers = await toll.providers(); // provider inventory + healthMCP
Platform surfaces are REST/SDK-only — the MCP catalog proxies the intelligence + ledger
surfaces 1:1. Over MCP you can list the catalog itself, and the tollbridge_pricing tool
serves the same price truth as this page:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": { "name": "tollbridge_pricing", "arguments": {} }
}The tools/list result enumerates the 28 tollbridge_* tools with their JSON Schema
inputs, annotations and pricing metadata (abbreviated):
{
"tools": [
{ "name": "tollbridge_market_state", "endpoint": null },
{ "name": "tollbridge_liquidation_risk", "endpoint": "perp.liquidations" },
{ "name": "tollbridge_funding_opportunities", "endpoint": "signals.evaluate" },
{ "name": "tollbridge_wallet_intelligence", "endpoint": "wallet.profile" },
{ "name": "tollbridge_transaction_risk", "endpoint": "risk.assess" },
{ "name": "tollbridge_token_risk", "endpoint": "risk.assess" },
{ "name": "tollbridge_decision", "endpoint": "decision.deep" },
{ "name": "tollbridge_pricing", "endpoint": null },
{ "name": "tollbridge_get_decision", "endpoint": null },
{ "name": "tollbridge_get_resolution", "endpoint": null },
{ "name": "tollbridge_calibration", "endpoint": null },
{ "name": "tollbridge_wallet_state", "endpoint": "wallet.state" }
]
}POST /v1/contacts (free) — launch-contact capture
Durable, acknowledged capture for the /story waitlist. Request body:
{ contact, consent, source?, seat? }.
| Outcome | Status | Meaning |
|---|---|---|
| recorded | 201 | The contact is stored and acknowledged. |
| already recorded | 200 | The same contact was already on record — the call is idempotent. |
| not wired here | 503 (CONTACTS_UNWIRED) | This deployment does not record contacts. |
The endpoint never claims that a message was sent; it only records that a contact was captured.