@yanlinglabs/winter-provider-catalog 0.0.24 → 0.0.27

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.
@@ -7046,6 +7046,7 @@
7046
7046
  "id": "xai",
7047
7047
  "displayName": "xAI (Grok)",
7048
7048
  "protocols": [
7049
+ "openai-responses",
7049
7050
  "openai-chat-completions"
7050
7051
  ],
7051
7052
  "authKinds": [
@@ -7056,7 +7057,7 @@
7056
7057
  },
7057
7058
  "modelDiscovery": "openai-models",
7058
7059
  "liveCatalogAuthority": "unknown",
7059
- "adapterId": "winter.openai-chat-completions",
7060
+ "adapterId": "winter.openai-responses",
7060
7061
  "family": "openai",
7061
7062
  "upstream": {
7062
7063
  "project": "winter",
@@ -14406,6 +14407,45 @@
14406
14407
  "thinking.type.disabled"
14407
14408
  ],
14408
14409
  "status": "candidate",
14410
+ "deferredToolLoading": {
14411
+ "value": true,
14412
+ "source": "official-doc",
14413
+ "confidence": "declared",
14414
+ "observedAt": "2026-09-25T18:30:00Z",
14415
+ "sourceRef": "https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-search-tool — the Model compatibility table lists Fable 5.1, Mythos 5.1, Fable 5, Mythos 5, Opus 5.5, Opus 5, Opus 4.8, 4.7, 4.6, Sonnet 4.6, Opus 4.5, Sonnet 4.5 and Haiku 4.5 (not Sonnet 5); \"Custom tool search implementation\": a client tool returns a tool_result whose content carries {type:\"tool_reference\", tool_name} blocks, every referenced tool declared in tools with defer_loading: true, and the API expands them; \"The prefix is untouched, so prompt caching is preserved\" (https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-use-with-prompt-caching)."
14416
+ },
14417
+ "midConversationSystem": {
14418
+ "value": true,
14419
+ "source": "official-doc",
14420
+ "confidence": "declared",
14421
+ "observedAt": "2026-09-25T19:00:00Z",
14422
+ "sourceRef": "https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages — \"This feature is available on Claude Fable 5.1, Claude Mythos 5.1, Claude Fable 5, Claude Mythos 5, Claude Opus 5.5, Claude Opus 4.8, and Claude Opus 5. No beta header is required for mid-conversation system messages. This feature is not available on Claude Sonnet 5.\""
14423
+ },
14424
+ "midConversationToolChanges": {
14425
+ "value": {
14426
+ "beta": "mid-conversation-tool-changes-2026-07-01"
14427
+ },
14428
+ "source": "official-doc",
14429
+ "confidence": "declared",
14430
+ "observedAt": "2026-09-26T00:00:00Z",
14431
+ "sourceRef": "https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages — tool_addition / tool_removal blocks in a role:\"system\" message, by reference (\"Add/remove by reference: mid-conversation-tool-changes-2026-07-01 — Claude API, Amazon Bedrock, Google Cloud\"); available on Claude Fable 5.1, Mythos 5.1, Fable 5, Mythos 5, Opus 5.5, Opus 4.8 and Opus 5, \"Not available on Claude Sonnet 5\". Retrieved 2026-09-26; release note 2026-07-24 (https://platform.claude.com/docs/en/release-notes/overview)."
14432
+ },
14433
+ "inlineToolDefinitions": {
14434
+ "value": {
14435
+ "beta": "inline-tools-2026-09-15"
14436
+ },
14437
+ "source": "official-doc",
14438
+ "confidence": "declared",
14439
+ "observedAt": "2026-09-26T00:00:00Z",
14440
+ "sourceRef": "https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages — tool_addition with a tool_definition (\"Add/remove by reference + define by value: inline-tools-2026-09-15 — Claude API\"); \"The inline-tools-2026-09-15 header covers all reference-based changes\"; redefinition: \"send a different definition under the same name ... The new definition replaces the earlier one from that position onward\" (no removal first, a tool declared in tools included); a definition reusing the name of a different type of tool is a 400 tool_name_conflict. Same model list as midConversationToolChanges. Claude API only, so set on the anthropic and console providers (both api.anthropic.com), never on a cloud reseller. Retrieved 2026-09-26; release note 2026-09-22."
14441
+ },
14442
+ "assistantPrefill": {
14443
+ "value": false,
14444
+ "source": "official-doc",
14445
+ "confidence": "declared",
14446
+ "observedAt": "2026-09-26T00:00:00Z",
14447
+ "sourceRef": "https://platform.claude.com/docs/en/models/opus-5-5/migration-guide — \"Don't end messages with a prefilled assistant turn: it is rejected\"; \"Prefilling assistant messages returns a 400 error on Claude Opus 4.6 and later Opus models, including Claude Opus 5.5\"; Sonnet 5 and Opus 5: \"Manual extended thinking, non-default sampling parameters, and assistant prefill return a 400 error on both models\"; the Fable 5.1 guide: prefill \"returns a 400 error, unchanged from Claude Fable 5\". Live gate 2026-09-26 on claude-opus-5-5: \"This model does not support assistant message prefill. The conversation must end with a user message.\""
14448
+ },
14409
14449
  "canonicalModelId": "claude-fable-5",
14410
14450
  "modelFamily": "claude"
14411
14451
  },
@@ -14556,6 +14596,15 @@
14556
14596
  "confidence": "declared",
14557
14597
  "observedAt": "2026-09-25T13:00:00Z",
14558
14598
  "sourceRef": "https://platform.claude.com/docs/en/build-with-claude/thinking-troubleshooting — \"A 400 error says a thinking block signature is invalid\": on Claude Fable 5.1 and Opus 5.5 a replayed thinking block is bound to the conversation (system, tools and earlier messages) and is rejected once that prefix changes (enforced for accounts created on or after 2026-08-31); the documented escape is the `thinking-binding-controls-2026-08-01` beta with `thinking.block_binding.prefix_mismatch_behavior: \"drop_block\"`. See also https://platform.claude.com/docs/en/models/opus-5-5/whats-new-opus-5-5 (\"Thinking blocks are tied to the model and the conversation\")."
14599
+ },
14600
+ "perMessageEffort": {
14601
+ "value": {
14602
+ "beta": "mid-conversation-output-config-2026-07-01"
14603
+ },
14604
+ "source": "official-doc",
14605
+ "confidence": "declared",
14606
+ "observedAt": "2026-09-25T18:00:00Z",
14607
+ "sourceRef": "https://platform.claude.com/docs/en/build-with-claude/effort#change-effort-mid-conversation-beta — \"On Claude Fable 5.1, Claude Mythos 5.1, Claude Opus 5.5, and Claude Opus 5, use a per-message effort change, which keeps the prompt cache\": a role:\"system\" message with empty content and output_config.effort, beta header mid-conversation-output-config-2026-07-01; \"Models without per-message effort, including Claude Fable 5, return a 400 error\". claude 2.1.282 sends the older alias per-turn-control-2026-07-01, which the page does not document."
14559
14608
  }
14560
14609
  },
14561
14610
  "pricing": {
@@ -14577,6 +14626,45 @@
14577
14626
  "tool_choice.tool"
14578
14627
  ],
14579
14628
  "status": "candidate",
14629
+ "deferredToolLoading": {
14630
+ "value": true,
14631
+ "source": "official-doc",
14632
+ "confidence": "declared",
14633
+ "observedAt": "2026-09-25T18:30:00Z",
14634
+ "sourceRef": "https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-search-tool — the Model compatibility table lists Fable 5.1, Mythos 5.1, Fable 5, Mythos 5, Opus 5.5, Opus 5, Opus 4.8, 4.7, 4.6, Sonnet 4.6, Opus 4.5, Sonnet 4.5 and Haiku 4.5 (not Sonnet 5); \"Custom tool search implementation\": a client tool returns a tool_result whose content carries {type:\"tool_reference\", tool_name} blocks, every referenced tool declared in tools with defer_loading: true, and the API expands them; \"The prefix is untouched, so prompt caching is preserved\" (https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-use-with-prompt-caching)."
14635
+ },
14636
+ "midConversationSystem": {
14637
+ "value": true,
14638
+ "source": "official-doc",
14639
+ "confidence": "declared",
14640
+ "observedAt": "2026-09-25T19:00:00Z",
14641
+ "sourceRef": "https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages — \"This feature is available on Claude Fable 5.1, Claude Mythos 5.1, Claude Fable 5, Claude Mythos 5, Claude Opus 5.5, Claude Opus 4.8, and Claude Opus 5. No beta header is required for mid-conversation system messages. This feature is not available on Claude Sonnet 5.\""
14642
+ },
14643
+ "midConversationToolChanges": {
14644
+ "value": {
14645
+ "beta": "mid-conversation-tool-changes-2026-07-01"
14646
+ },
14647
+ "source": "official-doc",
14648
+ "confidence": "declared",
14649
+ "observedAt": "2026-09-26T00:00:00Z",
14650
+ "sourceRef": "https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages — tool_addition / tool_removal blocks in a role:\"system\" message, by reference (\"Add/remove by reference: mid-conversation-tool-changes-2026-07-01 — Claude API, Amazon Bedrock, Google Cloud\"); available on Claude Fable 5.1, Mythos 5.1, Fable 5, Mythos 5, Opus 5.5, Opus 4.8 and Opus 5, \"Not available on Claude Sonnet 5\". Retrieved 2026-09-26; release note 2026-07-24 (https://platform.claude.com/docs/en/release-notes/overview)."
14651
+ },
14652
+ "inlineToolDefinitions": {
14653
+ "value": {
14654
+ "beta": "inline-tools-2026-09-15"
14655
+ },
14656
+ "source": "official-doc",
14657
+ "confidence": "declared",
14658
+ "observedAt": "2026-09-26T00:00:00Z",
14659
+ "sourceRef": "https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages — tool_addition with a tool_definition (\"Add/remove by reference + define by value: inline-tools-2026-09-15 — Claude API\"); \"The inline-tools-2026-09-15 header covers all reference-based changes\"; redefinition: \"send a different definition under the same name ... The new definition replaces the earlier one from that position onward\" (no removal first, a tool declared in tools included); a definition reusing the name of a different type of tool is a 400 tool_name_conflict. Same model list as midConversationToolChanges. Claude API only, so set on the anthropic and console providers (both api.anthropic.com), never on a cloud reseller. Retrieved 2026-09-26; release note 2026-09-22."
14660
+ },
14661
+ "assistantPrefill": {
14662
+ "value": false,
14663
+ "source": "official-doc",
14664
+ "confidence": "declared",
14665
+ "observedAt": "2026-09-26T00:00:00Z",
14666
+ "sourceRef": "https://platform.claude.com/docs/en/models/opus-5-5/migration-guide — \"Don't end messages with a prefilled assistant turn: it is rejected\"; \"Prefilling assistant messages returns a 400 error on Claude Opus 4.6 and later Opus models, including Claude Opus 5.5\"; Sonnet 5 and Opus 5: \"Manual extended thinking, non-default sampling parameters, and assistant prefill return a 400 error on both models\"; the Fable 5.1 guide: prefill \"returns a 400 error, unchanged from Claude Fable 5\". Live gate 2026-09-26 on claude-opus-5-5: \"This model does not support assistant message prefill. The conversation must end with a user message.\""
14667
+ },
14580
14668
  "canonicalModelId": "claude-fable-5.1",
14581
14669
  "modelFamily": "claude"
14582
14670
  },
@@ -14675,6 +14763,13 @@
14675
14763
  "thinking.type.adaptive"
14676
14764
  ],
14677
14765
  "status": "candidate",
14766
+ "deferredToolLoading": {
14767
+ "value": true,
14768
+ "source": "official-doc",
14769
+ "confidence": "declared",
14770
+ "observedAt": "2026-09-25T18:30:00Z",
14771
+ "sourceRef": "https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-search-tool — the Model compatibility table lists Fable 5.1, Mythos 5.1, Fable 5, Mythos 5, Opus 5.5, Opus 5, Opus 4.8, 4.7, 4.6, Sonnet 4.6, Opus 4.5, Sonnet 4.5 and Haiku 4.5 (not Sonnet 5); \"Custom tool search implementation\": a client tool returns a tool_result whose content carries {type:\"tool_reference\", tool_name} blocks, every referenced tool declared in tools with defer_loading: true, and the API expands them; \"The prefix is untouched, so prompt caching is preserved\" (https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-use-with-prompt-caching)."
14772
+ },
14678
14773
  "canonicalModelId": "claude-haiku-4.5-20251001",
14679
14774
  "modelFamily": "claude"
14680
14775
  },
@@ -14773,6 +14868,13 @@
14773
14868
  "thinking.type.adaptive"
14774
14869
  ],
14775
14870
  "status": "candidate",
14871
+ "deferredToolLoading": {
14872
+ "value": true,
14873
+ "source": "official-doc",
14874
+ "confidence": "declared",
14875
+ "observedAt": "2026-09-25T18:30:00Z",
14876
+ "sourceRef": "https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-search-tool — the Model compatibility table lists Fable 5.1, Mythos 5.1, Fable 5, Mythos 5, Opus 5.5, Opus 5, Opus 4.8, 4.7, 4.6, Sonnet 4.6, Opus 4.5, Sonnet 4.5 and Haiku 4.5 (not Sonnet 5); \"Custom tool search implementation\": a client tool returns a tool_result whose content carries {type:\"tool_reference\", tool_name} blocks, every referenced tool declared in tools with defer_loading: true, and the API expands them; \"The prefix is untouched, so prompt caching is preserved\" (https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-use-with-prompt-caching)."
14877
+ },
14776
14878
  "canonicalModelId": "claude-haiku-4.5",
14777
14879
  "modelFamily": "claude"
14778
14880
  },
@@ -14897,6 +14999,13 @@
14897
14999
  "thinking.type.adaptive"
14898
15000
  ],
14899
15001
  "status": "candidate",
15002
+ "deferredToolLoading": {
15003
+ "value": true,
15004
+ "source": "official-doc",
15005
+ "confidence": "declared",
15006
+ "observedAt": "2026-09-25T18:30:00Z",
15007
+ "sourceRef": "https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-search-tool — the Model compatibility table lists Fable 5.1, Mythos 5.1, Fable 5, Mythos 5, Opus 5.5, Opus 5, Opus 4.8, 4.7, 4.6, Sonnet 4.6, Opus 4.5, Sonnet 4.5 and Haiku 4.5 (not Sonnet 5); \"Custom tool search implementation\": a client tool returns a tool_result whose content carries {type:\"tool_reference\", tool_name} blocks, every referenced tool declared in tools with defer_loading: true, and the API expands them; \"The prefix is untouched, so prompt caching is preserved\" (https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-use-with-prompt-caching)."
15008
+ },
14900
15009
  "canonicalModelId": "claude-opus-4.5",
14901
15010
  "modelFamily": "claude"
14902
15011
  },
@@ -14905,7 +15014,9 @@
14905
15014
  "providerId": "anthropic",
14906
15015
  "upstreamId": "claude-opus-4.6",
14907
15016
  "displayName": "Claude Opus 4.6",
14908
- "aliases": [],
15017
+ "aliases": [
15018
+ "claude-opus-4-6"
15019
+ ],
14909
15020
  "endpoints": [
14910
15021
  "chat"
14911
15022
  ],
@@ -15017,6 +15128,20 @@
15017
15128
  },
15018
15129
  "unsupportedParameters": [],
15019
15130
  "status": "candidate",
15131
+ "deferredToolLoading": {
15132
+ "value": true,
15133
+ "source": "official-doc",
15134
+ "confidence": "declared",
15135
+ "observedAt": "2026-09-25T18:30:00Z",
15136
+ "sourceRef": "https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-search-tool — the Model compatibility table lists Fable 5.1, Mythos 5.1, Fable 5, Mythos 5, Opus 5.5, Opus 5, Opus 4.8, 4.7, 4.6, Sonnet 4.6, Opus 4.5, Sonnet 4.5 and Haiku 4.5 (not Sonnet 5); \"Custom tool search implementation\": a client tool returns a tool_result whose content carries {type:\"tool_reference\", tool_name} blocks, every referenced tool declared in tools with defer_loading: true, and the API expands them; \"The prefix is untouched, so prompt caching is preserved\" (https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-use-with-prompt-caching)."
15137
+ },
15138
+ "assistantPrefill": {
15139
+ "value": false,
15140
+ "source": "official-doc",
15141
+ "confidence": "declared",
15142
+ "observedAt": "2026-09-26T00:00:00Z",
15143
+ "sourceRef": "https://platform.claude.com/docs/en/models/opus-5-5/migration-guide — \"Don't end messages with a prefilled assistant turn: it is rejected\"; \"Prefilling assistant messages returns a 400 error on Claude Opus 4.6 and later Opus models, including Claude Opus 5.5\"; Sonnet 5 and Opus 5: \"Manual extended thinking, non-default sampling parameters, and assistant prefill return a 400 error on both models\"; the Fable 5.1 guide: prefill \"returns a 400 error, unchanged from Claude Fable 5\". Live gate 2026-09-26 on claude-opus-5-5: \"This model does not support assistant message prefill. The conversation must end with a user message.\""
15144
+ },
15020
15145
  "canonicalModelId": "claude-opus-4.6",
15021
15146
  "modelFamily": "claude"
15022
15147
  },
@@ -15025,7 +15150,9 @@
15025
15150
  "providerId": "anthropic",
15026
15151
  "upstreamId": "claude-opus-4.7",
15027
15152
  "displayName": "Claude Opus 4.7",
15028
- "aliases": [],
15153
+ "aliases": [
15154
+ "claude-opus-4-7"
15155
+ ],
15029
15156
  "endpoints": [
15030
15157
  "chat"
15031
15158
  ],
@@ -15143,6 +15270,20 @@
15143
15270
  "thinking.type.enabled"
15144
15271
  ],
15145
15272
  "status": "candidate",
15273
+ "deferredToolLoading": {
15274
+ "value": true,
15275
+ "source": "official-doc",
15276
+ "confidence": "declared",
15277
+ "observedAt": "2026-09-25T18:30:00Z",
15278
+ "sourceRef": "https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-search-tool — the Model compatibility table lists Fable 5.1, Mythos 5.1, Fable 5, Mythos 5, Opus 5.5, Opus 5, Opus 4.8, 4.7, 4.6, Sonnet 4.6, Opus 4.5, Sonnet 4.5 and Haiku 4.5 (not Sonnet 5); \"Custom tool search implementation\": a client tool returns a tool_result whose content carries {type:\"tool_reference\", tool_name} blocks, every referenced tool declared in tools with defer_loading: true, and the API expands them; \"The prefix is untouched, so prompt caching is preserved\" (https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-use-with-prompt-caching)."
15279
+ },
15280
+ "assistantPrefill": {
15281
+ "value": false,
15282
+ "source": "official-doc",
15283
+ "confidence": "declared",
15284
+ "observedAt": "2026-09-26T00:00:00Z",
15285
+ "sourceRef": "https://platform.claude.com/docs/en/models/opus-5-5/migration-guide — \"Don't end messages with a prefilled assistant turn: it is rejected\"; \"Prefilling assistant messages returns a 400 error on Claude Opus 4.6 and later Opus models, including Claude Opus 5.5\"; Sonnet 5 and Opus 5: \"Manual extended thinking, non-default sampling parameters, and assistant prefill return a 400 error on both models\"; the Fable 5.1 guide: prefill \"returns a 400 error, unchanged from Claude Fable 5\". Live gate 2026-09-26 on claude-opus-5-5: \"This model does not support assistant message prefill. The conversation must end with a user message.\""
15286
+ },
15146
15287
  "canonicalModelId": "claude-opus-4.7",
