Skip to content

How it works

Code is the primary tool

The model decides what to compute. Code does the computing.

Most platforms answer a question about data by putting the data in front of the model. Cantora writes a program, runs it, and hands back the answer.

The worked example

“How did this week compare with last week?”

the program Cantora writes1,023 records read
// Runs once, in a fresh sandbox, under a read credential
// scoped to this customer by the provider itself.
const orders = await commerce.orders.list({
  placedAfter: "2026-07-14",
  placedBefore: "2026-07-28",
});

return Object.entries(Object.groupBy(orders, byIsoWeek))
  .map(([week, weekOrders]) => ({
    week,
    orders: weekOrders.length,
    revenue: sum(weekOrders.map((o) => o.total)),
  }));
what the model reads612 bytes
[
  { "week": "2026-W29", "orders": 512, "revenue": 184230.55 },
  { "week": "2026-W30", "orders": 511, "revenue": 201884.10 }
]

A size-bounded one-shot TypeScript program, validated, run in a fresh sandbox under finite time and resource limits.

The model never sees the 1,023 records. It sees the answer, and explains it.

95.2%token reductionMedian across six measured structured-data workloads, ranging from 75.3% to 99.3%.
  • Lower cost. The bill tracks the answer, not the dataset.
  • Deterministic arithmetic. Code calculates the result; the model explains it.
  • Inspectable evidence. The program and its result stay with the run.

The sandbox is bounded by what that credential can reach and how long it lasts, not by a network filter, and what is kept afterwards is inspectable evidence rather than a network audit. Where the boundaries sit.

How work reaches an agent

Four surfaces, one contract underneath. A surface is how work reaches an agent and how its answer comes back — a Slack thread, a call from your own product, a webhook, a schedule — and the agent answering is the same version wherever the question came from.

Run activityLive
All surfacesLast 24 hours12 runs
SELECTED RUN

Customer operations Agent

run_0219 · Slack thread
Agent version
Version 18
Identity
tenant_42
Evidence
Retained
Request acceptedIdentity, scope, and agent version resolved

Adding a second surface is a registration rather than a second product, and test and live each get their own. Whichever one work arrived through, four things hold.

Nothing is lost

The answer is saved before it is sent, so a failed delivery never loses the work.

Nobody is assumed

Who is asking is resolved to a tenant — your customer — and a user before any work starts.

Nothing shifts mid-run

A run picks its version once, so a release cannot change an answer already in flight.

Nothing leaks through

The agent sees Cantora’s own events, never the provider’s raw traffic and never hidden reasoning.

Behavior is versioned, evaluated, and reversible

Any change to a model, prompt, tool, policy, or budget creates a new candidate that has to earn its release, evaluated whole against the live baseline rather than scored by another model.

Promotion is a controlled rollout and rolling back is a release, not a redeploy. A provider’s new model is qualified against your evaluations before it carries traffic.

Get started

Come with the vision. We’ll do the rest.

Your first agent, working in two weeks.