Skip to content

[bedrock] Add Claude Opus/Sonnet 5.5 to mantle, fix 5.5 inference profiles, add gpt-6.1-sol to OpenRouter - #966

Merged
whysumedh merged 4 commits into
mainfrom
feat/claude-5-5-bedrock-mantle-region-fixes
Oct 1, 2026
Merged

whysumedh merged 4 commits into
mainfrom
feat/claude-5-5-bedrock-mantle-region-fixes

Conversation

@naresh4dev

Copy link
Copy Markdown
Member

Summary

Adds Claude Opus 5.5 / Sonnet 5.5 to bedrock-mantle, corrects the Bedrock inference profiles and params for the Claude 5.5 family, adds gpt-6.1-sol to OpenRouter, and normalizes nine prices that were written in scientific notation.

Every price below was taken from an official source and converted with dollars_per_million / 10000.

1. bedrock-mantle: add claude-opus-5-5 and claude-sonnet-5-5

Both model cards list bedrock-mantle support (opus 5.5, sonnet 5.5).

Model Input Output 5m cache write 1h cache write Cache read
anthropic.claude-opus-5-5 $4 → 0.0004 $20 → 0.002 $5 → 0.0005 $8 → 0.0008 $0.20 → 0.00002
anthropic.claude-sonnet-5-5 $2 → 0.0002 $10 → 0.001 $2.50 → 0.00025 $4 → 0.0004 $0.20 → 0.00002

No batch_config — mantle doesn't expose the Batch API, consistent with all 59 pre-existing entries in that file.

2. bedrock: remove Sonnet 5.5 profiles that don't exist

The model card lists Sonnet 5.5 on bedrock-runtime as Global-CRIS-only:

Endpoint Model ID In-Region Geo Global
bedrock-runtime anthropic.claude-sonnet-5-5 N/A N/A global.anthropic.claude-sonnet-5-5

f81ffd1f added bare / us. / eu. variants AWS doesn't offer, so calls against them fail upstream while still resolving a local price. The us./eu. entries also carried a +10% markup that a global-only listing can't justify. Removed from general/ and pricing/ (incl. -v1 aliases); global. retained at the official rates. Also dropped its batch_config — the model card marks Batch unsupported.

This applies the same rule as c158d7da (bare openai.gpt-6.1-sol dropped, in-region unsupported) and bb6853bf (global dropped, unsupported).

Cost attribution is unaffected for any prefixed id — the gateway already falls back to the region-stripped key:

// gateway-enterprise-node/src/services/winky/handlers/modelConfig.ts
if (!entry && provider === BEDROCK) {
  const strippedModel = getBedrockModelWithoutRegion(model);
  if (strippedModel !== model) entry = pricingConfig?.[strippedModel];
}

3. bedrock: fix Opus 5.5 params + add au./jp.

Opus 5.5 has adaptive thinking always on; thinking.budget_tokens and thinking:{type:"disabled"} both return 400, and forced tool choice errors (thinking support matrix). All four entries still used the Opus 5 enabled/disabled + budget_tokens shape. Switched to adaptive + output_config.effort (default medium) and trimmed tool_choice to none/auto — matching the existing anthropic.claude-fable-5-1 entry in the same file.