15147
15288
  "modelFamily": "claude"
15148
15289
  },
@@ -15151,7 +15292,9 @@
15151
15292
  "providerId": "anthropic",
15152
15293
  "upstreamId": "claude-opus-4.8",
15153
15294
  "displayName": "Claude Opus 4.8",
15154
- "aliases": [],
15295
+ "aliases": [
15296
+ "claude-opus-4-8"
15297
+ ],
15155
15298
  "endpoints": [
15156
15299
  "chat"
15157
15300
  ],
@@ -15269,6 +15412,45 @@
15269
15412
  "thinking.type.enabled"
15270
15413
  ],
15271
15414
  "status": "candidate",
15415
+ "deferredToolLoading": {
15416
+ "value": true,
15417
+ "source": "official-doc",
15418
+ "confidence": "declared",
15419
+ "observedAt": "2026-09-25T18:30:00Z",
15420
+ "sourceRef": "https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-search-tool — the Model compatibility table lists Fable 5.1, Mythos 5.1, Fable 5, Mythos 5, Opus 5.5, Opus 5, Opus 4.8, 4.7, 4.6, Sonnet 4.6, Opus 4.5, Sonnet 4.5 and Haiku 4.5 (not Sonnet 5); \"Custom tool search implementation\": a client tool returns a tool_result whose content carries {type:\"tool_reference\", tool_name} blocks, every referenced tool declared in tools with defer_loading: true, and the API expands them; \"The prefix is untouched, so prompt caching is preserved\" (https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-use-with-prompt-caching)."
15421
+ },
15422
+ "midConversationSystem": {
15423
+ "value": true,
15424
+ "source": "official-doc",
15425
+ "confidence": "declared",
15426
+ "observedAt": "2026-09-25T19:00:00Z",
15427
+ "sourceRef": "https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages — \"This feature is available on Claude Fable 5.1, Claude Mythos 5.1, Claude Fable 5, Claude Mythos 5, Claude Opus 5.5, Claude Opus 4.8, and Claude Opus 5. No beta header is required for mid-conversation system messages. This feature is not available on Claude Sonnet 5.\""
15428
+ },
15429
+ "midConversationToolChanges": {
15430
+ "value": {
15431
+ "beta": "mid-conversation-tool-changes-2026-07-01"
15432
+ },
15433
+ "source": "official-doc",
15434
+ "confidence": "declared",
15435
+ "observedAt": "2026-09-26T00:00:00Z",
15436
+ "sourceRef": "https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages — tool_addition / tool_removal blocks in a role:\"system\" message, by reference (\"Add/remove by reference: mid-conversation-tool-changes-2026-07-01 — Claude API, Amazon Bedrock, Google Cloud\"); available on Claude Fable 5.1, Mythos 5.1, Fable 5, Mythos 5, Opus 5.5, Opus 4.8 and Opus 5, \"Not available on Claude Sonnet 5\". Retrieved 2026-09-26; release note 2026-07-24 (https://platform.claude.com/docs/en/release-notes/overview)."
15437
+ },
15438
+ "inlineToolDefinitions": {
15439
+ "value": {
15440
+ "beta": "inline-tools-2026-09-15"
15441
+ },
15442
+ "source": "official-doc",
15443
+ "confidence": "declared",
15444
+ "observedAt": "2026-09-26T00:00:00Z",
15445
+ "sourceRef": "https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages — tool_addition with a tool_definition (\"Add/remove by reference + define by value: inline-tools-2026-09-15 — Claude API\"); \"The inline-tools-2026-09-15 header covers all reference-based changes\"; redefinition: \"send a different definition under the same name ... The new definition replaces the earlier one from that position onward\" (no removal first, a tool declared in tools included); a definition reusing the name of a different type of tool is a 400 tool_name_conflict. Same model list as midConversationToolChanges. Claude API only, so set on the anthropic and console providers (both api.anthropic.com), never on a cloud reseller. Retrieved 2026-09-26; release note 2026-09-22."
15446
+ },
15447
+ "assistantPrefill": {
15448
+ "value": false,
15449
+ "source": "official-doc",
15450
+ "confidence": "declared",
15451
+ "observedAt": "2026-09-26T00:00:00Z",
15452
+ "sourceRef": "https://platform.claude.com/docs/en/models/opus-5-5/migration-guide — \"Don't end messages with a prefilled assistant turn: it is rejected\"; \"Prefilling assistant messages returns a 400 error on Claude Opus 4.6 and later Opus models, including Claude Opus 5.5\"; Sonnet 5 and Opus 5: \"Manual extended thinking, non-default sampling parameters, and assistant prefill return a 400 error on both models\"; the Fable 5.1 guide: prefill \"returns a 400 error, unchanged from Claude Fable 5\". Live gate 2026-09-26 on claude-opus-5-5: \"This model does not support assistant message prefill. The conversation must end with a user message.\""
15453
+ },
15272
15454
  "canonicalModelId": "claude-opus-4.8",
15273
15455
  "modelFamily": "claude"
15274
15456
  },
@@ -15417,6 +15599,15 @@
15417
15599
  "confidence": "declared",
15418
15600
  "observedAt": "2026-09-25T12:30:00Z",
15419
15601
  "sourceRef": "https://platform.claude.com/docs/en/build-with-claude/effort — the effort page's supportedModels list names claude-fable-5-1, claude-fable-5, claude-opus-5-5, claude-opus-5, claude-opus-4-8, claude-opus-4-7, claude-opus-4-6, claude-opus-4-5-20251101, claude-sonnet-5 and claude-sonnet-4-6: effort is requested through `output_config.effort` (Claude 4.7 and later reject a manual `thinking.budget_tokens`, https://platform.claude.com/docs/en/build-with-claude/thinking-troubleshooting#rejected-configurations)."
15602
+ },
15603
+ "perMessageEffort": {
15604
+ "value": {
15605
+ "beta": "mid-conversation-output-config-2026-07-01"
15606
+ },
15607
+ "source": "official-doc",
15608
+ "confidence": "declared",
15609
+ "observedAt": "2026-09-25T18:00:00Z",
15610
+ "sourceRef": "https://platform.claude.com/docs/en/build-with-claude/effort#change-effort-mid-conversation-beta — \"On Claude Fable 5.1, Claude Mythos 5.1, Claude Opus 5.5, and Claude Opus 5, use a per-message effort change, which keeps the prompt cache\": a role:\"system\" message with empty content and output_config.effort, beta header mid-conversation-output-config-2026-07-01; \"Models without per-message effort, including Claude Fable 5, return a 400 error\". claude 2.1.282 sends the older alias per-turn-control-2026-07-01, which the page does not document."
15420
15611
  }
15421
15612
  },
15422
15613
  "pricing": {
@@ -15435,9 +15626,50 @@
15435
15626
  "temperature",
15436
15627
  "top_p",
15437
15628
  "top_k",
15438
- "thinking.type.enabled"
15629
+ "thinking.type.enabled",
15630
+ "thinking.type.disabled+output_config.effort.xhigh",
15631
+ "thinking.type.disabled+output_config.effort.max"
15439
15632
  ],
15440
15633
  "status": "candidate",
15634
+ "deferredToolLoading": {
15635
+ "value": true,
15636
+ "source": "official-doc",
15637
+ "confidence": "declared",
15638
+ "observedAt": "2026-09-25T18:30:00Z",
15639
+ "sourceRef": "https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-search-tool — the Model compatibility table lists Fable 5.1, Mythos 5.1, Fable 5, Mythos 5, Opus 5.5, Opus 5, Opus 4.8, 4.7, 4.6, Sonnet 4.6, Opus 4.5, Sonnet 4.5 and Haiku 4.5 (not Sonnet 5); \"Custom tool search implementation\": a client tool returns a tool_result whose content carries {type:\"tool_reference\", tool_name} blocks, every referenced tool declared in tools with defer_loading: true, and the API expands them; \"The prefix is untouched, so prompt caching is preserved\" (https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-use-with-prompt-caching)."
15640
+ },
15641
+ "midConversationSystem": {
15642
+ "value": true,
15643
+ "source": "official-doc",
15644
+ "confidence": "declared",
15645
+ "observedAt": "2026-09-25T19:00:00Z",
15646
+ "sourceRef": "https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages — \"This feature is available on Claude Fable 5.1, Claude Mythos 5.1, Claude Fable 5, Claude Mythos 5, Claude Opus 5.5, Claude Opus 4.8, and Claude Opus 5. No beta header is required for mid-conversation system messages. This feature is not available on Claude Sonnet 5.\""
15647
+ },
15648
+ "midConversationToolChanges": {
15649
+ "value": {
15650
+ "beta": "mid-conversation-tool-changes-2026-07-01"
15651
+ },
15652
+ "source": "official-doc",
15653
+ "confidence": "declared",
15654
+ "observedAt": "2026-09-26T00:00:00Z",
15655
+ "sourceRef": "https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages — tool_addition / tool_removal blocks in a role:\"system\" message, by reference (\"Add/remove by reference: mid-conversation-tool-changes-2026-07-01 — Claude API, Amazon Bedrock, Google Cloud\"); available on Claude Fable 5.1, Mythos 5.1, Fable 5, Mythos 5, Opus 5.5, Opus 4.8 and Opus 5, \"Not available on Claude Sonnet 5\". Retrieved 2026-09-26; release note 2026-07-24 (https://platform.claude.com/docs/en/release-notes/overview)."
15656
+ },
15657
+ "inlineToolDefinitions": {
15658
+ "value": {
15659
+ "beta": "inline-tools-2026-09-15"
15660
+ },
15661
+ "source": "official-doc",
15662
+ "confidence": "declared",
15663
+ "observedAt": "2026-09-26T00:00:00Z",
15664
+ "sourceRef": "https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages — tool_addition with a tool_definition (\"Add/remove by reference + define by value: inline-tools-2026-09-15 — Claude API\"); \"The inline-tools-2026-09-15 header covers all reference-based changes\"; redefinition: \"send a different definition under the same name ... The new definition replaces the earlier one from that position onward\" (no removal first, a tool declared in tools included); a definition reusing the name of a different type of tool is a 400 tool_name_conflict. Same model list as midConversationToolChanges. Claude API only, so set on the anthropic and console providers (both api.anthropic.com), never on a cloud reseller. Retrieved 2026-09-26; release note 2026-09-22."
15665
+ },
15666
+ "assistantPrefill": {
15667
+ "value": false,
15668
+ "source": "official-doc",
15669
+ "confidence": "declared",
15670
+ "observedAt": "2026-09-26T00:00:00Z",
15671
+ "sourceRef": "https://platform.claude.com/docs/en/models/opus-5-5/migration-guide — \"Don't end messages with a prefilled assistant turn: it is rejected\"; \"Prefilling assistant messages returns a 400 error on Claude Opus 4.6 and later Opus models, including Claude Opus 5.5\"; Sonnet 5 and Opus 5: \"Manual extended thinking, non-default sampling parameters, and assistant prefill return a 400 error on both models\"; the Fable 5.1 guide: prefill \"returns a 400 error, unchanged from Claude Fable 5\". Live gate 2026-09-26 on claude-opus-5-5: \"This model does not support assistant message prefill. The conversation must end with a user message.\""
15672
+ },
15441
15673
  "canonicalModelId": "claude-opus-5",
15442
15674
  "modelFamily": "claude"
15443
15675
  },
@@ -15597,6 +15829,15 @@
15597
15829
  "confidence": "declared",
15598
15830
  "observedAt": "2026-09-25T13:00:00Z",
15599
15831
  "sourceRef": "https://platform.claude.com/docs/en/build-with-claude/thinking-troubleshooting — \"A 400 error says a thinking block signature is invalid\": on Claude Fable 5.1 and Opus 5.5 a replayed thinking block is bound to the conversation (system, tools and earlier messages) and is rejected once that prefix changes (enforced for accounts created on or after 2026-08-31); the documented escape is the `thinking-binding-controls-2026-08-01` beta with `thinking.block_binding.prefix_mismatch_behavior: \"drop_block\"`. See also https://platform.claude.com/docs/en/models/opus-5-5/whats-new-opus-5-5 (\"Thinking blocks are tied to the model and the conversation\")."
15832
+ },
15833
+ "perMessageEffort": {
15834
+ "value": {
15835
+ "beta": "mid-conversation-output-config-2026-07-01"
15836
+ },
15837
+ "source": "official-doc",
15838
+ "confidence": "declared",
15839
+ "observedAt": "2026-09-25T18:00:00Z",
15840
+ "sourceRef": "https://platform.claude.com/docs/en/build-with-claude/effort#change-effort-mid-conversation-beta — \"On Claude Fable 5.1, Claude Mythos 5.1, Claude Opus 5.5, and Claude Opus 5, use a per-message effort change, which keeps the prompt cache\": a role:\"system\" message with empty content and output_config.effort, beta header mid-conversation-output-config-2026-07-01; \"Models without per-message effort, including Claude Fable 5, return a 400 error\". claude 2.1.282 sends the older alias per-turn-control-2026-07-01, which the page does not document."
15600
15841
  }
15601
15842
  },
15602
15843
  "pricing": {
@@ -15618,6 +15859,45 @@
15618
15859
  "tool_choice.tool"
15619
15860
  ],
15620
15861
  "status": "candidate",
15862
+ "deferredToolLoading": {
15863
+ "value": true,
15864
+ "source": "official-doc",
15865
+ "confidence": "declared",
15866
+ "observedAt": "2026-09-25T18:30:00Z",
15867
+ "sourceRef": "https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-search-tool — the Model compatibility table lists Fable 5.1, Mythos 5.1, Fable 5, Mythos 5, Opus 5.5, Opus 5, Opus 4.8, 4.7, 4.6, Sonnet 4.6, Opus 4.5, Sonnet 4.5 and Haiku 4.5 (not Sonnet 5); \"Custom tool search implementation\": a client tool returns a tool_result whose content carries {type:\"tool_reference\", tool_name} blocks, every referenced tool declared in tools with defer_loading: true, and the API expands them; \"The prefix is untouched, so prompt caching is preserved\" (https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-use-with-prompt-caching)."
15868
+ },
15869
+ "midConversationSystem": {
15870
+ "value": true,
15871
+ "source": "official-doc",
15872
+ "confidence": "declared",
15873
+ "observedAt": "2026-09-25T19:00:00Z",
15874
+ "sourceRef": "https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages — \"This feature is available on Claude Fable 5.1, Claude Mythos 5.1, Claude Fable 5, Claude Mythos 5, Claude Opus 5.5, Claude Opus 4.8, and Claude Opus 5. No beta header is required for mid-conversation system messages. This feature is not available on Claude Sonnet 5.\""
15875
+ },
15876
+ "midConversationToolChanges": {
15877
+ "value": {
15878
+ "beta": "mid-conversation-tool-changes-2026-07-01"
15879
+ },
15880
+ "source": "official-doc",
15881
+ "confidence": "declared",
15882
+ "observedAt": "2026-09-26T00:00:00Z",
15883
+ "sourceRef": "https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages — tool_addition / tool_removal blocks in a role:\"system\" message, by reference (\"Add/remove by reference: mid-conversation-tool-changes-2026-07-01 — Claude API, Amazon Bedrock, Google Cloud\"); available on Claude Fable 5.1, Mythos 5.1, Fable 5, Mythos 5, Opus 5.5, Opus 4.8 and Opus 5, \"Not available on Claude Sonnet 5\". Retrieved 2026-09-26; release note 2026-07-24 (https://platform.claude.com/docs/en/release-notes/overview)."
15884
+ },
15885
+ "inlineToolDefinitions": {
15886
+ "value": {
15887
+ "beta": "inline-tools-2026-09-15"
15888
+ },
15889
+ "source": "official-doc",
15890
+ "confidence": "declared",
15891
+ "observedAt": "2026-09-26T00:00:00Z",
15892
+ "sourceRef": "https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages — tool_addition with a tool_definition (\"Add/remove by reference + define by value: inline-tools-2026-09-15 — Claude API\"); \"The inline-tools-2026-09-15 header covers all reference-based changes\"; redefinition: \"send a different definition under the same name ... The new definition replaces the earlier one from that position onward\" (no removal first, a tool declared in tools included); a definition reusing the name of a different type of tool is a 400 tool_name_conflict. Same model list as midConversationToolChanges. Claude API only, so set on the anthropic and console providers (both api.anthropic.com), never on a cloud reseller. Retrieved 2026-09-26; release note 2026-09-22."
15893
+ },
15894
+ "assistantPrefill": {
15895
+ "value": false,
15896
+ "source": "official-doc",
15897
+ "confidence": "declared",
15898
+ "observedAt": "2026-09-26T00:00:00Z",
15899
+ "sourceRef": "https://platform.claude.com/docs/en/models/opus-5-5/migration-guide — \"Don't end messages with a prefilled assistant turn: it is rejected\"; \"Prefilling assistant messages returns a 400 error on Claude Opus 4.6 and later Opus models, including Claude Opus 5.5\"; Sonnet 5 and Opus 5: \"Manual extended thinking, non-default sampling parameters, and assistant prefill return a 400 error on both models\"; the Fable 5.1 guide: prefill \"returns a 400 error, unchanged from Claude Fable 5\". Live gate 2026-09-26 on claude-opus-5-5: \"This model does not support assistant message prefill. The conversation must end with a user message.\""
15900
+ },
15621
15901
  "canonicalModelId": "claude-opus-5.5",
15622
15902
  "modelFamily": "claude"
15623
15903
  },
@@ -15733,6 +16013,13 @@
15733
16013
  "thinking.type.adaptive"
15734
16014
  ],
15735
16015
  "status": "candidate",
16016
+ "deferredToolLoading": {
16017
+ "value": true,
16018
+ "source": "official-doc",
16019
+ "confidence": "declared",
16020
+ "observedAt": "2026-09-25T18:30:00Z",
16021
+ "sourceRef": "https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-search-tool — the Model compatibility table lists Fable 5.1, Mythos 5.1, Fable 5, Mythos 5, Opus 5.5, Opus 5, Opus 4.8, 4.7, 4.6, Sonnet 4.6, Opus 4.5, Sonnet 4.5 and Haiku 4.5 (not Sonnet 5); \"Custom tool search implementation\": a client tool returns a tool_result whose content carries {type:\"tool_reference\", tool_name} blocks, every referenced tool declared in tools with defer_loading: true, and the API expands them; \"The prefix is untouched, so prompt caching is preserved\" (https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-use-with-prompt-caching)."
16022
+ },
15736
16023
  "canonicalModelId": "claude-sonnet-4.5",
15737
16024
  "modelFamily": "claude"
15738
16025
  },
@@ -15741,7 +16028,9 @@
15741
16028
  "providerId": "anthropic",
15742
16029
  "upstreamId": "claude-sonnet-4.6",
15743
16030
  "displayName": "Claude Sonnet 4.6",
15744
- "aliases": [],
16031
+ "aliases": [
16032
+ "claude-sonnet-4-6"
16033
+ ],
15745
16034
  "endpoints": [
15746
16035
  "chat"
15747
16036
  ],
@@ -15853,6 +16142,13 @@
15853
16142
  },
15854
16143
  "unsupportedParameters": [],
15855
16144
  "status": "candidate",
