@yanlinglabs/winter-provider-catalog 0.0.24 → 0.0.28

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,52 @@
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
+ },
15901
+ "undeclaredToolCalls": {
15902
+ "value": true,
15903
+ "source": "live-probe",
15904
+ "sourceRef": "scripts/probe-fork-undeclared-tool.ts (WS-24), run live 2026-09-26: A -- a call to a tool absent from `tools` and its result in the history -> 200; B -- a ToolSearch result carrying the definition as text -> the model called the undeclared tool; C -- that call and its result fed back -> 200",
15905
+ "confidence": "verified",
15906
+ "observedAt": "2026-09-26T00:00:00Z"
15907
+ },
15621
15908
  "canonicalModelId": "claude-opus-5.5",
15622
15909
  "modelFamily": "claude"
15623
15910
  },
@@ -15733,6 +16020,13 @@
15733
16020
  "thinking.type.adaptive"
15734
16021
  ],
15735
16022
  "status": "candidate",
16023
+ "deferredToolLoading": {
16024
+ "value": true,
16025
+ "source": "official-doc",
16026
+ "confidence": "declared",
16027
+ "observedAt": "2026-09-25T18:30:00Z",
16028
+ "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)."
16029
+ },
15736
16030
  "canonicalModelId": "claude-sonnet-4.5",
15737
16031
  "modelFamily": "claude"
15738
16032
  },
@@ -15741,7 +16035,9 @@
15741
16035
  "providerId": "anthropic",
15742
16036
  "upstreamId": "claude-sonnet-4.6",
15743
16037
  "displayName": "Claude Sonnet 4.6",
15744
- "aliases": [],
16038
+ "aliases": [
16039
+ "claude-sonnet-4-6"
16040
+ ],
15745
16041
  "endpoints": [
15746
16042
  "chat"
15747
16043
  ],
@@ -15853,6 +16149,13 @@
15853
16149
  },
15854
16150
  "unsupportedParameters": [],
15855
16151
  "status": "candidate",
16152
+ "deferredToolLoading": {
16153
+ "value": true,
16154
+ "source": "official-doc",
16155
+ "confidence": "declared",
16156
+ "observedAt": "2026-09-25T18:30:00Z",
16157
+ "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)."
16158
+ },
15856
16159
  "canonicalModelId": "claude-sonnet-4.6",
15857
16160
  "modelFamily": "claude"
15858
16161
  },
@@ -16024,6 +16327,20 @@
16024
16327
  "thinking.type.enabled"
16025
16328
  ],
16026
16329
  "status": "candidate",
16330
+ "assistantPrefill": {
16331
+ "value": false,
16332
+ "source": "official-doc",
16333
+ "confidence": "declared",
16334
+ "observedAt": "2026-09-26T00:00:00Z",
16335
+ "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.\""
16336
+ },
16337
+ "undeclaredToolCalls": {
16338
+ "value": true,
16339
+ "source": "live-probe",
16340
+ "sourceRef": "scripts/probe-fork-undeclared-tool.ts (WS-24), run live 2026-09-26: A -- a call to a tool absent from `tools` and its result in the history -> 200; B -- a ToolSearch result carrying the definition as text -> the model called the undeclared tool; C -- that call and its result fed back -> 200",
16341
+ "confidence": "verified",
16342
+ "observedAt": "2026-09-26T00:00:00Z"
16343
+ },
16027
16344
  "canonicalModelId": "claude-sonnet-5",
16028
16345
  "modelFamily": "claude"
16029
16346
  },
@@ -25227,6 +25544,20 @@
25227
25544
  },
25228
25545
  "unsupportedParameters": [],
25229
25546
  "status": "candidate",
25547
+ "promptCacheKey": {
25548
+ "value": true,
25549
+ "source": "official-doc",
25550
+ "confidence": "declared",
25551
+ "observedAt": "2026-09-25T19:30:00Z",
25552
+ "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."
25553
+ },
25554
+ "clientToolSearch": {
25555
+ "value": true,
25556
+ "source": "upstream-static",
25557
+ "confidence": "declared",
25558
+ "observedAt": "2026-09-26T00:00:00Z",
25559
+ "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."
25560
+ },
25230
25561
  "canonicalModelId": "gpt-5.6-luna",
25231
25562
  "modelFamily": "gpt"
25232
25563
  },
@@ -25334,6 +25665,20 @@
25334
25665
  },
25335
25666
  "unsupportedParameters": [],
25336
25667
  "status": "candidate",
25668
+ "promptCacheKey": {
25669
+ "value": true,
25670
+ "source": "official-doc",
25671
+ "confidence": "declared",
25672
+ "observedAt": "2026-09-25T19:30:00Z",
25673
+ "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."
25674
+ },
25675
+ "clientToolSearch": {
25676
+ "value": true,
25677
+ "source": "upstream-static",
25678
+ "confidence": "declared",
25679
+ "observedAt": "2026-09-26T00:00:00Z",
25680
+ "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."
25681
+ },
25337
25682
  "canonicalModelId": "gpt-5.6-sol",
25338
25683
  "modelFamily": "gpt"
25339
25684
  },
@@ -25441,6 +25786,20 @@
25441
25786
  },
25442
25787
  "unsupportedParameters": [],
25443
25788
  "status": "candidate",
25789
+ "promptCacheKey": {
25790
+ "value": true,
25791
+ "source": "official-doc",
25792
+ "confidence": "declared",
25793
+ "observedAt": "2026-09-25T19:30:00Z",
25794
+ "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."
25795
+ },
25796
+ "clientToolSearch": {
25797
+ "value": true,
25798
+ "source": "upstream-static",
25799
+ "confidence": "declared",
25800
+ "observedAt": "2026-09-26T00:00:00Z",
25801
+ "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."
25802
+ },
25444
25803
  "canonicalModelId": "gpt-5.6-terra",
25445
25804
  "modelFamily": "gpt"
25446
25805
  },
@@ -25550,6 +25909,20 @@
25550
25909
  },
25551
25910
  "unsupportedParameters": [],
25552
25911
  "status": "candidate",
25912
+ "promptCacheKey": {
25913
+ "value": true,
25914
+ "source": "official-doc",
25915
+ "confidence": "declared",
25916
+ "observedAt": "2026-09-25T19:30:00Z",
25917
+ "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."
25918
+ },
25919
+ "clientToolSearch": {
25920
+ "value": true,
25921
+ "source": "upstream-static",
25922
+ "confidence": "declared",
25923
+ "observedAt": "2026-09-26T00:00:00Z",
25924
+ "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."
25925
+ },
25553
25926
  "canonicalModelId": "gpt-6-astra",
25554
25927
  "modelFamily": "gpt"
25555
25928
  },
@@ -25659,6 +26032,20 @@
25659
26032
  },
25660
26033
  "unsupportedParameters": [],
25661
26034
  "status": "candidate",
26035
+ "promptCacheKey": {
26036
+ "value": true,
26037
+ "source": "official-doc",
26038
+ "confidence": "declared",
26039
+ "observedAt": "2026-09-25T19:30:00Z",
26040
+ "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."
26041
+ },
26042
+ "clientToolSearch": {
26043
+ "value": true,
26044
+ "source": "upstream-static",
26045
+ "confidence": "declared",
26046
+ "observedAt": "2026-09-26T00:00:00Z",
26047
+ "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."
26048
+ },
25662
26049
  "canonicalModelId": "gpt-6-luna",
25663
26050
  "modelFamily": "gpt"
25664
26051
  },
@@ -25768,6 +26155,20 @@
25768
26155
  },
