How the gateway is actually built

The guarantees come from the code, not the copy

Four mechanisms are actually implemented today: versioned price quotes, durable attempt records with effect-aware retry, a fixed six-tool surface over a growing catalog, and an honest lifecycle model that never confuses "listed" with "live."

For humansFor agents

Exact price basis, quoted before you run

Pricing isn't a number typed into a page. It's a record in the same system that executes the run, scoped to one operation and one version of that operation.

Price is versioned
Every price is tied to a specific operation and operation version, with a source reference and an observed timestamp. Change the operation, get a new price version.
Confidence is labeled, not hidden
Each price carries a confidence tag: official and current, official but stale, estimated, or unknown. A quote never dresses up a guess as a fact.
Quote before run, always
You see the price basis before an operation executes. There is no step where a run starts and the price basis is filled in after the fact.
No silent markup
Tiers, minimums, free allowances, and rounding rules are structured fields on the price record itself, not a number pulled from a spreadsheet at checkout.

Nothing silently retried, nothing silently charged twice

A run is a sequence of attempts, and every attempt is a row, not a log line. When an outcome is unclear, the run stops in a reconciliation-pending state instead of guessing and moving on.

Every attempt is a record
A run's steps are stored as durable rows, not recomputed from logs after the fact. Each attempt links back to the run that produced it.
Retry only where retry is safe
An automatic retry policy can only be attached to a read operation. Write and outreach operations don't get one, because retrying a write you're not sure landed is how systems double-charge and double-send.
Uncertain outcomes stop, they don't guess
If a step's provider call fails after money may have moved, or a downstream result can't be verified against its schema, the run is marked reconciliation pending rather than silently retried or silently marked done.
Cost is capped before dispatch, checked after
A run declares a maximum charge before its first step fires. Actual cost is summed from real attempt records after each step, and a run that would exceed its ceiling stops rather than finishing over budget.

Six tools, however large the catalog gets

An AI client connects to looot once and gets discover, inspect, run, runs_get, runs_list, and balance. Nothing else. Every operation the catalog adds is data those six tools read, not a seventh tool.

Six tools. Not sixty. Not sixty per provider.
discover, inspect, run, runs_get, runs_list, balance. That's the entire MCP surface, regardless of whether the catalog behind it holds nine operations or nine thousand.
Operations are catalog rows, not tool schemas
Adding a new provider or a new operation is a catalog entry, not a new function definition an agent has to learn. The agent still calls discover and run.
One mental model per client
An agent that's connected once doesn't need re-onboarding every time a provider is added behind the catalog. The six-tool contract doesn't grow.
discoverinspectrunruns_getruns_listbalance

One taxonomy, five levels, no shortcuts

Every operation in the catalog sits at a fixed position: category, capability, operation, operation version, provider implementation. Nothing skips a level.

LevelExampleWhat it pins down
Categorye.g. company dataA grouping for humans browsing the catalog.
Capabilitye.g. web.search, company.enrich, media.generateThe dot-scoped identifier an operation is filed under. This is what discover actually searches on.
Operationone row per provider integrationA specific provider's implementation of a capability — its own input shape, its own pricing, its own eligibility.
Operation versionsemantic version per operationThe contract: input schema, output schema, effect (read, write, or outreach), idempotency behavior, retry eligibility, allowed hosts. Versions don't get edited in place.
Provider implementationfixture today, live adapter laterThe thing that actually executes the version's contract. Today that's a deterministic fixture for every shipped operation.

Cataloged does not mean connected

An operation carries five independent status fields, and every one of them has to clear before a run is allowed to hit it. Being in the catalog answers exactly one of these five questions.

Status fieldStatesQuestion it answers
catalogcandidate → cataloged → revokedIs it in the catalog at all.
readinessnone → contract reviewed → adapter ready → sandbox verifiedHas the integration itself been checked.
connectionabsent → connected → invalid → revokedDoes this tenant have working credentials for it.
rightsunknown → internal-only / BYOK approved / partner approved → prohibitedAre we legally allowed to run it this way.
productiondisabled → allowlisted → enabled → pausedIs it actually switched on for traffic.

Today, every shipped operation runs against a deterministic fixture. Nothing on this page describes a live provider connection, live billing, or a production claim we haven't earned yet — the local demo needs no account or provider key, and production connections stay fail-closed until they're configured and approved.

Where to see it, not just read about it

Setup center
Every account, environment variable, and scope a real operation needs, without ever printing a secret.
Local demo
Run discover, inspect, and run against deterministic fixtures with no account and no provider key.