16145
+ "deferredToolLoading": {
16146
+ "value": true,
16147
+ "source": "official-doc",
16148
+ "confidence": "declared",
16149
+ "observedAt": "2026-09-25T18:30:00Z",
16150
+ "sourceRef": "https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-search-tool — the Model compatibility table lists Fable 5.1, Mythos 5.1, Fable 5, Mythos 5, Opus 5.5, Opus 5, Opus 4.8, 4.7, 4.6, Sonnet 4.6, Opus 4.5, Sonnet 4.5 and Haiku 4.5 (not Sonnet 5); \"Custom tool search implementation\": a client tool returns a tool_result whose content carries {type:\"tool_reference\", tool_name} blocks, every referenced tool declared in tools with defer_loading: true, and the API expands them; \"The prefix is untouched, so prompt caching is preserved\" (https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-use-with-prompt-caching)."
16151
+ },
15856
16152
  "canonicalModelId": "claude-sonnet-4.6",
15857
16153
  "modelFamily": "claude"
15858
16154
  },
@@ -16024,6 +16320,13 @@
16024
16320
  "thinking.type.enabled"
16025
16321
  ],
16026
16322
  "status": "candidate",
16323
+ "assistantPrefill": {
16324
+ "value": false,
16325
+ "source": "official-doc",
16326
+ "confidence": "declared",
16327
+ "observedAt": "2026-09-26T00:00:00Z",
16328
+ "sourceRef": "https://platform.claude.com/docs/en/models/opus-5-5/migration-guide — \"Don't end messages with a prefilled assistant turn: it is rejected\"; \"Prefilling assistant messages returns a 400 error on Claude Opus 4.6 and later Opus models, including Claude Opus 5.5\"; Sonnet 5 and Opus 5: \"Manual extended thinking, non-default sampling parameters, and assistant prefill return a 400 error on both models\"; the Fable 5.1 guide: prefill \"returns a 400 error, unchanged from Claude Fable 5\". Live gate 2026-09-26 on claude-opus-5-5: \"This model does not support assistant message prefill. The conversation must end with a user message.\""
16329
+ },
16027
16330
  "canonicalModelId": "claude-sonnet-5",
16028
16331
  "modelFamily": "claude"
16029
16332
  },
@@ -25227,6 +25530,20 @@
25227
25530
  },
25228
25531
  "unsupportedParameters": [],
25229
25532
  "status": "candidate",
25533
+ "promptCacheKey": {
25534
+ "value": true,
25535
+ "source": "official-doc",
25536
+ "confidence": "declared",
25537
+ "observedAt": "2026-09-25T19:30:00Z",
25538
+ "sourceRef": "https://github.com/openai/codex/blob/main/codex-rs/core/src/client.rs — Codex (the vendor's own client for this backend) sets prompt_cache_key on every Responses request, to the session id (or source:parent_thread_id for internal sessions); https://developers.openai.com/api/docs/guides/prompt-caching documents the field."
25539
+ },
25540
+ "clientToolSearch": {
25541
+ "value": true,
25542
+ "source": "upstream-static",
25543
+ "confidence": "declared",
25544
+ "observedAt": "2026-09-26T00:00:00Z",
25545
+ "sourceRef": "codex-rs models-manager/models.json (cloned 25270df, 2026-09-26): supports_search_tool is true on every bundled model; core/src/tools/spec_plan.rs:653-666 turns on the client tool_search (tools/src/tool_search.rs:84-110, core/src/tools/handlers/tool_search_spec.rs:98) when the provider's namespace capability is on (default true) -- the vendor's own client sends it to chatgpt.com/backend-api/codex."
25546
+ },
25230
25547
  "canonicalModelId": "gpt-5.6-luna",
25231
25548
  "modelFamily": "gpt"
25232
25549
  },
@@ -25334,6 +25651,20 @@
25334
25651
  },
25335
25652
  "unsupportedParameters": [],
25336
25653
  "status": "candidate",
25654
+ "promptCacheKey": {
25655
+ "value": true,
25656
+ "source": "official-doc",
25657
+ "confidence": "declared",
25658
+ "observedAt": "2026-09-25T19:30:00Z",
25659
+ "sourceRef": "https://github.com/openai/codex/blob/main/codex-rs/core/src/client.rs — Codex (the vendor's own client for this backend) sets prompt_cache_key on every Responses request, to the session id (or source:parent_thread_id for internal sessions); https://developers.openai.com/api/docs/guides/prompt-caching documents the field."
25660
+ },
25661
+ "clientToolSearch": {
25662
+ "value": true,
25663
+ "source": "upstream-static",
25664
+ "confidence": "declared",
25665
+ "observedAt": "2026-09-26T00:00:00Z",
25666
+ "sourceRef": "codex-rs models-manager/models.json (cloned 25270df, 2026-09-26): supports_search_tool is true on every bundled model; core/src/tools/spec_plan.rs:653-666 turns on the client tool_search (tools/src/tool_search.rs:84-110, core/src/tools/handlers/tool_search_spec.rs:98) when the provider's namespace capability is on (default true) -- the vendor's own client sends it to chatgpt.com/backend-api/codex."
25667
+ },
25337
25668
  "canonicalModelId": "gpt-5.6-sol",
25338
25669
  "modelFamily": "gpt"
25339
25670
  },
@@ -25441,6 +25772,20 @@
25441
25772
  },
25442
25773
  "unsupportedParameters": [],
25443
25774
  "status": "candidate",
25775
+ "promptCacheKey": {
25776
+ "value": true,
25777
+ "source": "official-doc",
25778
+ "confidence": "declared",
25779
+ "observedAt": "2026-09-25T19:30:00Z",
25780
+ "sourceRef": "https://github.com/openai/codex/blob/main/codex-rs/core/src/client.rs — Codex (the vendor's own client for this backend) sets prompt_cache_key on every Responses request, to the session id (or source:parent_thread_id for internal sessions); https://developers.openai.com/api/docs/guides/prompt-caching documents the field."
25781
+ },
25782
+ "clientToolSearch": {
25783
+ "value": true,
25784
+ "source": "upstream-static",
25785
+ "confidence": "declared",
25786
+ "observedAt": "2026-09-26T00:00:00Z",
25787
+ "sourceRef": "codex-rs models-manager/models.json (cloned 25270df, 2026-09-26): supports_search_tool is true on every bundled model; core/src/tools/spec_plan.rs:653-666 turns on the client tool_search (tools/src/tool_search.rs:84-110, core/src/tools/handlers/tool_search_spec.rs:98) when the provider's namespace capability is on (default true) -- the vendor's own client sends it to chatgpt.com/backend-api/codex."
25788
+ },
25444
25789
  "canonicalModelId": "gpt-5.6-terra",
25445
25790
  "modelFamily": "gpt"
25446
25791
  },
@@ -25550,6 +25895,20 @@
25550
25895
  },
25551
25896
  "unsupportedParameters": [],
25552
25897
  "status": "candidate",
25898
+ "promptCacheKey": {
25899
+ "value": true,
25900
+ "source": "official-doc",
25901
+ "confidence": "declared",
25902
+ "observedAt": "2026-09-25T19:30:00Z",
25903
+ "sourceRef": "https://github.com/openai/codex/blob/main/codex-rs/core/src/client.rs — Codex (the vendor's own client for this backend) sets prompt_cache_key on every Responses request, to the session id (or source:parent_thread_id for internal sessions); https://developers.openai.com/api/docs/guides/prompt-caching documents the field."
25904
+ },
25905
+ "clientToolSearch": {
25906
+ "value": true,
25907
+ "source": "upstream-static",
25908
+ "confidence": "declared",
25909
+ "observedAt": "2026-09-26T00:00:00Z",
25910
+ "sourceRef": "codex-rs models-manager/models.json (cloned 25270df, 2026-09-26): supports_search_tool is true on every bundled model; core/src/tools/spec_plan.rs:653-666 turns on the client tool_search (tools/src/tool_search.rs:84-110, core/src/tools/handlers/tool_search_spec.rs:98) when the provider's namespace capability is on (default true) -- the vendor's own client sends it to chatgpt.com/backend-api/codex."
25911
+ },
25553
25912
  "canonicalModelId": "gpt-6-astra",
25554
25913
  "modelFamily": "gpt"
25555
25914
  },
@@ -25659,6 +26018,20 @@
25659
26018
  },
25660
26019
  "unsupportedParameters": [],
25661
26020
  "status": "candidate",
26021
+ "promptCacheKey": {
26022
+ "value": true,
26023
+ "source": "official-doc",
26024
+ "confidence": "declared",
26025
+ "observedAt": "2026-09-25T19:30:00Z",
26026
+ "sourceRef": "https://github.com/openai/codex/blob/main/codex-rs/core/src/client.rs — Codex (the vendor's own client for this backend) sets prompt_cache_key on every Responses request, to the session id (or source:parent_thread_id for internal sessions); https://developers.openai.com/api/docs/guides/prompt-caching documents the field."
26027
+ },
26028
+ "clientToolSearch": {
26029
+ "value": true,
26030
+ "source": "upstream-static",
26031
+ "confidence": "declared",
26032
+ "observedAt": "2026-09-26T00:00:00Z",
26033
+ "sourceRef": "codex-rs models-manager/models.json (cloned 25270df, 2026-09-26): supports_search_tool is true on every bundled model; core/src/tools/spec_plan.rs:653-666 turns on the client tool_search (tools/src/tool_search.rs:84-110, core/src/tools/handlers/tool_search_spec.rs:98) when the provider's namespace capability is on (default true) -- the vendor's own client sends it to chatgpt.com/backend-api/codex."
26034
+ },
25662
26035
  "canonicalModelId": "gpt-6-luna",
25663
26036
  "modelFamily": "gpt"
25664
26037
  },
@@ -25768,6 +26141,20 @@
25768
26141
  },
25769
26142
  "unsupportedParameters": [],
25770
26143
  "status": "candidate",
26144
+ "promptCacheKey": {
26145
+ "value": true,
26146
+ "source": "official-doc",
26147
+ "confidence": "declared",
26148
+ "observedAt": "2026-09-25T19:30:00Z",
26149
+ "sourceRef": "https://github.com/openai/codex/blob/main/codex-rs/core/src/client.rs — Codex (the vendor's own client for this backend) sets prompt_cache_key on every Responses request, to the session id (or source:parent_thread_id for internal sessions); https://developers.openai.com/api/docs/guides/prompt-caching documents the field."
26150
+ },
26151
+ "clientToolSearch": {
26152
+ "value": true,
26153
+ "source": "upstream-static",
26154
+ "confidence": "declared",
26155
+ "observedAt": "2026-09-26T00:00:00Z",
26156
+ "sourceRef": "codex-rs models-manager/models.json (cloned 25270df, 2026-09-26): supports_search_tool is true on every bundled model; core/src/tools/spec_plan.rs:653-666 turns on the client tool_search (tools/src/tool_search.rs:84-110, core/src/tools/handlers/tool_search_spec.rs:98) when the provider's namespace capability is on (default true) -- the vendor's own client sends it to chatgpt.com/backend-api/codex."
26157
+ },
25771
26158
  "canonicalModelId": "gpt-6-sol",
25772
26159
  "modelFamily": "gpt"
25773
26160
  },
@@ -26511,6 +26898,45 @@
26511
26898
  "thinking.type.disabled"
26512
26899
  ],
26513
26900
  "status": "candidate",
26901
+ "deferredToolLoading": {
26902
+ "value": true,
26903
+ "source": "official-doc",
26904
+ "confidence": "declared",
26905
+ "observedAt": "2026-09-25T18:30:00Z",
26906
+ "sourceRef": "https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-search-tool — the Model compatibility table lists Fable 5.1, Mythos 5.1, Fable 5, Mythos 5, Opus 5.5, Opus 5, Opus 4.8, 4.7, 4.6, Sonnet 4.6, Opus 4.5, Sonnet 4.5 and Haiku 4.5 (not Sonnet 5); \"Custom tool search implementation\": a client tool returns a tool_result whose content carries {type:\"tool_reference\", tool_name} blocks, every referenced tool declared in tools with defer_loading: true, and the API expands them; \"The prefix is untouched, so prompt caching is preserved\" (https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-use-with-prompt-caching)."
26907
+ },
26908
+ "midConversationSystem": {
26909
+ "value": true,
26910
+ "source": "official-doc",
26911
+ "confidence": "declared",
26912
+ "observedAt": "2026-09-25T19:00:00Z",
26913
+ "sourceRef": "https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages — \"This feature is available on Claude Fable 5.1, Claude Mythos 5.1, Claude Fable 5, Claude Mythos 5, Claude Opus 5.5, Claude Opus 4.8, and Claude Opus 5. No beta header is required for mid-conversation system messages. This feature is not available on Claude Sonnet 5.\""
26914
+ },
26915
+ "midConversationToolChanges": {
26916
+ "value": {
26917
+ "beta": "mid-conversation-tool-changes-2026-07-01"
26918
+ },
26919
+ "source": "official-doc",
26920
+ "confidence": "declared",
26921
+ "observedAt": "2026-09-26T00:00:00Z",
26922
+ "sourceRef": "https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages — tool_addition / tool_removal blocks in a role:\"system\" message, by reference (\"Add/remove by reference: mid-conversation-tool-changes-2026-07-01 — Claude API, Amazon Bedrock, Google Cloud\"); available on Claude Fable 5.1, Mythos 5.1, Fable 5, Mythos 5, Opus 5.5, Opus 4.8 and Opus 5, \"Not available on Claude Sonnet 5\". Retrieved 2026-09-26; release note 2026-07-24 (https://platform.claude.com/docs/en/release-notes/overview)."
26923
+ },
26924
+ "inlineToolDefinitions": {
26925
+ "value": {
26926
+ "beta": "inline-tools-2026-09-15"
26927
+ },
26928
+ "source": "official-doc",
26929
+ "confidence": "declared",
26930
+ "observedAt": "2026-09-26T00:00:00Z",
26931
+ "sourceRef": "https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages — tool_addition with a tool_definition (\"Add/remove by reference + define by value: inline-tools-2026-09-15 — Claude API\"); \"The inline-tools-2026-09-15 header covers all reference-based changes\"; redefinition: \"send a different definition under the same name ... The new definition replaces the earlier one from that position onward\" (no removal first, a tool declared in tools included); a definition reusing the name of a different type of tool is a 400 tool_name_conflict. Same model list as midConversationToolChanges. Claude API only, so set on the anthropic and console providers (both api.anthropic.com), never on a cloud reseller. Retrieved 2026-09-26; release note 2026-09-22."
26932
+ },
26933
+ "assistantPrefill": {
26934
+ "value": false,
26935
+ "source": "official-doc",
26936
+ "confidence": "declared",
26937
+ "observedAt": "2026-09-26T00:00:00Z",
26938
+ "sourceRef": "https://platform.claude.com/docs/en/models/opus-5-5/migration-guide — \"Don't end messages with a prefilled assistant turn: it is rejected\"; \"Prefilling assistant messages returns a 400 error on Claude Opus 4.6 and later Opus models, including Claude Opus 5.5\"; Sonnet 5 and Opus 5: \"Manual extended thinking, non-default sampling parameters, and assistant prefill return a 400 error on both models\"; the Fable 5.1 guide: prefill \"returns a 400 error, unchanged from Claude Fable 5\". Live gate 2026-09-26 on claude-opus-5-5: \"This model does not support assistant message prefill. The conversation must end with a user message.\""
26939
+ },
26514
26940
  "canonicalModelId": "claude-fable-5",
26515
26941
  "modelFamily": "claude"
26516
26942
  },
@@ -26661,6 +27087,15 @@
26661
27087
  "confidence": "declared",
26662
27088
  "observedAt": "2026-09-25T13:00:00Z",
26663
27089
  "sourceRef": "https://platform.claude.com/docs/en/build-with-claude/thinking-troubleshooting — \"A 400 error says a thinking block signature is invalid\": on Claude Fable 5.1 and Opus 5.5 a replayed thinking block is bound to the conversation (system, tools and earlier messages) and is rejected once that prefix changes (enforced for accounts created on or after 2026-08-31); the documented escape is the `thinking-binding-controls-2026-08-01` beta with `thinking.block_binding.prefix_mismatch_behavior: \"drop_block\"`. See also https://platform.claude.com/docs/en/models/opus-5-5/whats-new-opus-5-5 (\"Thinking blocks are tied to the model and the conversation\")."
27090
+ },
27091
+ "perMessageEffort": {
27092
+ "value": {
27093
+ "beta": "mid-conversation-output-config-2026-07-01"
27094
+ },
27095
+ "source": "official-doc",
27096
+ "confidence": "declared",
27097
+ "observedAt": "2026-09-25T18:00:00Z",
27098
+ "sourceRef": "https://platform.claude.com/docs/en/build-with-claude/effort#change-effort-mid-conversation-beta — \"On Claude Fable 5.1, Claude Mythos 5.1, Claude Opus 5.5, and Claude Opus 5, use a per-message effort change, which keeps the prompt cache\": a role:\"system\" message with empty content and output_config.effort, beta header mid-conversation-output-config-2026-07-01; \"Models without per-message effort, including Claude Fable 5, return a 400 error\". claude 2.1.282 sends the older alias per-turn-control-2026-07-01, which the page does not document."
26664
27099
  }
26665
27100
  },
26666
27101
  "pricing": {
@@ -26682,6 +27117,45 @@
26682
27117
  "tool_choice.tool"
26683
27118
  ],
26684
27119
  "status": "candidate",
27120
+ "deferredToolLoading": {
27121
+ "value": true,
27122
+ "source": "official-doc",
27123
+ "confidence": "declared",
27124
+ "observedAt": "2026-09-25T18:30:00Z",
27125
+ "sourceRef": "https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-search-tool — the Model compatibility table lists Fable 5.1, Mythos 5.1, Fable 5, Mythos 5, Opus 5.5, Opus 5, Opus 4.8, 4.7, 4.6, Sonnet 4.6, Opus 4.5, Sonnet 4.5 and Haiku 4.5 (not Sonnet 5); \"Custom tool search implementation\": a client tool returns a tool_result whose content carries {type:\"tool_reference\", tool_name} blocks, every referenced tool declared in tools with defer_loading: true, and the API expands them; \"The prefix is untouched, so prompt caching is preserved\" (https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-use-with-prompt-caching)."
27126
+ },
27127
+ "midConversationSystem": {
27128
+ "value": true,
27129
+ "source": "official-doc",
27130
+ "confidence": "declared",
27131
+ "observedAt": "2026-09-25T19:00:00Z",
27132
+ "sourceRef": "https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages — \"This feature is available on Claude Fable 5.1, Claude Mythos 5.1, Claude Fable 5, Claude Mythos 5, Claude Opus 5.5, Claude Opus 4.8, and Claude Opus 5. No beta header is required for mid-conversation system messages. This feature is not available on Claude Sonnet 5.\""
27133
+ },
27134
+ "midConversationToolChanges": {
27135
+ "value": {
27136
+ "beta": "mid-conversation-tool-changes-2026-07-01"
27137
+ },
27138
+ "source": "official-doc",
27139
+ "confidence": "declared",
27140
+ "observedAt": "2026-09-26T00:00:00Z",
27141
+ "sourceRef": "https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages — tool_addition / tool_removal blocks in a role:\"system\" message, by reference (\"Add/remove by reference: mid-conversation-tool-changes-2026-07-01 — Claude API, Amazon Bedrock, Google Cloud\"); available on Claude Fable 5.1, Mythos 5.1, Fable 5, Mythos 5, Opus 5.5, Opus 4.8 and Opus 5, \"Not available on Claude Sonnet 5\". Retrieved 2026-09-26; release note 2026-07-24 (https://platform.claude.com/docs/en/release-notes/overview)."
27142
+ },
27143
+ "inlineToolDefinitions": {
27144
+ "value": {
27145
+ "beta": "inline-tools-2026-09-15"
27146
+ },
27147
+ "source": "official-doc",
27148
+ "confidence": "declared",
27149
+ "observedAt": "2026-09-26T00:00:00Z",
27150
+ "sourceRef": "https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages — tool_addition with a tool_definition (\"Add/remove by reference + define by value: inline-tools-2026-09-15 — Claude API\"); \"The inline-tools-2026-09-15 header covers all reference-based changes\"; redefinition: \"send a different definition under the same name ... The new definition replaces the earlier one from that position onward\" (no removal first, a tool declared in tools included); a definition reusing the name of a different type of tool is a 400 tool_name_conflict. Same model list as midConversationToolChanges. Claude API only, so set on the anthropic and console providers (both api.anthropic.com), never on a cloud reseller. Retrieved 2026-09-26; release note 2026-09-22."
27151
+ },
27152
+ "assistantPrefill": {
27153
+ "value": false,
27154
+ "source": "official-doc",
27155
+ "confidence": "declared",
27156
+ "observedAt": "2026-09-26T00:00:00Z",
27157
+ "sourceRef": "https://platform.claude.com/docs/en/models/opus-5-5/migration-guide — \"Don't end messages with a prefilled assistant turn: it is rejected\"; \"Prefilling assistant messages returns a 400 error on Claude Opus 4.6 and later Opus models, including Claude Opus 5.5\"; Sonnet 5 and Opus 5: \"Manual extended thinking, non-default sampling parameters, and assistant prefill return a 400 error on both models\"; the Fable 5.1 guide: prefill \"returns a 400 error, unchanged from Claude Fable 5\". Live gate 2026-09-26 on claude-opus-5-5: \"This model does not support assistant message prefill. The conversation must end with a user message.\""
27158
+ },
26685
27159
  "canonicalModelId": "claude-fable-5.1",