25769
26156
  "unsupportedParameters": [],
25770
26157
  "status": "candidate",
26158
+ "promptCacheKey": {
26159
+ "value": true,
26160
+ "source": "official-doc",
26161
+ "confidence": "declared",
26162
+ "observedAt": "2026-09-25T19:30:00Z",
26163
+ "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."
26164
+ },
26165
+ "clientToolSearch": {
26166
+ "value": true,
26167
+ "source": "upstream-static",
26168
+ "confidence": "declared",
26169
+ "observedAt": "2026-09-26T00:00:00Z",
26170
+ "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."
26171
+ },
25771
26172
  "canonicalModelId": "gpt-6-sol",
25772
26173
  "modelFamily": "gpt"
25773
26174
  },
@@ -26511,6 +26912,45 @@
26511
26912
  "thinking.type.disabled"
26512
26913
  ],
26513
26914
  "status": "candidate",
26915
+ "deferredToolLoading": {
26916
+ "value": true,
26917
+ "source": "official-doc",
26918
+ "confidence": "declared",
26919
+ "observedAt": "2026-09-25T18:30:00Z",
26920
+ "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)."
26921
+ },
26922
+ "midConversationSystem": {
26923
+ "value": true,
26924
+ "source": "official-doc",
26925
+ "confidence": "declared",
26926
+ "observedAt": "2026-09-25T19:00:00Z",
26927
+ "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.\""
26928
+ },
26929
+ "midConversationToolChanges": {
26930
+ "value": {
26931
+ "beta": "mid-conversation-tool-changes-2026-07-01"
26932
+ },
26933
+ "source": "official-doc",
26934
+ "confidence": "declared",
26935
+ "observedAt": "2026-09-26T00:00:00Z",
26936
+ "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)."
26937
+ },
26938
+ "inlineToolDefinitions": {
26939
+ "value": {
26940
+ "beta": "inline-tools-2026-09-15"
26941
+ },
26942
+ "source": "official-doc",
26943
+ "confidence": "declared",
26944
+ "observedAt": "2026-09-26T00:00:00Z",
26945
+ "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."
26946
+ },
26947
+ "assistantPrefill": {
26948
+ "value": false,
26949
+ "source": "official-doc",
26950
+ "confidence": "declared",
26951
+ "observedAt": "2026-09-26T00:00:00Z",
26952
+ "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.\""
26953
+ },
26514
26954
  "canonicalModelId": "claude-fable-5",
26515
26955
  "modelFamily": "claude"
26516
26956
  },
@@ -26661,6 +27101,15 @@
26661
27101
  "confidence": "declared",
26662
27102
  "observedAt": "2026-09-25T13:00:00Z",
26663
27103
  "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\")."
27104
+ },
27105
+ "perMessageEffort": {
27106
+ "value": {
27107
+ "beta": "mid-conversation-output-config-2026-07-01"
27108
+ },
27109
+ "source": "official-doc",
27110
+ "confidence": "declared",
27111
+ "observedAt": "2026-09-25T18:00:00Z",
27112
+ "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
27113
  }
26665
27114
  },
26666
27115
  "pricing": {
@@ -26682,6 +27131,45 @@
26682
27131
  "tool_choice.tool"
26683
27132
  ],
26684
27133
  "status": "candidate",
27134
+ "deferredToolLoading": {
27135
+ "value": true,
27136
+ "source": "official-doc",
27137
+ "confidence": "declared",
27138
+ "observedAt": "2026-09-25T18:30:00Z",
27139
+ "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)."
27140
+ },
27141
+ "midConversationSystem": {
27142
+ "value": true,
27143
+ "source": "official-doc",
27144
+ "confidence": "declared",
27145
+ "observedAt": "2026-09-25T19:00:00Z",
27146
+ "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.\""
27147
+ },
27148
+ "midConversationToolChanges": {
27149
+ "value": {
27150
+ "beta": "mid-conversation-tool-changes-2026-07-01"
27151
+ },
27152
+ "source": "official-doc",
27153
+ "confidence": "declared",
27154
+ "observedAt": "2026-09-26T00:00:00Z",
27155
+ "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)."
27156
+ },
27157
+ "inlineToolDefinitions": {
27158
+ "value": {
27159
+ "beta": "inline-tools-2026-09-15"
27160
+ },
27161
+ "source": "official-doc",
27162
+ "confidence": "declared",
27163
+ "observedAt": "2026-09-26T00:00:00Z",
27164
+ "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."
27165
+ },
27166
+ "assistantPrefill": {
27167
+ "value": false,
27168
+ "source": "official-doc",
27169
+ "confidence": "declared",
27170
+ "observedAt": "2026-09-26T00:00:00Z",
27171
+ "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.\""
27172
+ },
26685
27173
  "canonicalModelId": "claude-fable-5.1",
26686
27174
  "modelFamily": "claude"
26687
27175
  },
@@ -26780,6 +27268,13 @@
26780
27268
  "thinking.type.adaptive"
26781
27269
  ],
26782
27270
  "status": "candidate",
27271
+ "deferredToolLoading": {
27272
+ "value": true,
27273
+ "source": "official-doc",
27274
+ "confidence": "declared",
27275
+ "observedAt": "2026-09-25T18:30:00Z",
27276
+ "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)."
27277
+ },
26783
27278
  "canonicalModelId": "claude-haiku-4.5-20251001",
26784
27279
  "modelFamily": "claude"
26785
27280
  },
@@ -26878,6 +27373,13 @@
26878
27373
  "thinking.type.adaptive"
26879
27374
  ],
26880
27375
  "status": "candidate",
27376
+ "deferredToolLoading": {
27377
+ "value": true,
27378
+ "source": "official-doc",
27379
+ "confidence": "declared",
27380
+ "observedAt": "2026-09-25T18:30:00Z",
27381
+ "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)."
27382
+ },
26881
27383
  "canonicalModelId": "claude-haiku-4.5",
26882
27384
  "modelFamily": "claude"
26883
27385
  },
@@ -27002,6 +27504,13 @@
27002
27504
  "thinking.type.adaptive"
27003
27505
  ],
27004
27506
  "status": "candidate",
27507
+ "deferredToolLoading": {
27508
+ "value": true,
27509
+ "source": "official-doc",
27510
+ "confidence": "declared",
27511
+ "observedAt": "2026-09-25T18:30:00Z",
27512
+ "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)."
27513
+ },
27005
27514
  "canonicalModelId": "claude-opus-4.5",
27006
27515
  "modelFamily": "claude"
27007
27516
  },
@@ -27010,7 +27519,9 @@
27010
27519
  "providerId": "console",
27011
27520
  "upstreamId": "claude-opus-4.6",
27012
27521
  "displayName": "Claude Opus 4.6",
27013
- "aliases": [],
27522
+ "aliases": [
27523
+ "claude-opus-4-6"
27524
+ ],
27014
27525
  "endpoints": [
27015
27526
  "chat"
27016
27527
  ],
@@ -27122,6 +27633,20 @@
27122
27633
  },
27123
27634
  "unsupportedParameters": [],
27124
27635
  "status": "candidate",
27636
+ "deferredToolLoading": {
27637
+ "value": true,
27638
+ "source": "official-doc",
27639
+ "confidence": "declared",
27640
+ "observedAt": "2026-09-25T18:30:00Z",
27641
+ "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)."
27642
+ },
27643
+ "assistantPrefill": {
27644
+ "value": false,
27645
+ "source": "official-doc",
27646
+ "confidence": "declared",
27647
+ "observedAt": "2026-09-26T00:00:00Z",
27648
+ "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.\""
27649
+ },
27125
27650
  "canonicalModelId": "claude-opus-4.6",
