Integrate in minutes
Try every call against the sandbox (free, unmetered, never charged), then switch to live with your key. The flagship call is validate_purchase_plan: send what the person owns and what's in the cart, get one decision with evidence, the questions blocking it, and a signed receipt.
Plan builder
Type a model and pick it from the suggestions. This runs POST /v1/sandbox/plan, exactly what your agent would send.
Already owns
Wants to buy
API playground
Inspect a receipt
Paste a receipt id (rcpt_...) or the full signed receipt (JWS). We check the signature, expiry, and whether the records behind it changed.
Recheck a plan before ordering
Re-runs a saved plan against today's data and lists what changed.
Your usage
Calls this month by operation, and your prepaid credit balance.
No key yet? Request one or buy credits (a key comes with them).
Setup
MCP
https://tetheredtrust.com/mcp
One-click and config for Claude, Cursor, VS Code and ChatGPT on the agents page.
HTTP
OpenAPI 3.1: /openapi.json · Guide for LLMs: /llms.txt · Sandbox scenarios: /v1/sandbox/scenarios
JavaScript
import { TetheredTrust } from "https://tetheredtrust.com/sdk/tethered-trust.mjs";
const tt = new TetheredTrust({ sandbox: true });
const plan = await tt.validatePlan({
setup: ["Lenovo ThinkPad T480"],
purchase: [{ text: "Crucial CT16G4SFRA32A", quantity: 2 }]
});
console.log(plan.decision, plan.questions);
Python
# curl -O https://tetheredtrust.com/sdk/tethered_trust.py
from tethered_trust import TetheredTrust
tt = TetheredTrust(sandbox=True)
plan = tt.validate_plan({"setup": ["Lenovo ThinkPad T480"],
"purchase": [{"text": "Crucial CT16G4SFRA32A", "quantity": 2}]})
print(plan["decision"], plan["questions"])Decisions your agent acts on
| decision | What to do |
|---|---|
supported | Proceed. Relay the caveats. |
conditional | Proceed only with the conditions met: add the required_accessories, or confirm the configuration. |
incompatible | Don't buy as planned. Offer the substitutions. |
insufficient_evidence | Ask the person the questions (each says which field to fill) and call again. Never charged. |