26686
27160
  "modelFamily": "claude"
26687
27161
  },
@@ -26780,6 +27254,13 @@
26780
27254
  "thinking.type.adaptive"
26781
27255
  ],
26782
27256
  "status": "candidate",
27257
+ "deferredToolLoading": {
27258
+ "value": true,
27259
+ "source": "official-doc",
27260
+ "confidence": "declared",
27261
+ "observedAt": "2026-09-25T18:30:00Z",
27262
+ "sourceRef": "https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-search-tool — the Model compatibility table lists Fable 5.1, Mythos 5.1, Fable 5, Mythos 5, Opus 5.5, Opus 5, Opus 4.8, 4.7, 4.6, Sonnet 4.6, Opus 4.5, Sonnet 4.5 and Haiku 4.5 (not Sonnet 5); \"Custom tool search implementation\": a client tool returns a tool_result whose content carries {type:\"tool_reference\", tool_name} blocks, every referenced tool declared in tools with defer_loading: true, and the API expands them; \"The prefix is untouched, so prompt caching is preserved\" (https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-use-with-prompt-caching)."
27263
+ },
26783
27264
  "canonicalModelId": "claude-haiku-4.5-20251001",
26784
27265
  "modelFamily": "claude"
26785
27266
  },
@@ -26878,6 +27359,13 @@
26878
27359
  "thinking.type.adaptive"
26879
27360
  ],
26880
27361
  "status": "candidate",
27362
+ "deferredToolLoading": {
27363
+ "value": true,
27364
+ "source": "official-doc",
27365
+ "confidence": "declared",
27366
+ "observedAt": "2026-09-25T18:30:00Z",
27367
+ "sourceRef": "https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-search-tool — the Model compatibility table lists Fable 5.1, Mythos 5.1, Fable 5, Mythos 5, Opus 5.5, Opus 5, Opus 4.8, 4.7, 4.6, Sonnet 4.6, Opus 4.5, Sonnet 4.5 and Haiku 4.5 (not Sonnet 5); \"Custom tool search implementation\": a client tool returns a tool_result whose content carries {type:\"tool_reference\", tool_name} blocks, every referenced tool declared in tools with defer_loading: true, and the API expands them; \"The prefix is untouched, so prompt caching is preserved\" (https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-use-with-prompt-caching)."
27368
+ },
26881
27369
  "canonicalModelId": "claude-haiku-4.5",
26882
27370
  "modelFamily": "claude"
26883
27371
  },
@@ -27002,6 +27490,13 @@
27002
27490
  "thinking.type.adaptive"
27003
27491
  ],
27004
27492
  "status": "candidate",
27493
+ "deferredToolLoading": {
27494
+ "value": true,
27495
+ "source": "official-doc",
27496
+ "confidence": "declared",
27497
+ "observedAt": "2026-09-25T18:30:00Z",
27498
+ "sourceRef": "https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-search-tool — the Model compatibility table lists Fable 5.1, Mythos 5.1, Fable 5, Mythos 5, Opus 5.5, Opus 5, Opus 4.8, 4.7, 4.6, Sonnet 4.6, Opus 4.5, Sonnet 4.5 and Haiku 4.5 (not Sonnet 5); \"Custom tool search implementation\": a client tool returns a tool_result whose content carries {type:\"tool_reference\", tool_name} blocks, every referenced tool declared in tools with defer_loading: true, and the API expands them; \"The prefix is untouched, so prompt caching is preserved\" (https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-use-with-prompt-caching)."
27499
+ },
27005
27500
  "canonicalModelId": "claude-opus-4.5",
27006
27501
  "modelFamily": "claude"
27007
27502
  },
@@ -27010,7 +27505,9 @@
27010
27505
  "providerId": "console",
27011
27506
  "upstreamId": "claude-opus-4.6",
27012
27507
  "displayName": "Claude Opus 4.6",
27013
- "aliases": [],
27508
+ "aliases": [
27509
+ "claude-opus-4-6"
27510
+ ],
27014
27511
  "endpoints": [
27015
27512
  "chat"
27016
27513
  ],
@@ -27122,6 +27619,20 @@
27122
27619
  },
27123
27620
  "unsupportedParameters": [],
27124
27621
  "status": "candidate",
27622
+ "deferredToolLoading": {
27623
+ "value": true,
27624
+ "source": "official-doc",
27625
+ "confidence": "declared",
27626
+ "observedAt": "2026-09-25T18:30:00Z",
27627
+ "sourceRef": "https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-search-tool — the Model compatibility table lists Fable 5.1, Mythos 5.1, Fable 5, Mythos 5, Opus 5.5, Opus 5, Opus 4.8, 4.7, 4.6, Sonnet 4.6, Opus 4.5, Sonnet 4.5 and Haiku 4.5 (not Sonnet 5); \"Custom tool search implementation\": a client tool returns a tool_result whose content carries {type:\"tool_reference\", tool_name} blocks, every referenced tool declared in tools with defer_loading: true, and the API expands them; \"The prefix is untouched, so prompt caching is preserved\" (https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-use-with-prompt-caching)."
27628
+ },
27629
+ "assistantPrefill": {
27630
+ "value": false,
27631
+ "source": "official-doc",
27632
+ "confidence": "declared",
27633
+ "observedAt": "2026-09-26T00:00:00Z",
27634
+ "sourceRef": "https://platform.claude.com/docs/en/models/opus-5-5/migration-guide — \"Don't end messages with a prefilled assistant turn: it is rejected\"; \"Prefilling assistant messages returns a 400 error on Claude Opus 4.6 and later Opus models, including Claude Opus 5.5\"; Sonnet 5 and Opus 5: \"Manual extended thinking, non-default sampling parameters, and assistant prefill return a 400 error on both models\"; the Fable 5.1 guide: prefill \"returns a 400 error, unchanged from Claude Fable 5\". Live gate 2026-09-26 on claude-opus-5-5: \"This model does not support assistant message prefill. The conversation must end with a user message.\""
27635
+ },
27125
27636
  "canonicalModelId": "claude-opus-4.6",
27126
27637
  "modelFamily": "claude"
27127
27638
  },
@@ -27130,7 +27641,9 @@
27130
27641
  "providerId": "console",
27131
27642
  "upstreamId": "claude-opus-4.7",
27132
27643
  "displayName": "Claude Opus 4.7",
27133
- "aliases": [],
27644
+ "aliases": [
27645
+ "claude-opus-4-7"
27646
+ ],
27134
27647
  "endpoints": [
27135
27648
  "chat"
27136
27649
  ],
@@ -27248,6 +27761,20 @@
27248
27761
  "thinking.type.enabled"
27249
27762
  ],
27250
27763
  "status": "candidate",
27764
+ "deferredToolLoading": {
27765
+ "value": true,
27766
+ "source": "official-doc",
27767
+ "confidence": "declared",
27768
+ "observedAt": "2026-09-25T18:30:00Z",
27769
+ "sourceRef": "https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-search-tool — the Model compatibility table lists Fable 5.1, Mythos 5.1, Fable 5, Mythos 5, Opus 5.5, Opus 5, Opus 4.8, 4.7, 4.6, Sonnet 4.6, Opus 4.5, Sonnet 4.5 and Haiku 4.5 (not Sonnet 5); \"Custom tool search implementation\": a client tool returns a tool_result whose content carries {type:\"tool_reference\", tool_name} blocks, every referenced tool declared in tools with defer_loading: true, and the API expands them; \"The prefix is untouched, so prompt caching is preserved\" (https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-use-with-prompt-caching)."
27770
+ },
27771
+ "assistantPrefill": {
27772
+ "value": false,
27773
+ "source": "official-doc",
27774
+ "confidence": "declared",
27775
+ "observedAt": "2026-09-26T00:00:00Z",
27776
+ "sourceRef": "https://platform.claude.com/docs/en/models/opus-5-5/migration-guide — \"Don't end messages with a prefilled assistant turn: it is rejected\"; \"Prefilling assistant messages returns a 400 error on Claude Opus 4.6 and later Opus models, including Claude Opus 5.5\"; Sonnet 5 and Opus 5: \"Manual extended thinking, non-default sampling parameters, and assistant prefill return a 400 error on both models\"; the Fable 5.1 guide: prefill \"returns a 400 error, unchanged from Claude Fable 5\". Live gate 2026-09-26 on claude-opus-5-5: \"This model does not support assistant message prefill. The conversation must end with a user message.\""
27777
+ },
27251
27778
  "canonicalModelId": "claude-opus-4.7",
27252
27779
  "modelFamily": "claude"
27253
27780
  },
@@ -27256,7 +27783,9 @@
27256
27783
  "providerId": "console",
27257
27784
  "upstreamId": "claude-opus-4.8",
27258
27785
  "displayName": "Claude Opus 4.8",
27259
- "aliases": [],
27786
+ "aliases": [
27787
+ "claude-opus-4-8"
27788
+ ],
27260
27789
  "endpoints": [
27261
27790
  "chat"
27262
27791
  ],
@@ -27374,6 +27903,45 @@
27374
27903
  "thinking.type.enabled"
27375
27904
  ],
27376
27905
  "status": "candidate",
27906
+ "deferredToolLoading": {
27907
+ "value": true,
27908
+ "source": "official-doc",
27909
+ "confidence": "declared",
27910
+ "observedAt": "2026-09-25T18:30:00Z",
27911
+ "sourceRef": "https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-search-tool — the Model compatibility table lists Fable 5.1, Mythos 5.1, Fable 5, Mythos 5, Opus 5.5, Opus 5, Opus 4.8, 4.7, 4.6, Sonnet 4.6, Opus 4.5, Sonnet 4.5 and Haiku 4.5 (not Sonnet 5); \"Custom tool search implementation\": a client tool returns a tool_result whose content carries {type:\"tool_reference\", tool_name} blocks, every referenced tool declared in tools with defer_loading: true, and the API expands them; \"The prefix is untouched, so prompt caching is preserved\" (https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-use-with-prompt-caching)."
27912
+ },
27913
+ "midConversationSystem": {
27914
+ "value": true,
27915
+ "source": "official-doc",
27916
+ "confidence": "declared",
27917
+ "observedAt": "2026-09-25T19:00:00Z",
27918
+ "sourceRef": "https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages — \"This feature is available on Claude Fable 5.1, Claude Mythos 5.1, Claude Fable 5, Claude Mythos 5, Claude Opus 5.5, Claude Opus 4.8, and Claude Opus 5. No beta header is required for mid-conversation system messages. This feature is not available on Claude Sonnet 5.\""
27919
+ },
27920
+ "midConversationToolChanges": {
27921
+ "value": {
27922
+ "beta": "mid-conversation-tool-changes-2026-07-01"
27923
+ },
27924
+ "source": "official-doc",
27925
+ "confidence": "declared",
27926
+ "observedAt": "2026-09-26T00:00:00Z",
27927
+ "sourceRef": "https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages — tool_addition / tool_removal blocks in a role:\"system\" message, by reference (\"Add/remove by reference: mid-conversation-tool-changes-2026-07-01 — Claude API, Amazon Bedrock, Google Cloud\"); available on Claude Fable 5.1, Mythos 5.1, Fable 5, Mythos 5, Opus 5.5, Opus 4.8 and Opus 5, \"Not available on Claude Sonnet 5\". Retrieved 2026-09-26; release note 2026-07-24 (https://platform.claude.com/docs/en/release-notes/overview)."
27928
+ },
27929
+ "inlineToolDefinitions": {
27930
+ "value": {
27931
+ "beta": "inline-tools-2026-09-15"
27932
+ },
27933
+ "source": "official-doc",
27934
+ "confidence": "declared",
27935
+ "observedAt": "2026-09-26T00:00:00Z",
27936
+ "sourceRef": "https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages — tool_addition with a tool_definition (\"Add/remove by reference + define by value: inline-tools-2026-09-15 — Claude API\"); \"The inline-tools-2026-09-15 header covers all reference-based changes\"; redefinition: \"send a different definition under the same name ... The new definition replaces the earlier one from that position onward\" (no removal first, a tool declared in tools included); a definition reusing the name of a different type of tool is a 400 tool_name_conflict. Same model list as midConversationToolChanges. Claude API only, so set on the anthropic and console providers (both api.anthropic.com), never on a cloud reseller. Retrieved 2026-09-26; release note 2026-09-22."
27937
+ },
27938
+ "assistantPrefill": {
27939
+ "value": false,
27940
+ "source": "official-doc",
27941
+ "confidence": "declared",
27942
+ "observedAt": "2026-09-26T00:00:00Z",
27943
+ "sourceRef": "https://platform.claude.com/docs/en/models/opus-5-5/migration-guide — \"Don't end messages with a prefilled assistant turn: it is rejected\"; \"Prefilling assistant messages returns a 400 error on Claude Opus 4.6 and later Opus models, including Claude Opus 5.5\"; Sonnet 5 and Opus 5: \"Manual extended thinking, non-default sampling parameters, and assistant prefill return a 400 error on both models\"; the Fable 5.1 guide: prefill \"returns a 400 error, unchanged from Claude Fable 5\". Live gate 2026-09-26 on claude-opus-5-5: \"This model does not support assistant message prefill. The conversation must end with a user message.\""
27944
+ },
27377
27945
  "canonicalModelId": "claude-opus-4.8",
27378
27946
  "modelFamily": "claude"
27379
27947
  },
@@ -27522,6 +28090,15 @@
27522
28090
  "confidence": "declared",
27523
28091
  "observedAt": "2026-09-25T12:30:00Z",
27524
28092
  "sourceRef": "https://platform.claude.com/docs/en/build-with-claude/effort — the effort page's supportedModels list names claude-fable-5-1, claude-fable-5, claude-opus-5-5, claude-opus-5, claude-opus-4-8, claude-opus-4-7, claude-opus-4-6, claude-opus-4-5-20251101, claude-sonnet-5 and claude-sonnet-4-6: effort is requested through `output_config.effort` (Claude 4.7 and later reject a manual `thinking.budget_tokens`, https://platform.claude.com/docs/en/build-with-claude/thinking-troubleshooting#rejected-configurations)."
28093
+ },
28094
+ "perMessageEffort": {
28095
+ "value": {
28096
+ "beta": "mid-conversation-output-config-2026-07-01"
28097
+ },
28098
+ "source": "official-doc",
28099
+ "confidence": "declared",
28100
+ "observedAt": "2026-09-25T18:00:00Z",
28101
+ "sourceRef": "https://platform.claude.com/docs/en/build-with-claude/effort#change-effort-mid-conversation-beta — \"On Claude Fable 5.1, Claude Mythos 5.1, Claude Opus 5.5, and Claude Opus 5, use a per-message effort change, which keeps the prompt cache\": a role:\"system\" message with empty content and output_config.effort, beta header mid-conversation-output-config-2026-07-01; \"Models without per-message effort, including Claude Fable 5, return a 400 error\". claude 2.1.282 sends the older alias per-turn-control-2026-07-01, which the page does not document."
27525
28102
  }
27526
28103
  },
27527
28104
  "pricing": {
@@ -27540,9 +28117,50 @@
27540
28117
  "temperature",
27541
28118
  "top_p",
27542
28119
  "top_k",
27543
- "thinking.type.enabled"
28120
+ "thinking.type.enabled",
28121
+ "thinking.type.disabled+output_config.effort.xhigh",
28122
+ "thinking.type.disabled+output_config.effort.max"
27544
28123
  ],
27545
28124
  "status": "candidate",
28125
+ "deferredToolLoading": {
28126
+ "value": true,
28127
+ "source": "official-doc",
28128
+ "confidence": "declared",
28129
+ "observedAt": "2026-09-25T18:30:00Z",
28130
+ "sourceRef": "https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-search-tool — the Model compatibility table lists Fable 5.1, Mythos 5.1, Fable 5, Mythos 5, Opus 5.5, Opus 5, Opus 4.8, 4.7, 4.6, Sonnet 4.6, Opus 4.5, Sonnet 4.5 and Haiku 4.5 (not Sonnet 5); \"Custom tool search implementation\": a client tool returns a tool_result whose content carries {type:\"tool_reference\", tool_name} blocks, every referenced tool declared in tools with defer_loading: true, and the API expands them; \"The prefix is untouched, so prompt caching is preserved\" (https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-use-with-prompt-caching)."
28131
+ },
28132
+ "midConversationSystem": {
28133
+ "value": true,
28134
+ "source": "official-doc",
28135
+ "confidence": "declared",
28136
+ "observedAt": "2026-09-25T19:00:00Z",
28137
+ "sourceRef": "https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages — \"This feature is available on Claude Fable 5.1, Claude Mythos 5.1, Claude Fable 5, Claude Mythos 5, Claude Opus 5.5, Claude Opus 4.8, and Claude Opus 5. No beta header is required for mid-conversation system messages. This feature is not available on Claude Sonnet 5.\""
28138
+ },
28139
+ "midConversationToolChanges": {
28140
+ "value": {
28141
+ "beta": "mid-conversation-tool-changes-2026-07-01"
28142
+ },
28143
+ "source": "official-doc",
28144
+ "confidence": "declared",
28145
+ "observedAt": "2026-09-26T00:00:00Z",
28146
+ "sourceRef": "https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages — tool_addition / tool_removal blocks in a role:\"system\" message, by reference (\"Add/remove by reference: mid-conversation-tool-changes-2026-07-01 — Claude API, Amazon Bedrock, Google Cloud\"); available on Claude Fable 5.1, Mythos 5.1, Fable 5, Mythos 5, Opus 5.5, Opus 4.8 and Opus 5, \"Not available on Claude Sonnet 5\". Retrieved 2026-09-26; release note 2026-07-24 (https://platform.claude.com/docs/en/release-notes/overview)."
28147
+ },
28148
+ "inlineToolDefinitions": {
28149
+ "value": {
28150
+ "beta": "inline-tools-2026-09-15"
28151
+ },
28152
+ "source": "official-doc",
28153
+ "confidence": "declared",
28154
+ "observedAt": "2026-09-26T00:00:00Z",
28155
+ "sourceRef": "https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages — tool_addition with a tool_definition (\"Add/remove by reference + define by value: inline-tools-2026-09-15 — Claude API\"); \"The inline-tools-2026-09-15 header covers all reference-based changes\"; redefinition: \"send a different definition under the same name ... The new definition replaces the earlier one from that position onward\" (no removal first, a tool declared in tools included); a definition reusing the name of a different type of tool is a 400 tool_name_conflict. Same model list as midConversationToolChanges. Claude API only, so set on the anthropic and console providers (both api.anthropic.com), never on a cloud reseller. Retrieved 2026-09-26; release note 2026-09-22."
28156
+ },
28157
+ "assistantPrefill": {
28158
+ "value": false,
28159
+ "source": "official-doc",
28160
+ "confidence": "declared",
28161
+ "observedAt": "2026-09-26T00:00:00Z",
28162
+ "sourceRef": "https://platform.claude.com/docs/en/models/opus-5-5/migration-guide — \"Don't end messages with a prefilled assistant turn: it is rejected\"; \"Prefilling assistant messages returns a 400 error on Claude Opus 4.6 and later Opus models, including Claude Opus 5.5\"; Sonnet 5 and Opus 5: \"Manual extended thinking, non-default sampling parameters, and assistant prefill return a 400 error on both models\"; the Fable 5.1 guide: prefill \"returns a 400 error, unchanged from Claude Fable 5\". Live gate 2026-09-26 on claude-opus-5-5: \"This model does not support assistant message prefill. The conversation must end with a user message.\""
28163
+ },
27546
28164
  "canonicalModelId": "claude-opus-5",