27126
27651
  "modelFamily": "claude"
27127
27652
  },
@@ -27130,7 +27655,9 @@
27130
27655
  "providerId": "console",
27131
27656
  "upstreamId": "claude-opus-4.7",
27132
27657
  "displayName": "Claude Opus 4.7",
27133
- "aliases": [],
27658
+ "aliases": [
27659
+ "claude-opus-4-7"
27660
+ ],
27134
27661
  "endpoints": [
27135
27662
  "chat"
27136
27663
  ],
@@ -27248,6 +27775,20 @@
27248
27775
  "thinking.type.enabled"
27249
27776
  ],
27250
27777
  "status": "candidate",
27778
+ "deferredToolLoading": {
27779
+ "value": true,
27780
+ "source": "official-doc",
27781
+ "confidence": "declared",
27782
+ "observedAt": "2026-09-25T18:30:00Z",
27783
+ "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)."
27784
+ },
27785
+ "assistantPrefill": {
27786
+ "value": false,
27787
+ "source": "official-doc",
27788
+ "confidence": "declared",
27789
+ "observedAt": "2026-09-26T00:00:00Z",
27790
+ "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.\""
27791
+ },
27251
27792
  "canonicalModelId": "claude-opus-4.7",
27252
27793
  "modelFamily": "claude"
27253
27794
  },
@@ -27256,7 +27797,9 @@
27256
27797
  "providerId": "console",
27257
27798
  "upstreamId": "claude-opus-4.8",
27258
27799
  "displayName": "Claude Opus 4.8",
27259
- "aliases": [],
27800
+ "aliases": [
27801
+ "claude-opus-4-8"
27802
+ ],
27260
27803
  "endpoints": [
27261
27804
  "chat"
27262
27805
  ],
@@ -27374,6 +27917,45 @@
27374
27917
  "thinking.type.enabled"
27375
27918
  ],
27376
27919
  "status": "candidate",
27920
+ "deferredToolLoading": {
27921
+ "value": true,
27922
+ "source": "official-doc",
27923
+ "confidence": "declared",
27924
+ "observedAt": "2026-09-25T18:30:00Z",
27925
+ "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)."
27926
+ },
27927
+ "midConversationSystem": {
27928
+ "value": true,
27929
+ "source": "official-doc",
27930
+ "confidence": "declared",
27931
+ "observedAt": "2026-09-25T19:00:00Z",
27932
+ "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.\""
27933
+ },
27934
+ "midConversationToolChanges": {
27935
+ "value": {
27936
+ "beta": "mid-conversation-tool-changes-2026-07-01"
27937
+ },
27938
+ "source": "official-doc",
27939
+ "confidence": "declared",
27940
+ "observedAt": "2026-09-26T00:00:00Z",
27941
+ "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)."
27942
+ },
27943
+ "inlineToolDefinitions": {
27944
+ "value": {
27945
+ "beta": "inline-tools-2026-09-15"
27946
+ },
27947
+ "source": "official-doc",
27948
+ "confidence": "declared",
27949
+ "observedAt": "2026-09-26T00:00:00Z",
27950
+ "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."
27951
+ },
27952
+ "assistantPrefill": {
27953
+ "value": false,
27954
+ "source": "official-doc",
27955
+ "confidence": "declared",
27956
+ "observedAt": "2026-09-26T00:00:00Z",
27957
+ "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.\""
27958
+ },
27377
27959
  "canonicalModelId": "claude-opus-4.8",
27378
27960
  "modelFamily": "claude"
27379
27961
  },
@@ -27522,6 +28104,15 @@
27522
28104
  "confidence": "declared",
27523
28105
  "observedAt": "2026-09-25T12:30:00Z",
27524
28106
  "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)."
28107
+ },
28108
+ "perMessageEffort": {
28109
+ "value": {
28110
+ "beta": "mid-conversation-output-config-2026-07-01"
28111
+ },
28112
+ "source": "official-doc",
28113
+ "confidence": "declared",
28114
+ "observedAt": "2026-09-25T18:00:00Z",
28115
+ "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
28116
  }
27526
28117
  },
27527
28118
  "pricing": {
@@ -27540,9 +28131,50 @@
27540
28131
  "temperature",
27541
28132
  "top_p",
27542
28133
  "top_k",
27543
- "thinking.type.enabled"
28134
+ "thinking.type.enabled",
28135
+ "thinking.type.disabled+output_config.effort.xhigh",
28136
+ "thinking.type.disabled+output_config.effort.max"
27544
28137
  ],
27545
28138
  "status": "candidate",
28139
+ "deferredToolLoading": {
28140
+ "value": true,
28141
+ "source": "official-doc",
28142
+ "confidence": "declared",
28143
+ "observedAt": "2026-09-25T18:30:00Z",
28144
+ "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)."
28145
+ },
28146
+ "midConversationSystem": {
28147
+ "value": true,
28148
+ "source": "official-doc",
28149
+ "confidence": "declared",
28150
+ "observedAt": "2026-09-25T19:00:00Z",
28151
+ "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.\""
28152
+ },
28153
+ "midConversationToolChanges": {
28154
+ "value": {
28155
+ "beta": "mid-conversation-tool-changes-2026-07-01"
28156
+ },
28157
+ "source": "official-doc",
28158
+ "confidence": "declared",
28159
+ "observedAt": "2026-09-26T00:00:00Z",
28160
+ "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)."
28161
+ },
28162
+ "inlineToolDefinitions": {
28163
+ "value": {
28164
+ "beta": "inline-tools-2026-09-15"
28165
+ },
28166
+ "source": "official-doc",
28167
+ "confidence": "declared",
28168
+ "observedAt": "2026-09-26T00:00:00Z",
28169
+ "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."
28170
+ },
28171
+ "assistantPrefill": {
28172
+ "value": false,
28173
+ "source": "official-doc",
28174
+ "confidence": "declared",
28175
+ "observedAt": "2026-09-26T00:00:00Z",
28176
+ "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.\""
28177
+ },
27546
28178
  "canonicalModelId": "claude-opus-5",
27547
28179
  "modelFamily": "claude"
27548
28180
  },
@@ -27702,6 +28334,15 @@
27702
28334
  "confidence": "declared",
27703
28335
  "observedAt": "2026-09-25T13:00:00Z",
27704
28336
  "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\")."
28337
+ },
28338
+ "perMessageEffort": {
28339
+ "value": {
28340
+ "beta": "mid-conversation-output-config-2026-07-01"
28341
+ },
28342
+ "source": "official-doc",
28343
+ "confidence": "declared",
28344
+ "observedAt": "2026-09-25T18:00:00Z",
28345
+ "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
28346
  }
27706
28347
  },
27707
28348
  "pricing": {
@@ -27723,6 +28364,45 @@
27723
28364
  "tool_choice.tool"
27724
28365
  ],
27725
28366
  "status": "candidate",
