Tollbridge Docs
API

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/healthz
import 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/health

GET /readyz (free)

Readiness: degraded when any provider is degraded, 503 when down.

curl https://api.tollbridge.app/readyz

Response 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/pricing

GET /v1/providers (free)

Provider inventory + health.

curl https://api.tollbridge.app/v1/providers

GET /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/signals

GET /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.json

GET /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/docs

GET /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.json

POST /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.json

TypeScript

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 + health

MCP

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? }.

OutcomeStatusMeaning
recorded201The contact is stored and acknowledged.
already recorded200The same contact was already on record — the call is idempotent.
not wired here503 (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.

On this page