Ostrel is pre-launch. Mandates for AI agents, built on the Canton Network. Request access

Permission slips for AI agentsChecked before settlement

Give your agents authority, not blank cheques.

Ostrel issues on-ledger mandates for AI agents. Spend limits, approved counterparties, an expiry date and a kill switch, all checked before a transaction settles.

Pre-launch. We’ll only write when there’s something to show you.

Checked on every transaction:

Today an agent gets a shared card or an API key with full authority. Or it gets nothing, and a person approves every step.

See how a mandate works

Shared card

One card number. No way to say which agent may spend what, or with whom.

API key

A key can pay anyone, any amount, until somebody remembers to rotate it.

Approval queue

Or every purchase waits for a person, and the agent stops being useful.

Month-end

Either way, you learn what the agent did after the money has moved.

One mandate. Five controls. All checked before the money moves.

Spend limit that resets on your schedule

$5,000

Drag to change the daily limit and see which queued requests still fit.

Spent today $3,120Remaining $1,880
  • Alder Compute GPU top-up$640Fits
  • Tessel Software Annual licence$1,450Fits
  • Quay Freight Pallet shipment$4,200Over limit

Approved counterparties, named on the mandate

Counterparties6 approved
  • NSNorthfield Supplynorthfield::1220a4c8…
  • ACAlder Computealder::12207be1…
  • QFQuay Freightquayfreight::1220d09f…
  • TSTessel Softwaretessel::122031aa…
  • BTBrightwater Tradingbrightwater::1220ff02…Not on mandate

Per-transaction cap for the one big mistake

Expiry, so authority ends by default

Valid for92 days
Issued1 Oct 2026Expires31 Dec 2026

After that, every check fails. Nobody has to remember to switch it off.

Kill switch that works on the next transaction

Mandate M-0142 Active

The agent can transact inside its limits.

Next transactionWill settle

Issue it once. It’s checked every time.

A mandate is a contract on the ledger between your company and your agent. This is its whole life.

  1. 1

    Issue

    You write the limits, name the counterparties and set an expiry. Your company signs. The mandate now exists on the ledger.

    signed byHalden Robotics Ltd
  2. 2

    Present

    When the agent wants to pay or sign, it attaches the mandate to the transaction it proposes. No card number, no shared key.

    attachedM-0142 → proposal
  3. 3

    Check

    The mandate’s rules run inside the same transaction as the payment. If any rule fails, the whole transaction is rejected.

    5 checkspass → settle
  4. 4

    Revoke

    Archive the mandate whenever you like. The agent’s authority ends with its very next transaction, not at the next key rotation.

    archivednext tx → rejected

Every decision on the record. Approved or declined, with the reason.

The console shows what each agent may do and what it tried to do. This one is a working demo on illustrative data. Send a transaction, then revoke the mandate and send another.

Ostrel console Demo · illustrative data

Mandates / M-0142

procurement-agent-01

Active
Spent, last 24h
$3,120.00of $5,000.00
Per transaction
$1,500.00
Counterparties
6approved
Expires
31 Dec 2026
Authorisation log Live
  • 09:41:07Northfield Supply$1,240.00ApprovedWithin mandate
  • 09:38:52Quay Freight$2,300.00DeclinedOver per-transaction cap
  • 09:31:15Alder Compute$640.00ApprovedWithin mandate
  • 09:22:40Brightwater Trading$900.00DeclinedCounterparty not listed
  • 09:14:03Tessel Software$480.00ApprovedWithin mandate
  • 09:02:29Marlow Stationers$760.00ApprovedWithin mandate

Issue a mandate in one call. Revoke it in another.

Your agent keeps its framework and its tools. It gains a mandate ID to present when it transacts. The rules live in a contract, so nothing depends on the agent behaving.

  • SDK and RESTIssue, amend, list and revoke mandates from your own backend.
  • Readable rulesEach mandate is a Daml contract. You can read exactly what it permits.
  • Reasons, not error codesEvery decline says which control failed and by how much.
Request API access
Preview API
import { Ostrel } from "@ostrel/sdk";

const ostrel = new Ostrel({ apiKey: process.env.OSTREL_API_KEY });

const mandate = await ostrel.mandates.issue({
  agent: "procurement-agent-01",
  limit: { amount: "5000.00", currency: "USD", period: "day" },
  perTransaction: "1500.00",
  counterparties: ["northfield-supply", "alder-compute"],
  expiresAt: "2026-12-31T23:59:59Z",
});

// The agent presents mandate.id with each transaction.
// When you want it to stop:
await ostrel.mandates.revoke(mandate.id);

Simplified for the page. Names and shapes may change before launch.

Why on-ledgerCanton Network

Checked before settlement, not reconciled after.

Ostrel runs on the Canton Network, a public ledger built for finance with privacy designed in. The mandate check and the payment sit in one transaction. Both happen, or neither does.

Cards and API keys An Ostrel mandate
When the rule runs After the charge, in a report or a dispute. Inside the transaction. A failed check means nothing settles.
Who can see it Whoever holds the key, the card data or the logs. Only the parties to it. Canton shares a contract with its stakeholders and nobody else.
What the record is Logs you keep, and hope are complete. The ledger. Each authorisation is an event the parties can verify.
How authority ends Rotate the key, cancel the card, chase the copies. Archive one contract. The next transaction is rejected.

One slip per job. Write the authority the job needs and no more.

Mandate

M-0142
Agent
procurement-agent-01
May
Place orders and pay supplier invoices
Limit
$5,000 a day
Per transaction
$1,500
Counterparties
Northfield Supply, Quay Freight, Marlow Stationers and 3 more
Expires
31 December 2026
Signed by Halden Robotics Ltd Active

DeclinedA $2,300 order from a new supplier. Over the cap and not on the list.

Questions, answered plainly.

Something else on your mind? Leave your email and ask us directly.

Request access
What is a mandate?

A contract on the ledger that says what one agent may do for your company: how much it may spend, with whom, until when. Your company signs it. The agent presents it. Think of a corporate card and a power of attorney, written for software.

How is this different from a virtual card with a limit?

A card limit is enforced by the issuer and you see the result on a statement. A mandate is enforced inside the transaction itself, names the counterparties, covers actions other than card payments, and can be revoked without cancelling anything else.

What happens when I revoke a mandate?

The mandate contract is archived. The agent’s next transaction that relies on it is rejected before anything settles. Transactions that already settled are unaffected.

Who can see my mandates?

The parties to them. On Canton, a contract is shared with its stakeholders and not broadcast to the rest of the network. Your limits and your counterparties are not public.

Why build on Canton?

Two reasons. Privacy: parties see only the contracts they are a stakeholder in. Atomic settlement: a transaction that spans several applications settles as a whole or not at all, so the mandate check cannot be skipped or run late.

What does my agent need to change?

It needs to present its mandate when it proposes a transaction. The limits are not in the prompt or in the agent’s code, so a confused or compromised agent still cannot exceed them.

Is Ostrel live?

Not yet. Ostrel is pre-launch. The screens on this page are a demo with illustrative data. Request access and we’ll write to you when there is something to try.

Give your agents authority, not blank cheques.

Pre-launch. We’ll only write when there’s something to show you.