28367
+ "deferredToolLoading": {
28368
+ "value": true,
28369
+ "source": "official-doc",
28370
+ "confidence": "declared",
28371
+ "observedAt": "2026-09-25T18:30:00Z",
28372
+ "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)."
28373
+ },
28374
+ "midConversationSystem": {
28375
+ "value": true,
28376
+ "source": "official-doc",
28377
+ "confidence": "declared",
28378
+ "observedAt": "2026-09-25T19:00:00Z",
28379
+ "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.\""
28380
+ },
28381
+ "midConversationToolChanges": {
28382
+ "value": {
28383
+ "beta": "mid-conversation-tool-changes-2026-07-01"
28384
+ },
28385
+ "source": "official-doc",
28386
+ "confidence": "declared",
28387
+ "observedAt": "2026-09-26T00:00:00Z",
28388
+ "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)."
28389
+ },
28390
+ "inlineToolDefinitions": {
28391
+ "value": {
28392
+ "beta": "inline-tools-2026-09-15"
28393
+ },
28394
+ "source": "official-doc",
28395
+ "confidence": "declared",
28396
+ "observedAt": "2026-09-26T00:00:00Z",
28397
+ "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."
28398
+ },
28399
+ "assistantPrefill": {
28400
+ "value": false,
28401
+ "source": "official-doc",
28402
+ "confidence": "declared",
28403
+ "observedAt": "2026-09-26T00:00:00Z",
28404
+ "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.\""
28405
+ },
27726
28406
  "canonicalModelId": "claude-opus-5.5",
27727
28407
  "modelFamily": "claude"
27728
28408
  },
@@ -27838,6 +28518,13 @@
27838
28518
  "thinking.type.adaptive"
27839
28519
  ],
27840
28520
  "status": "candidate",
28521
+ "deferredToolLoading": {
28522
+ "value": true,
28523
+ "source": "official-doc",
28524
+ "confidence": "declared",
28525
+ "observedAt": "2026-09-25T18:30:00Z",
28526
+ "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)."
28527
+ },
27841
28528
  "canonicalModelId": "claude-sonnet-4.5",
27842
28529
  "modelFamily": "claude"
27843
28530
  },
@@ -27846,7 +28533,9 @@
27846
28533
  "providerId": "console",
27847
28534
  "upstreamId": "claude-sonnet-4.6",
27848
28535
  "displayName": "Claude Sonnet 4.6",
27849
- "aliases": [],
28536
+ "aliases": [
28537
+ "claude-sonnet-4-6"
28538
+ ],
27850
28539
  "endpoints": [
27851
28540
  "chat"
27852
28541
  ],
@@ -27958,6 +28647,13 @@
27958
28647
  },
27959
28648
  "unsupportedParameters": [],
27960
28649
  "status": "candidate",
28650
+ "deferredToolLoading": {
28651
+ "value": true,
28652
+ "source": "official-doc",
28653
+ "confidence": "declared",
28654
+ "observedAt": "2026-09-25T18:30:00Z",
28655
+ "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)."
28656
+ },
27961
28657
  "canonicalModelId": "claude-sonnet-4.6",
27962
28658
  "modelFamily": "claude"
27963
28659
  },
@@ -28129,6 +28825,13 @@
28129
28825
  "thinking.type.enabled"
28130
28826
  ],
28131
28827
  "status": "candidate",
28828
+ "assistantPrefill": {
28829
+ "value": false,
28830
+ "source": "official-doc",
28831
+ "confidence": "declared",
28832
+ "observedAt": "2026-09-26T00:00:00Z",
28833
+ "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.\""
28834
+ },
28132
28835
  "canonicalModelId": "claude-sonnet-5",
28133
28836
  "modelFamily": "claude"
28134
28837
  },
@@ -29448,6 +30151,13 @@
29448
30151
  },
29449
30152
  "unsupportedParameters": [],
29450
30153
  "status": "candidate",
30154
+ "undeclaredToolCalls": {
30155
+ "value": true,
30156
+ "source": "live-probe",
30157
+ "sourceRef": "scripts/probe-fork-undeclared-tool.ts (WS-24), run live 2026-09-26: A -- a call to a tool absent from `tools` and its result in the history -> 200; B -- a ToolSearch result carrying the definition as text -> the model called the undeclared tool; C -- that call and its result fed back -> 200",
30158
+ "confidence": "verified",
30159
+ "observedAt": "2026-09-26T00:00:00Z"
30160
+ },
29451
30161
  "canonicalModelId": "deepseek-flash",
29452
30162
  "modelFamily": "deepseek"
29453
30163
  },
@@ -50429,6 +51139,13 @@
50429
51139
  },
50430
51140
  "unsupportedParameters": [],
50431
51141
  "status": "candidate",
51142
+ "promptCacheKey": {
51143
+ "value": true,
51144
+ "source": "official-doc",
51145
+ "confidence": "declared",
51146
+ "observedAt": "2026-09-25T19:30:00Z",
51147
+ "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\"."
51148
+ },
50432
51149
  "canonicalModelId": "gpt-4.1",
50433
51150
  "modelFamily": "gpt"
50434
51151
  },
@@ -50509,6 +51226,13 @@
50509
51226
  },
50510
51227
  "unsupportedParameters": [],
50511
51228
  "status": "candidate",
51229
+ "promptCacheKey": {
51230
+ "value": true,
51231
+ "source": "official-doc",
51232
+ "confidence": "declared",
51233
+ "observedAt": "2026-09-25T19:30:00Z",
51234
+ "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\"."
51235
+ },
50512
51236
  "canonicalModelId": "gpt-4.1-mini",
50513
51237
  "modelFamily": "gpt"
50514
51238
  },
@@ -50596,6 +51320,13 @@
50596
51320
  },
50597
51321
  "unsupportedParameters": [],
50598
51322
  "status": "candidate",
51323
+ "promptCacheKey": {
51324
+ "value": true,
51325
+ "source": "official-doc",
51326
+ "confidence": "declared",
51327
+ "observedAt": "2026-09-25T19:30:00Z",
51328
+ "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\"."
51329
+ },
50599
51330
  "canonicalModelId": "gpt-4.1-nano",
50600
51331
  "modelFamily": "gpt"
50601
51332
  },
@@ -50676,6 +51407,13 @@
50676
51407
  },
50677
51408
  "unsupportedParameters": [],
50678
51409
  "status": "candidate",
51410
+ "promptCacheKey": {
51411
+ "value": true,
51412
+ "source": "official-doc",
51413
+ "confidence": "declared",
51414
+ "observedAt": "2026-09-25T19:30:00Z",
51415
+ "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\"."
51416
+ },
50679
51417
  "canonicalModelId": "gpt-4o",
50680
51418
  "modelFamily": "gpt"
50681
51419
  },
@@ -50756,6 +51494,13 @@
50756
51494
  },
50757
51495
  "unsupportedParameters": [],
50758
51496
  "status": "candidate",
51497
+ "promptCacheKey": {
51498
+ "value": true,
51499
+ "source": "official-doc",
51500
+ "confidence": "declared",
51501
+ "observedAt": "2026-09-25T19:30:00Z",
51502
+ "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\"."
51503
+ },
50759
51504
  "canonicalModelId": "gpt-4o-2024-11-20",
50760
51505
  "modelFamily": "gpt"
50761
51506
  },
@@ -50836,6 +51581,13 @@
50836
51581
  },
50837
51582
  "unsupportedParameters": [],
50838
51583
  "status": "candidate",
51584
+ "promptCacheKey": {
51585
+ "value": true,
51586
+ "source": "official-doc",
51587
+ "confidence": "declared",
51588
+ "observedAt": "2026-09-25T19:30:00Z",
51589
+ "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\"."
51590
+ },
50839
51591
  "canonicalModelId": "gpt-4o-mini",
50840
51592
  "modelFamily": "gpt"
50841
51593
  },
@@ -50941,6 +51693,34 @@
50941
51693
  },
50942
51694
  "unsupportedParameters": [],
50943
51695
  "status": "candidate",