27547
28165
  "modelFamily": "claude"
27548
28166
  },
@@ -27702,6 +28320,15 @@
27702
28320
  "confidence": "declared",
27703
28321
  "observedAt": "2026-09-25T13:00:00Z",
27704
28322
  "sourceRef": "https://platform.claude.com/docs/en/build-with-claude/thinking-troubleshooting — \"A 400 error says a thinking block signature is invalid\": on Claude Fable 5.1 and Opus 5.5 a replayed thinking block is bound to the conversation (system, tools and earlier messages) and is rejected once that prefix changes (enforced for accounts created on or after 2026-08-31); the documented escape is the `thinking-binding-controls-2026-08-01` beta with `thinking.block_binding.prefix_mismatch_behavior: \"drop_block\"`. See also https://platform.claude.com/docs/en/models/opus-5-5/whats-new-opus-5-5 (\"Thinking blocks are tied to the model and the conversation\")."
28323
+ },
28324
+ "perMessageEffort": {
28325
+ "value": {
28326
+ "beta": "mid-conversation-output-config-2026-07-01"
28327
+ },
28328
+ "source": "official-doc",
28329
+ "confidence": "declared",
28330
+ "observedAt": "2026-09-25T18:00:00Z",
28331
+ "sourceRef": "https://platform.claude.com/docs/en/build-with-claude/effort#change-effort-mid-conversation-beta — \"On Claude Fable 5.1, Claude Mythos 5.1, Claude Opus 5.5, and Claude Opus 5, use a per-message effort change, which keeps the prompt cache\": a role:\"system\" message with empty content and output_config.effort, beta header mid-conversation-output-config-2026-07-01; \"Models without per-message effort, including Claude Fable 5, return a 400 error\". claude 2.1.282 sends the older alias per-turn-control-2026-07-01, which the page does not document."
27705
28332
  }
27706
28333
  },
27707
28334
  "pricing": {
@@ -27723,6 +28350,45 @@
27723
28350
  "tool_choice.tool"
27724
28351
  ],
27725
28352
  "status": "candidate",
28353
+ "deferredToolLoading": {
28354
+ "value": true,
28355
+ "source": "official-doc",
28356
+ "confidence": "declared",
28357
+ "observedAt": "2026-09-25T18:30:00Z",
28358
+ "sourceRef": "https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-search-tool — the Model compatibility table lists Fable 5.1, Mythos 5.1, Fable 5, Mythos 5, Opus 5.5, Opus 5, Opus 4.8, 4.7, 4.6, Sonnet 4.6, Opus 4.5, Sonnet 4.5 and Haiku 4.5 (not Sonnet 5); \"Custom tool search implementation\": a client tool returns a tool_result whose content carries {type:\"tool_reference\", tool_name} blocks, every referenced tool declared in tools with defer_loading: true, and the API expands them; \"The prefix is untouched, so prompt caching is preserved\" (https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-use-with-prompt-caching)."
28359
+ },
28360
+ "midConversationSystem": {
28361
+ "value": true,
28362
+ "source": "official-doc",
28363
+ "confidence": "declared",
28364
+ "observedAt": "2026-09-25T19:00:00Z",
28365
+ "sourceRef": "https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages — \"This feature is available on Claude Fable 5.1, Claude Mythos 5.1, Claude Fable 5, Claude Mythos 5, Claude Opus 5.5, Claude Opus 4.8, and Claude Opus 5. No beta header is required for mid-conversation system messages. This feature is not available on Claude Sonnet 5.\""
28366
+ },
28367
+ "midConversationToolChanges": {
28368
+ "value": {
28369
+ "beta": "mid-conversation-tool-changes-2026-07-01"
28370
+ },
28371
+ "source": "official-doc",
28372
+ "confidence": "declared",
28373
+ "observedAt": "2026-09-26T00:00:00Z",
28374
+ "sourceRef": "https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages — tool_addition / tool_removal blocks in a role:\"system\" message, by reference (\"Add/remove by reference: mid-conversation-tool-changes-2026-07-01 — Claude API, Amazon Bedrock, Google Cloud\"); available on Claude Fable 5.1, Mythos 5.1, Fable 5, Mythos 5, Opus 5.5, Opus 4.8 and Opus 5, \"Not available on Claude Sonnet 5\". Retrieved 2026-09-26; release note 2026-07-24 (https://platform.claude.com/docs/en/release-notes/overview)."
28375
+ },
28376
+ "inlineToolDefinitions": {
28377
+ "value": {
28378
+ "beta": "inline-tools-2026-09-15"
28379
+ },
28380
+ "source": "official-doc",
28381
+ "confidence": "declared",
28382
+ "observedAt": "2026-09-26T00:00:00Z",
28383
+ "sourceRef": "https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages — tool_addition with a tool_definition (\"Add/remove by reference + define by value: inline-tools-2026-09-15 — Claude API\"); \"The inline-tools-2026-09-15 header covers all reference-based changes\"; redefinition: \"send a different definition under the same name ... The new definition replaces the earlier one from that position onward\" (no removal first, a tool declared in tools included); a definition reusing the name of a different type of tool is a 400 tool_name_conflict. Same model list as midConversationToolChanges. Claude API only, so set on the anthropic and console providers (both api.anthropic.com), never on a cloud reseller. Retrieved 2026-09-26; release note 2026-09-22."
28384
+ },
28385
+ "assistantPrefill": {
28386
+ "value": false,
28387
+ "source": "official-doc",
28388
+ "confidence": "declared",
28389
+ "observedAt": "2026-09-26T00:00:00Z",
28390
+ "sourceRef": "https://platform.claude.com/docs/en/models/opus-5-5/migration-guide — \"Don't end messages with a prefilled assistant turn: it is rejected\"; \"Prefilling assistant messages returns a 400 error on Claude Opus 4.6 and later Opus models, including Claude Opus 5.5\"; Sonnet 5 and Opus 5: \"Manual extended thinking, non-default sampling parameters, and assistant prefill return a 400 error on both models\"; the Fable 5.1 guide: prefill \"returns a 400 error, unchanged from Claude Fable 5\". Live gate 2026-09-26 on claude-opus-5-5: \"This model does not support assistant message prefill. The conversation must end with a user message.\""
28391
+ },
27726
28392
  "canonicalModelId": "claude-opus-5.5",
27727
28393
  "modelFamily": "claude"
27728
28394
  },
@@ -27838,6 +28504,13 @@
27838
28504
  "thinking.type.adaptive"
27839
28505
  ],
27840
28506
  "status": "candidate",
28507
+ "deferredToolLoading": {
28508
+ "value": true,
28509
+ "source": "official-doc",
28510
+ "confidence": "declared",
28511
+ "observedAt": "2026-09-25T18:30:00Z",
28512
+ "sourceRef": "https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-search-tool — the Model compatibility table lists Fable 5.1, Mythos 5.1, Fable 5, Mythos 5, Opus 5.5, Opus 5, Opus 4.8, 4.7, 4.6, Sonnet 4.6, Opus 4.5, Sonnet 4.5 and Haiku 4.5 (not Sonnet 5); \"Custom tool search implementation\": a client tool returns a tool_result whose content carries {type:\"tool_reference\", tool_name} blocks, every referenced tool declared in tools with defer_loading: true, and the API expands them; \"The prefix is untouched, so prompt caching is preserved\" (https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-use-with-prompt-caching)."
28513
+ },
27841
28514
  "canonicalModelId": "claude-sonnet-4.5",
27842
28515
  "modelFamily": "claude"
27843
28516
  },
@@ -27846,7 +28519,9 @@
27846
28519
  "providerId": "console",
27847
28520
  "upstreamId": "claude-sonnet-4.6",
27848
28521
  "displayName": "Claude Sonnet 4.6",
27849
- "aliases": [],
28522
+ "aliases": [
28523
+ "claude-sonnet-4-6"
28524
+ ],
27850
28525
  "endpoints": [
27851
28526
  "chat"
27852
28527
  ],
@@ -27958,6 +28633,13 @@
27958
28633
  },
27959
28634
  "unsupportedParameters": [],
27960
28635
  "status": "candidate",
28636
+ "deferredToolLoading": {
28637
+ "value": true,
28638
+ "source": "official-doc",
28639
+ "confidence": "declared",
28640
+ "observedAt": "2026-09-25T18:30:00Z",
28641
+ "sourceRef": "https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-search-tool — the Model compatibility table lists Fable 5.1, Mythos 5.1, Fable 5, Mythos 5, Opus 5.5, Opus 5, Opus 4.8, 4.7, 4.6, Sonnet 4.6, Opus 4.5, Sonnet 4.5 and Haiku 4.5 (not Sonnet 5); \"Custom tool search implementation\": a client tool returns a tool_result whose content carries {type:\"tool_reference\", tool_name} blocks, every referenced tool declared in tools with defer_loading: true, and the API expands them; \"The prefix is untouched, so prompt caching is preserved\" (https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-use-with-prompt-caching)."
28642
+ },
27961
28643
  "canonicalModelId": "claude-sonnet-4.6",
27962
28644
  "modelFamily": "claude"
27963
28645
  },
@@ -28129,6 +28811,13 @@
28129
28811
  "thinking.type.enabled"
28130
28812
  ],
28131
28813
  "status": "candidate",
28814
+ "assistantPrefill": {
28815
+ "value": false,
28816
+ "source": "official-doc",
28817
+ "confidence": "declared",
28818
+ "observedAt": "2026-09-26T00:00:00Z",
28819
+ "sourceRef": "https://platform.claude.com/docs/en/models/opus-5-5/migration-guide — \"Don't end messages with a prefilled assistant turn: it is rejected\"; \"Prefilling assistant messages returns a 400 error on Claude Opus 4.6 and later Opus models, including Claude Opus 5.5\"; Sonnet 5 and Opus 5: \"Manual extended thinking, non-default sampling parameters, and assistant prefill return a 400 error on both models\"; the Fable 5.1 guide: prefill \"returns a 400 error, unchanged from Claude Fable 5\". Live gate 2026-09-26 on claude-opus-5-5: \"This model does not support assistant message prefill. The conversation must end with a user message.\""
28820
+ },
28132
28821
  "canonicalModelId": "claude-sonnet-5",
28133
28822
  "modelFamily": "claude"
28134
28823
  },
@@ -50429,6 +51118,13 @@
50429
51118
  },
50430
51119
  "unsupportedParameters": [],
50431
51120
  "status": "candidate",
51121
+ "promptCacheKey": {
51122
+ "value": true,
51123
+ "source": "official-doc",
51124
+ "confidence": "declared",
51125
+ "observedAt": "2026-09-25T19:30:00Z",
51126
+ "sourceRef": "https://developers.openai.com/api/docs/guides/prompt-caching — the Responses API takes prompt_cache_key: \"Use a stable prompt_cache_key to optimize cache routing for requests that share a reusable prefix\" (pre-GPT-5.6); on GPT-5.6+ routing is automatic and the key is \"optional for separate cache accounting\"."
51127
+ },
50432
51128
  "canonicalModelId": "gpt-4.1",
50433
51129
  "modelFamily": "gpt"
50434
51130
  },
@@ -50509,6 +51205,13 @@
50509
51205
  },
50510
51206
  "unsupportedParameters": [],
50511
51207
  "status": "candidate",
51208
+ "promptCacheKey": {
51209
+ "value": true,
51210
+ "source": "official-doc",
51211
+ "confidence": "declared",
51212
+ "observedAt": "2026-09-25T19:30:00Z",
51213
+ "sourceRef": "https://developers.openai.com/api/docs/guides/prompt-caching — the Responses API takes prompt_cache_key: \"Use a stable prompt_cache_key to optimize cache routing for requests that share a reusable prefix\" (pre-GPT-5.6); on GPT-5.6+ routing is automatic and the key is \"optional for separate cache accounting\"."
51214
+ },
50512
51215
  "canonicalModelId": "gpt-4.1-mini",
50513
51216
  "modelFamily": "gpt"
50514
51217
  },
@@ -50596,6 +51299,13 @@
50596
51299
  },
50597
51300
  "unsupportedParameters": [],
50598
51301
  "status": "candidate",
51302
+ "promptCacheKey": {
51303
+ "value": true,
51304
+ "source": "official-doc",
51305
+ "confidence": "declared",
51306
+ "observedAt": "2026-09-25T19:30:00Z",
51307
+ "sourceRef": "https://developers.openai.com/api/docs/guides/prompt-caching — the Responses API takes prompt_cache_key: \"Use a stable prompt_cache_key to optimize cache routing for requests that share a reusable prefix\" (pre-GPT-5.6); on GPT-5.6+ routing is automatic and the key is \"optional for separate cache accounting\"."
51308
+ },
50599
51309
  "canonicalModelId": "gpt-4.1-nano",
50600
51310
  "modelFamily": "gpt"
50601
51311
  },
@@ -50676,6 +51386,13 @@
50676
51386
  },
50677
51387
  "unsupportedParameters": [],
50678
51388
  "status": "candidate",
51389
+ "promptCacheKey": {
51390
+ "value": true,
51391
+ "source": "official-doc",
51392
+ "confidence": "declared",
51393
+ "observedAt": "2026-09-25T19:30:00Z",
51394
+ "sourceRef": "https://developers.openai.com/api/docs/guides/prompt-caching — the Responses API takes prompt_cache_key: \"Use a stable prompt_cache_key to optimize cache routing for requests that share a reusable prefix\" (pre-GPT-5.6); on GPT-5.6+ routing is automatic and the key is \"optional for separate cache accounting\"."
51395
+ },
50679
51396
  "canonicalModelId": "gpt-4o",
50680
51397
  "modelFamily": "gpt"
50681
51398
  },
@@ -50756,6 +51473,13 @@
50756
51473
  },
50757
51474
  "unsupportedParameters": [],
50758
51475
  "status": "candidate",
51476
+ "promptCacheKey": {
51477
+ "value": true,
51478
+ "source": "official-doc",
51479
+ "confidence": "declared",
51480
+ "observedAt": "2026-09-25T19:30:00Z",
51481
+ "sourceRef": "https://developers.openai.com/api/docs/guides/prompt-caching — the Responses API takes prompt_cache_key: \"Use a stable prompt_cache_key to optimize cache routing for requests that share a reusable prefix\" (pre-GPT-5.6); on GPT-5.6+ routing is automatic and the key is \"optional for separate cache accounting\"."
51482
+ },
50759
51483
  "canonicalModelId": "gpt-4o-2024-11-20",
50760
51484
  "modelFamily": "gpt"
50761
51485
  },
@@ -50836,6 +51560,13 @@
50836
51560
  },
50837
51561
  "unsupportedParameters": [],
50838
51562
  "status": "candidate",
51563
+ "promptCacheKey": {
51564
+ "value": true,
51565
+ "source": "official-doc",
51566
+ "confidence": "declared",
51567
+ "observedAt": "2026-09-25T19:30:00Z",
51568
+ "sourceRef": "https://developers.openai.com/api/docs/guides/prompt-caching — the Responses API takes prompt_cache_key: \"Use a stable prompt_cache_key to optimize cache routing for requests that share a reusable prefix\" (pre-GPT-5.6); on GPT-5.6+ routing is automatic and the key is \"optional for separate cache accounting\"."
51569
+ },
50839
51570
  "canonicalModelId": "gpt-4o-mini",
50840
51571
  "modelFamily": "gpt"
50841
51572
  },
@@ -50941,6 +51672,34 @@
50941
51672
  },
50942
51673
  "unsupportedParameters": [],
50943
51674
  "status": "candidate",
51675
+ "promptCacheKey": {
51676
+ "value": true,
51677
+ "source": "official-doc",
51678
+ "confidence": "declared",
51679
+ "observedAt": "2026-09-25T19:30:00Z",
51680
+ "sourceRef": "https://developers.openai.com/api/docs/guides/prompt-caching — the Responses API takes prompt_cache_key: \"Use a stable prompt_cache_key to optimize cache routing for requests that share a reusable prefix\" (pre-GPT-5.6); on GPT-5.6+ routing is automatic and the key is \"optional for separate cache accounting\"."
51681
+ },
51682
+ "clientToolSearch": {
51683
+ "value": true,
51684
+ "source": "official-doc",
51685
+ "confidence": "declared",
51686
+ "observedAt": "2026-09-26T00:00:00Z",
51687
+ "sourceRef": "https://developers.openai.com/api/docs/guides/tools-tool-search — \"Only gpt-5.4 and later models support tool_search\" in the Responses API; client execution: {\"type\":\"tool_search\",\"execution\":\"client\",description,parameters}, tool_search_call -> tool_search_output {call_id, execution:\"client\", status, tools}, deferred functions keep defer_loading:true, optionally inside {\"type\":\"namespace\",name,description,tools}. Retrieved 2026-09-26."
51688
+ },
51689
+ "additionalToolsItem": {
51690
+ "value": true,
51691
+ "source": "official-doc",
51692
+ "confidence": "declared",
51693
+ "observedAt": "2026-09-26T00:00:00Z",
51694
+ "sourceRef": "https://developers.openai.com/api/docs/guides/tools-tool-search — {\"type\":\"additional_tools\",\"role\":\"developer\",\"tools\":[...]}: \"Tools in an additional_tools item become available only after that item appears in the input\"; its position is kept on replay. The page names no model list, so it is set only on the rows the same page documents tool_search for (GPT-5.4 and later). NOT on codex-oauth: codex-rs sends one only at input[0] (core/src/client.rs:910-941), never mid-conversation -- the live probe decides. Retrieved 2026-09-26."
51695
+ },
51696
+ "allowedToolsChoice": {
51697
+ "value": true,
51698
+ "source": "official-doc",
51699
+ "confidence": "declared",
51700
+ "observedAt": "2026-09-26T00:00:00Z",
51701
+ "sourceRef": "https://developers.openai.com/api/docs/guides/function-calling — tool_choice {\"type\":\"allowed_tools\",\"mode\":\"auto\"|\"required\",\"tools\":[{\"type\":\"function\",\"name\":…}]}: \"make only a subset of tools available across model requests, but not modify the list of tools you pass in, so you can maximize savings from prompt caching\"; \"When you use tool search, tool_choice still applies to the tools that are currently callable in the turn.\" No model list on the page; set on the same GPT-5.4+ rows. NOT on codex-oauth: codex-rs always sends tool_choice \"auto\" (core/src/client.rs:1004) and its allowed_tools is a client-side filter (ext/extension-api/src/tool_policy.rs:14-36) -- the live probe decides. Retrieved 2026-09-26."
51702
+ },
50944
51703
  "canonicalModelId": "gpt-5.4",
