You are not looking for a dashboard. You are looking for control — over spend you did not forecast, from systems that bill by the token and never sleep.
How this actually works
Most AI-cost tools stop at the first two. Seeing the crash and understanding the crash are not the same as avoiding it.
Where the money goes, which team, which project, which feature — and why.
Tokens → RAG → agent loops. The whole chain, not just the model price.
The part nobody else does. Model the cost before you ship, and cap it in production.
Where it plugs in
The engines are not a destination. They run inside the loops your teams already operate.
A developer opens a PR that adds an AI feature. Your CI job asks AICost what it will cost at projected volume, and fails the build if it blows the budget. The number lands in the PR, where the decision is still cheap to change.
The second-order win: spend gets attributed by team and repo. You can finally answer “is this team’s AI budget buying us productivity, or just tokens?” without reading anyone’s prompts.
# .github/workflows/ai-cost-gate.yml - name: AI cost gate run: | curl -sS -X POST https://mcp.aicost.ai/v1/run \ -H "Authorization: Bearer ${{ secrets.AICOST_KEY }}" \ -H "Content-Type: application/json" \ -d '{"engine_id":"aicost.cost-calculator", "context":{"project_id":"checkout","unit_economics":{"tasks_per_month":250000}}, "inputs":{"requests_per_month":250000,"input_tokens_per_request":1800, "output_tokens_per_request":400}}' \ | tee cost.json # fail the build over budget — exit non-zero node ci/assert-under-budget.js cost.json --max-usd 4000
Ticket triage, research, code fixes — the loop is think → tool → observe, and it burns roughly 50× the tokens of a chat turn. The envelope gives every run a hard ceiling on cost, steps, tool calls, retries and reasoning budget. Exceed it and the run stops and escalates to a human, which is a fallback, not a bill.
Report cost per successful task, not per run. That single distinction is usually the difference between an agent that looks cheap and one that is.
A support bot over your docs is the most common enterprise RAG workload — and the one where the LLM is rarely the biggest line. Embedding the corpus, re-embedding on every doc change, the vector store, the retrieval calls, the context you stuff into each answer: that is the bill.
Model the whole pipeline with rag-pipeline, embedding-cost, vector-db-cost, chunking-optimizer and data-freshness-cost — then get cost per deflected ticket with support-deflection-roi. That is the number your CX lead actually reports.
Integration
No agents to deploy. No cloud credentials to hand over. No data pipeline. If you already run an LLM gateway, you are most of the way there.
https://mcp.aicost.ai/mcp as a connector in Claude, ChatGPT, Cursor or Perplexity, with your Bearer key. Ask it a question about your spend. That is the whole install.aicost.cost-firewall on one workload with compile_policy: "litellm". You get back budgets, daily hard caps, RPM/TPM limits, a spike-anomaly rule and a kill switch — already in your gateway’s config format.policy_patch.compiled.config into litellm-config.yaml, restart, send a request. Exceed the cap and you get an HTTP 402. That is the runaway, stopped, in your own traffic.ledger_ingest_actuals. Now ledger_reconcile tells you modeled vs actual and what the savings really were.tenant_id, project_id, workload_id on every call. Everything downstream — attribution, reconciliation, the QBR report — depends on this and nothing else does the job retroactively.Cheap answers are easy. The reason most cost tooling never leaves the pilot is that engineering does not trust it near production traffic. So the policies are constrained by your rules, not ours:
quality_floor and a max_latency. A cheaper model that fails the floor is never selected — the saving is simply not claimed.Gateways: LiteLLM (recommended — it natively wraps Bedrock, Azure OpenAI and Vertex), Cloudflare AI Gateway, Portkey, Kong. Both compile from the same decision, so pick per client and the envelope is identical. Policy types your gateway cannot express natively arrive under x_aicost_policy for your app layer, rather than being silently dropped.
For MSPs and consultancies
You already manage your clients’ cloud. AI is the line item now exploding on their bill, and almost nobody in the channel has a tool that prevents the runaway, explains it, or proves the fix. This is that tool — under your brand, with your markup, live in a day.
POST /admin/orgs → POST /admin/keys → set brand, markup, rate limit. Onboard a client in minutes.The demo that closes: the Cost Firewall. A stolen key that ran $82K in 48 hours would have been blocked at a ~$8/day cap on day one. Every client you have felt that story in their chest — and none of them can currently stop it.
Not just tokens
Most teams look at the model bill. The infrastructure underneath it — GPUs, Kubernetes, vector stores, egress, the observability you turned all the way up — is where the rest of the money is.
And the infrastructure itself — commitments, Spot, Kubernetes right-sizing, storage tiering, egress paths — lives on our sister site. CostOptimization.ai is a vendor-neutral knowledge base of 37 cloud cost categories, each with a modeled savings range, the specific spend it applies to, the provider action, and the reason you cannot simply add them together.
You get two AI bills. The model bill, and the cloud bill underneath it. Most teams only look at the first one.
Access
MCP access is in beta and keys are issued by hand. That is deliberate — we would rather talk to the first hundred teams than watch a signup form.
aicost_sk_… Bearer key scoped to your org. MSPs get an admin key and can then issue their own client keys via POST /admin/keys without asking us.POST /v1/run from CI. OAuth via auth.aicost.ai is in progress for ChatGPT and Perplexity.Keys are per-org and revocable. Rate limits are per-IP and per-tenant. Rotate any time — ask, and the old key dies immediately.
If you do not know where your AI spend goes, start with visibility. If you know and cannot stop it, start with the firewall. If you have not shipped yet, start with the windshield — it is the cheapest moment you will ever have.
Request an MCP beta key → Get the $39 Blueprint99 decision engines · 84 free calculators · no signup for the calculators · [email protected]
Last-verified date is the most recent successful daily snapshot
(aicost_pricing_snapshots) or, when no snapshot exists yet,
the latest successful crawler run (aicost_crawler_runs).
10 of 10
vendors are currently verified. Aggregator services (TokenCost, AI Pricing Guru, etc.)
are not listed.
Derived from industry conventions, not directly published by the vendor. Typical conventions: cached input = 10% of base (90% off), Batch API = 50% of base (50% off).
| Vendor / Model | Field | Why it’s inferred |
|---|---|---|
| Anthropic — Claude Sonnet 4.6 | cachedInput |
Derived at 10% of input rate — Anthropic publishes 90% cache-hit discount on this tier. |
| Anthropic — Claude Sonnet 4.5 | cachedInput |
Derived at 10% of input rate; same 90% cache-hit convention as Sonnet 4.6. |
| Anthropic — Claude Sonnet 4.5 | batchInput |
Derived at 50% of standard input — Anthropic documents uniform 50% Batch discount. |
| Anthropic — Claude Sonnet 4.5 | batchOutput |
Derived at 50% of standard output — Anthropic documents uniform 50% Batch discount. |
| Anthropic — Claude Haiku 4.5 | cachedInput |
Derived at 10% of input rate — Anthropic 90% cache-hit discount convention. |
| OpenAI — GPT-5.4 Mini | cachedInput |
Derived at 10% of input — OpenAI documents automatic 90% discount on cache hits across GPT-5.x tier. |
| OpenAI — GPT-5.4 Nano | cachedInput |
Derived at 10% of input — OpenAI 90% cache-hit convention. |
| OpenAI — GPT-5.4 Nano | batchInput |
Derived at 50% of input — OpenAI Batch API uniform 50% discount. |
| OpenAI — GPT-5.4 Nano | batchOutput |
Derived at 50% of output — OpenAI Batch API uniform 50% discount. |
| OpenAI — GPT-5.4 Pro | cachedInput |
Derived at 10% of input — OpenAI 90% cache-hit convention. |
| OpenAI — GPT-5.4 Pro | batchInput |
Derived at 50% of input — OpenAI Batch API uniform 50% discount. |
| OpenAI — GPT-5.4 Pro | batchOutput |
Derived at 50% of output — OpenAI Batch API uniform 50% discount. |
| OpenAI — GPT-5.2 | cachedInput |
Derived at 10% of input; no residency uplift. |
| OpenAI — GPT-5.2 | batchInput |
Derived at 50% of input. |
| OpenAI — GPT-5.2 | batchOutput |
Derived at 50% of output. |
| OpenAI — GPT-5 | cachedInput |
Derived at 10% of input. |
| OpenAI — GPT-5 | batchInput |
Derived at 50% of input. |
| OpenAI — GPT-5 | batchOutput |
Derived at 50% of output. |
| OpenAI — GPT-5.5 Pro | cachedInput |
Derived at 10% of input — OpenAI does not publish a cached rate for *-pro models; using the family convention. |
| OpenAI — GPT-5.5 Pro | batchInput |
Derived at 50% of input. |
| OpenAI — GPT-5.5 Pro | batchOutput |
Derived at 50% of output. |
| OpenAI — GPT-5.2 Pro | cachedInput |
Derived at 10% of input — pro-tier convention. |
| OpenAI — GPT-5.2 Pro | batchInput |
Derived at 50% of input. |
| OpenAI — GPT-5.2 Pro | batchOutput |
Derived at 50% of output. |
| OpenAI — GPT-5.1 | batchInput |
Derived at 50% of input. |
| OpenAI — GPT-5.1 | batchOutput |
Derived at 50% of output. |
| OpenAI — GPT-5 Pro | batchInput |
Derived at 50% of input. |
| OpenAI — GPT-5 Pro | batchOutput |
Derived at 50% of output. |
| OpenAI — GPT-5 Nano | cachedInput |
Derived at 10% of input. |
| OpenAI — GPT-5 Nano | batchInput |
Derived at 50% of input. |
| OpenAI — GPT-5 Nano | batchOutput |
Derived at 50% of output. |
| Google — Gemini 3 Flash | cachedInput |
Derived at 10% of input — Google caching discount convention ~90%. |
| Google — Gemini 3.1 Flash-Lite | cachedInput |
Derived at 10% of input — Google caching convention. |
| Google — Gemini 3.1 Flash-Lite | batchInput |
Derived at 50% of input — Google Batch API uniform 50% discount. |
| Google — Gemini 3.1 Flash-Lite | batchOutput |
Derived at 50% of output — Google Batch API uniform 50% discount. |
| Google — Gemini 2.5 Pro | cachedInput |
Derived at 10% of input. |
| Google — Gemini 2.5 Flash | cachedInput |
Derived at 10% of input. |
| Google — Gemini 2.5 Flash-Lite | cachedInput |
Derived at 10% of input — Google caching convention. |
| Google — Gemini 2.5 Flash-Lite | batchInput |
Derived at 50% of input — Google Batch API uniform 50% discount. |
| Google — Gemini 2.5 Flash-Lite | batchOutput |
Derived at 50% of output — Google Batch API uniform 50% discount. |
| Google — Gemini 2.0 Flash | cachedInput |
Derived at 25% of input per Google 2.0 family caching rates. |
| Google — Gemini 2.0 Flash | batchInput |
Derived at 50% of input — Google Batch API uniform 50% discount. |
| Google — Gemini 2.0 Flash | batchOutput |
Derived at 50% of output — Google Batch API uniform 50% discount. |
| Google — Gemini 2.0 Flash-Lite | cachedInput |
Derived at 10% of input — Google caching convention. |
| Google — Gemini 2.0 Flash-Lite | batchInput |
Derived at 50% of input — Google Batch API uniform 50% discount. |
| Google — Gemini 2.0 Flash-Lite | batchOutput |
Derived at 50% of output — Google Batch API uniform 50% discount. |
| xAI — Grok 4 (legacy) | cachedInput |
Extrapolated at 25% of base. |
Pricing is cross-verified against the
LiteLLM community registry
when available. Daily snapshots are kept in aicost_pricing_snapshots;
every change is logged to aicost_price_changelog with old & new
values for full audit trail. Read the full methodology →