DORETPRISM
Spend control for AI agents

Hard budgets for AI agents, checked before every call.

Spending limits enforced before each AI model call runs, through one gateway.

DORET Prism sits between your agents and the model providers: every call that goes through it is checked against the agent's, its team's and the company's limits, and charged at its real cost after. A call made straight to the provider with its own key is outside those limits, so keep provider keys in DORET Prism and give agents only theirs.

OpenAI, Anthropic, 9 more providers and any OpenAI-compatible server · Free Developer plan
Gateway decisionsExample
10:42:31pricing-scraperDana (Finance) approved $50.00 for 24 h+$50.00Approved
10:42:07support-triageclaude-sonnet-5-5 · streaming$0.31Allowed
10:42:05market-analystclaude-sonnet-5-5$0.30Allowed
10:41:59pricing-scraperasks for $50.00 for 24 h: finish today's sweepRequested
10:41:58pricing-scrapermonthly limit: $11.88 left, $14.40 neededRefused
10:41:52lead-enricherclaude-haiku-5-5$0.0012Allowed
Acme Robotics · this month$981.40 of $2,000.00
The Budgets page: Acme Robotics has spent $981.40 of $2,000.00 this month across Customer support and Research, with each agent's spend against its own limit.
An example organization. Every amount on this screen comes from calls made through the gateway.

Enforce budgets before every call

Agent, team and organization limits are checked before the call runs, not found on the invoice.

Keep your existing SDK

Change the base URL and the API key. Text calls through Chat Completions, Responses and Messages work as they are; the docs list what the gateway refuses.

Let agents request more

Requests with a reason, approvals by policy or a person, and a complete audit trail.

3.3 ms
of gateway work per call, p95, in our load test against a local mock provider; not a production guarantee
0
limits exceeded in our load test: 5,000 calls, 100 at a time
11
providers behind one gateway, plus any OpenAI-compatible server
Every
change and approval in a hash-chained log, verified hourly

Why the limit has to sit in the path

An agent stuck in a loop spends while nobody is watching. A usage dashboard shows the bill afterwards; a provider can only limit its own account. DORET Prism decides before each call, for every provider at once.

Usage dashboards and provider limitsDORET Prism
WhenShow spend after the calls are madeChecks every call before it runs
ScopeOne provider, one account or projectEvery provider your agents use
GranularityThe whole account or projectEach agent, team and the company; per day, month and call
At the limitAn alert, or everything on that key stopsOnly that agent stops, and it can ask for more
RecordA usage exportSpend, approvals and every change in one audit log

One call, start to finish

A real call to Claude Haiku through the gateway, step by step.

  1. 1CheckThe agent's key, its allowed models, its call rate.key valid · model allowed
  2. 2ReserveThe most the call could cost, held on the agent, its group and the company at once.$0.000020 held
  3. 3CallSent to the provider with only an output cap and usage reporting added, streaming included. Your key never leaves the gateway.16 tokens in, 6 out
  4. 4SettleCharged from the tokens in the provider's answer, at the model's price; the rest returns to the budget.$0.000005 charged · $0.000015 back

When an agent needs more

An agent that hits its limit asks for more through the API, with the amount, the time and the reason. Your policy decides who may approve it; on Business, small requests can be approved automatically within limits you set in advance.

AI can recommend. Only a person or your policy decides.

For the people who pay

Finance sees the month the way the ledger recorded it, and every decision that shaped it.

Statement · OctoberAcme Robotics, an example
GroupCallsSpent
Research2,064$619.26
Customer support1,027$308.13
Sales operations180$54.01
Total3,271$981.40
The ledger and the transactions agree.
Audit loghash-chained
  • Dana approved $50.00 for pricing-scraper
  • pricing-scraper asked for $50.00 for 24 h
  • Alex changed the limits of Research: monthly $600 → $800
  • Alex connected a key for Anthropic, ending 4f2a
  • Priya created the agent lead-enricher
On Business, reconciliation against OpenAI's and Anthropic's usage reports every few hours; differences stay open until someone explains them.

Two lines for your developers

Agents keep the SDK they use. They get their own key and the gateway's address; for text calls, nothing else in the code changes. When a budget cannot cover a call, the agent gets an answer it can act on.

Read the docs

const client = new OpenAI({
  apiKey: "aib_live_…",   // the agent's own key
  baseURL: "https://treasury.example.com/gw/openai/v1",
});
HTTP 402  budget_exceeded
Agent daily limit cannot cover this request.
limit $0.05 · remaining $0.0099 · required $0.0202
ask for more: POST /v1/agent/budget-requests

Every provider your agents use

OpenAI and Anthropic are priced by DORET Prism; the others at the prices you set. A model without a price is refused: a limit is only as good as the price behind it.

  • OpenAI
  • Anthropic
  • Google Gemini
  • Mistral
  • xAI
  • DeepSeek
  • Groq
  • Together AI
  • Fireworks AI
  • OpenRouter
  • Azure OpenAI
  • Your OpenAI-compatible server

Provider keys are encrypted per key, bound to your organization and never shown again. How DORET Prism protects your data

Who it is for

Companies with agent teams

A budget per team and per agent, managers approving their own team's requests, finance approving the large ones.

Agencies

A group per client (Startup and up): each client's agents share that client's budget, and on Business the monthly statement splits spend by client.

AI products

A hard ceiling on what any one workload can cost you, enforced before the call rather than found on the invoice.

Questions teams ask first

Does it slow my agents down?

In our internal load tests the gateway's own work was about 3 ms per call (p95 3.3 ms). That is a measurement against a local mock provider, not a promise: in production add the network hop to the gateway, which depends on where your agents run and where it is hosted. Prompts over 4,000 tokens add one call to the provider's token counter, unless Policies is set to the strict bound.

Do you see my prompts?

They pass through the gateway on their way to the provider, but are not stored. A transaction keeps the model, the tokens, the cost and the status; for a call the provider rejects, the first 200 characters of its error, which can quote the request.

What happens if DORET Prism is down?

Agents call through it, so it is in the path. Run more than one instance; they share nothing but Postgres. A call that cannot be checked is refused, never let through unchecked.

What do I change in my agents?

The base URL and the key in the SDK they already use; images, audio, files and built-in tools are refused, because their cost cannot be capped in advance. To ask for more budget, an agent calls one endpoint, or uses the small TypeScript or Python helper.

Who pays the providers?

You do, with your own keys, as today. DORET Prism holds no funds and issues no cards; budgets are allocations of your spend.

Can a limit ever be exceeded?

Not by calls through the gateway, with one known case: a few OpenAI-compatible providers bill reasoning beyond max_tokens. For those models you set an allowance that every call reserves; without one, an overrun is charged, flagged and reported to you, and the next call is refused.

Give your first agent a budget.

The Developer plan is free. Connect a provider, create an agent, watch a call get checked.