50945
51704
  "modelFamily": "gpt"
50946
51705
  },
@@ -51053,6 +51812,34 @@
51053
51812
  },
51054
51813
  "unsupportedParameters": [],
51055
51814
  "status": "candidate",
51815
+ "promptCacheKey": {
51816
+ "value": true,
51817
+ "source": "official-doc",
51818
+ "confidence": "declared",
51819
+ "observedAt": "2026-09-25T19:30:00Z",
51820
+ "sourceRef": "https://developers.openai.com/api/docs/guides/prompt-caching — the Responses API takes prompt_cache_key: \"Use a stable prompt_cache_key to optimize cache routing for requests that share a reusable prefix\" (pre-GPT-5.6); on GPT-5.6+ routing is automatic and the key is \"optional for separate cache accounting\"."
51821
+ },
51822
+ "clientToolSearch": {
51823
+ "value": true,
51824
+ "source": "official-doc",
51825
+ "confidence": "declared",
51826
+ "observedAt": "2026-09-26T00:00:00Z",
51827
+ "sourceRef": "https://developers.openai.com/api/docs/guides/tools-tool-search — \"Only gpt-5.4 and later models support tool_search\" in the Responses API; client execution: {\"type\":\"tool_search\",\"execution\":\"client\",description,parameters}, tool_search_call -> tool_search_output {call_id, execution:\"client\", status, tools}, deferred functions keep defer_loading:true, optionally inside {\"type\":\"namespace\",name,description,tools}. Retrieved 2026-09-26."
51828
+ },
51829
+ "additionalToolsItem": {
51830
+ "value": true,
51831
+ "source": "official-doc",
51832
+ "confidence": "declared",
51833
+ "observedAt": "2026-09-26T00:00:00Z",
51834
+ "sourceRef": "https://developers.openai.com/api/docs/guides/tools-tool-search — {\"type\":\"additional_tools\",\"role\":\"developer\",\"tools\":[...]}: \"Tools in an additional_tools item become available only after that item appears in the input\"; its position is kept on replay. The page names no model list, so it is set only on the rows the same page documents tool_search for (GPT-5.4 and later). NOT on codex-oauth: codex-rs sends one only at input[0] (core/src/client.rs:910-941), never mid-conversation -- the live probe decides. Retrieved 2026-09-26."
51835
+ },
51836
+ "allowedToolsChoice": {
51837
+ "value": true,
51838
+ "source": "official-doc",
51839
+ "confidence": "declared",
51840
+ "observedAt": "2026-09-26T00:00:00Z",
51841
+ "sourceRef": "https://developers.openai.com/api/docs/guides/function-calling — tool_choice {\"type\":\"allowed_tools\",\"mode\":\"auto\"|\"required\",\"tools\":[{\"type\":\"function\",\"name\":…}]}: \"make only a subset of tools available across model requests, but not modify the list of tools you pass in, so you can maximize savings from prompt caching\"; \"When you use tool search, tool_choice still applies to the tools that are currently callable in the turn.\" No model list on the page; set on the same GPT-5.4+ rows. NOT on codex-oauth: codex-rs always sends tool_choice \"auto\" (core/src/client.rs:1004) and its allowed_tools is a client-side filter (ext/extension-api/src/tool_policy.rs:14-36) -- the live probe decides. Retrieved 2026-09-26."
51842
+ },
51056
51843
  "canonicalModelId": "gpt-5.4-mini",
51057
51844
  "modelFamily": "gpt"
51058
51845
  },
@@ -51165,6 +51952,34 @@
51165
51952
  },
51166
51953
  "unsupportedParameters": [],
51167
51954
  "status": "candidate",
51955
+ "promptCacheKey": {
51956
+ "value": true,
51957
+ "source": "official-doc",
51958
+ "confidence": "declared",
51959
+ "observedAt": "2026-09-25T19:30:00Z",
51960
+ "sourceRef": "https://developers.openai.com/api/docs/guides/prompt-caching — the Responses API takes prompt_cache_key: \"Use a stable prompt_cache_key to optimize cache routing for requests that share a reusable prefix\" (pre-GPT-5.6); on GPT-5.6+ routing is automatic and the key is \"optional for separate cache accounting\"."
51961
+ },
51962
+ "clientToolSearch": {
51963
+ "value": true,
51964
+ "source": "official-doc",
51965
+ "confidence": "declared",
51966
+ "observedAt": "2026-09-26T00:00:00Z",
51967
+ "sourceRef": "https://developers.openai.com/api/docs/guides/tools-tool-search — \"Only gpt-5.4 and later models support tool_search\" in the Responses API; client execution: {\"type\":\"tool_search\",\"execution\":\"client\",description,parameters}, tool_search_call -> tool_search_output {call_id, execution:\"client\", status, tools}, deferred functions keep defer_loading:true, optionally inside {\"type\":\"namespace\",name,description,tools}. Retrieved 2026-09-26."
51968
+ },
51969
+ "additionalToolsItem": {
51970
+ "value": true,
51971
+ "source": "official-doc",
51972
+ "confidence": "declared",
51973
+ "observedAt": "2026-09-26T00:00:00Z",
51974
+ "sourceRef": "https://developers.openai.com/api/docs/guides/tools-tool-search — {\"type\":\"additional_tools\",\"role\":\"developer\",\"tools\":[...]}: \"Tools in an additional_tools item become available only after that item appears in the input\"; its position is kept on replay. The page names no model list, so it is set only on the rows the same page documents tool_search for (GPT-5.4 and later). NOT on codex-oauth: codex-rs sends one only at input[0] (core/src/client.rs:910-941), never mid-conversation -- the live probe decides. Retrieved 2026-09-26."
51975
+ },
51976
+ "allowedToolsChoice": {
51977
+ "value": true,
51978
+ "source": "official-doc",
51979
+ "confidence": "declared",
51980
+ "observedAt": "2026-09-26T00:00:00Z",
51981
+ "sourceRef": "https://developers.openai.com/api/docs/guides/function-calling — tool_choice {\"type\":\"allowed_tools\",\"mode\":\"auto\"|\"required\",\"tools\":[{\"type\":\"function\",\"name\":…}]}: \"make only a subset of tools available across model requests, but not modify the list of tools you pass in, so you can maximize savings from prompt caching\"; \"When you use tool search, tool_choice still applies to the tools that are currently callable in the turn.\" No model list on the page; set on the same GPT-5.4+ rows. NOT on codex-oauth: codex-rs always sends tool_choice \"auto\" (core/src/client.rs:1004) and its allowed_tools is a client-side filter (ext/extension-api/src/tool_policy.rs:14-36) -- the live probe decides. Retrieved 2026-09-26."
51982
+ },
51168
51983
  "canonicalModelId": "gpt-5.4-nano",
51169
51984
  "modelFamily": "gpt"
51170
51985
  },
@@ -51252,6 +52067,34 @@
51252
52067
  },
51253
52068
  "unsupportedParameters": [],
51254
52069
  "status": "candidate",
52070
+ "promptCacheKey": {
52071
+ "value": true,
52072
+ "source": "official-doc",
52073
+ "confidence": "declared",
52074
+ "observedAt": "2026-09-25T19:30:00Z",
52075
+ "sourceRef": "https://developers.openai.com/api/docs/guides/prompt-caching — the Responses API takes prompt_cache_key: \"Use a stable prompt_cache_key to optimize cache routing for requests that share a reusable prefix\" (pre-GPT-5.6); on GPT-5.6+ routing is automatic and the key is \"optional for separate cache accounting\"."
52076
+ },
52077
+ "clientToolSearch": {
52078
+ "value": true,
52079
+ "source": "official-doc",
52080
+ "confidence": "declared",
52081
+ "observedAt": "2026-09-26T00:00:00Z",
52082
+ "sourceRef": "https://developers.openai.com/api/docs/guides/tools-tool-search — \"Only gpt-5.4 and later models support tool_search\" in the Responses API; client execution: {\"type\":\"tool_search\",\"execution\":\"client\",description,parameters}, tool_search_call -> tool_search_output {call_id, execution:\"client\", status, tools}, deferred functions keep defer_loading:true, optionally inside {\"type\":\"namespace\",name,description,tools}. Retrieved 2026-09-26."
52083
+ },
52084
+ "additionalToolsItem": {
52085
+ "value": true,
52086
+ "source": "official-doc",
52087
+ "confidence": "declared",
52088
+ "observedAt": "2026-09-26T00:00:00Z",
52089
+ "sourceRef": "https://developers.openai.com/api/docs/guides/tools-tool-search — {\"type\":\"additional_tools\",\"role\":\"developer\",\"tools\":[...]}: \"Tools in an additional_tools item become available only after that item appears in the input\"; its position is kept on replay. The page names no model list, so it is set only on the rows the same page documents tool_search for (GPT-5.4 and later). NOT on codex-oauth: codex-rs sends one only at input[0] (core/src/client.rs:910-941), never mid-conversation -- the live probe decides. Retrieved 2026-09-26."
52090
+ },
52091
+ "allowedToolsChoice": {
52092
+ "value": true,
52093
+ "source": "official-doc",
52094
+ "confidence": "declared",
52095
+ "observedAt": "2026-09-26T00:00:00Z",
52096
+ "sourceRef": "https://developers.openai.com/api/docs/guides/function-calling — tool_choice {\"type\":\"allowed_tools\",\"mode\":\"auto\"|\"required\",\"tools\":[{\"type\":\"function\",\"name\":…}]}: \"make only a subset of tools available across model requests, but not modify the list of tools you pass in, so you can maximize savings from prompt caching\"; \"When you use tool search, tool_choice still applies to the tools that are currently callable in the turn.\" No model list on the page; set on the same GPT-5.4+ rows. NOT on codex-oauth: codex-rs always sends tool_choice \"auto\" (core/src/client.rs:1004) and its allowed_tools is a client-side filter (ext/extension-api/src/tool_policy.rs:14-36) -- the live probe decides. Retrieved 2026-09-26."
52097
+ },
51255
52098
  "canonicalModelId": "gpt-5.4-pro",
51256
52099
  "modelFamily": "gpt"
51257
52100
  },
@@ -51357,6 +52200,34 @@
51357
52200
  },
51358
52201
  "unsupportedParameters": [],
51359
52202
  "status": "candidate",
52203
+ "promptCacheKey": {
52204
+ "value": true,
52205
+ "source": "official-doc",
52206
+ "confidence": "declared",
52207
+ "observedAt": "2026-09-25T19:30:00Z",
52208
+ "sourceRef": "https://developers.openai.com/api/docs/guides/prompt-caching — the Responses API takes prompt_cache_key: \"Use a stable prompt_cache_key to optimize cache routing for requests that share a reusable prefix\" (pre-GPT-5.6); on GPT-5.6+ routing is automatic and the key is \"optional for separate cache accounting\"."
52209
+ },
52210
+ "clientToolSearch": {
52211
+ "value": true,
52212
+ "source": "official-doc",
52213
+ "confidence": "declared",
52214
+ "observedAt": "2026-09-26T00:00:00Z",
52215
+ "sourceRef": "https://developers.openai.com/api/docs/guides/tools-tool-search — \"Only gpt-5.4 and later models support tool_search\" in the Responses API; client execution: {\"type\":\"tool_search\",\"execution\":\"client\",description,parameters}, tool_search_call -> tool_search_output {call_id, execution:\"client\", status, tools}, deferred functions keep defer_loading:true, optionally inside {\"type\":\"namespace\",name,description,tools}. Retrieved 2026-09-26."
52216
+ },
52217
+ "additionalToolsItem": {
52218
+ "value": true,
52219
+ "source": "official-doc",
52220
+ "confidence": "declared",
52221
+ "observedAt": "2026-09-26T00:00:00Z",
52222
+ "sourceRef": "https://developers.openai.com/api/docs/guides/tools-tool-search — {\"type\":\"additional_tools\",\"role\":\"developer\",\"tools\":[...]}: \"Tools in an additional_tools item become available only after that item appears in the input\"; its position is kept on replay. The page names no model list, so it is set only on the rows the same page documents tool_search for (GPT-5.4 and later). NOT on codex-oauth: codex-rs sends one only at input[0] (core/src/client.rs:910-941), never mid-conversation -- the live probe decides. Retrieved 2026-09-26."
52223
+ },
52224
+ "allowedToolsChoice": {
52225
+ "value": true,
52226
+ "source": "official-doc",
52227
+ "confidence": "declared",
52228
+ "observedAt": "2026-09-26T00:00:00Z",
52229
+ "sourceRef": "https://developers.openai.com/api/docs/guides/function-calling — tool_choice {\"type\":\"allowed_tools\",\"mode\":\"auto\"|\"required\",\"tools\":[{\"type\":\"function\",\"name\":…}]}: \"make only a subset of tools available across model requests, but not modify the list of tools you pass in, so you can maximize savings from prompt caching\"; \"When you use tool search, tool_choice still applies to the tools that are currently callable in the turn.\" No model list on the page; set on the same GPT-5.4+ rows. NOT on codex-oauth: codex-rs always sends tool_choice \"auto\" (core/src/client.rs:1004) and its allowed_tools is a client-side filter (ext/extension-api/src/tool_policy.rs:14-36) -- the live probe decides. Retrieved 2026-09-26."
52230
+ },
51360
52231
  "canonicalModelId": "gpt-5.5",
51361
52232
  "modelFamily": "gpt"
51362
52233
  },
@@ -51451,6 +52322,34 @@
51451
52322
  },
51452
52323
  "unsupportedParameters": [],
51453
52324
  "status": "candidate",
52325
+ "promptCacheKey": {
52326
+ "value": true,
52327
+ "source": "official-doc",
52328
+ "confidence": "declared",
52329
+ "observedAt": "2026-09-25T19:30:00Z",
52330
+ "sourceRef": "https://developers.openai.com/api/docs/guides/prompt-caching — the Responses API takes prompt_cache_key: \"Use a stable prompt_cache_key to optimize cache routing for requests that share a reusable prefix\" (pre-GPT-5.6); on GPT-5.6+ routing is automatic and the key is \"optional for separate cache accounting\"."
52331
+ },
52332
+ "clientToolSearch": {
52333
+ "value": true,
52334
+ "source": "official-doc",
52335
+ "confidence": "declared",
52336
+ "observedAt": "2026-09-26T00:00:00Z",
52337
+ "sourceRef": "https://developers.openai.com/api/docs/guides/tools-tool-search — \"Only gpt-5.4 and later models support tool_search\" in the Responses API; client execution: {\"type\":\"tool_search\",\"execution\":\"client\",description,parameters}, tool_search_call -> tool_search_output {call_id, execution:\"client\", status, tools}, deferred functions keep defer_loading:true, optionally inside {\"type\":\"namespace\",name,description,tools}. Retrieved 2026-09-26."
52338
+ },
52339
+ "additionalToolsItem": {
52340
+ "value": true,
52341
+ "source": "official-doc",
52342
+ "confidence": "declared",
52343
+ "observedAt": "2026-09-26T00:00:00Z",
52344
+ "sourceRef": "https://developers.openai.com/api/docs/guides/tools-tool-search — {\"type\":\"additional_tools\",\"role\":\"developer\",\"tools\":[...]}: \"Tools in an additional_tools item become available only after that item appears in the input\"; its position is kept on replay. The page names no model list, so it is set only on the rows the same page documents tool_search for (GPT-5.4 and later). NOT on codex-oauth: codex-rs sends one only at input[0] (core/src/client.rs:910-941), never mid-conversation -- the live probe decides. Retrieved 2026-09-26."
52345
+ },
52346
+ "allowedToolsChoice": {
52347
+ "value": true,
52348
+ "source": "official-doc",
52349
+ "confidence": "declared",
52350
+ "observedAt": "2026-09-26T00:00:00Z",
52351
+ "sourceRef": "https://developers.openai.com/api/docs/guides/function-calling — tool_choice {\"type\":\"allowed_tools\",\"mode\":\"auto\"|\"required\",\"tools\":[{\"type\":\"function\",\"name\":…}]}: \"make only a subset of tools available across model requests, but not modify the list of tools you pass in, so you can maximize savings from prompt caching\"; \"When you use tool search, tool_choice still applies to the tools that are currently callable in the turn.\" No model list on the page; set on the same GPT-5.4+ rows. NOT on codex-oauth: codex-rs always sends tool_choice \"auto\" (core/src/client.rs:1004) and its allowed_tools is a client-side filter (ext/extension-api/src/tool_policy.rs:14-36) -- the live probe decides. Retrieved 2026-09-26."
52352
+ },
51454
52353
  "canonicalModelId": "gpt-5.5-pro",
51455
52354
  "modelFamily": "gpt"
51456
52355
  },
@@ -51565,6 +52464,34 @@
51565
52464
  },
51566
52465
  "unsupportedParameters": [],
51567
52466
  "status": "candidate",
52467
+ "promptCacheKey": {
52468
+ "value": true,
52469
+ "source": "official-doc",
52470
+ "confidence": "declared",
52471
+ "observedAt": "2026-09-25T19:30:00Z",
52472
+ "sourceRef": "https://developers.openai.com/api/docs/guides/prompt-caching — the Responses API takes prompt_cache_key: \"Use a stable prompt_cache_key to optimize cache routing for requests that share a reusable prefix\" (pre-GPT-5.6); on GPT-5.6+ routing is automatic and the key is \"optional for separate cache accounting\"."
52473
+ },
52474
+ "clientToolSearch": {
52475
+ "value": true,
52476
+ "source": "official-doc",
52477
+ "confidence": "declared",
52478
+ "observedAt": "2026-09-26T00:00:00Z",
52479
+ "sourceRef": "https://developers.openai.com/api/docs/guides/tools-tool-search — \"Only gpt-5.4 and later models support tool_search\" in the Responses API; client execution: {\"type\":\"tool_search\",\"execution\":\"client\",description,parameters}, tool_search_call -> tool_search_output {call_id, execution:\"client\", status, tools}, deferred functions keep defer_loading:true, optionally inside {\"type\":\"namespace\",name,description,tools}. Retrieved 2026-09-26."
52480
+ },
52481
+ "additionalToolsItem": {
52482
+ "value": true,
52483
+ "source": "official-doc",
52484
+ "confidence": "declared",
52485
+ "observedAt": "2026-09-26T00:00:00Z",
52486
+ "sourceRef": "https://developers.openai.com/api/docs/guides/tools-tool-search — {\"type\":\"additional_tools\",\"role\":\"developer\",\"tools\":[...]}: \"Tools in an additional_tools item become available only after that item appears in the input\"; its position is kept on replay. The page names no model list, so it is set only on the rows the same page documents tool_search for (GPT-5.4 and later). NOT on codex-oauth: codex-rs sends one only at input[0] (core/src/client.rs:910-941), never mid-conversation -- the live probe decides. Retrieved 2026-09-26."
52487
+ },
52488
+ "allowedToolsChoice": {
52489
+ "value": true,
52490
+ "source": "official-doc",
52491
+ "confidence": "declared",
52492
+ "observedAt": "2026-09-26T00:00:00Z",
52493
+ "sourceRef": "https://developers.openai.com/api/docs/guides/function-calling — tool_choice {\"type\":\"allowed_tools\",\"mode\":\"auto\"|\"required\",\"tools\":[{\"type\":\"function\",\"name\":…}]}: \"make only a subset of tools available across model requests, but not modify the list of tools you pass in, so you can maximize savings from prompt caching\"; \"When you use tool search, tool_choice still applies to the tools that are currently callable in the turn.\" No model list on the page; set on the same GPT-5.4+ rows. NOT on codex-oauth: codex-rs always sends tool_choice \"auto\" (core/src/client.rs:1004) and its allowed_tools is a client-side filter (ext/extension-api/src/tool_policy.rs:14-36) -- the live probe decides. Retrieved 2026-09-26."
52494
+ },
51568
52495
  "canonicalModelId": "gpt-5.6",
