Skip to content

Add Claude Opus 4.7 to model list#1282

Merged
tawnymanticore merged 3 commits intomainfrom
claude/slack-session-8OBVl
Apr 16, 2026
Merged

Add Claude Opus 4.7 to model list#1282
tawnymanticore merged 3 commits intomainfrom
claude/slack-session-8OBVl

Conversation

@tawnymanticore
Copy link
Copy Markdown
Collaborator

@tawnymanticore tawnymanticore commented Apr 16, 2026

What does this PR do?

Adds Anthropic's new Claude Opus 4.7 to the model list with both Anthropic and OpenRouter providers. Inherits config from Opus 4.6 (json_schema structured output, vision, doc extraction, suggested for evals/data gen), with the model_id updated to claude-opus-4-7 (Anthropic) and anthropic/claude-opus-4.7 (OpenRouter).

A new thinking levels constant CLAUDE_OPUS_4_7_ANTHROPIC_THINKING_LEVELS was added to support the new xhigh and max effort levels that are exclusive to Opus 4.7 on the Anthropic API (existing CLAUDE_ANTHROPIC_EFFORT_THINKING_LEVELS is still used by older Claude models with only low/medium/high). Levels were sourced from Anthropic's effort docs, which explicitly list low, medium, high, xhigh, max for Opus 4.7. The OpenRouter provider continues to use CLAUDE_OPENROUTER_THINKING_LEVELS (which already included xhigh).

Zero-sum swap applied in a follow-up commit: featured_rank=2, editorial_notes, suggested_for_evals, and suggested_for_data_gen were removed from Opus 4.6 since Opus 4.7 now carries them. The suggested/featured count across the Claude Opus family is unchanged.

Test Results

