Funding
Raw funding snapshots and the paid S06/S07 decisions with explicit economics assumptions.
Three surfaces, two pricing keys: the raw snapshot bills perp.funding; the engine-decision
surfaces bill signals.evaluate. The assumptions block always states economics_modeled: "none" — raw context, never a profit claim.
GET /v1/funding (paid)
Raw funding snapshot for BTC/ETH/SOL.
curl -H "PAYMENT-SIGNATURE: <base64 payment payload>" \
https://api.tollbridge.app/v1/fundingResponse data: { funding: [{ asset, venue, rate, next_funding_at, provenance }] } for every
canonical asset.
GET /v1/funding/{asset} (paid)
S06 + S07 funding decisions, basis, execution-risk context, assumptions.
curl -H "PAYMENT-SIGNATURE: <base64 payment payload>" \
https://api.tollbridge.app/v1/funding/BTCResponse data: { asset, venue, funding, decisions: { S06_funding_anomaly, S07_funding_persistence }, basis: { basis_bps, perp_mark, index }, execution_risk: { top_of_book_depth_usd, spread_bps }, assumptions }. The assumptions block states
economics_modeled: "none" — always (§J hard rule).
GET /v1/funding/opportunities (paid)
The S06 anomaly scan with explicit assumptions.
curl -H "PAYMENT-SIGNATURE: <base64 payment payload>" \
https://api.tollbridge.app/v1/funding/opportunitiesResponse data: { opportunities: [{ asset, funding_bps, basis_bps, decision }], assumptions }.
TypeScript
import { Tollbridge } from '@tollbridge/sdk-typescript';
import { account } from './wallet';
const paying = new Tollbridge({ baseUrl: 'https://api.tollbridge.app', x402: { signer: account } });
const raw = await paying.fundingSnapshot(); // GET /v1/funding
const decisions = await paying.funding('BTC'); // S06 + S07 + basis + execution risk
decisions.data.assumptions.economics_modeled; // 'none' — always, §J hard rule
const opps = await paying.fundingOpportunities(); // S06 anomaly scanPython
import httpx
# Reference snippets — official Python SDK in progress.
base = "https://api.tollbridge.app"
H = {"PAYMENT-SIGNATURE": payment_payload_b64} # signed x402 payload
raw = httpx.get(f"{base}/v1/funding", headers=H).json()["data"]
funding = httpx.get(f"{base}/v1/funding/BTC", headers=H).json()["data"]
opps = httpx.get(f"{base}/v1/funding/opportunities", headers=H).json()["data"]
assert funding["assumptions"]["economics_modeled"] == "none"MCP
GET /v1/funding/opportunities is proxied 1:1 as tollbridge_funding_opportunities; the
per-asset decisions are runnable through the deep-decision tool:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "tollbridge_funding_opportunities",
"arguments": {}
}
}The tool result carries the same assumptions block verbatim and is scanned for banned profit-language — a policy verdict, not a trade.