51569
52496
  "modelFamily": "gpt"
51570
52497
  },
@@ -51679,6 +52606,34 @@
51679
52606
  },
51680
52607
  "unsupportedParameters": [],
51681
52608
  "status": "candidate",
52609
+ "promptCacheKey": {
52610
+ "value": true,
52611
+ "source": "official-doc",
52612
+ "confidence": "declared",
52613
+ "observedAt": "2026-09-25T19:30:00Z",
52614
+ "sourceRef": "https://developers.openai.com/api/docs/guides/prompt-caching — the Responses API takes prompt_cache_key: \"Use a stable prompt_cache_key to optimize cache routing for requests that share a reusable prefix\" (pre-GPT-5.6); on GPT-5.6+ routing is automatic and the key is \"optional for separate cache accounting\"."
52615
+ },
52616
+ "clientToolSearch": {
52617
+ "value": true,
52618
+ "source": "official-doc",
52619
+ "confidence": "declared",
52620
+ "observedAt": "2026-09-26T00:00:00Z",
52621
+ "sourceRef": "https://developers.openai.com/api/docs/guides/tools-tool-search — \"Only gpt-5.4 and later models support tool_search\" in the Responses API; client execution: {\"type\":\"tool_search\",\"execution\":\"client\",description,parameters}, tool_search_call -> tool_search_output {call_id, execution:\"client\", status, tools}, deferred functions keep defer_loading:true, optionally inside {\"type\":\"namespace\",name,description,tools}. Retrieved 2026-09-26."
52622
+ },
52623
+ "additionalToolsItem": {
52624
+ "value": true,
52625
+ "source": "official-doc",
52626
+ "confidence": "declared",
52627
+ "observedAt": "2026-09-26T00:00:00Z",
52628
+ "sourceRef": "https://developers.openai.com/api/docs/guides/tools-tool-search — {\"type\":\"additional_tools\",\"role\":\"developer\",\"tools\":[...]}: \"Tools in an additional_tools item become available only after that item appears in the input\"; its position is kept on replay. The page names no model list, so it is set only on the rows the same page documents tool_search for (GPT-5.4 and later). NOT on codex-oauth: codex-rs sends one only at input[0] (core/src/client.rs:910-941), never mid-conversation -- the live probe decides. Retrieved 2026-09-26."
52629
+ },
52630
+ "allowedToolsChoice": {
52631
+ "value": true,
52632
+ "source": "official-doc",
52633
+ "confidence": "declared",
52634
+ "observedAt": "2026-09-26T00:00:00Z",
52635
+ "sourceRef": "https://developers.openai.com/api/docs/guides/function-calling — tool_choice {\"type\":\"allowed_tools\",\"mode\":\"auto\"|\"required\",\"tools\":[{\"type\":\"function\",\"name\":…}]}: \"make only a subset of tools available across model requests, but not modify the list of tools you pass in, so you can maximize savings from prompt caching\"; \"When you use tool search, tool_choice still applies to the tools that are currently callable in the turn.\" No model list on the page; set on the same GPT-5.4+ rows. NOT on codex-oauth: codex-rs always sends tool_choice \"auto\" (core/src/client.rs:1004) and its allowed_tools is a client-side filter (ext/extension-api/src/tool_policy.rs:14-36) -- the live probe decides. Retrieved 2026-09-26."
52636
+ },
51682
52637
  "canonicalModelId": "gpt-5.6-luna",
51683
52638
  "modelFamily": "gpt"
51684
52639
  },
@@ -51793,6 +52748,34 @@
51793
52748
  },
51794
52749
  "unsupportedParameters": [],
51795
52750
  "status": "candidate",
52751
+ "promptCacheKey": {
52752
+ "value": true,
52753
+ "source": "official-doc",
52754
+ "confidence": "declared",
52755
+ "observedAt": "2026-09-25T19:30:00Z",
52756
+ "sourceRef": "https://developers.openai.com/api/docs/guides/prompt-caching — the Responses API takes prompt_cache_key: \"Use a stable prompt_cache_key to optimize cache routing for requests that share a reusable prefix\" (pre-GPT-5.6); on GPT-5.6+ routing is automatic and the key is \"optional for separate cache accounting\"."
52757
+ },
52758
+ "clientToolSearch": {
52759
+ "value": true,
52760
+ "source": "official-doc",
52761
+ "confidence": "declared",
52762
+ "observedAt": "2026-09-26T00:00:00Z",
52763
+ "sourceRef": "https://developers.openai.com/api/docs/guides/tools-tool-search — \"Only gpt-5.4 and later models support tool_search\" in the Responses API; client execution: {\"type\":\"tool_search\",\"execution\":\"client\",description,parameters}, tool_search_call -> tool_search_output {call_id, execution:\"client\", status, tools}, deferred functions keep defer_loading:true, optionally inside {\"type\":\"namespace\",name,description,tools}. Retrieved 2026-09-26."
52764
+ },
52765
+ "additionalToolsItem": {
52766
+ "value": true,
52767
+ "source": "official-doc",
52768
+ "confidence": "declared",
52769
+ "observedAt": "2026-09-26T00:00:00Z",
52770
+ "sourceRef": "https://developers.openai.com/api/docs/guides/tools-tool-search — {\"type\":\"additional_tools\",\"role\":\"developer\",\"tools\":[...]}: \"Tools in an additional_tools item become available only after that item appears in the input\"; its position is kept on replay. The page names no model list, so it is set only on the rows the same page documents tool_search for (GPT-5.4 and later). NOT on codex-oauth: codex-rs sends one only at input[0] (core/src/client.rs:910-941), never mid-conversation -- the live probe decides. Retrieved 2026-09-26."
52771
+ },
52772
+ "allowedToolsChoice": {
52773
+ "value": true,
52774
+ "source": "official-doc",
52775
+ "confidence": "declared",
52776
+ "observedAt": "2026-09-26T00:00:00Z",
52777
+ "sourceRef": "https://developers.openai.com/api/docs/guides/function-calling — tool_choice {\"type\":\"allowed_tools\",\"mode\":\"auto\"|\"required\",\"tools\":[{\"type\":\"function\",\"name\":…}]}: \"make only a subset of tools available across model requests, but not modify the list of tools you pass in, so you can maximize savings from prompt caching\"; \"When you use tool search, tool_choice still applies to the tools that are currently callable in the turn.\" No model list on the page; set on the same GPT-5.4+ rows. NOT on codex-oauth: codex-rs always sends tool_choice \"auto\" (core/src/client.rs:1004) and its allowed_tools is a client-side filter (ext/extension-api/src/tool_policy.rs:14-36) -- the live probe decides. Retrieved 2026-09-26."
52778
+ },
51796
52779
  "canonicalModelId": "gpt-5.6-sol",
51797
52780
  "modelFamily": "gpt"
51798
52781
  },
@@ -51907,6 +52890,34 @@
51907
52890
  },
51908
52891
  "unsupportedParameters": [],
51909
52892
  "status": "candidate",
52893
+ "promptCacheKey": {
52894
+ "value": true,
52895
+ "source": "official-doc",
52896
+ "confidence": "declared",
52897
+ "observedAt": "2026-09-25T19:30:00Z",
52898
+ "sourceRef": "https://developers.openai.com/api/docs/guides/prompt-caching — the Responses API takes prompt_cache_key: \"Use a stable prompt_cache_key to optimize cache routing for requests that share a reusable prefix\" (pre-GPT-5.6); on GPT-5.6+ routing is automatic and the key is \"optional for separate cache accounting\"."
52899
+ },
52900
+ "clientToolSearch": {
52901
+ "value": true,
52902
+ "source": "official-doc",
52903
+ "confidence": "declared",
52904
+ "observedAt": "2026-09-26T00:00:00Z",
52905
+ "sourceRef": "https://developers.openai.com/api/docs/guides/tools-tool-search — \"Only gpt-5.4 and later models support tool_search\" in the Responses API; client execution: {\"type\":\"tool_search\",\"execution\":\"client\",description,parameters}, tool_search_call -> tool_search_output {call_id, execution:\"client\", status, tools}, deferred functions keep defer_loading:true, optionally inside {\"type\":\"namespace\",name,description,tools}. Retrieved 2026-09-26."
52906
+ },
52907
+ "additionalToolsItem": {
52908
+ "value": true,
52909
+ "source": "official-doc",
52910
+ "confidence": "declared",
52911
+ "observedAt": "2026-09-26T00:00:00Z",
52912
+ "sourceRef": "https://developers.openai.com/api/docs/guides/tools-tool-search — {\"type\":\"additional_tools\",\"role\":\"developer\",\"tools\":[...]}: \"Tools in an additional_tools item become available only after that item appears in the input\"; its position is kept on replay. The page names no model list, so it is set only on the rows the same page documents tool_search for (GPT-5.4 and later). NOT on codex-oauth: codex-rs sends one only at input[0] (core/src/client.rs:910-941), never mid-conversation -- the live probe decides. Retrieved 2026-09-26."
52913
+ },
52914
+ "allowedToolsChoice": {
52915
+ "value": true,
52916
+ "source": "official-doc",
52917
+ "confidence": "declared",
52918
+ "observedAt": "2026-09-26T00:00:00Z",
52919
+ "sourceRef": "https://developers.openai.com/api/docs/guides/function-calling — tool_choice {\"type\":\"allowed_tools\",\"mode\":\"auto\"|\"required\",\"tools\":[{\"type\":\"function\",\"name\":…}]}: \"make only a subset of tools available across model requests, but not modify the list of tools you pass in, so you can maximize savings from prompt caching\"; \"When you use tool search, tool_choice still applies to the tools that are currently callable in the turn.\" No model list on the page; set on the same GPT-5.4+ rows. NOT on codex-oauth: codex-rs always sends tool_choice \"auto\" (core/src/client.rs:1004) and its allowed_tools is a client-side filter (ext/extension-api/src/tool_policy.rs:14-36) -- the live probe decides. Retrieved 2026-09-26."
52920
+ },
51910
52921
  "canonicalModelId": "gpt-5.6-terra",
51911
52922
  "modelFamily": "gpt"
51912
52923
  },
@@ -52041,6 +53052,15 @@
52041
53052
  "sourceRef": "continuity report §5.1/§5.3 for own-state acceptance — the Responses surface replays its own completed `reasoning.encrypted_content` items to the same model. WS-13 §8.2: \"OpenAI-compatible\" is never the capability test, so this key shares NO domain with any other row.",
52042
53053
  "confidence": "declared",
52043
53054
  "observedAt": "2026-09-06T00:00:00Z"
53055
+ },
53056
+ "perMessageEffort": {
53057
+ "value": {
53058
+ "item": "configuration_update"
53059
+ },
53060
+ "source": "official-doc",
53061
+ "confidence": "declared",
53062
+ "observedAt": "2026-09-26T00:00:00Z",
53063
+ "sourceRef": "https://developers.openai.com/api/docs/guides/reasoning — \"Configuration updates are supported by the GPT-6 model family in standard, single-agent mode. They change only reasoning effort.\" Shape {\"type\":\"configuration_update\",\"reasoning\":{\"effort\":…}}, placed \"before the next user message in the input array\"; \"the API rejects adjacent updates\"; \"The response's reasoning.effort continues to report the request-level setting\"; with store:false, replay updates \"in their original positions\". Retrieved 2026-09-26. NOT set on codex-oauth/gpt-6-* (codex-rs enables it only behind an off-by-default feature, backend acceptance unprobed — scripts/probe-openai-midconv.ts decides) nor on azure-openai (undocumented there)."
52044
53064
  }
52045
53065
  },
52046
53066
  "pricing": {
@@ -52057,6 +53077,34 @@
52057
53077
  },
52058
53078
  "unsupportedParameters": [],
52059
53079
  "status": "candidate",
53080
+ "promptCacheKey": {
53081
+ "value": true,
53082
+ "source": "official-doc",
53083
+ "confidence": "declared",
53084
+ "observedAt": "2026-09-25T19:30:00Z",
53085
+ "sourceRef": "https://developers.openai.com/api/docs/guides/prompt-caching — the Responses API takes prompt_cache_key: \"Use a stable prompt_cache_key to optimize cache routing for requests that share a reusable prefix\" (pre-GPT-5.6); on GPT-5.6+ routing is automatic and the key is \"optional for separate cache accounting\"."
53086
+ },
53087
+ "clientToolSearch": {
53088
+ "value": true,
53089
+ "source": "official-doc",
53090
+ "confidence": "declared",
53091
+ "observedAt": "2026-09-26T00:00:00Z",
53092
+ "sourceRef": "https://developers.openai.com/api/docs/guides/tools-tool-search — \"Only gpt-5.4 and later models support tool_search\" in the Responses API; client execution: {\"type\":\"tool_search\",\"execution\":\"client\",description,parameters}, tool_search_call -> tool_search_output {call_id, execution:\"client\", status, tools}, deferred functions keep defer_loading:true, optionally inside {\"type\":\"namespace\",name,description,tools}. Retrieved 2026-09-26."
53093
+ },
53094
+ "additionalToolsItem": {
53095
+ "value": true,
53096
+ "source": "official-doc",
53097
+ "confidence": "declared",
53098
+ "observedAt": "2026-09-26T00:00:00Z",
53099
+ "sourceRef": "https://developers.openai.com/api/docs/guides/tools-tool-search — {\"type\":\"additional_tools\",\"role\":\"developer\",\"tools\":[...]}: \"Tools in an additional_tools item become available only after that item appears in the input\"; its position is kept on replay. The page names no model list, so it is set only on the rows the same page documents tool_search for (GPT-5.4 and later). NOT on codex-oauth: codex-rs sends one only at input[0] (core/src/client.rs:910-941), never mid-conversation -- the live probe decides. Retrieved 2026-09-26."
53100
+ },
53101
+ "allowedToolsChoice": {
53102
+ "value": true,
53103
+ "source": "official-doc",
53104
+ "confidence": "declared",
53105
+ "observedAt": "2026-09-26T00:00:00Z",
53106
+ "sourceRef": "https://developers.openai.com/api/docs/guides/function-calling — tool_choice {\"type\":\"allowed_tools\",\"mode\":\"auto\"|\"required\",\"tools\":[{\"type\":\"function\",\"name\":…}]}: \"make only a subset of tools available across model requests, but not modify the list of tools you pass in, so you can maximize savings from prompt caching\"; \"When you use tool search, tool_choice still applies to the tools that are currently callable in the turn.\" No model list on the page; set on the same GPT-5.4+ rows. NOT on codex-oauth: codex-rs always sends tool_choice \"auto\" (core/src/client.rs:1004) and its allowed_tools is a client-side filter (ext/extension-api/src/tool_policy.rs:14-36) -- the live probe decides. Retrieved 2026-09-26."
53107
+ },
52060
53108
  "canonicalModelId": "gpt-6-astra",
52061
53109
  "modelFamily": "gpt"
52062
53110
  },
@@ -52192,6 +53240,15 @@
52192
53240
  "sourceRef": "continuity report §5.1/§5.3 for own-state acceptance — the Responses surface replays its own completed `reasoning.encrypted_content` items to the same model. WS-13 §8.2: \"OpenAI-compatible\" is never the capability test, so this key shares NO domain with any other row.",
52193
53241
  "confidence": "declared",
52194
53242
  "observedAt": "2026-09-06T00:00:00Z"
53243
+ },
53244
+ "perMessageEffort": {
53245
+ "value": {
53246
+ "item": "configuration_update"
53247
+ },
53248
+ "source": "official-doc",
53249
+ "confidence": "declared",
53250
+ "observedAt": "2026-09-26T00:00:00Z",
53251
+ "sourceRef": "https://developers.openai.com/api/docs/guides/reasoning — \"Configuration updates are supported by the GPT-6 model family in standard, single-agent mode. They change only reasoning effort.\" Shape {\"type\":\"configuration_update\",\"reasoning\":{\"effort\":…}}, placed \"before the next user message in the input array\"; \"the API rejects adjacent updates\"; \"The response's reasoning.effort continues to report the request-level setting\"; with store:false, replay updates \"in their original positions\". Retrieved 2026-09-26. NOT set on codex-oauth/gpt-6-* (codex-rs enables it only behind an off-by-default feature, backend acceptance unprobed — scripts/probe-openai-midconv.ts decides) nor on azure-openai (undocumented there)."
52195
53252
  }
52196
53253
  },
52197
53254
  "pricing": {
@@ -52208,6 +53265,34 @@
52208
53265
  },
52209
53266
  "unsupportedParameters": [],
52210
53267
  "status": "candidate",
53268
+ "promptCacheKey": {
53269
+ "value": true,
53270
+ "source": "official-doc",
53271
+ "confidence": "declared",
53272
+ "observedAt": "2026-09-25T19:30:00Z",
53273
+ "sourceRef": "https://developers.openai.com/api/docs/guides/prompt-caching — the Responses API takes prompt_cache_key: \"Use a stable prompt_cache_key to optimize cache routing for requests that share a reusable prefix\" (pre-GPT-5.6); on GPT-5.6+ routing is automatic and the key is \"optional for separate cache accounting\"."
53274
+ },
53275
+ "clientToolSearch": {
53276
+ "value": true,
53277
+ "source": "official-doc",
53278
+ "confidence": "declared",
53279
+ "observedAt": "2026-09-26T00:00:00Z",
53280
+ "sourceRef": "https://developers.openai.com/api/docs/guides/tools-tool-search — \"Only gpt-5.4 and later models support tool_search\" in the Responses API; client execution: {\"type\":\"tool_search\",\"execution\":\"client\",description,parameters}, tool_search_call -> tool_search_output {call_id, execution:\"client\", status, tools}, deferred functions keep defer_loading:true, optionally inside {\"type\":\"namespace\",name,description,tools}. Retrieved 2026-09-26."
53281
+ },
53282
+ "additionalToolsItem": {
53283
+ "value": true,
53284
+ "source": "official-doc",
53285
+ "confidence": "declared",
53286
+ "observedAt": "2026-09-26T00:00:00Z",
53287
+ "sourceRef": "https://developers.openai.com/api/docs/guides/tools-tool-search — {\"type\":\"additional_tools\",\"role\":\"developer\",\"tools\":[...]}: \"Tools in an additional_tools item become available only after that item appears in the input\"; its position is kept on replay. The page names no model list, so it is set only on the rows the same page documents tool_search for (GPT-5.4 and later). NOT on codex-oauth: codex-rs sends one only at input[0] (core/src/client.rs:910-941), never mid-conversation -- the live probe decides. Retrieved 2026-09-26."
53288
+ },
53289
+ "allowedToolsChoice": {
53290
+ "value": true,
53291
+ "source": "official-doc",
53292
+ "confidence": "declared",
53293
+ "observedAt": "2026-09-26T00:00:00Z",
53294
+ "sourceRef": "https://developers.openai.com/api/docs/guides/function-calling — tool_choice {\"type\":\"allowed_tools\",\"mode\":\"auto\"|\"required\",\"tools\":[{\"type\":\"function\",\"name\":…}]}: \"make only a subset of tools available across model requests, but not modify the list of tools you pass in, so you can maximize savings from prompt caching\"; \"When you use tool search, tool_choice still applies to the tools that are currently callable in the turn.\" No model list on the page; set on the same GPT-5.4+ rows. NOT on codex-oauth: codex-rs always sends tool_choice \"auto\" (core/src/client.rs:1004) and its allowed_tools is a client-side filter (ext/extension-api/src/tool_policy.rs:14-36) -- the live probe decides. Retrieved 2026-09-26."
53295
+ },
52211
53296
  "canonicalModelId": "gpt-6-luna",