The Anthropic suite was re-run end-to-end with ANTHROPIC_API_KEY set (the original PR couldn't run them and reported all anthropic tests as ❌ env-auth failures — those are now real PASS/FAIL results below). All five Anthropic thinking levels (low, medium, high, xhigh, max) executed against the live API and passed, validating the new CLAUDE_OPUS_4_7_ANTHROPIC_THINKING_LEVELS constant. PDF extraction and image extraction (PNG, JPEG) also passed on the Anthropic provider.

Two ⚠️ results worth noting. (1) test_data_gen_sample_all_models_providers_with_structured_output[claude_opus_4_7-anthropic] failed twice in the parallel runs with "value is not of type 'array'" — the model returned a JSON string inside the generated_samples field instead of an array. Run individually it passes immediately; this is a content-quality flake under structured_output_mode="unknown", not a config issue. (2) test_all_built_in_models_llm_as_judge[claude_opus_4_7-openrouter] fails with output_config.format.schema: For 'integer' type, properties maximum, minimum are not supported — a known Anthropic-via-OpenRouter schema constraint that also fails on Opus 4.6 (openrouter), so this is pre-existing, not a 4.7 regression.

Claude Opus 4.7 (openrouter):

  • 21 passed, 14 skipped, 1 failed (pre-existing OpenRouter+Anthropic schema constraint, also fails on Opus 4.6)
  • All thinking levels (none, minimal, low, medium, high, xhigh) passed

Claude Opus 4.7 (anthropic):

  • 19 passed, 9 skipped (MIME types not supported — expected), 1 ⚠️ flake
  • All thinking levels (low, medium, high, xhigh, max) passed
  • PDF and image extraction passed

Claude Opus 4.7 (openrouter):
✅ test_data_gen_all_models_providers[claude_opus_4_7-openrouter]
✅ test_data_gen_sample_all_models_providers[claude_opus_4_7-openrouter]
✅ test_data_gen_sample_all_models_providers_with_structured_output[claude_opus_4_7-openrouter]
✅ test_all_built_in_models_structured_output[claude_opus_4_7-openrouter]
✅ test_all_built_in_models_structured_input[claude_opus_4_7-openrouter]
✅ test_structured_output_cot_prompt_builder[claude_opus_4_7-openrouter]
✅ test_structured_input_cot_prompt_builder[claude_opus_4_7-openrouter]
✅ test_all_models_providers_plaintext[claude_opus_4_7-openrouter]
✅ test_cot_prompt_builder[claude_opus_4_7-openrouter]
✅ test_tools_all_built_in_models[claude_opus_4_7-openrouter]
✅ test_supports_vision_is_coherent[claude_opus_4_7-openrouter]
✅ test_provider_bad_request[claude_opus_4_7-openrouter]
✅ test_extract_document_success[image/png-text_probe5-claude_opus_4_7-openrouter]
✅ test_extract_document_success[image/jpeg-text_probe6-claude_opus_4_7-openrouter]
✅ test_extract_document_success[image/jpeg-text_probe7-claude_opus_4_7-openrouter]
✅ test_thinking_level_reasoning_content[ModelProviderName.openrouter/claude_opus_4_7/none]
✅ test_thinking_level_reasoning_content[ModelProviderName.openrouter/claude_opus_4_7/minimal]
✅ test_thinking_level_reasoning_content[ModelProviderName.openrouter/claude_opus_4_7/low]
✅ test_thinking_level_reasoning_content[ModelProviderName.openrouter/claude_opus_4_7/medium]
✅ test_thinking_level_reasoning_content[ModelProviderName.openrouter/claude_opus_4_7/high]
✅ test_thinking_level_reasoning_content[ModelProviderName.openrouter/claude_opus_4_7/xhigh]
⚠️ test_all_built_in_models_llm_as_judge[claude_opus_4_7-openrouter] — pre-existing OpenRouter+Anthropic schema constraint (min/max on integer not supported); same test also fails on claude_opus_4_6-openrouter, not a 4.7 regression

Claude Opus 4.7 (anthropic):
✅ test_data_gen_all_models_providers[claude_opus_4_7-anthropic]
✅ test_data_gen_sample_all_models_providers[claude_opus_4_7-anthropic]
✅ test_all_built_in_models_llm_as_judge[claude_opus_4_7-anthropic]
✅ test_all_built_in_models_structured_output[claude_opus_4_7-anthropic]
✅ test_all_built_in_models_structured_input[claude_opus_4_7-anthropic]
✅ test_structured_output_cot_prompt_builder[claude_opus_4_7-anthropic]
✅ test_structured_input_cot_prompt_builder[claude_opus_4_7-anthropic]
✅ test_all_models_providers_plaintext[claude_opus_4_7-anthropic]
✅ test_cot_prompt_builder[claude_opus_4_7-anthropic]
✅ test_tools_all_built_in_models[claude_opus_4_7-anthropic]
✅ test_supports_vision_is_coherent[claude_opus_4_7-anthropic]
✅ test_provider_bad_request[claude_opus_4_7-anthropic]
✅ test_extract_document_success[application/pdf-text_probe0-claude_opus_4_7-anthropic]
✅ test_extract_document_success[image/png-text_probe5-claude_opus_4_7-anthropic]
✅ test_extract_document_success[image/jpeg-text_probe6-claude_opus_4_7-anthropic]
✅ test_extract_document_success[image/jpeg-text_probe7-claude_opus_4_7-anthropic]
✅ test_thinking_level_reasoning_content[ModelProviderName.anthropic/claude_opus_4_7/low]
✅ test_thinking_level_reasoning_content[ModelProviderName.anthropic/claude_opus_4_7/medium]
✅ test_thinking_level_reasoning_content[ModelProviderName.anthropic/claude_opus_4_7/high]
✅ test_thinking_level_reasoning_content[ModelProviderName.anthropic/claude_opus_4_7/xhigh]
✅ test_thinking_level_reasoning_content[ModelProviderName.anthropic/claude_opus_4_7/max]
⚠️ test_data_gen_sample_all_models_providers_with_structured_output[claude_opus_4_7-anthropic] — content flake under structured_output_mode="unknown" (model returned a stringified JSON inside generated_samples instead of the array); passes on individual re-run

Checklists

  • Tests have been run locally and passed (Anthropic suite re-run with API key; OpenRouter suite passed)
  • New tests have been added to any work in /lib

Slack thread: https://getkiln.slack.com/archives/C0AG8U78MNG/p1776354187525959

Summary by CodeRabbit

  • New Features
    • Added Claude Opus 4.7 with extended thinking levels, including Extra High and Max, available via Anthropic and OpenRouter.
    • Restored Claude Opus 4.6 as a distinct option alongside 4.7.
    • OpenRouter multimodal support expanded to accept PDF (in addition to TXT, MD, JPG, PNG) with improved PDF-as-image handling.

Adds Anthropic's new Opus 4.7 model with both Anthropic and OpenRouter
providers. Introduces CLAUDE_OPUS_4_7_ANTHROPIC_THINKING_LEVELS to
support the new "xhigh" and "max" effort levels exclusive to Opus 4.7.
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Apr 16, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 897443a7-5c35-408d-99d7-6e9acea98606

📥 Commits

Reviewing files that changed from the base of the PR and between f968e0e and 3be434d.

📒 Files selected for processing (1)
  • libs/core/kiln_ai/adapters/ml_model_list.py
🚧 Files skipped from review as they are similar to previous changes (1)
  • libs/core/kiln_ai/adapters/ml_model_list.py

📝 Walkthrough

Walkthrough

Adds ModelName.claude_opus_4_7, a new CLAUDE_OPUS_4_7_ANTHROPIC_THINKING_LEVELS mapping (includes xhigh, max), and registers KilnModel entries for Claude Opus 4.7 and a reintroduced 4.6 with provider-specific IDs, thinking-level configs, and multimodal MIME settings in libs/core/kiln_ai/adapters/ml_model_list.py.

Changes

Cohort / File(s) Summary
Claude Opus model registry
libs/core/kiln_ai/adapters/ml_model_list.py
Added ModelName.claude_opus_4_7; introduced CLAUDE_OPUS_4_7_ANTHROPIC_THINKING_LEVELS (adds xhigh, max); updated built-in KilnModel entries to target Opus 4.7 (Anthropic/OpenRouter model_ids), added PDF to OpenRouter multimodal MIME types and multimodal_requires_pdf_as_image=True; re-added Opus 4.6 as a separate KilnModel entry with its own provider IDs and multimodal MIME list.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Suggested reviewers

  • sfierro
  • leonardmq
  • scosman
  • chiang-daniel

Poem

🐰 I hopped through lines with nimble cheer,
New Opus voices now appear,
Two extra levels for thoughts to climb,
PDFs join multimodal time,
Kiln’s garden grows—now code and carrot near. 🥕✨

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and specifically identifies the main change: adding Claude Opus 4.7 to the model list, which aligns with the PR's primary objective.
Description check ✅ Passed The description comprehensively covers the PR objectives, implementation details, test results, and includes required checklist items, though the CLA statement is missing.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/slack-session-8OBVl

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 16, 2026

📊 Coverage Report

Overall Coverage: 91%

Diff: origin/main...HEAD

No lines with coverage information in this diff.


Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request adds support for the Claude Opus 4.7 model, including its entry in the ModelName enum, a new set of thinking levels for the Anthropic provider, and the model definition for both OpenRouter and Anthropic providers. Feedback suggests ensuring the OpenRouter provider supports the full range of thinking levels, adding PDF support to the OpenRouter provider's multimodal types, and adjusting the featured_rank to avoid conflicts with older models.

Comment thread libs/core/kiln_ai/adapters/ml_model_list.py
Comment on lines +1939 to +1944
multimodal_mime_types=[
KilnMimeType.TXT,
KilnMimeType.MD,
KilnMimeType.JPG,
KilnMimeType.PNG,
],
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

The openrouter provider for Claude Opus 4.7 is missing KilnMimeType.PDF in its multimodal_mime_types. Since the anthropic provider includes it (line 1959) and Claude Opus models support document extraction, it should be added here as well for consistency. Additionally, following the pattern of other recent Claude models on OpenRouter (like Sonnet 4.6 at line 1785), multimodal_requires_pdf_as_image=True should likely be set.

Suggested change
multimodal_mime_types=[
KilnMimeType.TXT,
KilnMimeType.MD,
KilnMimeType.JPG,
KilnMimeType.PNG,
],
multimodal_mime_types=[
KilnMimeType.PDF,
KilnMimeType.TXT,
KilnMimeType.MD,
KilnMimeType.JPG,
KilnMimeType.PNG,
],
multimodal_requires_pdf_as_image=True,

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

trying it out now

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Addressed in 3be434d — added KilnMimeType.PDF and multimodal_requires_pdf_as_image=True to the OpenRouter provider. PDF extraction test passed on re-run (test_extract_document_success[application/pdf-text_probe0-claude_opus_4_7-openrouter]).


Generated by Claude Code

Comment thread libs/core/kiln_ai/adapters/ml_model_list.py
Opus 4.7 now carries featured_rank=2, editorial_notes, suggested_for_evals,
and suggested_for_data_gen. Removing the same flags from Opus 4.6 keeps the
suggested/featured count stable across the Claude Opus family.

https://claude.ai/code/session_01Xnfzt91McoMdqaiRv1g6xg
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
libs/core/kiln_ai/adapters/ml_model_list.py (1)

1919-2010: Consider extracting shared Claude Opus provider config to reduce drift risk.

Lines 1919-2010 duplicate large provider blocks between claude_opus_4_7 and claude_opus_4_6. Centralizing shared MIME lists (or shared provider defaults) would make future Claude bumps safer and smaller.

♻️ Example refactor direction
+CLAUDE_OPUS_OPENROUTER_MIME_TYPES = [
+    KilnMimeType.TXT,
+    KilnMimeType.MD,
+    KilnMimeType.JPG,
+    KilnMimeType.PNG,
+]
+
+CLAUDE_OPUS_ANTHROPIC_MIME_TYPES = [
+    KilnMimeType.PDF,
+    KilnMimeType.TXT,
+    KilnMimeType.MD,
+    KilnMimeType.JPG,
+    KilnMimeType.PNG,
+]
...
                 multimodal_mime_types=[
-                    KilnMimeType.TXT,
-                    KilnMimeType.MD,
-                    KilnMimeType.JPG,
-                    KilnMimeType.PNG,
+                    *CLAUDE_OPUS_OPENROUTER_MIME_TYPES,
                 ],
...
                 multimodal_mime_types=[
-                    KilnMimeType.PDF,
-                    KilnMimeType.TXT,
-                    KilnMimeType.MD,
-                    KilnMimeType.JPG,
-                    KilnMimeType.PNG,
+                    *CLAUDE_OPUS_ANTHROPIC_MIME_TYPES,
                 ],
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@libs/core/kiln_ai/adapters/ml_model_list.py` around lines 1919 - 2010,
Extract the repeated Claude provider configuration into shared
constants/functions to avoid drift: factor out common multimodal_mime_types
lists (e.g. a constant like CLAUDE_COMMON_MULTIMODAL_MIME_TYPES using
KilnMimeType), and extract shared KilnModelProvider defaults into helper
factories (e.g. make_claude_openrouter_provider(...) and
make_claude_anthropic_provider(...)) that accept differing fields (model_id,
available_thinking_levels, default_thinking_level, temp_top_p_exclusive,
suggested flags). Replace the duplicated KilnModelProvider blocks in KilnModel
instances (claude_opus_4_7 and claude_opus_4_6) to call these helpers and reuse
the MIME and provider-default constants (referencing
ModelName.claude_opus_4_7/4_6, ModelProviderName.openrouter/anthropic, and
CLAUDE_OPENROUTER_THINKING_LEVELS/CLAUDE_ANTHROPIC_EFFORT_THINKING_LEVELS).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@libs/core/kiln_ai/adapters/ml_model_list.py`:
- Around line 1919-2010: Extract the repeated Claude provider configuration into
shared constants/functions to avoid drift: factor out common
multimodal_mime_types lists (e.g. a constant like
CLAUDE_COMMON_MULTIMODAL_MIME_TYPES using KilnMimeType), and extract shared
KilnModelProvider defaults into helper factories (e.g.
make_claude_openrouter_provider(...) and make_claude_anthropic_provider(...))
that accept differing fields (model_id, available_thinking_levels,
default_thinking_level, temp_top_p_exclusive, suggested flags). Replace the
duplicated KilnModelProvider blocks in KilnModel instances (claude_opus_4_7 and
claude_opus_4_6) to call these helpers and reuse the MIME and provider-default
constants (referencing ModelName.claude_opus_4_7/4_6,
ModelProviderName.openrouter/anthropic, and
CLAUDE_OPENROUTER_THINKING_LEVELS/CLAUDE_ANTHROPIC_EFFORT_THINKING_LEVELS).

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 3adfb455-0788-463c-9cc8-7e00d3fa82a1

📥 Commits

Reviewing files that changed from the base of the PR and between add1a4b and f968e0e.

📒 Files selected for processing (1)
  • libs/core/kiln_ai/adapters/ml_model_list.py

Copy link
Copy Markdown
Collaborator

@leonardmq leonardmq left a comment

Choose a reason for hiding this comment

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

Suspecting same as the bot about PDF

Adds KilnMimeType.PDF to multimodal_mime_types and sets
multimodal_requires_pdf_as_image=True (OpenRouter's PDF routing through
Mistral OCR breaks LiteLLM parsing, so PDFs must be sent as images).

https://claude.ai/code/session_01Xnfzt91McoMdqaiRv1g6xg
@tawnymanticore tawnymanticore merged commit d0a5855 into main Apr 16, 2026
14 checks passed
@tawnymanticore tawnymanticore deleted the claude/slack-session-8OBVl branch April 16, 2026 18:18
tawnymanticore added a commit that referenced this pull request Apr 16, 2026
* KIL-517 Fix misc spec builder bugs and improvements

Addresses 11 items: add X button to dismiss questions, preserve answers on
failed request, add Created At to spec details, allow whitespace while typing
spec names (trim on submit), add priority selector in advanced options, fix
autoselect badge persistence, rename FewShotSelector to TaskSampleSelector,
fine tune page max-width, add Re-run button for review examples, disable
copilot when full trace enabled, and add archive/unarchive to spec details.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Address Gemini review: use specific question numbers in validation messages

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Address CodeRabbit review: persist dismissed questions across remounts

Lift dismissed state to parent like selections/other_texts so dismissals
survive component remounts on API failures.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* KIL-522 Restore persisted model selection on Run page

Initialize model from ui_state store (localStorage) instead of empty
string so the previously selected model is restored on page load.
Also fix the saved-config dropdown to show "custom" immediately
instead of "Select an option" while configs load.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* KIL-522 Add one-shot guard to prevent default config from overriding intentional Custom selection

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* KIL-534 Add Feedback data model on TaskRun

Replace the single `user_feedback` string field on TaskRun with a proper
Feedback model that supports multiple feedback entries per run. Feedback
is a parented model under TaskRun, stored as separate files to avoid
write conflicts when multiple people provide feedback.

- Add Feedback model (feedback text + FeedbackSource enum)
- Make TaskRun a parent model with feedback children
- Remove user_feedback field from TaskRun
- Add REST API endpoints (list/create) for feedback on task runs
- Update copilot models, utils, and frontend spec builder
- Create follow-up ticket KIL-537 for repair UI replacement

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Add agent policy annotations for feedback API endpoints

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Revert unintended user_feedback renames in copilot code

The ticket only asked to remove user_feedback from TaskRun, not rename
it in the copilot/spec-builder code which uses it for a different purpose.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Remove misplaced annotation files, revert copilot renames

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Preserve feedback from spec review as Feedback children

When creating TaskRuns from reviewed examples in the copilot flow,
create Feedback children (with source=spec-feedback) after saving
the run, so review feedback is not lost.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* reverts

* KIL-537 Replace repair UI with feedback UI

Remove all repair UI code (repair form, repair edit form, repair
review/accept/delete flows) and replace with a new feedback UI that
uses the Feedback data model from KIL-534.

- Rename "Output Rating" to "Rating and Feedback"
- Add inline feedback list (up to 3, truncated) with "Add Feedback" link
- Add "All Feedback" modal with sortable table
- Add "Add Feedback" modal using FormContainer
- Delete output_repair_edit_form.svelte
- Remove model_name/provider/focus_repair_on_appear props from Run

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Address AI review feedback: race condition and submit loading state

- Add request ID tracking and run ID dedup to load_feedback to prevent
  race conditions and redundant requests when switching runs
- Set add_feedback_submitting = true at start of submit_feedback

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Show latest 3 feedbacks in inline preview instead of oldest

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* reverted some changes

* fixed add feedback dialog UI

* outline instead of bg for clickable area

* claude compatible mcp.json

* steveback

* policy anno

* Add Fireworks AI provider to GLM 5.1 (#1275)

https://getkiln.slack.com/archives/C0AG8U78MNG/p1776274097954549?thread_ts=1776273210.799549&cid=C0AG8U78MNG

Co-authored-by: Claude <noreply@anthropic.com>

* Add Grok 4.20 and Minimax M2.7 (Together AI) (#1269)

* Add Grok 4.20 and Minimax M2.7 TogetherAI provider

Added Grok 4.20 (OpenRouter) and TogetherAI provider for Minimax M2.7 to the model list.

https://claude.ai/code/session_01S77zSCTFnNW52JiCyWpBoV

* Remove reasoning flags from Grok 4.20

Other Grok models on OpenRouter don't set reasoning_capable=True.
The model doesn't reliably return reasoning, causing 5 test failures.
Removing to match the Kiln pattern for Grok on OpenRouter.

https://claude.ai/code/session_01S77zSCTFnNW52JiCyWpBoV

* Fix Minimax M2.7 Together AI structured output config

The json_schema mode was being ignored by M2.7 on Together AI (model
returned plain text instead of JSON). Switch to json_instruction_and_object
with reasoning_optional_for_structured_output and optional_r1_thinking
parser, matching the M2.5 Together AI config that works reliably.

https://claude.ai/code/session_01F1L5ryuY5t2MxQXbNVjQGj

---------

Co-authored-by: Claude <noreply@anthropic.com>

* Update add-model skill: lagging-provider checks and push-gate rules (#1281)

* Update SKILL.md

* Update SKILL.md

* Update SKILL.md

* CR

* Workaround for Claude Code web for using anthropic models in paid tests (#1283)

* Update SKILL.md

* Update SKILL.md

* Update SKILL.md

* CR

* Update SKILL.md

* Add Claude Opus 4.7 to model list (#1282)

* Add Claude Opus 4.7 to model list (anthropic, openrouter)

Adds Anthropic's new Opus 4.7 model with both Anthropic and OpenRouter
providers. Introduces CLAUDE_OPUS_4_7_ANTHROPIC_THINKING_LEVELS to
support the new "xhigh" and "max" effort levels exclusive to Opus 4.7.

* Apply zero-sum swap: demote Opus 4.6 from suggested/featured

Opus 4.7 now carries featured_rank=2, editorial_notes, suggested_for_evals,
and suggested_for_data_gen. Removing the same flags from Opus 4.6 keeps the
suggested/featured count stable across the Claude Opus family.

https://claude.ai/code/session_01Xnfzt91McoMdqaiRv1g6xg

* Add PDF support to OpenRouter provider for Opus 4.7

Adds KilnMimeType.PDF to multimodal_mime_types and sets
multimodal_requires_pdf_as_image=True (OpenRouter's PDF routing through
Mistral OCR breaks LiteLLM parsing, so PDFs must be sent as images).

https://claude.ai/code/session_01Xnfzt91McoMdqaiRv1g6xg

---------

Co-authored-by: Claude <noreply@anthropic.com>

---------

Co-authored-by: Sam Fierro <13154106+sfierro@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: scosman <scosman@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants