AiGanak LLM Cost
Provides up-to-date list prices, cached/batch rates, long-context surcharges, scheduled changes, and cost calculations for Google Gemini API models.
Provides up-to-date list prices, cached/batch rates, long-context surcharges, scheduled changes, and cost calculations for OpenAI API models.
LLM API Prices
Up-to-date list prices for the OpenAI, Anthropic and Google Gemini APIs. Every price is a machine-readable record copied from the provider's own pricing page, with its source and the date it was checked.
One dataset, four ways to use it: an MCP server for AI assistants (
mcp/), plusdata/prices.json(with a JSON Schema),data/prices.csv, and a dependency-free Python package.Everything that changes the bill: standard, cached-input and batch rates, cache-write prices, long-context surcharges and announced future price changes.
History: a dated snapshot for every check in
data/snapshots/, and a sourced price change log.
Maintained by AiGanak. The same data powers the free LLM API pricing calculator and the LLM price change log.
Current prices
Model | Provider | Tier | Input | Cached input | Output | Batch input | Batch output |
Claude Fable 5.1 | Anthropic | Flagship | $10 | $0.25 | $50 | $5 | $25 |
Claude Opus 5.5 | Anthropic | Flagship | $4 | $0.20 | $20 | $2 | $10 |
Gemini 3.1 Pro (preview) | Flagship | $2 | $0.20 | $12 | $1 | $6 | |
Gemini 4 Argon | Flagship | $2 | $0.10 | $10 ¹ | $1 | $5 | |
GPT-6 Astra | OpenAI | Flagship | $10 | $1 | $50 | $5 | $25 |
Claude Sonnet 5.5 | Anthropic | Mid | $2 | $0.10 | $10 | $1 | $5 |
Gemini 3.8 Flash | Mid | $0.75 | $0.075 | $3.75 ¹ | $0.375 | $1.875 | |
GPT-6.1 Sol | OpenAI | Mid | $2 | $0.10 | $10 | $1 | $5 |
GPT-6.1 Terra | OpenAI | Mid | $1 | $0.05 | $5 | $0.50 | $2.50 |
Claude Haiku 4.5 (legacy) | Anthropic | Small | $1 | $0.10 | $5 | $0.50 | $2.50 |
Claude Haiku 5.5 | Anthropic | Small | $0.10 | $0.01 | $0.50 | $0.05 | $0.25 |
Gemini 3.5 Flash-Lite | Small | $0.30 | $0.03 | $2.50 | $0.15 | $1.25 | |
Gemini 3.1 Flash-Lite | Small | $0.25 | $0.025 | $1.50 | $0.125 | $0.75 | |
GPT-6 Luna | OpenAI | Small | $0.10 | $0.01 | $0.50 | $0.05 | $0.25 |
USD per million tokens, standard tier, text. Checked 2026-11-02.
¹ Announced price change: Gemini 4 Argon: $4 input / $20 output from 2026-12-01; Gemini 3.8 Flash: $1.50 input / $7.50 output from 2027-01-01.
Per-model detail, worked examples and head-to-head comparisons: aiganak.com/llm-api-pricing.
Related MCP server: Model Price Watch
Language token tax
The same text costs a different number of tokens in each language, and every model family tokenizes differently. data/token-tax/ holds a 12-message business corpus in English and 22 other languages, the official token counts per model, and the counting script. Selected results (tokens as a multiple of English on the same model, measured 4 November 2026):
Language | OpenAI GPT-6 | Claude 5.x | Gemini 3.x | Gemini 4 Argon |
Hindi | 1.43× | 2.28× | 1.18× | 1.28× |
Tamil | 1.91× | 3.21× | 1.36× | 1.65× |
Kannada | 1.89× | 6.38× | 1.82× | 2.05× |
Odia | 4.85× | 5.33× | 3.37× | 2.29× |
German | 1.25× | 1.99× | 1.29× | 1.27× |
Chinese | 1.03× | 1.01× | 0.96× | 0.90× |
Full index for 23 languages, with a free checker for your own text: aiganak.com/language-token-tax.
Quick start
Use the JSON directly
No install needed. Fetch the latest file from GitHub or the jsDelivr CDN:
curl -s https://raw.githubusercontent.com/AiGanak/llm-prices/main/data/prices.json
curl -s https://cdn.jsdelivr.net/gh/AiGanak/llm-prices@main/data/prices.jsonconst res = await fetch("https://cdn.jsdelivr.net/gh/AiGanak/llm-prices@main/data/prices.json");
const { models } = await res.json();
const terra = models.find((m) => m.id === "gpt-6.1-terra");
console.log(terra.pricing.standard); // { input: 1, cached_input: 0.05, output: 5 }Pin a dated version for reproducible results: .../llm-prices@v2026.11.02/data/prices.json.
Python
pip install "git+https://github.com/AiGanak/llm-prices"import llm_prices
# Cost of one request: 6,000 prompt tokens (4,000 read from cache) and a 500-token answer
llm_prices.cost("claude-sonnet-5-5", input_tokens=6_000, output_tokens=500, cached_tokens=4_000)
# 0.0094
# Half price for work that can wait
llm_prices.cost("gpt-6.1-sol", 20_000, 800, batch=True)
# Prices on a future date, including announced changes
llm_prices.cost("gemini-4-argon", 2_000, 300, on="2026-12-01")
# The same request on every model, cheapest first
for model, usd in llm_prices.compare(input_tokens=2_000, output_tokens=300)[:5]:
print(f"{model.name:28} ${usd:.5f}")The package has no dependencies and works offline: the data ships inside it. llm_prices.CHECKED tells you when the prices were last checked.
Command line
$ llm-prices list --provider anthropic
$ llm-prices cost claude-opus-5-5 --input 20000 --output 800 --requests 100000
$ llm-prices compare --input 2000 --output 300 --cached 1500In your AI assistant (MCP server)
Ask Claude, Cursor or any MCP client what a workload costs, which model is cheapest, or what the token tax is for a language. See mcp/ for the server and setup:
{ "mcpServers": { "aiganak-llm-cost": { "command": "npx", "args": ["-y", "@aiganak/llm-cost-mcp"] } } }Data format
Each model record in data/prices.json:
{
"id": "gpt-6-astra",
"provider": "OpenAI",
"name": "GPT-6 Astra",
"tier": "flagship",
"status": "active",
"pricing": {
"standard": { "input": 10, "cached_input": 1, "output": 50 },
"batch": { "input": 5, "cached_input": 0.5, "output": 25 },
"cache_write": 12.5,
"long_context": {
"threshold_tokens": 272000,
"standard": { "input": 20, "cached_input": 2, "output": 75 },
"note": "Prompts over 272K input tokens cost 2x input and cache rates and 1.5x output for the whole request."
}
},
"scheduled_changes": [],
"source_url": "https://developers.openai.com/api/docs/models/gpt-6-astra",
"checked": "2026-11-02"
}Field | Meaning |
| The provider's API model ID, as used in requests. |
|
|
|
|
| Pay-as-you-go list price in USD per million tokens. |
| Asynchronous batch price (results within 24 hours). |
| Price to write tokens to the shortest-lived prompt cache, where the provider charges for it. |
| Rates that apply to the whole request when the prompt is longer than |
| Announced future prices and the date they take effect. |
| The provider page the prices were copied from. |
The full contract is schema/prices.schema.json (JSON Schema 2020-12). Breaking changes to the format bump schema_version and are announced in the changelog.
Methodology
Primary sources only. Every price is copied by hand from the provider's own pricing or model page, never from third-party aggregators. Each record links to its source.
Checked weekly, and the same day a provider announces a change. Each check updates
checked, adds a snapshot indata/snapshots/, and tags a release (vYYYY.MM.DD).Validated in CI. Every change must pass the JSON Schema, unit tests for the cost calculator, and a check that the CSV, package data and this README were regenerated from the JSON.
Scope. Text tokens on the standard (pay-as-you-go) tier. Regional endpoints, priority tiers, enterprise discounts, image, audio and tool fees (such as web search) are not included. Cache storage fees (Gemini) are noted in the change log but not modelled.
Prices can change at any time. Always confirm on the provider's page before making a purchasing decision.
Get notified when prices change
Watch this repository (Custom → Releases) to get an email for every new dated release.
Or sign up for free LLM price change alerts: one email when a provider changes a price, nothing else.
Contributing
Spotted a price that has changed? Open an issue with a link to the provider's page. Pull requests should edit data/prices.json (and data/changes.json), then run:
python scripts/build.py
python -m pytestSee CONTRIBUTING.md for details.
Citation
If you use this dataset in research or a publication, please cite it (GitHub's Cite this repository button uses CITATION.cff):
@misc{aiganak_llm_prices,
title = {LLM API Prices: list prices for OpenAI, Anthropic and Google models},
author = {{AiGanak}},
year = {2026},
url = {https://github.com/AiGanak/llm-prices}
}License
Data (
data/,schema/): Creative Commons Attribution 4.0. Use it anywhere, including commercially, with a link back to this repository or aiganak.com/llm-api-pricing.Code (
src/,scripts/,tests/): MIT.
Model and company names are trademarks of their owners. This project is independent and not affiliated with OpenAI, Anthropic or Google.
About AiGanak
AiGanak is an AI systems studio. We help teams cut LLM spend without losing quality: free tools like the LLM Bill Analyzer and self-host vs API calculator, a fixed-price LLM Cost Report, and hands-on cost audits. We also build custom small language models for private deployment.
Available Tools
7 toolscompare_modelsCompare the same workload across modelsA
Price the same request on every model (optionally one provider or tier), cheapest first. Use to choose a model on cost before testing quality.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Price on this date (YYYY-MM-DD), including announced changes; default today | |
| tier | No | ||
| batch | No | Use asynchronous batch prices (results within 24 hours) | |
| provider | No | ||
| requests | No | Number of requests to price | |
| input_tokens | Yes | Prompt tokens per request, including cached tokens | |
| output_tokens | Yes | Output tokens per request, including any reasoning/thinking tokens | |
| cached_input_tokens | No | Part of input_tokens read from the prompt cache |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the disclosure burden. It usefully reveals the output ordering ('cheapest first') and that provider/tier are optional filters, but says nothing about pagination, which models are excluded, or that results are pure computation with no side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the comparative scope and output ordering front-loaded before the usage recommendation. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and eight parameters, so the description should say more about the result: whether it returns one row per model, what cost fields appear, or how models without a listed price are handled. It is adequate for a read-only price comparison but leaves the agent guessing at the response shape and the relationship to estimate_cost.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, so most parameters are already documented. The description only reinforces the optional provider/tier filtering and the 'same request' premise applied uniformly across models; it adds no meaning for date semantics, batch behavior, or cached_input_tokens beyond what the schema states. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and scope: 'Price the same request on every model', with optional provider/tier narrowing and 'cheapest first' output ordering. This implicitly separates it from single-model siblings like get_model_price, but no sibling is named explicitly, so the differentiation is inferential.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear when-to-use guidance: 'Use to choose a model on cost before testing quality', which frames the decision stage this tool serves. It does not say when to prefer estimate_cost or estimate_text_cost instead, so the boundary with the cost-estimation siblings is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_costEstimate the cost of LLM requestsB
Cost in USD of N requests on one model, with input/output breakdown, caching, batch, long-context surcharges and announced price changes.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Price on this date (YYYY-MM-DD), including announced changes; default today | |
| batch | No | Use asynchronous batch prices (results within 24 hours) | |
| model | Yes | ||
| requests | No | Number of requests to price | |
| input_tokens | Yes | Prompt tokens per request, including cached tokens | |
| output_tokens | Yes | Output tokens per request, including any reasoning/thinking tokens | |
| cached_input_tokens | No | Part of input_tokens read from the prompt cache |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose useful behavior: the result is in USD, includes an input/output breakdown, and factors in caching, batch discounts, long-context surcharges, and announced price changes. It does not state that the tool is a pure read-only calculation, nor describe the shape of the returned breakdown, which matters since there is no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with the core output (USD cost) front-loaded and the supporting pricing dimensions trailing. Every clause maps to a real feature of the tool; it is efficient, though the enumeration is packed tightly enough to read as a feature list rather than guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter pricing calculator with no annotations and no output schema, the description covers the pricing dimensions well but leaves the return value layout, rounding/currency assumptions, and behavior for unknown models or dates unaddressed. Adequate, but an agent must still probe the output to understand the breakdown.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 86%, so the schema already defines date, batch, requests, token counts, and cached_input_tokens in detail. The description adds only the high-level framing of which pricing dimensions are modeled (batch, caching, long context) and does not explain parameter interactions such as cached_input_tokens being a subset of input_tokens beyond what the schema says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific computation (total USD cost of N requests on one model) and enumerates the modifiers it accounts for (caching, batch, long-context surcharges, announced price changes). This clearly separates it from siblings like get_model_price or list_models, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'cost of N requests on one model' suggests this is the tool for multi-request totals rather than per-token pricing. There is no explicit statement of when to prefer this over get_model_price, compare_models, or estimate_text_cost, and no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_text_costEstimate tokens and cost for a text in any measured languageB
Estimate how many tokens a text takes on a model and what N such messages cost as input or output, using measured tokens-per-character for its language. Detects the script if language is omitted.
| Name | Required | Description | Default |
|---|---|---|---|
| as | No | input | |
| text | Yes | ||
| model | Yes | ||
| language | No | ||
| messages | No | How many messages of this size |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose the estimation methodology (measured tokens-per-character for the language) and an automatic script-detection fallback when language is missing. It never confirms this is a side-effect-free calculation, offers no accuracy/precision caveat, and doesn't state what the response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the core action and followed by the one behavioral caveat; nothing is restated from the schema or wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter tool with no annotations and no output schema, the definition covers intent and most parameter meaning but never describes the return shape (token count, cost, per-unit breakdown), which an agent must know since nothing structured supplies it. Adequate but with a clear gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 20% (just `messages` is documented), so the description has to compensate and largely does: it explains `as` as input vs output pricing, `messages` as N copies of the same text, `language` as optional with auto-detection, and `model` as the target for tokenization. The only gap is any expected format for `model` or `language` identifiers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (estimate) plus the exact quantities produced (tokens and cost) and the scope ('a text ... on a model'). The phrase 'a text' implicitly differentiates it from estimate_cost, but no sibling is named, so an agent must infer the boundary from the descriptions of the others.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance, and no signposting toward estimate_cost, get_model_price, or compare_models. The only conditional behavior mentioned ('Detects the script if language is omitted') is a runtime action, not guidance on selecting this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_model_priceGet one model's full pricingB
Full pricing for one model: standard, cached input, cache write, batch, long-context surcharge, announced future price changes and the provider's source page.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes | API model ID or name, e.g. gpt-6.1-terra or Claude Sonnet 5.5 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears the full burden; 'full pricing for one model' implies a read-only lookup, but nothing states that it does not mutate anything, how an unknown or non-existent model ID is handled, or how fresh the prices are. It does add real value by listing exactly which price categories come back, which substitutes for the missing output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the itemized list is dense but each element conveys a distinct returned price category. Slight cost in readability from packing seven items into one clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter lookup with no output schema, the description does the main job of telling the agent what data comes back. It omits units/currency, per-token vs per-million normalization, and error behavior, which matter for a pricing tool an agent will feed into cost calculations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter exists and schema coverage is 100%, with the schema itself giving format examples ('gpt-6.1-terra or Claude Sonnet 5.5'). The description adds no matching or normalization rules beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific resource (full pricing) with a clear scope restriction (one model) and enumerates the price dimensions returned, so an agent can distinguish it from list_models and compare_models without opening the schema. It never names a sibling explicitly, which keeps it just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance and no mention of alternatives such as estimate_cost (which computes a spend figure) or compare_models (multi-model). That the tool is for a single model's detail is only inferable from the phrasing 'one model'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_modelsList LLM models and pricesA
List current OpenAI, Anthropic and Google API models with standard, cached-input and batch prices in USD per million tokens.
| Name | Required | Description | Default |
|---|---|---|---|
| tier | No | ||
| provider | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden; it does disclose the substantive output contract (three price categories, USD, per-million-token normalization) which is the key behavioral detail. It stops short of stating read-only nature explicitly, data freshness, or whether the result is a static snapshot.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single well-formed sentence with no filler. The resource and provider scope are front-loaded and the price detail follows, so scanning yields the essentials immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-filter read tool with no output schema and no annotations, the description covers what is returned well enough to invoke correctly. The remaining gap is the unexplained 'tier' filter, which an agent would have to inspect the schema for and would still not fully understand.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It partially covers the provider filter by naming the OpenAI/Anthropic/Google enum values, but the 'tier' parameter (flagship/mid/small) is never mentioned or explained, leaving half the filtering surface undocumented anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('List') and a concrete resource ('current OpenAI, Anthropic and Google API models'), then enumerates the price dimensions returned (standard, cached-input, batch) in USD per million tokens. This makes the catalog-listing nature unambiguous versus siblings like get_model_price or estimate_cost, though no sibling is named directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is the browse/discovery tool for the model catalog. There is no explicit statement of when to prefer this over get_model_price, compare_models, or estimate_cost, and no prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
price_changesRecent LLM API price changesC
Dated, sourced log of LLM API price changes and pricing announcements (newest first).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full behavioral burden and only delivers ordering and record shape ('dated, sourced', newest first). It says nothing about read-only semantics, whether history is complete or bounded, what providers/time window the log covers, or what happens when limit is smaller than the available history.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the key qualifiers front-loaded and no filler. Its brevity is a virtue structurally, though it borders on under-specification rather than pure efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-optional-param, read-only listing tool with no output schema, this is close to adequate: it conveys that results are chronological and carry dates and sources. It still leaves out the scope of coverage (which providers, how far back) and how limit interacts with the log depth, which an agent would want before calling it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single optional `limit` parameter, and the description never explains what limit controls, its default of 10, or the cap of 50. '(newest first)' implies ordering but does not tell the agent that limit truncates the newest-N entries.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource precisely — a dated, sourced log of LLM API price changes and pricing announcements — which is clearly distinct from pricing siblings like get_model_price (single current price) or estimate_cost. The verb is only implicit ('log of'), so it never explicitly says 'list' or 'returns', but the resource is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no sibling is referenced, even though the toolset contains several pricing tools (get_model_price, compare_models, token_tax) that an agent could easily confuse with this one. The parenthetical '(newest first)' hints at a recency-oriented use case, but the agent must infer it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
token_taxLanguage token taxA
How many more tokens the same text takes in a language than in English, on each measured model (OpenAI GPT-6, Claude 5.x, Gemini 3.x, Gemini 4 Argon). 22 languages incl. Hindi, Tamil, German, Japanese. Omit language to list all.
| Name | Required | Description | Default |
|---|---|---|---|
| language | No | Language name or code, e.g. Hindi, ta, German, Hinglish |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it implies a read-only lookup by framing the output as a per-model measurement and enumerating the covered models, which reassures the agent nothing is mutated. It does not say whether the values are static measurements or live computations, nor anything about return shape (ratios, percentages, table structure).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact clauses, with the metric definition front-loaded and followed by scope and the omission rule; nothing is padded. Naming four model families costs some space and partly duplicates list_models, but it usefully fixes which models the numbers apply to.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter lookup with no output schema, the description covers the metric, model coverage, language coverage, and no-filter behavior. What is missing is the return shape — whether each model yields one ratio, a percentage, or a richer record — which an agent may need to interpret results since no output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents name-or-code examples, so the baseline is 3. The description adds the default behavior when the parameter is omitted ('list all'), which the schema does not express despite the parameter being optional — genuine meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise, unusual metric — how many more tokens the same text takes in a language than in English — plus the measured models and language count. This is far more than a restatement of the name, though it never contrasts itself with siblings like estimate_text_cost or compare_models, which an agent might otherwise reach for.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives one concrete usage rule: 'Omit language to list all,' which tells the agent how to use the optional parameter as a discovery mechanism. It offers no guidance on when to prefer this over estimate_text_cost or compare_models, so selection among siblings is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
7 tool updates
v0.1.0- First observed
compare_models - First observed
estimate_cost - First observed
estimate_text_cost - First observed
get_model_price - First observed
list_models - First observed
price_changes - First observed
token_tax
TDQS
Scored across 7 tools
Most tools target a clearly distinct query: listing models, fetching one model's price, comparing across models, logging price changes, and measuring token inflation by language. The only real friction is between estimate_cost and estimate_text_cost, which both answer 'what will this cost' but differ in input shape (N requests vs. raw text); the descriptions disambiguate, but an agent could still pick the wrong one initially.
Six of seven tools follow a clean snake_case verb_noun or verb_noun_phrase pattern (list_models, get_model_price, estimate_cost, compare_models, estimate_text_cost). The exceptions are price_changes and token_tax, which are noun-only names that break the verb-first convention, though both remain readable and descriptive.
Seven tools is well-scoped for a pricing/cost-estimation server: each covers a distinct facet (catalog, single-model detail, single-model costing, cross-model comparison, token inflation, price history, text-based costing). No tool feels redundant or like padding.
The surface covers the full cost-analysis lifecycle: discover models, inspect prices, estimate costs, compare alternatives, account for language token overhead, and track price changes. Minor gaps exist, such as no aggregate/multi-model workload costing or budget-threshold tooling, but agents can compose existing tools to work around these.
Maintenance
Related MCP Connectors
LLM API prices across 70+ providers: cheapest offer, comparisons, history and cost estimates.
Find AI model pricing, estimate token costs and compare offers. No API key required.
Compare up-to-date pricing for 40+ LLMs (incl. Chinese) & estimate cost from tokens. EN/zh.
Live LLM API pricing: token prices, comparisons, cheapest-model lookups. No key required.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceProvides real-time token pricing for AI models, model comparison, cost calculation, and token usage tracking for agents and developers.-
- AlicenseAqualityBmaintenanceLive LLM API pricing: current token prices, model comparisons, cheapest-model lookups, and The LLM Price Index for 150+ models across 20+ providers, re-verified daily. No API key required.41MIT
- AlicenseNot gradedqualityCmaintenanceToken cost math for LLM API calls: current per-million-token rates for 69 models across 17 providers, with local arithmetic for estimates, comparisons and monthly budgets. Rates are verified and date-stamped.46 npm2MIT
- AlicenseNot gradedqualityDmaintenanceProvides tools to count tokens, estimate API costs, optimize prompts, and compare AI model pricing for multiple LLMs.69 npmMIT