Added the au. and jp. geo profiles from the model card, priced like the existing us./eu. entries at $4.40/$22 (regional carries a 10% premium over global, per Anthropic's Bedrock docs and models.dev).

Sonnet 5.5 gets adaptive | between_tools instead — it's the only model that accepts between_tools, in place of disabled.

4. openrouter: add gpt-6.1-sol

Served via the OpenAI and Azure upstreams (source): $2/$10 in/out, $2.50 cache write, $0.10 cache read → 0.0002 / 0.001 / 0.00025 / 0.00001.

This was the last confirmed gap — openai, open-ai, azure-openai, azure-ai, bedrock (us. only) and bedrock-mantle already had it. I could not confirm 6.1 on Lightning AI's hub, so it was left alone rather than guessed.

5. Scientific notation → plain decimals

Nine literals were in exponent form, which the pricing consumer doesn't parse:

File Value Fixed
pricing/x-ai.json — grok-4.7 cache read (×2) 5e-5 0.00005
pricing/workers-ai.json — bge-reranker-base 3e-7 0.0000003
pricing/together-ai.json — m2-bert retrieval (×6) 8e-7 0.0000008

Numeric values unchanged — verified by diffing parsed JSON before/after. Formatting only.

Testing

  • jq empty on all 9 touched files — valid
  • python3 scripts/check_duplicate_keys.py — 112 files, no duplicates
  • npm run format && npm run lint — no new errors (the 2653 in general/scenario-ai.json are pre-existing on main; I reverted prettier's unrelated reformat of that file to keep this diff focused)
  • Programmatic key-level diff vs main confirms exactly 6 additions, 9 removals and 7 intentional modifications, with no unintended entries touched
  • rg confirms zero scientific-notation prices remain repo-wide

Notes for reviewers

While auditing I found the same inflated us.-prefix pattern on openai.gpt-6-sol, xai.grok-4.6/4.7 and moonshotai.kimi-k3, where the us. entry is +10% over a base that AWS docs say shouldn't carry a premium. Left untouched — flagging for a separate pass.

Both models are available on the bedrock-mantle endpoint per their AWS
model cards:
  https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-anthropic-claude-opus-5-5.html
  https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-anthropic-claude-sonnet-5-5.html

Pricing (Anthropic list, converted to cents-per-token):
  opus-5-5:   $4/$20 in/out, $5 5m-cache-write, $8 1h, $0.20 read
  sonnet-5-5: $2/$10 in/out, $2.50 5m-cache-write, $4 1h, $0.20 read

No batch_config: mantle does not expose the Batch API (consistent with
every other entry in this provider file).

Thinking params follow each model's documented support matrix:
  opus-5-5   - adaptive only (thinking cannot be disabled)
  sonnet-5-5 - adaptive | between_tools ('disabled' returns 400)
Both use output_config.effort (opus default medium, sonnet default high)
instead of the legacy thinking.budget_tokens, which now 400s.
Sonnet 5.5 - remove inference profiles that do not exist
--------------------------------------------------------
The model card lists Sonnet 5.5 on bedrock-runtime as Global-CRIS-only:
In-Region is N/A and there is no Geo inference ID.

  | Endpoint        | In-Region | Geo | Global                             |
  | bedrock-runtime | N/A       | N/A | global.anthropic.claude-sonnet-5-5 |

Commit f81ffd1 added bare, us. and eu. variants that AWS does not
offer, so requests against them fail at AWS while still resolving a
price locally. The us./eu. entries also carried a +10% markup that the
global-only listing cannot justify. Removed (general + pricing, incl.
-v1 aliases); global. is retained at the official $2/$10/$2.50/$4/$0.20.

This mirrors the rule already applied in c158d7d (bare openai.gpt-6.1-sol
dropped: in-region unsupported) and bb6853b (global dropped: unsupported).
Cost attribution is unaffected for any prefixed id, since winky already
falls back to the region-stripped key (modelConfig.ts getFromLocal).

Also dropped batch_config: the model card marks Batch unsupported.

Opus 5.5 - params and missing geo profiles
------------------------------------------
Opus 5.5 has adaptive thinking always on; thinking.budget_tokens and
thinking:{type:'disabled'} both return 400, and forced tool choice
errors. Entries were still carrying the Opus 5 enabled/disabled +
budget_tokens shape. Switched to adaptive + output_config.effort
(default medium) and trimmed tool_choice to none/auto, matching the
existing anthropic.claude-fable-5-1 entry in this file.

Added the au. and jp. geo profiles from the model card's Geo inference
list, priced like the existing us./eu. entries ($4.40/$22 - regional
carries a 10% premium over global, per Anthropic's Bedrock docs and
models.dev).
OpenRouter serves openai/gpt-6.1-sol via the OpenAI and Azure upstreams
(https://openrouter.ai/openai/gpt-6.1-sol).

Pricing $2/$10 in/out, $2.50 cache write, $0.10 cache read ->
0.0002 / 0.001 / 0.00025 / 0.00001 cents-per-token. Matches the existing
openai/gpt-6-sol entry shape (no additional_units, as with its siblings).

Closes the last confirmed provider gap for this model: openai, open-ai,
azure-openai, azure-ai, bedrock (us. only) and bedrock-mantle already
carry it.
Nine price literals were serialized in exponent form, which the pricing
consumer does not parse:

  pricing/x-ai.json       grok-4.7 cache read (x2)   5e-5 -> 0.00005
  pricing/workers-ai.json bge-reranker-base          3e-7 -> 0.0000003
  pricing/together-ai.json m2-bert retrieval (x6)    8e-7 -> 0.0000008

Numeric values are unchanged - verified by comparing the parsed JSON
before and after. Formatting only.
Copilot AI balanced review requested due to automatic review settings September 30, 2026 22:25

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🔵 Needs a closer look

The model availability, parameter contracts, and billing rates depend on current provider documentation that requires final human verification.

Review effort: Balanced
Findings: None

What changed in this PR

Adds new Bedrock Mantle and OpenRouter models while correcting Claude 5.5 Bedrock profiles, parameters, and pricing representation.

Changes:

  • Adds Claude Opus/Sonnet 5.5 to Bedrock Mantle and GPT-6.1 Sol to OpenRouter.
  • Corrects Bedrock Claude 5.5 profiles, pricing, batch support, and inference parameters.
  • Replaces scientific-notation prices with plain decimals.
File Description
general/​bedrock.json Updates Claude 5.5 profiles and parameters.
general/​bedrock-mantle.json Adds Claude Opus/Sonnet 5.5 metadata.
general/​openrouter.json Adds GPT-6.1 Sol metadata.
pricing/​bedrock.json Corrects Claude 5.5 profiles and pricing.
pricing/​bedrock-mantle.json Adds Claude 5.5 pricing.
pricing/​openrouter.json Adds GPT-6.1 Sol pricing.
pricing/​x-ai.json Normalizes decimal notation.
pricing/​workers-ai.json Normalizes decimal notation.
pricing/​together-ai.json Normalizes decimal notation.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@whysumedh
whysumedh merged commit d362b40 into main Oct 1, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants