code.verboo.ai router: 400 invalid request on role:"tool" messages for minimax-m3, glm-4.7-flash, qwen3.6-27b
Status Open
Maintainer reply None cached
Activity 0 comments · opened Aug 5, 2026
Summary
The OpenAI-compatible router at https://code.verboo.ai/router/v1/chat/completions returns HTTP 400 {"code":"unclassified","error":"invalid request"} for any request that contains a role:"tool" message when the model is minimax-m3, glm-4.7-flash, or qwen3.6-27b. The identical payload succeeds on glm-5.2, kimi-k2.7, deepseek-v4-flash, deepseek-v4-pro, mimo-v2.5, mimo-v2.5-pro.
This breaks agent frameworks (e.g. Hermes Agent) that rely on tool-call round-trips for those three models: every real agent session fails on the first tool result.
Isolation
For minimax-m3:
toolsarray alone → 200- assistant message with
tool_calls(no tool message) → 200 - any message with
role:"tool"→ 400 (regardless of content type: plain string, JSON string, or even without a preceding assistant tool_calls)
Repro
import json, os, urllib.request, urllib.error
KEY = os.environ["VERBOO_ULTRA_API_KEY"] # set your own key
URL = "https://code.verboo.ai/router/v1/chat/completions"
tools = [{"type":"function","function":{"name":"f_hi","description":"say hi",
"parameters":{"type":"object","properties":{}}}}]
msgs = [
{"role":"user","content":"call a tool"},
{"role":"assistant","content":"","tool_calls":[
{"id":"call_x","type":"function","function":{"name":"f_hi","arguments":"{}"}}]},
{"role":"tool","tool_call_id":"call_x","content":"done"},
]
for model in ["minimax-m3","glm-4.7-flash","qwen3.6-27b","glm-5.2","deepseek-v4-flash"]:
req = urllib.request.Request(URL, data=json.dumps(
{"model": model, "messages": msgs, "tools": tools}).encode(),
headers={"Authorization": f"Bearer {KEY}", "Content-Type": "application/json"})
try:
with urllib.request.urlopen(req, timeout=30) as r:
print(model, "->", r.status)
except urllib.error.HTTPError as e:
print(model, "->", e.code, e.read().decode()[:120])
Expected output: 200 for all models. Actual: 400 invalid request for the first three.
Notes
- Error body is a generic
invalid requestwith no detail about which field is rejected, so clients can't self-diagnose. - All three failing models are listed by
GET /models, so they look fully supported.
Environment
- Tested 2026-08-04 against
https://code.verboo.ai/router/v1 - Key type:
VERBOO_ULTRA_API_KEY(vbk_ultra_...)