metergraph-core 0.2.57__tar.gz → 0.2.59__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (18) hide show
  1. {metergraph_core-0.2.57/src/metergraph_core.egg-info → metergraph_core-0.2.59}/PKG-INFO +1 -1
  2. {metergraph_core-0.2.57 → metergraph_core-0.2.59}/pyproject.toml +1 -1
  3. {metergraph_core-0.2.57 → metergraph_core-0.2.59}/src/metergraph_core/catalog.py +27 -8
  4. {metergraph_core-0.2.57 → metergraph_core-0.2.59}/src/metergraph_core/data/models.yaml +116 -4
  5. {metergraph_core-0.2.57 → metergraph_core-0.2.59}/src/metergraph_core/data/prices.yaml +186 -3
  6. {metergraph_core-0.2.57 → metergraph_core-0.2.59}/src/metergraph_core/loader.py +1 -0
  7. {metergraph_core-0.2.57 → metergraph_core-0.2.59/src/metergraph_core.egg-info}/PKG-INFO +1 -1
  8. {metergraph_core-0.2.57 → metergraph_core-0.2.59}/MANIFEST.in +0 -0
  9. {metergraph_core-0.2.57 → metergraph_core-0.2.59}/README.md +0 -0
  10. {metergraph_core-0.2.57 → metergraph_core-0.2.59}/setup.cfg +0 -0
  11. {metergraph_core-0.2.57 → metergraph_core-0.2.59}/src/metergraph_core/__init__.py +0 -0
  12. {metergraph_core-0.2.57 → metergraph_core-0.2.59}/src/metergraph_core/billing.py +0 -0
  13. {metergraph_core-0.2.57 → metergraph_core-0.2.59}/src/metergraph_core/models.py +0 -0
  14. {metergraph_core-0.2.57 → metergraph_core-0.2.59}/src/metergraph_core/retrieval.py +0 -0
  15. {metergraph_core-0.2.57 → metergraph_core-0.2.59}/src/metergraph_core.egg-info/SOURCES.txt +0 -0
  16. {metergraph_core-0.2.57 → metergraph_core-0.2.59}/src/metergraph_core.egg-info/dependency_links.txt +0 -0
  17. {metergraph_core-0.2.57 → metergraph_core-0.2.59}/src/metergraph_core.egg-info/requires.txt +0 -0
  18. {metergraph_core-0.2.57 → metergraph_core-0.2.59}/src/metergraph_core.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: metergraph-core
3
- Version: 0.2.57
3
+ Version: 0.2.59
4
4
  Summary: Reusable MeterGraph catalog and deterministic billing engine
5
5
  License-Expression: Apache-2.0
6
6
  Requires-Python: >=3.10
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "metergraph-core"
3
- version = "0.2.57"
3
+ version = "0.2.59"
4
4
  description = "Reusable MeterGraph catalog and deterministic billing engine"
5
5
  readme = "README.md"
6
6
  license = "Apache-2.0"
@@ -209,19 +209,24 @@ class Price:
209
209
  # imply one: google-vertex-ai serves Anthropic's models beside Google's,
210
210
  # and the two report cache reads differently.
211
211
  publisher: str | None = None
212
+ # A fixed fee charged once per call on top of tokens, in USD per 1,000
213
+ # calls: a gateway billing a model's built-in search per request.
214
+ request_fee_per_1k_usd: Decimal | None = None
212
215
 
213
216
 
214
217
  @dataclass(frozen=True, slots=True)
215
218
  class CostComponents:
216
- """A priced call's cost by what it paid for. The four parts sum to the
217
- call's ``cost_usd`` exactly: each is quantized and the rounding residue
218
- lands in the input part, so a consumer that stores them can rebuild the
219
- total without a second rounding."""
219
+ """A priced call's cost by what it paid for. The parts sum to the call's
220
+ ``cost_usd`` exactly: each is quantized and the rounding residue lands in
221
+ the input part, so a consumer that stores them can rebuild the total
222
+ without a second rounding. ``request_usd`` is a per-call fee, zero on
223
+ every row that has none."""
220
224
 