51696
+ "promptCacheKey": {
51697
+ "value": true,
51698
+ "source": "official-doc",
51699
+ "confidence": "declared",
51700
+ "observedAt": "2026-09-25T19:30:00Z",
51701
+ "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\"."
51702
+ },
51703
+ "clientToolSearch": {
51704
+ "value": true,
51705
+ "source": "official-doc",
51706
+ "confidence": "declared",
51707
+ "observedAt": "2026-09-26T00:00:00Z",
51708
+ "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."
51709
+ },
51710
+ "additionalToolsItem": {
51711
+ "value": true,
51712
+ "source": "official-doc",
51713
+ "confidence": "declared",
51714
+ "observedAt": "2026-09-26T00:00:00Z",
51715
+ "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."
51716
+ },
51717
+ "allowedToolsChoice": {
51718
+ "value": true,
51719
+ "source": "official-doc",
51720
+ "confidence": "declared",
51721
+ "observedAt": "2026-09-26T00:00:00Z",
51722
+ "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."
51723
+ },
50944
51724
  "canonicalModelId": "gpt-5.4",
50945
51725
  "modelFamily": "gpt"
50946
51726
  },
@@ -51053,6 +51833,34 @@
51053
51833
  },
51054
51834
  "unsupportedParameters": [],
51055
51835
  "status": "candidate",
51836
+ "promptCacheKey": {
51837
+ "value": true,
51838
+ "source": "official-doc",
51839
+ "confidence": "declared",
51840
+ "observedAt": "2026-09-25T19:30:00Z",
51841
+ "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\"."
51842
+ },
51843
+ "clientToolSearch": {
51844
+ "value": true,
51845
+ "source": "official-doc",
51846
+ "confidence": "declared",
51847
+ "observedAt": "2026-09-26T00:00:00Z",
51848
+ "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."
51849
+ },
51850
+ "additionalToolsItem": {
51851
+ "value": true,
51852
+ "source": "official-doc",
51853
+ "confidence": "declared",
51854
+ "observedAt": "2026-09-26T00:00:00Z",
51855
+ "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."
51856
+ },
51857
+ "allowedToolsChoice": {
51858
+ "value": true,
51859
+ "source": "official-doc",
51860
+ "confidence": "declared",
51861
+ "observedAt": "2026-09-26T00:00:00Z",
51862
+ "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."
51863
+ },
51056
51864
  "canonicalModelId": "gpt-5.4-mini",
51057
51865
  "modelFamily": "gpt"
51058
51866
  },
@@ -51165,6 +51973,34 @@
51165
51973
  },
51166
51974
  "unsupportedParameters": [],
51167
51975
  "status": "candidate",
51976
+ "promptCacheKey": {
51977
+ "value": true,
51978
+ "source": "official-doc",
51979
+ "confidence": "declared",
51980
+ "observedAt": "2026-09-25T19:30:00Z",
51981
+ "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\"."
51982
+ },
51983
+ "clientToolSearch": {
51984
+ "value": true,
51985
+ "source": "official-doc",
51986
+ "confidence": "declared",
51987
+ "observedAt": "2026-09-26T00:00:00Z",
51988
+ "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."
51989
+ },
51990
+ "additionalToolsItem": {
51991
+ "value": true,
51992
+ "source": "official-doc",
51993
+ "confidence": "declared",
51994
+ "observedAt": "2026-09-26T00:00:00Z",
51995
+ "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."
51996
+ },
51997
+ "allowedToolsChoice": {
51998
+ "value": true,
51999
+ "source": "official-doc",
52000
+ "confidence": "declared",
52001
+ "observedAt": "2026-09-26T00:00:00Z",
52002
+ "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."
52003
+ },
51168
52004
  "canonicalModelId": "gpt-5.4-nano",
51169
52005
  "modelFamily": "gpt"
51170
52006
  },
@@ -51252,6 +52088,34 @@
51252
52088
  },
51253
52089
  "unsupportedParameters": [],
51254
52090
  "status": "candidate",
52091
+ "promptCacheKey": {
52092
+ "value": true,
52093
+ "source": "official-doc",
52094
+ "confidence": "declared",
52095
+ "observedAt": "2026-09-25T19:30:00Z",
52096
+ "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\"."
52097
+ },
52098
+ "clientToolSearch": {
52099
+ "value": true,
52100
+ "source": "official-doc",
52101
+ "confidence": "declared",
52102
+ "observedAt": "2026-09-26T00:00:00Z",
52103
+ "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."
52104
+ },
52105
+ "additionalToolsItem": {
52106
+ "value": true,
52107
+ "source": "official-doc",
52108
+ "confidence": "declared",
52109
+ "observedAt": "2026-09-26T00:00:00Z",
52110
+ "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."
52111
+ },
52112
+ "allowedToolsChoice": {
52113
+ "value": true,
52114
+ "source": "official-doc",
52115
+ "confidence": "declared",
52116
+ "observedAt": "2026-09-26T00:00:00Z",
52117
+ "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."
52118
+ },
51255
52119
  "canonicalModelId": "gpt-5.4-pro",
51256
52120
  "modelFamily": "gpt"
51257
52121
  },
@@ -51357,6 +52221,34 @@
51357
52221
  },
51358
52222
  "unsupportedParameters": [],
51359
52223
  "status": "candidate",
52224
+ "promptCacheKey": {
52225
+ "value": true,
52226
+ "source": "official-doc",
52227
+ "confidence": "declared",
52228
+ "observedAt": "2026-09-25T19:30:00Z",
52229
+ "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\"."
52230
+ },
52231
+ "clientToolSearch": {
52232
+ "value": true,
52233
+ "source": "official-doc",
52234
+ "confidence": "declared",
52235
+ "observedAt": "2026-09-26T00:00:00Z",
52236
+ "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."
52237
+ },
52238
+ "additionalToolsItem": {
52239
+ "value": true,
52240
+ "source": "official-doc",
52241
+ "confidence": "declared",
52242
+ "observedAt": "2026-09-26T00:00:00Z",
52243
+ "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."
52244
+ },
52245
+ "allowedToolsChoice": {
52246
+ "value": true,
52247
+ "source": "official-doc",
52248
+ "confidence": "declared",
52249
+ "observedAt": "2026-09-26T00:00:00Z",
52250
+ "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."
52251
+ },
51360
52252
  "canonicalModelId": "gpt-5.5",
51361
52253
  "modelFamily": "gpt"
51362
52254
  },
@@ -51451,6 +52343,34 @@
51451
52343
  },
51452
52344
  "unsupportedParameters": [],
51453
52345
  "status": "candidate",
52346
+ "promptCacheKey": {
52347
+ "value": true,
52348
+ "source": "official-doc",
52349
+ "confidence": "declared",
52350
+ "observedAt": "2026-09-25T19:30:00Z",
52351
+ "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\"."
52352
+ },
52353
+ "clientToolSearch": {
52354
+ "value": true,
52355
+ "source": "official-doc",
52356
+ "confidence": "declared",
52357
+ "observedAt": "2026-09-26T00:00:00Z",
52358
+ "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."
52359
+ },
52360
+ "additionalToolsItem": {
52361
+ "value": true,
52362
+ "source": "official-doc",
52363
+ "confidence": "declared",
52364
+ "observedAt": "2026-09-26T00:00:00Z",
52365
+ "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."
52366
+ },
52367
+ "allowedToolsChoice": {
52368
+ "value": true,
52369
+ "source": "official-doc",
52370
+ "confidence": "declared",
52371
+ "observedAt": "2026-09-26T00:00:00Z",
52372
+ "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."
52373
+ },
51454
52374
  "canonicalModelId": "gpt-5.5-pro",
