Skip to content

feat(openrouter): add new models [bot]#1012

Merged
harshiv-26 merged 4 commits into
mainfrom
bot/add-openrouter-20260513-000515
May 13, 2026
Merged

feat(openrouter): add new models [bot]#1012
harshiv-26 merged 4 commits into
mainfrom
bot/add-openrouter-20260513-000515

Conversation

@models-bot
Copy link
Copy Markdown
Contributor

@models-bot models-bot Bot commented May 13, 2026

Auto-generated by model-addition-agent for provider openrouter.


Note

Low Risk
Low risk: adds new OpenRouter model definition YAMLs without modifying runtime logic; main risk is incorrect metadata (costs/limits/features) impacting pricing or capability selection.

Overview
Adds two new OpenRouter model definition YAMLs: anthropic/claude-opus-4.7-fast and perceptron/perceptron-mk1.

Each config declares pricing, context/output limits, modalities, and supported features (e.g., prompt caching/tooling for Claude; structured output for Perceptron), and marks both models as active chat serverless offerings with thinking: true.

Reviewed by Cursor Bugbot for commit c3f4d06. Bugbot is set up for automated code reviews on this repo. Configure here.

@github-actions
Copy link
Copy Markdown
Contributor

/test-models

@harshiv-26
Copy link
Copy Markdown
Collaborator

Gateway test results

  • Total: 16
  • Passed: 14
  • Failed: 2
  • Validation failed: 0
  • Errored: 0
  • Skipped: 0
  • Success rate: 87.5%
Provider Model Scenarios
openrouter anthropic/claude-opus-4.7-fast success: params:text-text, tool-call:text-text:stream, params:text-text:stream, tool-call:text-text, structured-output:text-text, structured-output:text-text:stream, reasoning:text-text, reasoning:text-text:stream

failure: json-output:text-text, json-output:text-text:stream
openrouter perceptron/perceptron-mk1 success: params:text-text:stream, params:text-text, structured-output:text-text:stream, structured-output:text-text, reasoning:text-text, reasoning:text-text:stream
Failures (2)

openrouter/anthropic/claude-opus-4.7-fast — json-output:text-text (failure)

Error:

Traceback (most recent call last):
  File "/tmp/tmpmvi0l0wh/snippet.py", line 22, in <module>
    _json.loads(_content)
  File "/usr/local/lib/python3.11/json/__init__.py", line 346, in loads
    return _default_decoder.decode(s)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Code snippet
from openai import OpenAI

client = OpenAI(api_key="***", base_url="https://internal.devtest.truefoundry.tech/api/llm")

response = client.chat.completions.create(
    model="test-v2-openrouter/anthropic-claude-opus-4.7-fast",
    messages=[
        {"role": "user", "content": "List 3 colors with their hex codes in JSON."},
    ],
    response_format={"type": "json_object"},
    stream=False,
)

import json as _json

_content = response.choices[0].message.content
print(_content)

if not _content:
    raise Exception("VALIDATION FAILED: json-output - response content is empty")

_json.loads(_content)
print("VALIDATION: json-output SUCCESS")

openrouter/anthropic/claude-opus-4.7-fast — json-output:text-text:stream (failure)

Error:

Traceback (most recent call last):
  File "/tmp/tmp6i89h6k3/snippet.py", line 27, in <module>
    _json.loads(_accumulated)
  File "/usr/local/lib/python3.11/json/__init__.py", line 346, in loads
    return _default_decoder.decode(s)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Code snippet
from openai import OpenAI

client = OpenAI(api_key="***", base_url="https://internal.devtest.truefoundry.tech/api/llm")

response = client.chat.completions.create(
    model="test-v2-openrouter/anthropic-claude-opus-4.7-fast",
    messages=[
        {"role": "user", "content": "List 3 colors with their hex codes in JSON."},
    ],
    response_format={"type": "json_object"},
    stream=True,
)

import json as _json

_accumulated = ""
for chunk in response:
    if chunk.choices and len(chunk.choices) > 0:
        delta = chunk.choices[0].delta
        if delta.content is not None:
            _accumulated += delta.content
            print(delta.content, end="", flush=True)

if not _accumulated:
    raise Exception("VALIDATION FAILED: json-output stream - no content received")

_json.loads(_accumulated)
print("\nVALIDATION: json-output stream SUCCESS")

Copy link
Copy Markdown

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit a7945cf. Configure here.

Comment thread providers/openrouter/anthropic/claude-opus-4.7-fast.yaml
@github-actions
Copy link
Copy Markdown
Contributor

/test-models

@harshiv-26
Copy link
Copy Markdown
Collaborator

Gateway test results

  • Total: 16
  • Passed: 14
  • Failed: 2
  • Validation failed: 0
  • Errored: 0
  • Skipped: 0
  • Success rate: 87.5%
Provider Model Scenarios
openrouter anthropic/claude-opus-4.7-fast success: tool-call:text-text, params:text-text:stream, structured-output:text-text, params:text-text, structured-output:text-text:stream, tool-call:text-text:stream, reasoning:text-text, reasoning:text-text:stream

failure: json-output:text-text, json-output:text-text:stream
openrouter perceptron/perceptron-mk1 success: params:text-text:stream, structured-output:text-text:stream, structured-output:text-text, params:text-text, reasoning:text-text, reasoning:text-text:stream
Failures (2)

openrouter/anthropic/claude-opus-4.7-fast — json-output:text-text (failure)

Error:

Traceback (most recent call last):
  File "/tmp/tmp5ik9tqmf/snippet.py", line 22, in <module>
    _json.loads(_content)
  File "/usr/local/lib/python3.11/json/__init__.py", line 346, in loads
    return _default_decoder.decode(s)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Code snippet
from openai import OpenAI

client = OpenAI(api_key="***", base_url="https://internal.devtest.truefoundry.tech/api/llm")

response = client.chat.completions.create(
    model="test-v2-openrouter/anthropic-claude-opus-4.7-fast",
    messages=[
        {"role": "user", "content": "List 3 colors with their hex codes in JSON."},
    ],
    response_format={"type": "json_object"},
    stream=False,
)

import json as _json

_content = response.choices[0].message.content
print(_content)

if not _content:
    raise Exception("VALIDATION FAILED: json-output - response content is empty")

_json.loads(_content)
print("VALIDATION: json-output SUCCESS")

openrouter/anthropic/claude-opus-4.7-fast — json-output:text-text:stream (failure)

Error:

Traceback (most recent call last):
  File "/tmp/tmpdcjyvu3g/snippet.py", line 27, in <module>
    _json.loads(_accumulated)
  File "/usr/local/lib/python3.11/json/__init__.py", line 346, in loads
    return _default_decoder.decode(s)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Code snippet
from openai import OpenAI

client = OpenAI(api_key="***", base_url="https://internal.devtest.truefoundry.tech/api/llm")

response = client.chat.completions.create(
    model="test-v2-openrouter/anthropic-claude-opus-4.7-fast",
    messages=[
        {"role": "user", "content": "List 3 colors with their hex codes in JSON."},
    ],
    response_format={"type": "json_object"},
    stream=True,
)

import json as _json

_accumulated = ""
for chunk in response:
    if chunk.choices and len(chunk.choices) > 0:
        delta = chunk.choices[0].delta
        if delta.content is not None:
            _accumulated += delta.content
            print(delta.content, end="", flush=True)

if not _accumulated:
    raise Exception("VALIDATION FAILED: json-output stream - no content received")

_json.loads(_accumulated)
print("\nVALIDATION: json-output stream SUCCESS")

@harshiv-26 harshiv-26 enabled auto-merge (squash) May 13, 2026 11:46
@github-actions
Copy link
Copy Markdown
Contributor

/test-models

@harshiv-26 harshiv-26 merged commit d312d7d into main May 13, 2026
8 checks passed
@harshiv-26 harshiv-26 deleted the bot/add-openrouter-20260513-000515 branch May 13, 2026 11:47
@harshiv-26
Copy link
Copy Markdown
Collaborator

Gateway test results

  • Total: 16
  • Passed: 14
  • Failed: 2
  • Validation failed: 0
  • Errored: 0
  • Skipped: 0
  • Success rate: 87.5%
Provider Model Scenarios
openrouter anthropic/claude-opus-4.7-fast success: params:text-text:stream, structured-output:text-text:stream, structured-output:text-text, params:text-text, tool-call:text-text:stream, tool-call:text-text, reasoning:text-text, reasoning:text-text:stream

failure: json-output:text-text, json-output:text-text:stream
openrouter perceptron/perceptron-mk1 success: params:text-text:stream, structured-output:text-text:stream, params:text-text, structured-output:text-text, reasoning:text-text, reasoning:text-text:stream
Failures (2)

openrouter/anthropic/claude-opus-4.7-fast — json-output:text-text (failure)

Error:

Traceback (most recent call last):
  File "/tmp/tmplk9c5g6e/snippet.py", line 22, in <module>
    _json.loads(_content)
  File "/usr/local/lib/python3.11/json/__init__.py", line 346, in loads
    return _default_decoder.decode(s)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Code snippet
from openai import OpenAI

client = OpenAI(api_key="***", base_url="https://internal.devtest.truefoundry.tech/api/llm")

response = client.chat.completions.create(
    model="test-v2-openrouter/anthropic-claude-opus-4.7-fast",
    messages=[
        {"role": "user", "content": "List 3 colors with their hex codes in JSON."},
    ],
    response_format={"type": "json_object"},
    stream=False,
)

import json as _json

_content = response.choices[0].message.content
print(_content)

if not _content:
    raise Exception("VALIDATION FAILED: json-output - response content is empty")

_json.loads(_content)
print("VALIDATION: json-output SUCCESS")

openrouter/anthropic/claude-opus-4.7-fast — json-output:text-text:stream (failure)

Error:

Traceback (most recent call last):
  File "/tmp/tmpybqdofuw/snippet.py", line 27, in <module>
    _json.loads(_accumulated)
  File "/usr/local/lib/python3.11/json/__init__.py", line 346, in loads
    return _default_decoder.decode(s)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Code snippet
from openai import OpenAI

client = OpenAI(api_key="***", base_url="https://internal.devtest.truefoundry.tech/api/llm")

response = client.chat.completions.create(
    model="test-v2-openrouter/anthropic-claude-opus-4.7-fast",
    messages=[
        {"role": "user", "content": "List 3 colors with their hex codes in JSON."},
    ],
    response_format={"type": "json_object"},
    stream=True,
)

import json as _json

_accumulated = ""
for chunk in response:
    if chunk.choices and len(chunk.choices) > 0:
        delta = chunk.choices[0].delta
        if delta.content is not None:
            _accumulated += delta.content
            print(delta.content, end="", flush=True)

if not _accumulated:
    raise Exception("VALIDATION FAILED: json-output stream - no content received")

_json.loads(_accumulated)
print("\nVALIDATION: json-output stream SUCCESS")

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.

1 participant