221
225
  input_usd: Decimal
222
226
  output_usd: Decimal
223
227
  cache_read_usd: Decimal
224
228
  cache_write_usd: Decimal
229
+ request_usd: Decimal = Decimal("0")
225
230
 
226
231
 
227
232
  @dataclass(frozen=True, slots=True)
@@ -375,7 +380,10 @@ def _price_tokens(
375
380
 
376
381
  billable_input = input_count
377
382
  deducted_input = 0
378
- if counts_cache_read_in_input(price.publisher, price.pricing_channel, rules):
383
+ input_includes_cache_read = counts_cache_read_in_input(
384
+ price.publisher, price.pricing_channel, rules
385
+ )
386
+ if input_includes_cache_read:
379
387
  if cache_read_count > input_count:
380
388
  reasons.append("cache_read_exceeds_input")
381
389
  deducted_input = input_count
@@ -402,7 +410,13 @@ def _price_tokens(
402
410
  output_multiplier = Decimal("1")
403
411
  long_context = rules.get("long_context") or {}
404
412
  threshold = _tokens(long_context.get("threshold"))
405
- if threshold is not None and input_count > threshold:
413
+ prompt_count = input_count
414
+ if long_context.get("threshold_counts_cached_tokens"):
415
+ if not input_includes_cache_read:
416
+ prompt_count += cache_read_count
417
+ if not rules.get("input_includes_cache_write"):
418
+ prompt_count += cache_write_count
419
+ if threshold is not None and prompt_count > threshold:
406
420
  input_multiplier = _decimal(long_context.get("input_multiplier")) or Decimal("1")
407
421
  output_multiplier = _decimal(
408
422
  long_context.get("output_multiplier")
@@ -456,15 +470,20 @@ def _price_tokens(
456
470
  )
457
471
  if rules.get("uncaptured_fees"):
458
472
  reasons.append("uncaptured_fees")
473
+ request_usd = (
474
+ Decimal("0")
475
+ if price.request_fee_per_1k_usd is None
476
+ else price.request_fee_per_1k_usd / Decimal(1000)
477
+ )
459
478
 
460
479
  # The total is rounded once, as it always was; the parts are rounded
461
480
  # each and the residue goes to input, so they sum to the total exactly.
462
- cost = (input_usd + output_usd + cache_read_usd + cache_write_usd).quantize(
481
+ cost = (input_usd + output_usd + cache_read_usd + cache_write_usd + request_usd).quantize(
463
482
  _COST_QUANTUM, rounding=ROUND_HALF_UP
464
483
  )
465
484
  parts = [
466
485
  part.quantize(_COST_QUANTUM, rounding=ROUND_HALF_UP)
467
- for part in (input_usd, output_usd, cache_read_usd, cache_write_usd)
486
+ for part in (input_usd, output_usd, cache_read_usd, cache_write_usd, request_usd)
468
487
  ]
469
488
  parts[0] += cost - sum(parts)
470
489
  return cost, reasons, CostComponents(*parts)
@@ -1,4 +1,4 @@
1
- version: '2026-10-08'
1
+ version: '2026-10-13'
2
2
  models:
3
3
  - canonical_id: openai/gpt-5.6-sol
4
4
  display_name: GPT-5.6 Sol
@@ -648,10 +648,38 @@ models:
648
648
  pricing_channel: vercel-ai-gateway
649
649
  execution_profiles:
650
650
  - default
651
+ - key: default:anthropic:claude-sonnet-5-5
652
+ id: anthropic:claude-sonnet-5-5
653
+ provider: anthropic
654
+ model_id: claude-sonnet-5-5
655
+ pricing_channel: anthropic-api
656
+ execution_profiles:
657
+ - default
658
+ display_name: Claude Sonnet 5.5 (direct)
659
+ - canonical_id: anthropic/claude-haiku-5.5
660
+ display_name: Claude Haiku 5.5
661
+ publisher: anthropic
662
+ released: '2026-10-07' # https://www.anthropic.com/claude-haiku-5-5
663
+ routes:
664
+ - key: default:anthropic/claude-haiku-5.5
665
+ id: anthropic/claude-haiku-5.5
666
+ provider: vercel
667
+ model_id: anthropic/claude-haiku-5.5
668
+ pricing_channel: vercel-ai-gateway
669
+ execution_profiles:
670
+ - default
671
+ - key: default:anthropic:claude-haiku-5-5
672
+ id: anthropic:claude-haiku-5-5
673
+ provider: anthropic
674
+ model_id: claude-haiku-5-5
675
+ pricing_channel: anthropic-api
676
+ execution_profiles:
677
+ - default
678
+ display_name: Claude Haiku 5.5 (direct)
651
679
  - canonical_id: openai/gpt-6.1-sol
652
680
  display_name: GPT-6.1 Sol
653
681
  publisher: openai
654
- released: '2026-09-29' # https://www.sitepoint.com/gpt-6-1-sol-developers-pricing-quickstart/
682
+ released: '2026-09-29' # https://developers.openai.com/api/docs/models/gpt-6.1-sol
655
683
  routes:
656
684
  - key: default:openai/gpt-6.1-sol
657
685
  id: openai/gpt-6.1-sol
@@ -660,6 +688,50 @@ models:
660
688
  pricing_channel: vercel-ai-gateway
661
689
  execution_profiles:
662
690
  - default
691
+ - key: default:openai:gpt-6.1-sol
692
+ id: openai:gpt-6.1-sol
693
+ provider: openai
694
+ model_id: gpt-6.1-sol
695
+ pricing_channel: openai-api
696
+ execution_profiles:
697
+ - default
698
+ display_name: GPT-6.1 Sol (direct)
699
+ - canonical_id: google/gemini-4-argon
700
+ display_name: Gemini 4 Argon
701
+ publisher: google
702
+ released: '2026-10-13' # https://ai.google.dev/gemini-api/docs/generate-content/latest-model
703
+ routes:
704
+ - key: default:google/gemini-4-argon
705
+ id: google/gemini-4-argon
706
+ provider: vercel
707
+ model_id: google/gemini-4-argon
708
+ pricing_channel: vercel-ai-gateway
709
+ execution_profiles:
710
+ - default
711
+ - canonical_id: mistral/mistral-large-4
712
+ display_name: Mistral Large 4
713
+ publisher: mistral
714
+ released: '2026-10-06' # https://docs.mistral.ai/models/mistral-large
715
+ routes:
716
+ - key: default:mistral/mistral-large-4
717
+ id: mistral/mistral-large-4
718
+ provider: vercel
719
+ model_id: mistral/mistral-large-4
720
+ pricing_channel: vercel-ai-gateway
721
+ execution_profiles:
722
+ - default
723
+ - canonical_id: meta/muse-wonder-1.0
724
+ display_name: Muse Wonder 1.0
725
+ publisher: meta
726
+ released: '2026-10-12' # https://about.fb.com/news/2026/10/introducing-muse-wonder-models/
727
+ routes:
728
+ - key: default:meta/muse-wonder-1.0
729
+ id: meta/muse-wonder-1.0
730
+ provider: vercel
731
+ model_id: meta/muse-wonder-1.0
732
+ pricing_channel: vercel-ai-gateway
733
+ execution_profiles:
734
+ - default
663
735
  - canonical_id: xai/grok-4.7
664
736
  display_name: Grok 4.7
665
737
  publisher: xai
@@ -696,6 +768,30 @@ models:
696
768
  pricing_channel: vercel-ai-gateway
697
769
  execution_profiles:
698
770
  - default
771
+ - canonical_id: anthropic/claude-sonnet-4.6
772
+ display_name: Claude Sonnet 4.6
773
+ publisher: anthropic
774
+ released: '2026-02-17' # https://alternativeto.net/news/2026/2/anthropic-s-claude-sonnet-4-6-launches-with-faster-speeds-and-1m-token-context
775
+ routes:
776
+ - key: default:anthropic/claude-sonnet-4.6
777
+ id: anthropic/claude-sonnet-4.6
778
+ provider: vercel
779
+ model_id: anthropic/claude-sonnet-4.6
780
+ pricing_channel: vercel-ai-gateway
781
+ execution_profiles:
782
+ - default
783
+ - canonical_id: xai/grok-4.3
784
+ display_name: Grok 4.3
785
+ publisher: xai
786
+ released: '2026-04-30' # https://artificialanalysis.ai/articles/xai-launches-grok-4-3-with-improved-agentic-performance-and-lower-pricing
787
+ routes:
788
+ - key: default:xai/grok-4.3
789
+ id: xai/grok-4.3
790
+ provider: vercel
791
+ model_id: xai/grok-4.3
792
+ pricing_channel: vercel-ai-gateway
793
+ execution_profiles:
794
+ - default
699
795
  execution_profiles:
700
796
  - id: default
701
797
  routes:
@@ -754,6 +850,15 @@ execution_profiles:
754
850
  - default:anthropic:claude-opus-4-8
755
851
  - default:anthropic:claude-sonnet-5
756
852
  - default:anthropic:claude-haiku-4-5
853
+ - default:anthropic/claude-sonnet-4.6
854
+ - default:xai/grok-4.3
855
+ - default:anthropic/claude-haiku-5.5
856
+ - default:google/gemini-4-argon
857
+ - default:mistral/mistral-large-4
858
+ - default:meta/muse-wonder-1.0
859
+ - default:openai:gpt-6.1-sol
860
+ - default:anthropic:claude-sonnet-5-5
861
+ - default:anthropic:claude-haiku-5-5
757
862
  - id: bedrock
758
863
  routes:
759
864
  - bedrock:anthropic/claude-sonnet-5
@@ -790,8 +895,6 @@ offer_groups:
790
895
  - default:anthropic/claude-fable-5
791
896
  - default:anthropic/claude-fable-5.1
792
897
  - default:google/gemini-3.8-flash
793
- - default:google/gemini-3.7-flash
794
- - default:google/gemini-3.5-flash
795
898
  - default:google/gemini-3.5-flash-lite
796
899
  - default:google/gemini-3.1-flash-lite
797
900
  - default:google/gemma-4-31b-it
@@ -811,6 +914,12 @@ offer_groups:
811
914
  - default:xai/grok-4.7
812
915
  - default:moonshotai/kimi-k2.7-code
813
916
  - default:zai/glm-5.3
917
+ - default:anthropic/claude-sonnet-4.6
918
+ - default:xai/grok-4.3
919
+ - default:anthropic/claude-haiku-5.5
920
+ - default:google/gemini-4-argon
921
+ - default:mistral/mistral-large-4
922
+ - default:meta/muse-wonder-1.0
814
923
  - id: fireworks
815
924
  credential: FIREWORKS_API_KEY
816
925
  routes:
@@ -825,6 +934,7 @@ offer_groups:
825
934
  - default:openai:gpt-5.4
826
935
  - default:openai:gpt-5.4-mini
827
936
  - default:openai:gpt-5.4-nano
937
+ - default:openai:gpt-6.1-sol
828
938
  - id: anthropic-direct
829
939
  credential: ANTHROPIC_API_KEY
830
940
  routes:
@@ -832,6 +942,8 @@ offer_groups:
832
942
  - default:anthropic:claude-opus-4-8
833
943
  - default:anthropic:claude-sonnet-5
834
944
  - default:anthropic:claude-haiku-4-5
945
+ - default:anthropic:claude-sonnet-5-5
946
+ - default:anthropic:claude-haiku-5-5
835
947
  - id: bedrock
836
948
  credential: null
837
949
  routes:
@@ -6,9 +6,9 @@
6
6
  #
7
7
  # Community updates welcome: add an alias or price entry with its provider
8
8
  # source_url and open a PR. CI validates structure and date overlaps.
9
- version: "2026-10-07"
9
+ version: "2026-10-13"
10
10
  currency: USD
11
- pricing_verified_at: "2026-10-07"
11
+ pricing_verified_at: "2026-10-13"
12
12
  models:
13
13
  - canonical_id: openai/gpt-6-sol
14
14
  publisher: openai
@@ -233,6 +233,9 @@ models:
233
233
  - canonical_id: openai/gpt-6.1-sol
234
234
  publisher: openai
235
235
  aliases:
236
+ - {provider: openai, alias: gpt-6.1-sol, channel: openai-api}
237
+ - {provider: litellm, alias: gpt-6.1-sol, channel: openai-api}
238
+ - {provider: unknown, alias: gpt-6.1-sol, channel: openai-api}
236
239
  # No global inference profile is available.
237
240
  - {provider: bedrock, alias: us.openai.gpt-6.1-sol, channel: aws-bedrock-geo, price_region: global}
238
241
  - {provider: bedrock, alias: openai.gpt-6.1-sol, channel: aws-bedrock, price_region: us-east-1}
@@ -243,6 +246,18 @@ models:
243
246
  effective_from: "2026-10-02"
244
247
  source_url: https://ai-gateway.vercel.sh/v1/models
245
248
  prices:
249
+ - channel: openai-api
250
+ region: global
251
+ effective_from: "2026-09-29"
252
+ input_per_mtok: 2.00
253
+ output_per_mtok: 10.00
254
+ cache_read_per_mtok: 0.10
255
+ cache_write_5m_per_mtok: 2.50
256
+ batch_input_per_mtok: 1.00
257
+ batch_output_per_mtok: 5.00
258
+ rules:
259
+ long_context: {threshold: 272000, input_multiplier: 2, output_multiplier: 1.5}
260
+ source_url: https://developers.openai.com/api/docs/models/gpt-6.1-sol
246
261
  # The 5m field stores AWS's unsplit cache-write rate.
247
262
  - channel: aws-bedrock-geo
248
263
  region: global
@@ -1123,6 +1138,7 @@ models:
1123
1138
  - channel: anthropic-api
1124
1139
  region: global
1125
1140
  effective_from: "2026-09-28"
1141
+ effective_to: "2026-10-07"
1126
1142
  input_per_mtok: 2.00
1127
1143
  output_per_mtok: 10.00
1128
1144
  cache_read_per_mtok: 0.20
@@ -1134,11 +1150,67 @@ models:
1134
1150
  - channel: vercel-ai-gateway
1135
1151
  region: global
1136
1152
  effective_from: "2026-09-28"
1153
+ effective_to: "2026-10-07"
1137
1154
  input_per_mtok: 2.00
1138
1155
  output_per_mtok: 10.00
1139
1156
  cache_read_per_mtok: 0.20
1140
1157
  cache_write_5m_per_mtok: 2.50
1141
1158
  source_url: https://ai-gateway.vercel.sh/v1/models
1159
+ - channel: anthropic-api
1160
+ region: global
1161
+ effective_from: "2026-10-07"
1162
+ input_per_mtok: 2.00
1163
+ output_per_mtok: 10.00
1164
+ cache_read_per_mtok: 0.10
1165
+ cache_write_5m_per_mtok: 2.50
1166
+ cache_write_1h_per_mtok: 4.00
1167
+ batch_input_per_mtok: 1.00
1168
+ batch_output_per_mtok: 5.00
1169
+ source_url: https://www.anthropic.com/claude-haiku-5-5
1170
+ - channel: vercel-ai-gateway
1171
+ region: global
1172
+ effective_from: "2026-10-07"
1173
+ input_per_mtok: 2.00
1174
+ output_per_mtok: 10.00
1175
+ cache_read_per_mtok: 0.10
1176
+ cache_write_5m_per_mtok: 2.50
1177
+ source_url: https://vercel.com/ai-gateway/models/claude-sonnet-5.5
1178
+
1179
+ - canonical_id: anthropic/claude-haiku-5.5
1180
+ publisher: anthropic
1181
+ aliases:
1182
+ - {provider: anthropic, alias: claude-haiku-5-5, channel: anthropic-api}
1183
+ - {provider: anthropic, alias: anthropic/claude-haiku-5-5, channel: anthropic-api}
1184
+ - {provider: litellm, alias: claude-haiku-5-5, channel: anthropic-api}
1185
+ - {provider: unknown, alias: claude-haiku-5-5, channel: anthropic-api}
1186
+ - provider: anthropic
1187
+ alias: anthropic/claude-haiku-5.5
1188
+ channel: vercel-ai-gateway
1189
+ rules: {input_includes_cache_read: true, input_includes_cache_write: true}
1190
+ prices:
1191
+ - channel: anthropic-api
1192
+ region: global
1193
+ effective_from: "2026-10-07"
1194
+ input_per_mtok: 0.10
1195
+ output_per_mtok: 0.50
1196
+ cache_read_per_mtok: 0.01
1197
+ cache_write_5m_per_mtok: 0.125
1198
+ cache_write_1h_per_mtok: 0.20
1199
+ batch_input_per_mtok: 0.05
1200
+ batch_output_per_mtok: 0.25
1201
+ rules:
1202
+ long_context: {threshold: 100000, input_multiplier: 5, output_multiplier: 5, threshold_counts_cached_tokens: true}
1203
+ source_url: https://www.anthropic.com/claude-haiku-5-5
1204
+ - channel: vercel-ai-gateway
1205
+ region: global
1206
+ effective_from: "2026-10-07"
1207
+ input_per_mtok: 0.10
1208
+ output_per_mtok: 0.50
1209
+ cache_read_per_mtok: 0.01
1210
+ cache_write_5m_per_mtok: 0.125
1211
+ rules:
1212
+ long_context: {threshold: 100000, input_multiplier: 5, output_multiplier: 5, threshold_counts_cached_tokens: true}
1213
+ source_url: https://vercel.com/ai-gateway/models/claude-haiku-5.5
1142
1214
 
1143
1215
  - canonical_id: anthropic/claude-sonnet-5
1144
1216
  publisher: anthropic
@@ -1445,6 +1517,51 @@ models:
1445
1517
  long_context: {threshold: 200000, input_multiplier: 2, output_multiplier: 1.5}
1446
1518
  source_url: https://vercel.com/ai-gateway/models/gemini-3.1-pro-preview
1447
1519
 
1520
+ - canonical_id: google/gemini-4-argon
1521
+ publisher: google
1522
+ aliases:
1523
+ - {provider: google, alias: gemini-4-argon, channel: google-api}
1524
+ - {provider: google, alias: models/gemini-4-argon, channel: google-api}
1525
+ - {provider: litellm, alias: gemini-4-argon, channel: google-api}
1526
+ - {provider: litellm, alias: models/gemini-4-argon, channel: google-api}
1527
+ - {provider: unknown, alias: gemini-4-argon, channel: google-api}
1528
+ - {provider: unknown, alias: models/gemini-4-argon, channel: google-api}
1529
+ - provider: google
1530
+ alias: google/gemini-4-argon
1531
+ channel: vercel-ai-gateway
1532
+ rules: {input_includes_cache_read: true}
1533
+ prices:
1534
+ - channel: google-api
1535
+ region: global
1536
+ effective_from: "2026-10-13"
1537
+ effective_to: "2026-12-01"
1538
+ input_per_mtok: 2.00
1539
+ output_per_mtok: 10.00
1540
+ cache_read_per_mtok: 0.10
1541
+ source_url: https://ai.google.dev/gemini-api/docs/generate-content/latest-model
1542
+ - channel: google-api
1543
+ region: global
1544
+ effective_from: "2026-12-01"
1545
+ input_per_mtok: 4.00
1546
+ output_per_mtok: 20.00
1547
+ cache_read_per_mtok: 0.20
1548
+ source_url: https://ai.google.dev/gemini-api/docs/generate-content/latest-model
1549
+ - channel: vercel-ai-gateway
1550
+ region: global
1551
+ effective_from: "2026-10-13"
1552
+ effective_to: "2026-12-01"
1553
+ input_per_mtok: 2.00
1554
+ output_per_mtok: 10.00
1555
+ cache_read_per_mtok: 0.10
1556
+ source_url: https://vercel.com/ai-gateway/models/gemini-4-argon
1557
+ - channel: vercel-ai-gateway
1558
+ region: global
1559
+ effective_from: "2026-12-01"
1560
+ input_per_mtok: 4.00
1561
+ output_per_mtok: 20.00
1562
+ cache_read_per_mtok: 0.20
1563
+ source_url: https://vercel.com/ai-gateway/models/gemini-4-argon
1564
+
1448
1565
  - canonical_id: google/gemini-3.5-flash
1449
1566
  publisher: google
1450
1567
  aliases:
@@ -1708,6 +1825,32 @@ models:
1708
1825
  output_per_mtok: 0.65
1709
1826
  source_url: https://ai-gateway.vercel.sh/v1/models
1710
1827
 
1828
+ - canonical_id: meta/muse-wonder-1.0
1829
+ publisher: meta
1830
+ aliases:
1831
+ - {provider: meta, alias: muse-wonder-1.0, channel: meta-api, rules: {input_includes_cache_read: true}}
1832
+ - {provider: litellm, alias: muse-wonder-1.0, channel: meta-api, rules: {input_includes_cache_read: true}}
1833
+ - {provider: unknown, alias: muse-wonder-1.0, channel: meta-api, rules: {input_includes_cache_read: true}}
1834
+ - provider: meta
1835
+ alias: meta/muse-wonder-1.0
1836
+ channel: vercel-ai-gateway
1837
+ rules: {input_includes_cache_read: true}
1838
+ prices:
1839
+ - channel: meta-api
1840
+ region: global
1841
+ effective_from: "2026-10-12"
1842
+ input_per_mtok: 4.00
1843
+ output_per_mtok: 20.00
1844
+ cache_read_per_mtok: 0.20
1845
+ source_url: https://dev.meta.ai/resources/blog/build-with-muse-wonder
1846
+ - channel: vercel-ai-gateway
1847
+ region: global
1848
+ effective_from: "2026-10-12"
1849
+ input_per_mtok: 4.00
1850
+ output_per_mtok: 20.00
1851
+ cache_read_per_mtok: 0.20
1852
+ source_url: https://vercel.com/ai-gateway/models/muse-wonder-1.0
1853
+
1711
1854
  - canonical_id: meta/muse-spark-1.1
1712
1855
  publisher: meta
1713
1856
  aliases:
@@ -1734,12 +1877,41 @@ models:
1734
1877
  output_per_mtok: 4.25
1735
1878
  cache_read_per_mtok: 0.15
1736
1879
  source_url: https://dev.meta.ai/docs/pricing-rate-limits
1880
+ - canonical_id: mistral/mistral-large-4
1881
+ publisher: mistral
1882
+ aliases:
1883
+ - {provider: mistral, alias: mistral-large-4, channel: mistral-api}
1884
+ - {provider: mistral, alias: mistral-large-latest, channel: mistral-api, effective_from: "2026-10-06", source_url: https://docs.mistral.ai/resources/changelogs}
1885
+ - {provider: litellm, alias: mistral-large-4, channel: mistral-api}
1886
+ - {provider: unknown, alias: mistral-large-4, channel: mistral-api}
1887
+ - provider: mistral
1888
+ alias: mistral/mistral-large-4
1889
+ channel: vercel-ai-gateway
1890
+ rules: {input_includes_cache_read: true}
1891
+ prices:
1892
+ - channel: mistral-api
1893
+ region: global
1894
+ effective_from: "2026-10-06"
1895
+ input_per_mtok: 1.36
1896
+ output_per_mtok: 4.18
1897
+ cache_read_per_mtok: 0.14
1898
+ batch_input_per_mtok: 0.68
1899
+ batch_output_per_mtok: 2.09
1900
+ source_url: https://docs.mistral.ai/models/mistral-large
1901
+ - channel: vercel-ai-gateway
1902
+ region: global
1903
+ effective_from: "2026-10-06"
1904
+ input_per_mtok: 0.68
1905
+ output_per_mtok: 2.09
1906
+ cache_read_per_mtok: 0.07
1907
+ source_url: https://vercel.com/ai-gateway/models/mistral-large-4
1908
+
1737
1909
  - canonical_id: mistral/mistral-large-3
1738
1910
  publisher: mistral
1739
1911
  aliases:
1740
1912
  - {provider: bedrock, alias: mistral.mistral-large-3-675b-instruct, channel: aws-bedrock}
1741
1913
  - {provider: litellm, alias: mistral-large-3, channel: mistral-api}
1742
- - {provider: mistral, alias: mistral-large-latest, channel: mistral-api, effective_from: "2025-12-02", source_url: https://docs.mistral.ai/resources/changelogs}
1914
+ - {provider: mistral, alias: mistral-large-latest, channel: mistral-api, effective_from: "2025-12-02", effective_to: "2026-10-06", source_url: https://docs.mistral.ai/resources/changelogs}
1743
1915
  - {provider: mistral, alias: mistral/mistral-large-3, channel: vercel-ai-gateway, rules: {"input_includes_cache_read": true, "input_includes_cache_write": true}}
1744
1916
  - {provider: mistral, alias: mistral-large-3, channel: mistral-api}
1745
1917
  - {provider: unknown, alias: mistral-large-3, channel: mistral-api}
@@ -2029,6 +2201,7 @@ models:
2029
2201
  - {provider: x-ai, alias: grok-latest, channel: xai-api}
2030
2202
  - {provider: bedrock, alias: xai.grok-4.3, channel: aws-bedrock}
2031
2203
  - {provider: vercel, alias: spacexai/grok-4.3, channel: vercel-ai-gateway}
2204
+ - {provider: xai, alias: xai/grok-4.3, channel: vercel-ai-gateway}
2032
2205
  - {provider: litellm, alias: grok-4.3, channel: xai-api}
2033
2206
  - {provider: litellm, alias: grok-4.3-latest, channel: xai-api}
2034
2207
  - {provider: unknown, alias: grok-4.3, channel: xai-api}
@@ -2077,6 +2250,7 @@ models:
2077
2250
  - {provider: litellm, alias: sonar, channel: perplexity-api}
2078
2251
  - {provider: perplexity-ai, alias: perplexity/sonar, channel: perplexity-api}
2079
2252
  - {provider: unknown, alias: sonar, channel: perplexity-api}
2253
+ - {provider: vercel, alias: perplexity/sonar, channel: vercel-ai-gateway}
2080
2254
  prices:
2081
2255
  - channel: perplexity-api
2082
2256
  region: global
@@ -2086,6 +2260,15 @@ models:
2086
2260
  rules:
2087
2261
  uncaptured_fees: true
2088
2262
  source_url: https://docs.perplexity.ai/docs/getting-started/pricing
2263
+ # The gateway bills Sonar's built-in search per call, so the row carries
2264
+ # it as a request fee and the call is priced in full.
2265
+ - channel: vercel-ai-gateway
2266
+ region: global
2267
+ effective_from: "2026-10-11"
2268
+ input_per_mtok: 0.25
2269
+ output_per_mtok: 2.50
2270
+ request_fee_per_1k_usd: 2.50
2271
+ source_url: https://vercel.com/ai-gateway/models/sonar
2089
2272
 
2090
2273
  - canonical_id: openai/gpt-5-mini
2091
2274
  publisher: openai
@@ -305,6 +305,7 @@ def parse_catalog(
305
305
  ),
306
306
  batch_input_per_mtok=_decimal(price.get("batch_input_per_mtok")),
307
307
  batch_output_per_mtok=_decimal(price.get("batch_output_per_mtok")),
308
+ request_fee_per_1k_usd=_decimal(price.get("request_fee_per_1k_usd")),
308
309
  rules=_freeze(price.get("rules") or {}),
309
310
  effective_from=effective_from,
310
311
  effective_to=effective_to,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: metergraph-core
3
- Version: 0.2.57
3
+ Version: 0.2.59
4
4
  Summary: Reusable MeterGraph catalog and deterministic billing engine
5
5
  License-Expression: Apache-2.0
6
6
  Requires-Python: >=3.10