51455
52375
  "modelFamily": "gpt"
51456
52376
  },
@@ -51565,6 +52485,34 @@
51565
52485
  },
51566
52486
  "unsupportedParameters": [],
51567
52487
  "status": "candidate",
52488
+ "promptCacheKey": {
52489
+ "value": true,
52490
+ "source": "official-doc",
52491
+ "confidence": "declared",
52492
+ "observedAt": "2026-09-25T19:30:00Z",
52493
+ "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\"."
52494
+ },
52495
+ "clientToolSearch": {
52496
+ "value": true,
52497
+ "source": "official-doc",
52498
+ "confidence": "declared",
52499
+ "observedAt": "2026-09-26T00:00:00Z",
52500
+ "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."
52501
+ },
52502
+ "additionalToolsItem": {
52503
+ "value": true,
52504
+ "source": "official-doc",
52505
+ "confidence": "declared",
52506
+ "observedAt": "2026-09-26T00:00:00Z",
52507
+ "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."
52508
+ },
52509
+ "allowedToolsChoice": {
52510
+ "value": true,
52511
+ "source": "official-doc",
52512
+ "confidence": "declared",
52513
+ "observedAt": "2026-09-26T00:00:00Z",
52514
+ "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."
52515
+ },
51568
52516
  "canonicalModelId": "gpt-5.6",
51569
52517
  "modelFamily": "gpt"
51570
52518
  },
@@ -51679,6 +52627,34 @@
51679
52627
  },
51680
52628
  "unsupportedParameters": [],
51681
52629
  "status": "candidate",
52630
+ "promptCacheKey": {
52631
+ "value": true,
52632
+ "source": "official-doc",
52633
+ "confidence": "declared",
52634
+ "observedAt": "2026-09-25T19:30:00Z",
52635
+ "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\"."
52636
+ },
52637
+ "clientToolSearch": {
52638
+ "value": true,
52639
+ "source": "official-doc",
52640
+ "confidence": "declared",
52641
+ "observedAt": "2026-09-26T00:00:00Z",
52642
+ "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."
52643
+ },
52644
+ "additionalToolsItem": {
52645
+ "value": true,
52646
+ "source": "official-doc",
52647
+ "confidence": "declared",
52648
+ "observedAt": "2026-09-26T00:00:00Z",
52649
+ "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."
52650
+ },
52651
+ "allowedToolsChoice": {
52652
+ "value": true,
52653
+ "source": "official-doc",
52654
+ "confidence": "declared",
52655
+ "observedAt": "2026-09-26T00:00:00Z",
52656
+ "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."
52657
+ },
51682
52658
  "canonicalModelId": "gpt-5.6-luna",
51683
52659
  "modelFamily": "gpt"
51684
52660
  },
@@ -51793,6 +52769,34 @@
51793
52769
  },
51794
52770
  "unsupportedParameters": [],
51795
52771
  "status": "candidate",
52772
+ "promptCacheKey": {
52773
+ "value": true,
52774
+ "source": "official-doc",
52775
+ "confidence": "declared",
52776
+ "observedAt": "2026-09-25T19:30:00Z",
52777
+ "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\"."
52778
+ },
52779
+ "clientToolSearch": {
52780
+ "value": true,
52781
+ "source": "official-doc",
52782
+ "confidence": "declared",
52783
+ "observedAt": "2026-09-26T00:00:00Z",
52784
+ "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."
52785
+ },
52786
+ "additionalToolsItem": {
52787
+ "value": true,
52788
+ "source": "official-doc",
52789
+ "confidence": "declared",
52790
+ "observedAt": "2026-09-26T00:00:00Z",
52791
+ "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."
52792
+ },
52793
+ "allowedToolsChoice": {
52794
+ "value": true,
52795
+ "source": "official-doc",
52796
+ "confidence": "declared",
52797
+ "observedAt": "2026-09-26T00:00:00Z",
52798
+ "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."
52799
+ },
51796
52800
  "canonicalModelId": "gpt-5.6-sol",
51797
52801
  "modelFamily": "gpt"
51798
52802
  },
@@ -51907,6 +52911,34 @@
51907
52911
  },
51908
52912
  "unsupportedParameters": [],
51909
52913
  "status": "candidate",
52914
+ "promptCacheKey": {
52915
+ "value": true,
52916
+ "source": "official-doc",
52917
+ "confidence": "declared",
52918
+ "observedAt": "2026-09-25T19:30:00Z",
52919
+ "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\"."
52920
+ },
52921
+ "clientToolSearch": {
52922
+ "value": true,
52923
+ "source": "official-doc",
52924
+ "confidence": "declared",
52925
+ "observedAt": "2026-09-26T00:00:00Z",
52926
+ "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."
52927
+ },
52928
+ "additionalToolsItem": {
52929
+ "value": true,
52930
+ "source": "official-doc",
52931
+ "confidence": "declared",
52932
+ "observedAt": "2026-09-26T00:00:00Z",
52933
+ "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."
52934
+ },
52935
+ "allowedToolsChoice": {
52936
+ "value": true,
52937
+ "source": "official-doc",
52938
+ "confidence": "declared",
52939
+ "observedAt": "2026-09-26T00:00:00Z",
52940
+ "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."
52941
+ },
51910
52942
  "canonicalModelId": "gpt-5.6-terra",
51911
52943
  "modelFamily": "gpt"
51912
52944
  },
@@ -52041,6 +53073,15 @@
52041
53073
  "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
53074
  "confidence": "declared",
52043
53075
  "observedAt": "2026-09-06T00:00:00Z"
53076
+ },
53077
+ "perMessageEffort": {
53078
+ "value": {
53079
+ "item": "configuration_update"
53080
+ },
53081
+ "source": "official-doc",
53082
+ "confidence": "declared",
53083
+ "observedAt": "2026-09-26T00:00:00Z",
53084
+ "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
53085
  }
52045
53086
  },
52046
53087
  "pricing": {
@@ -52057,6 +53098,34 @@
52057
53098
  },
52058
53099
  "unsupportedParameters": [],
52059
53100
  "status": "candidate",
53101
+ "promptCacheKey": {
53102
+ "value": true,
53103
+ "source": "official-doc",
53104
+ "confidence": "declared",
53105
+ "observedAt": "2026-09-25T19:30:00Z",
53106
+ "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\"."
53107
+ },
53108
+ "clientToolSearch": {
53109
+ "value": true,
53110
+ "source": "official-doc",
53111
+ "confidence": "declared",
53112
+ "observedAt": "2026-09-26T00:00:00Z",
53113
+ "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."
53114
+ },
53115
+ "additionalToolsItem": {
53116
+ "value": true,
53117
+ "source": "official-doc",
53118
+ "confidence": "declared",
53119
+ "observedAt": "2026-09-26T00:00:00Z",
53120
+ "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."
53121
+ },
53122
+ "allowedToolsChoice": {
53123
+ "value": true,
53124
+ "source": "official-doc",
53125
+ "confidence": "declared",
53126
+ "observedAt": "2026-09-26T00:00:00Z",
53127
+ "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."
53128
+ },
52060
53129
  "canonicalModelId": "gpt-6-astra",
52061
53130
  "modelFamily": "gpt"
52062
53131
  },
@@ -52192,6 +53261,15 @@
52192
53261
  "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
53262
  "confidence": "declared",
52194
53263
  "observedAt": "2026-09-06T00:00:00Z"