52212
53297
  "modelFamily": "gpt"
52213
53298
  },
@@ -52343,6 +53428,15 @@
52343
53428
  "sourceRef": "continuity report §5.1/§5.3 for own-state acceptance — the Responses surface replays its own completed `reasoning.encrypted_content` items to the same model. WS-13 §8.2: \"OpenAI-compatible\" is never the capability test, so this key shares NO domain with any other row.",
52344
53429
  "confidence": "declared",
52345
53430
  "observedAt": "2026-09-06T00:00:00Z"
53431
+ },
53432
+ "perMessageEffort": {
53433
+ "value": {
53434
+ "item": "configuration_update"
53435
+ },
53436
+ "source": "official-doc",
53437
+ "confidence": "declared",
53438
+ "observedAt": "2026-09-26T00:00:00Z",
53439
+ "sourceRef": "https://developers.openai.com/api/docs/guides/reasoning — \"Configuration updates are supported by the GPT-6 model family in standard, single-agent mode. They change only reasoning effort.\" Shape {\"type\":\"configuration_update\",\"reasoning\":{\"effort\":…}}, placed \"before the next user message in the input array\"; \"the API rejects adjacent updates\"; \"The response's reasoning.effort continues to report the request-level setting\"; with store:false, replay updates \"in their original positions\". Retrieved 2026-09-26. NOT set on codex-oauth/gpt-6-* (codex-rs enables it only behind an off-by-default feature, backend acceptance unprobed — scripts/probe-openai-midconv.ts decides) nor on azure-openai (undocumented there)."
52346
53440
  }
52347
53441
  },
52348
53442
  "pricing": {
@@ -52359,6 +53453,34 @@
52359
53453
  },
52360
53454
  "unsupportedParameters": [],
52361
53455
  "status": "candidate",
53456
+ "promptCacheKey": {
53457
+ "value": true,
53458
+ "source": "official-doc",
53459
+ "confidence": "declared",
53460
+ "observedAt": "2026-09-25T19:30:00Z",
53461
+ "sourceRef": "https://developers.openai.com/api/docs/guides/prompt-caching — the Responses API takes prompt_cache_key: \"Use a stable prompt_cache_key to optimize cache routing for requests that share a reusable prefix\" (pre-GPT-5.6); on GPT-5.6+ routing is automatic and the key is \"optional for separate cache accounting\"."
53462
+ },
53463
+ "clientToolSearch": {
53464
+ "value": true,
53465
+ "source": "official-doc",
53466
+ "confidence": "declared",
53467
+ "observedAt": "2026-09-26T00:00:00Z",
53468
+ "sourceRef": "https://developers.openai.com/api/docs/guides/tools-tool-search — \"Only gpt-5.4 and later models support tool_search\" in the Responses API; client execution: {\"type\":\"tool_search\",\"execution\":\"client\",description,parameters}, tool_search_call -> tool_search_output {call_id, execution:\"client\", status, tools}, deferred functions keep defer_loading:true, optionally inside {\"type\":\"namespace\",name,description,tools}. Retrieved 2026-09-26."
53469
+ },
53470
+ "additionalToolsItem": {
53471
+ "value": true,
53472
+ "source": "official-doc",
53473
+ "confidence": "declared",
53474
+ "observedAt": "2026-09-26T00:00:00Z",
53475
+ "sourceRef": "https://developers.openai.com/api/docs/guides/tools-tool-search — {\"type\":\"additional_tools\",\"role\":\"developer\",\"tools\":[...]}: \"Tools in an additional_tools item become available only after that item appears in the input\"; its position is kept on replay. The page names no model list, so it is set only on the rows the same page documents tool_search for (GPT-5.4 and later). NOT on codex-oauth: codex-rs sends one only at input[0] (core/src/client.rs:910-941), never mid-conversation -- the live probe decides. Retrieved 2026-09-26."
53476
+ },
53477
+ "allowedToolsChoice": {
53478
+ "value": true,
53479
+ "source": "official-doc",
53480
+ "confidence": "declared",
53481
+ "observedAt": "2026-09-26T00:00:00Z",
53482
+ "sourceRef": "https://developers.openai.com/api/docs/guides/function-calling — tool_choice {\"type\":\"allowed_tools\",\"mode\":\"auto\"|\"required\",\"tools\":[{\"type\":\"function\",\"name\":…}]}: \"make only a subset of tools available across model requests, but not modify the list of tools you pass in, so you can maximize savings from prompt caching\"; \"When you use tool search, tool_choice still applies to the tools that are currently callable in the turn.\" No model list on the page; set on the same GPT-5.4+ rows. NOT on codex-oauth: codex-rs always sends tool_choice \"auto\" (core/src/client.rs:1004) and its allowed_tools is a client-side filter (ext/extension-api/src/tool_policy.rs:14-36) -- the live probe decides. Retrieved 2026-09-26."
53483
+ },
52362
53484
  "canonicalModelId": "gpt-6-sol",
52363
53485
  "modelFamily": "gpt"
52364
53486
  },
@@ -52461,6 +53583,13 @@
52461
53583
  },
52462
53584
  "unsupportedParameters": [],
52463
53585
  "status": "candidate",
53586
+ "promptCacheKey": {
53587
+ "value": true,
53588
+ "source": "official-doc",
53589
+ "confidence": "declared",
53590
+ "observedAt": "2026-09-25T19:30:00Z",
53591
+ "sourceRef": "https://developers.openai.com/api/docs/guides/prompt-caching — the Responses API takes prompt_cache_key: \"Use a stable prompt_cache_key to optimize cache routing for requests that share a reusable prefix\" (pre-GPT-5.6); on GPT-5.6+ routing is automatic and the key is \"optional for separate cache accounting\"."
53592
+ },
52464
53593
  "canonicalModelId": "o3",
52465
53594
  "modelFamily": "o-series"
52466
53595
  },
@@ -52555,6 +53684,13 @@
52555
53684
  },
52556
53685
  "unsupportedParameters": [],
52557
53686
  "status": "candidate",
53687
+ "promptCacheKey": {
53688
+ "value": true,
53689
+ "source": "official-doc",
53690
+ "confidence": "declared",
53691
+ "observedAt": "2026-09-25T19:30:00Z",
53692
+ "sourceRef": "https://developers.openai.com/api/docs/guides/prompt-caching — the Responses API takes prompt_cache_key: \"Use a stable prompt_cache_key to optimize cache routing for requests that share a reusable prefix\" (pre-GPT-5.6); on GPT-5.6+ routing is automatic and the key is \"optional for separate cache accounting\"."
53693
+ },
52558
53694
  "canonicalModelId": "o3-mini",
52559
53695
  "modelFamily": "o-series"
52560
53696
  },
@@ -52702,6 +53838,13 @@
52702
53838
  },
52703
53839
  "unsupportedParameters": [],
52704
53840
  "status": "candidate",
53841
+ "promptCacheKey": {
53842
+ "value": true,
53843
+ "source": "official-doc",
53844
+ "confidence": "declared",
53845
+ "observedAt": "2026-09-25T19:30:00Z",
53846
+ "sourceRef": "https://developers.openai.com/api/docs/guides/prompt-caching — the Responses API takes prompt_cache_key: \"Use a stable prompt_cache_key to optimize cache routing for requests that share a reusable prefix\" (pre-GPT-5.6); on GPT-5.6+ routing is automatic and the key is \"optional for separate cache accounting\"."
53847
+ },
52705
53848
  "canonicalModelId": "o4-mini",
52706
53849
  "modelFamily": "o-series"
52707
53850
  },
@@ -72972,7 +74115,8 @@
72972
74115
  "grok-4.20-non-reasoning-gv2"
72973
74116
  ],
72974
74117
  "endpoints": [
72975
- "chat"
74118
+ "chat",
74119
+ "responses"
72976
74120
  ],
72977
74121
  "contextWindow": {
72978
74122
  "value": 1000000,
@@ -73067,7 +74211,8 @@
73067
74211
  "grok-4.20-reasoning-gv2"
73068
74212
  ],
73069
74213
  "endpoints": [
73070
- "chat"
74214
+ "chat",
74215
+ "responses"
73071
74216
  ],
73072
74217
  "contextWindow": {
73073
74218
  "value": 1000000,
@@ -73132,7 +74277,7 @@
73132
74277
  "observedAt": "2026-09-25T08:40:00Z"
73133
74278
  },
73134
74279
  "efforts": [],
73135
- "continuation": "none"
74280
+ "continuation": "opaque-provider-state"
73136
74281
  },
73137
74282
  "pricing": {
73138
74283
  "value": {
@@ -73150,6 +74295,111 @@
73150
74295
  "canonicalModelId": "grok-4.20-0309-reasoning",
73151
74296
  "modelFamily": "grok"
73152
74297
  },
74298
+ {
74299
+ "key": "xai/grok-4.20-multi-agent-0309",
74300
+ "providerId": "xai",
74301
+ "upstreamId": "grok-4.20-multi-agent-0309",
74302
+ "displayName": "Grok 4.20 Multi-Agent Beta",
74303
+ "aliases": [
74304
+ "grok-4.20-multi-agent",
74305
+ "grok-4.20-multi-agent-latest",
74306
+ "grok-4.20-multi-agent-beta-latest",
74307
+ "grok-4.20-multi-agent-experimental-beta-0304",
74308
+ "grok-4.20-multi-agent-experimental-beta-latest",
74309
+ "grok-4.20-multi-agent-beta-0309"
74310
+ ],
74311
+ "endpoints": [
74312
+ "responses"
74313
+ ],
74314
+ "contextWindow": {
74315
+ "value": 1000000,
74316
+ "source": "official-doc",
74317
+ "sourceRef": "https://docs.x.ai/developers/models/grok-4.20-multi-agent-0309 — model page context window 1,000,000 tokens",
74318
+ "confidence": "declared",
74319
+ "observedAt": "2026-09-25T08:40:00Z"
74320
+ },
74321
+ "inputModalities": {
74322
+ "value": [
74323
+ "text",
74324
+ "image"
74325
+ ],
74326
+ "source": "official-doc",
74327
+ "sourceRef": "https://docs.x.ai/developers/models/grok-4.20-multi-agent-0309 — model page Modalities: Text, Image input",
74328
+ "confidence": "declared",
74329
+ "observedAt": "2026-09-25T08:40:00Z"
74330
+ },
74331
+ "outputModalities": {
74332
+ "value": [
74333
+ "text"
74334
+ ],
74335
+ "source": "official-doc",
74336
+ "sourceRef": "https://docs.x.ai/developers/models/grok-4.20-multi-agent-0309 — model page Modalities: Text output",
74337
+ "confidence": "declared",
74338
+ "observedAt": "2026-09-25T08:40:00Z"
74339
+ },
74340
+ "toolCalling": {
74341
+ "value": "none",
74342
+ "source": "official-doc",
74343
+ "sourceRef": "https://docs.x.ai/developers/model-capabilities/text/multi-agent — multi-agent limitations: client-side/custom function calling unsupported; built-in server tools only",
74344
+ "confidence": "declared",
74345
+ "observedAt": "2026-09-25T08:40:00Z"
74346
+ },
74347
+ "nativeTools": {
74348
+ "value": false,
74349
+ "source": "official-doc",
74350
+ "sourceRef": "https://docs.x.ai/developers/model-capabilities/text/multi-agent — client-side/custom function tools unsupported",
74351
+ "confidence": "declared",
74352
+ "observedAt": "2026-09-25T08:40:00Z"
74353
+ },
74354
+ "structuredOutput": {
74355
+ "value": true,
74356
+ "source": "official-doc",
74357
+ "sourceRef": "https://docs.x.ai/developers/models/grok-4.20-multi-agent-0309 — model page Structured outputs capability",
74358
+ "confidence": "declared",
74359
+ "observedAt": "2026-09-25T08:40:00Z"
74360
+ },
74361
+ "promptCaching": {
74362
+ "value": true,
74363
+ "source": "official-doc",
74364
+ "sourceRef": "https://docs.x.ai/developers/models/grok-4.20-multi-agent-0309 — model page lists Cached tokens input rate; prompt caching available",
74365
+ "confidence": "declared",
74366
+ "observedAt": "2026-09-25T08:40:00Z"
74367
+ },
74368
+ "reasoning": {
74369
+ "supported": {
74370
+ "value": true,
74371
+ "source": "official-doc",
74372
+ "sourceRef": "https://docs.x.ai/developers/model-capabilities/text/multi-agent — reasoning.effort low/medium selects 4 agents, high/xhigh selects 16; previous_response_id supports multi-turn",
74373
+ "confidence": "declared",
74374
+ "observedAt": "2026-09-25T08:40:00Z"
74375
+ },
74376
+ "efforts": [
74377
+ "low",
74378
+ "medium",
74379
+ "high",
74380
+ "xhigh"
74381
+ ],
74382
+ "continuation": "opaque-provider-state"
74383
+ },
74384
+ "pricing": {
74385
+ "value": {
74386
+ "inputPerMTokUsd": 1.25,
74387
+ "outputPerMTokUsd": 2.5,
74388
+ "cacheReadPerMTokUsd": 0.2
74389
+ },
74390
+ "source": "official-doc",
74391
+ "sourceRef": "https://docs.x.ai/developers/pricing — grok-4.20-multi-agent-0309 Standard global short-context rate (<200k prompt tokens): $1.25 input, $0.20 cached input, $2.50 output per 1M; >=200k the entire request is charged $2.50/$0.40/$5.00. US-regional 1.1x applies only to models currently on that endpoint, listed as grok-4.7 and grok-4.6; not this model (re-read 2026-09-25, WS-23).",
74392
+ "confidence": "declared",
74393
+ "observedAt": "2026-09-25T17:09:48Z"
74394
+ },
74395
+ "unsupportedParameters": [
74396
+ "max_output_tokens",
74397
+ "tools"
74398
+ ],
74399
+ "status": "candidate",
74400
+ "canonicalModelId": "grok-4.20-multi-agent-0309",
74401
+ "modelFamily": "grok"
74402
+ },
73153
74403
  {
73154
74404
  "key": "xai/grok-4.3",
73155
74405
  "providerId": "xai",
@@ -73159,7 +74409,8 @@
73159
74409
  "grok-4.3-latest"
73160
74410
  ],
73161
74411
  "endpoints": [
73162
- "chat"
74412
+ "chat",
74413
+ "responses"
73163
74414
  ],
73164
74415
  "contextWindow": {
73165
74416
  "value": 1000000,
@@ -73230,7 +74481,7 @@
73230
74481
  "high",
73231
74482
  "xhigh"
73232
74483
  ],
73233
- "continuation": "plaintext",
74484
+ "continuation": "opaque-provider-state",
73234
74485
  "defaultEffort": "low"
73235
74486
  },
73236
74487
  "pricing": {
@@ -73259,7 +74510,8 @@
73259
74510
  "grok-build-latest"
73260
74511
  ],
73261
74512
  "endpoints": [
73262
- "chat"
74513
+ "chat",
74514
+ "responses"
73263
74515
  ],
73264
74516
  "contextWindow": {
73265
74517
  "value": 500000,
@@ -73328,7 +74580,7 @@
73328
74580
  "medium",
73329
74581
  "high"
73330
74582
  ],
73331
- "continuation": "plaintext",
74583
+ "continuation": "opaque-provider-state",
73332
74584
  "defaultEffort": "high"
73333
74585
  },
73334
74586
  "pricing": {
@@ -73358,7 +74610,8 @@
73358
74610
  "displayName": "Grok 4.6",
73359
74611
  "aliases": [],
73360
74612
  "endpoints": [
73361
- "chat"
74613
+ "chat",
74614
+ "responses"
73362
74615
  ],
73363
74616
  "contextWindow": {
73364
74617
  "value": 500000,
@@ -73428,7 +74681,7 @@
73428
74681
  "high",
73429
74682
  "xhigh"
73430
74683
  ],
73431
- "continuation": "plaintext",
74684
+ "continuation": "opaque-provider-state",
73432
74685
  "defaultEffort": "high"
73433
74686
  },
73434
74687
  "pricing": {
@@ -73458,7 +74711,8 @@
73458
74711
  "displayName": "Grok 4.7",
73459
74712
  "aliases": [],
73460
74713
  "endpoints": [
73461
- "chat"
74714
+ "chat",
74715
+ "responses"
73462
74716
  ],
73463
74717
  "contextWindow": {
73464
74718
  "value": 500000,
@@ -73528,8 +74782,29 @@
73528
74782
  "high",
73529
74783
  "xhigh"
73530
74784
  ],
73531
- "continuation": "plaintext",
73532
- "defaultEffort": "high"
74785
+ "continuation": "opaque-provider-state",
74786
+ "defaultEffort": "high",
74787
+ "readableState": {
74788
+ "value": "summary",
74789
+ "source": "official-doc",
74790
+ "sourceRef": "https://docs.x.ai/developers/model-capabilities/text/reasoning — \"For `grok-4.7`, we expose summarizations of the model's internal reasoning\" (Summarized Reasoning Content); https://docs.x.ai/developers/rest-api-reference/inference/responses — the example reasoning output item carries `summary: [{ type: \"summary_text\", … }]`",
74791
+ "confidence": "declared",
74792
+ "observedAt": "2026-09-25T17:09:48Z"
74793
+ },
74794
+ "summaryRequest": {
74795
+ "value": {
74796
+ "field": "reasoning.summary",
74797
+ "values": [
74798
+ "detailed",
74799
+ "auto",
74800
+ "concise"
74801
+ ]
74802
+ },
74803
+ "source": "official-doc",
74804
+ "sourceRef": "https://docs.x.ai/developers/rest-api-reference/inference/responses — `reasoning.summary`: \"Possible values are `auto`, `concise` and `detailed`. Only included for compatibility. The model shall always return `detailed`.\" `detailed` is listed FIRST because the adapter sends the first value, and it is the one the model returns regardless",
74805
+ "confidence": "declared",
74806
+ "observedAt": "2026-09-25T17:09:48Z"
74807
+ }
73533
74808
  },
73534
74809
  "pricing": {
73535
74810
  "value": {
@@ -73562,7 +74837,8 @@
73562
74837
  "grok-code-fast-1-0825"
73563
74838
  ],
73564
74839
  "endpoints": [
73565
- "chat"
74840
+ "chat",
74841
+ "responses"
73566
74842
  ],
73567
74843
  "contextWindow": {
73568
74844
  "value": 256000,
@@ -73627,7 +74903,7 @@
73627
74903
  "observedAt": "2026-09-25T08:40:00Z"
73628
74904
  },
73629
74905
  "efforts": [],
73630
- "continuation": "none"
74906
+ "continuation": "opaque-provider-state"
73631
74907
  },
73632
74908
  "pricing": {
73633
74909
  "value": {