See AI usage without touching a runtime
Connect a read-only admin key and Joopler reads each provider's own usage report. No proxy, no gateway, no change to anything you ship.
The lowest-friction way to see AI activity in Joopler: connect the provider with a read-only admin key, and the nightly run reads what that provider says your organization spent.
Nothing changes in any runtime. No traffic passes through us. You add no credential beyond the one the connector already uses for its control checks.
If you ship software with AI in it, this is usually the right starting point, because it asks nothing of the product you deliver to customers.
What you need
- The Anthropic or OpenAI connector already connected on Integrations.
- For OpenAI, an organization admin key with the
api.usage.readscope. - For Anthropic, an Admin API key with organization read access.
Nothing else. If the connector is already green, usage starts appearing after the next nightly run.
Where it shows up
AI usage → Reported by the provider. Per provider: calls, tokens in, tokens out, how many models, and the newest day held. Under that, the top models by token volume.
What this is not
This is the honest part, and it is why the panel sits apart from everything else on the page.
A usage report is an aggregate the provider computed. It carries a model, a time bucket, token counts, and whichever API key or project the provider attributes the spend to. It cannot carry:
- what was in the prompt, because none of it reached us
- an argument hash, for the same reason
- a data-loss finding, a prompt-injection verdict, or a classification
- a person, unless your provider's own attribution names one
So pulled usage is stored in its own table and rendered in its own panel. The rest of the AI usage page counts calls we captured; this panel repeats a bill somebody else wrote. Conflating them would let a number that nobody inspected stand in for one that was.
| Pulled from the provider | Captured by Joopler | |
|---|---|---|
| Change to your runtime | none | proxy setting, or a gateway integration |
| What you see | model, tokens, time, the provider's own actor | the call, its arguments hashed, what it touched |
| Data-loss and injection detection | no | yes |
| Blocking | no | yes, in terminate mode |
| Per-call evidence record | no, one record per pull | yes, one per call |
Some specifics worth knowing
- Anthropic reports tokens, not calls. Its message report has no request count, so calls show as a dash rather than zero. A zero would be a claim the provider never made.
- Cost is not pulled. Each provider exposes cost through a separate endpoint, and deriving it from tokens here would present our arithmetic as theirs. Price your own usage on the rate card instead.
- The newest day keeps changing. Providers finish writing a day after it ends, so we re-read the last few days on every run and correct the numbers rather than adding to them.
- A failed read is reported, never drawn as a quiet flat line. If the key cannot read usage, the run says so and writes nothing. "We could not read it" and "nothing happened" are the two things this product must never confuse.
When to climb the next rung
Pull usage tells you how much. It cannot tell you what was sent, and it cannot stop anything. When you need those, the next rungs are bring your own gateway (send logs or ask for a verdict, keeping your own data path) and the egress proxy (capture the calls themselves).
Govern an agent you bought
Put Joopler in front of your own MCP server, so an off-the-shelf agent gets tool-level permissions, run-scoped caps and a signed trace without the vendor changing anything.
See your AI usage in 10 minutes
Route AI traffic through the Joopler egress proxy for a live, signed record of every interaction.