53264
+ },
53265
+ "perMessageEffort": {
53266
+ "value": {
53267
+ "item": "configuration_update"
53268
+ },
53269
+ "source": "official-doc",
53270
+ "confidence": "declared",
53271
+ "observedAt": "2026-09-26T00:00:00Z",
53272
+ "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
53273
  }
52196
53274
  },
52197
53275
  "pricing": {
@@ -52208,6 +53286,34 @@
52208
53286
  },
52209
53287
  "unsupportedParameters": [],
52210
53288
  "status": "candidate",
53289
+ "promptCacheKey": {
53290
+ "value": true,
53291
+ "source": "official-doc",
53292
+ "confidence": "declared",
53293
+ "observedAt": "2026-09-25T19:30:00Z",
53294
+ "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\"."
53295
+ },
53296
+ "clientToolSearch": {
53297
+ "value": true,
53298
+ "source": "official-doc",
53299
+ "confidence": "declared",
53300
+ "observedAt": "2026-09-26T00:00:00Z",
53301
+ "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."
53302
+ },
53303
+ "additionalToolsItem": {
53304
+ "value": true,
53305
+ "source": "official-doc",
53306
+ "confidence": "declared",
53307
+ "observedAt": "2026-09-26T00:00:00Z",
53308
+ "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."
53309
+ },
53310
+ "allowedToolsChoice": {
53311
+ "value": true,
53312
+ "source": "official-doc",
53313
+ "confidence": "declared",
53314
+ "observedAt": "2026-09-26T00:00:00Z",
53315
+ "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."
53316
+ },
52211
53317
  "canonicalModelId": "gpt-6-luna",
52212
53318
  "modelFamily": "gpt"
52213
53319
  },
@@ -52343,6 +53449,15 @@
52343
53449
  "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
53450
  "confidence": "declared",
52345
53451
  "observedAt": "2026-09-06T00:00:00Z"
53452
+ },
53453
+ "perMessageEffort": {
53454
+ "value": {
53455
+ "item": "configuration_update"
53456
+ },
53457
+ "source": "official-doc",
53458
+ "confidence": "declared",
53459
+ "observedAt": "2026-09-26T00:00:00Z",
53460
+ "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
53461
  }
52347
53462
  },
52348
53463
  "pricing": {
@@ -52359,6 +53474,34 @@
52359
53474
  },
52360
53475
  "unsupportedParameters": [],
52361
53476
  "status": "candidate",
53477
+ "promptCacheKey": {
53478
+ "value": true,
53479
+ "source": "official-doc",
53480
+ "confidence": "declared",
53481
+ "observedAt": "2026-09-25T19:30:00Z",
53482
+ "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\"."
53483
+ },
53484
+ "clientToolSearch": {
53485
+ "value": true,
53486
+ "source": "official-doc",
53487
+ "confidence": "declared",
53488
+ "observedAt": "2026-09-26T00:00:00Z",
53489
+ "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."
53490
+ },
53491
+ "additionalToolsItem": {
53492
+ "value": true,
53493
+ "source": "official-doc",
53494
+ "confidence": "declared",
53495
+ "observedAt": "2026-09-26T00:00:00Z",
53496
+ "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."
53497
+ },
53498
+ "allowedToolsChoice": {
53499
+ "value": true,
53500
+ "source": "official-doc",
53501
+ "confidence": "declared",
53502
+ "observedAt": "2026-09-26T00:00:00Z",
53503
+ "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."
53504
+ },
52362
53505
  "canonicalModelId": "gpt-6-sol",
52363
53506
  "modelFamily": "gpt"
52364
53507
  },
@@ -52461,6 +53604,13 @@
52461
53604
  },
52462
53605
  "unsupportedParameters": [],
52463
53606
  "status": "candidate",
53607
+ "promptCacheKey": {
53608
+ "value": true,
53609
+ "source": "official-doc",
53610
+ "confidence": "declared",
53611
+ "observedAt": "2026-09-25T19:30:00Z",
53612
+ "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\"."
53613
+ },
52464
53614
  "canonicalModelId": "o3",
52465
53615
  "modelFamily": "o-series"
52466
53616
  },
@@ -52555,6 +53705,13 @@
52555
53705
  },
52556
53706
  "unsupportedParameters": [],
52557
53707
  "status": "candidate",
53708
+ "promptCacheKey": {
53709
+ "value": true,
53710
+ "source": "official-doc",
53711
+ "confidence": "declared",
53712
+ "observedAt": "2026-09-25T19:30:00Z",
53713
+ "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\"."
53714
+ },
52558
53715
  "canonicalModelId": "o3-mini",
52559
53716
  "modelFamily": "o-series"
52560
53717
  },
@@ -52702,6 +53859,13 @@
52702
53859
  },
52703
53860
  "unsupportedParameters": [],
52704
53861
  "status": "candidate",
53862
+ "promptCacheKey": {
53863
+ "value": true,
53864
+ "source": "official-doc",
53865
+ "confidence": "declared",
53866
+ "observedAt": "2026-09-25T19:30:00Z",
53867
+ "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\"."
53868
+ },
52705
53869
  "canonicalModelId": "o4-mini",
52706
53870
  "modelFamily": "o-series"
52707
53871
  },
@@ -72972,7 +74136,8 @@
72972
74136
  "grok-4.20-non-reasoning-gv2"
72973
74137
  ],
72974
74138
  "endpoints": [
72975
- "chat"
74139
+ "chat",
74140
+ "responses"
72976
74141
  ],
72977
74142
  "contextWindow": {
72978
74143
  "value": 1000000,
@@ -73067,7 +74232,8 @@
73067
74232
  "grok-4.20-reasoning-gv2"
73068
74233
  ],
73069
74234
  "endpoints": [
73070
- "chat"
74235
+ "chat",
74236
+ "responses"
73071
74237
  ],
73072
74238
  "contextWindow": {
73073
74239
  "value": 1000000,
@@ -73132,7 +74298,7 @@
73132
74298
  "observedAt": "2026-09-25T08:40:00Z"
73133
74299
  },
73134
74300
  "efforts": [],
73135
- "continuation": "none"
74301
+ "continuation": "opaque-provider-state"
73136
74302
  },
