Cursor Pricing Updater
Use this skill to keep a Cursor usage calculator's pricing.json aligned with the official Cursor model pricing documentation.
Primary Sources
Use official Cursor sources first:
https://cursor.com/docs/models-and-pricing.md
https://cursor.com/es/docs/models-and-pricing
https://cursor.com/terms/pricing
Prefer the English Markdown page as the canonical pricing table. Use localized pages only to clarify wording.
Inputs To Read
Before editing:
- Read
pricing.json.
- Read
REQUIREMENTS.md if it exists.
- If a Cursor usage CSV is available or mentioned, inspect unique values from the
Model column to preserve useful aliases.
- Fetch the official Cursor pricing docs live.
Update Workflow
Extract the official model table from Cursor docs:
Model
Provider
Input
Cache write
Cache read
Output
Notes
Compare official rows with pricing.json:
- Add models that exist in the docs but not in
pricing.json.
- Remove official models from
models if they no longer appear in the docs.
- Keep non-official CSV-only entries under
unmappedCsvModels, not under models.
- Preserve useful existing aliases when their base model still exists.
Normalize prices:
- Store all prices as numbers in USD per 1M tokens.
- Convert
- to null.
- Keep
currency: "USD" and unit: "per_1m_tokens".
- Do not apply cache discounts twice if the official table already gives a cache-read price.
Normalize model IDs:
- Use lowercase kebab-case IDs.
- Treat effort suffixes as aliases only when they do not have separate official pricing.
- Ignore effort suffixes for pricing:
low, medium, high, xhigh, extra-high, thinking, max.
- Keep explicit priced variants as separate models:
fast, mini, nano, codex, image-preview, 1m.
Normalize aliases:
- Include the official display name converted to kebab-case.
- Include known CSV model IDs.
- Include common punctuation variants, for example
grok-4.20 and grok-4-20.
- Avoid alias collisions. One alias should resolve to one model.
Normalize warnings:
- Keep human-readable notes in
warnings.
- Omit
warnings when there are no notes.
- Do not add model-level
sourceNotes; they duplicate warnings.
Rule Mapping
Translate Cursor notes into structured rules only when the docs provide enough information.
The cost is 2x when the input exceeds 200k tokens
- Use
type: "request_cost_multiplier".
- Trigger on
inputTokensGreaterThan: 200000.
- Apply to all token cost components for that request unless the docs say only input pricing changes.
Long context ... with 2x input pricing
- Use
type: "input_price_multiplier".
- Trigger on
maxMode: true and inputTokensGreaterThan: 200000 unless the docs provide a better threshold.
- Apply only to
input and cacheWrite.
Fast mode ... 2x pricing
- If the docs provide an exact multiplier, create a derived explicit model such as
gpt-5.4-fast.
- If the docs only say
higher rates, add a warning and do not invent prices.
90% discount on cached input tokens
- Add an informational rule only.
- The
cacheRead price should already represent the discount.
Requires Max Mode on request-based plans
- Add a warning, not a cost rule.
Max Mode adds a 20% surcharge on legacy request-based plans
- Keep this as a global rule scoped to
legacy_request_based.
Cursor Token Rate
- Keep this as a global rule scoped to Teams non-Auto requests.
Output Shape
Keep this general shape:
{
"schemaVersion": 1,
"source": {
"name": "Cursor Models & Pricing",
"url": "https://cursor.com/docs/models-and-pricing.md",
"retrievedAt": "YYYY-MM-DD",
"currency": "USD",
"unit": "per_1m_tokens"
},
"normalization": {},
"globalRules": [],
"models": {},
"unmappedCsvModels": []
}
Each model should include:
{
"displayName": "Model Name",
"provider": "Provider",
"pool": "api",
"aliases": [],
"matchers": [],
"pricing": {
"input": 0,
"cacheWrite": null,
"cacheRead": 0,
"output": 0
},
"rules": []
}
Add warnings only when there are human-readable notes worth showing to the user.
Validation Checklist
Before finishing:
- Validate JSON syntax with
python -m json.tool pricing.json >/dev/null.
- Confirm every current official model row appears in
models.
- Confirm no removed official model remains in
models.
- Confirm all prices are numbers or
null, never strings like "$3" or "-".
- Confirm every cost-changing rule has a
sourceNote.
- Confirm models do not use model-level
sourceNotes.
- Confirm empty
warnings fields are omitted.
- Confirm no exact alias maps to more than one model.
- Confirm unpriced claims remain warnings instead of invented prices.
- Summarize added, removed, changed, and unresolved models.
Final Response
Report concisely:
- Official source URL and retrieval date.
- Models added.
- Models removed.
- Pricing/rule changes.
- Unmapped or uncertain models.
- Validation performed.
Source: don-linux/CursorUsageTracker — distributed by TomeVault.
1---2name: cursor-pricing-updater3description: Updates the Cursor usage pricing catalog for a calculator app by fetching the official Cursor Models & Pricing docs, comparing them with pricing.json, adding new models, removing delisted official models, normalizing aliases, and validating pricing rules. Use this whenever the user asks to update Cursor model prices, refresh pricing.json, sync the calculator with Cursor docs, compare current Cursor models, or maintain token-pricing rules. Use when this capability is needed.4---56# Cursor Pricing Updater78Use this skill to keep a Cursor usage calculator's `pricing.json` aligned with the official Cursor model pricing documentation.910## Primary Sources1112Use official Cursor sources first:1314- `https://cursor.com/docs/models-and-pricing.md`15- `https://cursor.com/es/docs/models-and-pricing`16- `https://cursor.com/terms/pricing`1718Prefer the English Markdown page as the canonical pricing table. Use localized pages only to clarify wording.1920## Inputs To Read2122Before editing:23241. Read `pricing.json`.252. Read `REQUIREMENTS.md` if it exists.263. If a Cursor usage CSV is available or mentioned, inspect unique values from the `Model` column to preserve useful aliases.274. Fetch the official Cursor pricing docs live.2829## Update Workflow30311. Extract the official model table from Cursor docs:32 - `Model`33 - `Provider`34 - `Input`35 - `Cache write`36 - `Cache read`37 - `Output`38 - `Notes`39402. Compare official rows with `pricing.json`:41 - Add models that exist in the docs but not in `pricing.json`.42 - Remove official models from `models` if they no longer appear in the docs.43 - Keep non-official CSV-only entries under `unmappedCsvModels`, not under `models`.44 - Preserve useful existing aliases when their base model still exists.45463. Normalize prices:47 - Store all prices as numbers in USD per 1M tokens.48 - Convert `-` to `null`.49 - Keep `currency: "USD"` and `unit: "per_1m_tokens"`.50 - Do not apply cache discounts twice if the official table already gives a cache-read price.51524. Normalize model IDs:53 - Use lowercase kebab-case IDs.54 - Treat effort suffixes as aliases only when they do not have separate official pricing.55 - Ignore effort suffixes for pricing: `low`, `medium`, `high`, `xhigh`, `extra-high`, `thinking`, `max`.56 - Keep explicit priced variants as separate models: `fast`, `mini`, `nano`, `codex`, `image-preview`, `1m`.57585. Normalize aliases:59 - Include the official display name converted to kebab-case.60 - Include known CSV model IDs.61 - Include common punctuation variants, for example `grok-4.20` and `grok-4-20`.62 - Avoid alias collisions. One alias should resolve to one model.63646. Normalize warnings:65 - Keep human-readable notes in `warnings`.66 - Omit `warnings` when there are no notes.67 - Do not add model-level `sourceNotes`; they duplicate `warnings`.6869## Rule Mapping7071Translate Cursor notes into structured rules only when the docs provide enough information.7273- `The cost is 2x when the input exceeds 200k tokens`74 - Use `type: "request_cost_multiplier"`.75 - Trigger on `inputTokensGreaterThan: 200000`.76 - Apply to all token cost components for that request unless the docs say only input pricing changes.7778- `Long context ... with 2x input pricing`79 - Use `type: "input_price_multiplier"`.80 - Trigger on `maxMode: true` and `inputTokensGreaterThan: 200000` unless the docs provide a better threshold.81 - Apply only to `input` and `cacheWrite`.8283- `Fast mode ... 2x pricing`84 - If the docs provide an exact multiplier, create a derived explicit model such as `gpt-5.4-fast`.85 - If the docs only say `higher rates`, add a warning and do not invent prices.8687- `90% discount on cached input tokens`88 - Add an informational rule only.89 - The `cacheRead` price should already represent the discount.9091- `Requires Max Mode on request-based plans`92 - Add a warning, not a cost rule.9394- `Max Mode adds a 20% surcharge on legacy request-based plans`95 - Keep this as a global rule scoped to `legacy_request_based`.9697- `Cursor Token Rate`98 - Keep this as a global rule scoped to Teams non-Auto requests.99100## Output Shape101102Keep this general shape:103104```json105{106 "schemaVersion": 1,107 "source": {108 "name": "Cursor Models & Pricing",109 "url": "https://cursor.com/docs/models-and-pricing.md",110 "retrievedAt": "YYYY-MM-DD",111 "currency": "USD",112 "unit": "per_1m_tokens"113 },114 "normalization": {},115 "globalRules": [],116 "models": {},117 "unmappedCsvModels": []118}119```120121Each model should include:122123```json124{125 "displayName": "Model Name",126 "provider": "Provider",127 "pool": "api",128 "aliases": [],129 "matchers": [],130 "pricing": {131 "input": 0,132 "cacheWrite": null,133 "cacheRead": 0,134 "output": 0135 },136 "rules": []137}138```139140Add `warnings` only when there are human-readable notes worth showing to the user.141142## Validation Checklist143144Before finishing:145146- Validate JSON syntax with `python -m json.tool pricing.json >/dev/null`.147- Confirm every current official model row appears in `models`.148- Confirm no removed official model remains in `models`.149- Confirm all prices are numbers or `null`, never strings like `"$3"` or `"-"`.150- Confirm every cost-changing rule has a `sourceNote`.151- Confirm models do not use model-level `sourceNotes`.152- Confirm empty `warnings` fields are omitted.153- Confirm no exact alias maps to more than one model.154- Confirm unpriced claims remain warnings instead of invented prices.155- Summarize added, removed, changed, and unresolved models.156157## Final Response158159Report concisely:160161- Official source URL and retrieval date.162- Models added.163- Models removed.164- Pricing/rule changes.165- Unmapped or uncertain models.166- Validation performed.167168---169> Source: [don-linux/CursorUsageTracker](https://github.com/don-linux/CursorUsageTracker) — distributed by [TomeVault](https://tomevault.io).170<!-- tomevault:4.0:skill_md:2026-06-16 -->