73137
74303
  "pricing": {
73138
74304
  "value": {
@@ -73150,6 +74316,111 @@
73150
74316
  "canonicalModelId": "grok-4.20-0309-reasoning",
73151
74317
  "modelFamily": "grok"
73152
74318
  },
74319
+ {
74320
+ "key": "xai/grok-4.20-multi-agent-0309",
74321
+ "providerId": "xai",
74322
+ "upstreamId": "grok-4.20-multi-agent-0309",
74323
+ "displayName": "Grok 4.20 Multi-Agent Beta",
74324
+ "aliases": [
74325
+ "grok-4.20-multi-agent",
74326
+ "grok-4.20-multi-agent-latest",
74327
+ "grok-4.20-multi-agent-beta-latest",
74328
+ "grok-4.20-multi-agent-experimental-beta-0304",
74329
+ "grok-4.20-multi-agent-experimental-beta-latest",
74330
+ "grok-4.20-multi-agent-beta-0309"
74331
+ ],
74332
+ "endpoints": [
74333
+ "responses"
74334
+ ],
74335
+ "contextWindow": {
74336
+ "value": 1000000,
74337
+ "source": "official-doc",
74338
+ "sourceRef": "https://docs.x.ai/developers/models/grok-4.20-multi-agent-0309 — model page context window 1,000,000 tokens",
74339
+ "confidence": "declared",
74340
+ "observedAt": "2026-09-25T08:40:00Z"
74341
+ },
74342
+ "inputModalities": {
74343
+ "value": [
74344
+ "text",
74345
+ "image"
74346
+ ],
74347
+ "source": "official-doc",
74348
+ "sourceRef": "https://docs.x.ai/developers/models/grok-4.20-multi-agent-0309 — model page Modalities: Text, Image input",
74349
+ "confidence": "declared",
74350
+ "observedAt": "2026-09-25T08:40:00Z"
74351
+ },
74352
+ "outputModalities": {
74353
+ "value": [
74354
+ "text"
74355
+ ],
74356
+ "source": "official-doc",
74357
+ "sourceRef": "https://docs.x.ai/developers/models/grok-4.20-multi-agent-0309 — model page Modalities: Text output",
74358
+ "confidence": "declared",
74359
+ "observedAt": "2026-09-25T08:40:00Z"
74360
+ },
74361
+ "toolCalling": {
74362
+ "value": "none",
74363
+ "source": "official-doc",
74364
+ "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",
74365
+ "confidence": "declared",
74366
+ "observedAt": "2026-09-25T08:40:00Z"
74367
+ },
74368
+ "nativeTools": {
74369
+ "value": false,
74370
+ "source": "official-doc",
74371
+ "sourceRef": "https://docs.x.ai/developers/model-capabilities/text/multi-agent — client-side/custom function tools unsupported",
74372
+ "confidence": "declared",
74373
+ "observedAt": "2026-09-25T08:40:00Z"
74374
+ },
74375
+ "structuredOutput": {
74376
+ "value": true,
74377
+ "source": "official-doc",
74378
+ "sourceRef": "https://docs.x.ai/developers/models/grok-4.20-multi-agent-0309 — model page Structured outputs capability",
74379
+ "confidence": "declared",
74380
+ "observedAt": "2026-09-25T08:40:00Z"
74381
+ },
74382
+ "promptCaching": {
74383
+ "value": true,
74384
+ "source": "official-doc",
74385
+ "sourceRef": "https://docs.x.ai/developers/models/grok-4.20-multi-agent-0309 — model page lists Cached tokens input rate; prompt caching available",
74386
+ "confidence": "declared",
74387
+ "observedAt": "2026-09-25T08:40:00Z"
74388
+ },
74389
+ "reasoning": {
74390
+ "supported": {
74391
+ "value": true,
74392
+ "source": "official-doc",
74393
+ "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",
74394
+ "confidence": "declared",
74395
+ "observedAt": "2026-09-25T08:40:00Z"
74396
+ },
74397
+ "efforts": [
74398
+ "low",
74399
+ "medium",
74400
+ "high",
74401
+ "xhigh"
74402
+ ],
74403
+ "continuation": "opaque-provider-state"
74404
+ },
74405
+ "pricing": {
74406
+ "value": {
74407
+ "inputPerMTokUsd": 1.25,
74408
+ "outputPerMTokUsd": 2.5,
74409
+ "cacheReadPerMTokUsd": 0.2
74410
+ },
74411
+ "source": "official-doc",
74412
+ "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).",
74413
+ "confidence": "declared",
74414
+ "observedAt": "2026-09-25T17:09:48Z"
74415
+ },
74416
+ "unsupportedParameters": [
74417
+ "max_output_tokens",
74418
+ "tools"
74419
+ ],
74420
+ "status": "candidate",
74421
+ "canonicalModelId": "grok-4.20-multi-agent-0309",
74422
+ "modelFamily": "grok"
74423
+ },
73153
74424
  {
73154
74425
  "key": "xai/grok-4.3",
73155
74426
  "providerId": "xai",
@@ -73159,7 +74430,8 @@
73159
74430
  "grok-4.3-latest"
73160
74431
  ],
73161
74432
  "endpoints": [
73162
- "chat"
74433
+ "chat",
74434
+ "responses"
73163
74435
  ],
73164
74436
  "contextWindow": {
73165
74437
  "value": 1000000,
@@ -73230,7 +74502,7 @@
73230
74502
  "high",
73231
74503
  "xhigh"
73232
74504
  ],
73233
- "continuation": "plaintext",
74505
+ "continuation": "opaque-provider-state",
73234
74506
  "defaultEffort": "low"
73235
74507
  },
73236
74508
  "pricing": {
@@ -73259,7 +74531,8 @@
73259
74531
  "grok-build-latest"
73260
74532
  ],
73261
74533
  "endpoints": [
73262
- "chat"
74534
+ "chat",
74535
+ "responses"
73263
74536
  ],
73264
74537
  "contextWindow": {
73265
74538
  "value": 500000,
@@ -73328,7 +74601,7 @@
73328
74601
  "medium",
73329
74602
  "high"
73330
74603
  ],
73331
- "continuation": "plaintext",
74604
+ "continuation": "opaque-provider-state",
73332
74605
  "defaultEffort": "high"
73333
74606
  },
73334
74607
  "pricing": {
@@ -73358,7 +74631,8 @@
73358
74631
  "displayName": "Grok 4.6",
73359
74632
  "aliases": [],
73360
74633
  "endpoints": [
73361
- "chat"
74634
+ "chat",
74635
+ "responses"
73362
74636
  ],
73363
74637
  "contextWindow": {
73364
74638
  "value": 500000,
@@ -73428,7 +74702,7 @@
73428
74702
  "high",
73429
74703
  "xhigh"
73430
74704
  ],
73431
- "continuation": "plaintext",
74705
+ "continuation": "opaque-provider-state",
73432
74706
  "defaultEffort": "high"
73433
74707
  },
73434
74708
  "pricing": {
@@ -73458,7 +74732,8 @@
73458
74732
  "displayName": "Grok 4.7",
73459
74733
  "aliases": [],
73460
74734
  "endpoints": [
73461
- "chat"
74735
+ "chat",
74736
+ "responses"
73462
74737
  ],
73463
74738
  "contextWindow": {
73464
74739
  "value": 500000,
@@ -73528,8 +74803,29 @@
73528
74803
  "high",
73529
74804
  "xhigh"
73530
74805
  ],
73531
- "continuation": "plaintext",
73532
- "defaultEffort": "high"
74806
+ "continuation": "opaque-provider-state",
74807
+ "defaultEffort": "high",
74808
+ "readableState": {
74809
+ "value": "summary",
74810
+ "source": "official-doc",
74811
+ "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\", … }]`",
74812
+ "confidence": "declared",
74813
+ "observedAt": "2026-09-25T17:09:48Z"
74814
+ },
74815
+ "summaryRequest": {
74816
+ "value": {
74817
+ "field": "reasoning.summary",
74818
+ "values": [
74819
+ "detailed",
74820
+ "auto",
74821
+ "concise"
74822
+ ]
74823
+ },
74824
+ "source": "official-doc",
74825
+ "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",
74826
+ "confidence": "declared",
74827
+ "observedAt": "2026-09-25T17:09:48Z"
74828
+ }
73533
74829
  },
73534
74830
  "pricing": {
73535
74831
  "value": {
@@ -73562,7 +74858,8 @@
73562
74858
  "grok-code-fast-1-0825"
73563
74859
  ],
73564
74860
  "endpoints": [
73565
- "chat"
74861
+ "chat",
74862
+ "responses"
73566
74863
  ],
73567
74864
  "contextWindow": {
73568
74865
  "value": 256000,
@@ -73627,7 +74924,7 @@
73627
74924
  "observedAt": "2026-09-25T08:40:00Z"
73628
74925
  },
73629
74926
  "efforts": [],
73630
- "continuation": "none"
74927
+ "continuation": "opaque-provider-state"
73631
74928
  },
73632
74929
  "pricing": {
73633
74930
  "value": {