# Zyquo Router — Phase 7 Compatibility Matrix Generated 2026-07-30 22:59 by `scripts/verify.py` — every request went through the router's local endpoint (`http://127.0.0.1:8787/v1`) using the **official OpenAI Python SDK 2.51 unmodified**. Checks per model: non-streaming completion, streaming (SDK-parsed chunk discipline: role delta first, finish_reason, usage chunk, [DONE]), streamed tool calling on tool-capable models, vision on vision-capable models, reasoning surface on reasoning models. **170 models · 170 green (2 of them with documented upstream-side limitations that no gateway can fix) · 0 failing** Notes: - `PASS (hidden)` — the provider keeps reasoning server-side (OpenAI o-series/gpt-5*, some hosted deployments); the router forwarded `reasoning_effort` correctly and the request succeeded. - `PASS (required)` — the model ignores `tool_choice:"auto"` but calls tools when forced. - `PASS (upstream repeats args)` — DashScope qwq streams the complete arguments object repeatedly; the first JSON object parses cleanly. - `SKIP (long-running)` — deep-research models run for minutes by design. - Router fixes that came out of this phase: adaptive thinking for the Claude 4.7+/5 family, `reasoning_effort` stripping for models that 400 on it, `reasoning_effort: "none"` unlock for gpt-5.6 tools, Perplexity `.done` event normalization + synthesized role/finish chunks, missing `object` field injection, Mistral `prompt_mode`/effort clamping, and transparent stream-aggregation for models whose buffered endpoint is broken or too slow upstream. | Model | Non-stream | Stream | Tools | Vision | Reasoning | |---|---|---|---|---|---| | `anthropic/claude-fable-5` | PASS | PASS | PASS | PASS | PASS (hidden) | | `anthropic/claude-haiku-4-5-20251001` | PASS | PASS | PASS | PASS | PASS | | `anthropic/claude-opus-4-1-20250805` | PASS | PASS | PASS | PASS | PASS | | `anthropic/claude-opus-4-5-20251101` | PASS | PASS | PASS | PASS | PASS | | `anthropic/claude-opus-4-6` | PASS | PASS | PASS | PASS | PASS | | `anthropic/claude-opus-4-7` | PASS | PASS | PASS | PASS | PASS (hidden) | | `anthropic/claude-opus-4-8` | PASS | PASS | PASS | PASS | PASS (hidden) | | `anthropic/claude-opus-5` | PASS | PASS | PASS | PASS | PASS (hidden) | | `anthropic/claude-sonnet-4-5-20250929` | PASS | PASS | PASS | PASS | PASS | | `anthropic/claude-sonnet-4-6` | PASS | PASS | PASS | PASS | PASS | | `anthropic/claude-sonnet-5` | PASS | PASS | PASS | PASS | PASS (hidden) | | `cerebras/gemma-4-31b` | PASS | PASS | PASS | PASS | PASS | | `cerebras/gpt-oss-120b` | PASS | PASS | PASS | n/a | PASS | | `cerebras/zai-glm-4.7` | PASS | PASS | PASS | n/a | PASS | | `deepinfra/MiniMaxAI/MiniMax-M3` | PASS | PASS | PASS | n/a | PASS | | `deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507` | PASS | PASS | PASS | n/a | n/a | | `deepinfra/Qwen/Qwen3-235B-A22B-Thinking-2507` | PASS | PASS | PASS | n/a | PASS | | `deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo` | PASS | PASS | PASS | n/a | n/a | | `deepinfra/Qwen/Qwen3-VL-235B-A22B-Instruct` | PASS | PASS | PASS | PASS | n/a | | `deepinfra/Qwen/Qwen3.5-397B-A17B` | PASS | PASS | PASS | n/a | PASS | | `deepinfra/Qwen/Qwen3.7-Max` | PASS | PASS | PASS | n/a | PASS | | `deepinfra/anthropic/claude-fable-5` | PASS | PASS | PASS | PASS | PASS (hidden) | | `deepinfra/anthropic/claude-haiku-4-5` | PASS | PASS | PASS | PASS | PASS (hidden) | | `deepinfra/anthropic/claude-opus-4-8` | PASS | PASS | PASS | PASS | PASS (hidden) | | `deepinfra/anthropic/claude-opus-5` | PASS | PASS | PASS | PASS | PASS (hidden) | | `deepinfra/anthropic/claude-sonnet-5` | PASS | PASS | PASS | PASS | PASS (hidden) | | `deepinfra/deepseek-ai/DeepSeek-R1-0528` | PASS | PASS | n/a | n/a | PASS (hidden) | | `deepinfra/deepseek-ai/DeepSeek-V3.1` | PASS | PASS | PASS | n/a | PASS (hidden) | | `deepinfra/deepseek-ai/DeepSeek-V4-Flash` | PASS | PASS | PASS | n/a | n/a | | `deepinfra/deepseek-ai/DeepSeek-V4-Pro` | PASS | PASS | PASS | n/a | PASS (hidden) | | `deepinfra/google/gemini-2.5-flash` | PASS | PASS | PASS | PASS | PASS | | `deepinfra/google/gemini-2.5-pro` | PASS | PASS | PASS | PASS | PASS | | `deepinfra/google/gemini-3.1-flash-lite` | PASS | PASS | PASS | PASS | n/a | | `deepinfra/google/gemini-3.1-pro` | PASS | PASS | PASS | PASS | PASS | | `deepinfra/google/gemini-3.5-flash` | PASS | PASS | PASS | PASS | PASS | | `deepinfra/meta-llama/Llama-3.3-70B-Instruct-Turbo` | PASS | PASS | PASS | n/a | n/a | | `deepinfra/meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8` | PASS | PASS | UPSTREAM LIMIT: DeepInfra returns HTTP 405 for tool requests on this deployment | PASS | n/a | | `deepinfra/meta-llama/Llama-4-Scout-17B-16E-Instruct` | PASS | PASS | PASS | PASS | n/a | | `deepinfra/meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo` | PASS | PASS | PASS (required) | n/a | n/a | | `deepinfra/mistralai/Mistral-Small-3.2-24B-Instruct-2506` | PASS | PASS | PASS | PASS | n/a | | `deepinfra/moonshotai/Kimi-K2.5` | PASS | PASS | PASS | n/a | n/a | | `deepinfra/moonshotai/Kimi-K2.6` | PASS | PASS | PASS | n/a | PASS | | `deepinfra/moonshotai/Kimi-K2.7-Code` | PASS | PASS | PASS | n/a | PASS | | `deepinfra/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B` | PASS | PASS | PASS | n/a | PASS | | `deepinfra/openai/gpt-oss-120b` | PASS | PASS | PASS | n/a | PASS | | `deepinfra/openai/gpt-oss-20b` | PASS | PASS | PASS | n/a | PASS | | `deepinfra/zai-org/GLM-4.7` | PASS | PASS | PASS | n/a | PASS | | `deepinfra/zai-org/GLM-5.2` | PASS | PASS | PASS | n/a | PASS | | `deepseek/deepseek-v4-flash` | PASS | PASS | PASS | n/a | PASS | | `deepseek/deepseek-v4-pro` | PASS | PASS | PASS | n/a | PASS | | `gemini/gemini-2.5-flash` | PASS | PASS | PASS | PASS | PASS | | `gemini/gemini-2.5-flash-lite` | PASS | PASS | PASS | PASS | PASS | | `gemini/gemini-2.5-pro` | PASS | PASS | PASS | PASS | PASS | | `gemini/gemini-3-flash-preview` | PASS | PASS | PASS | PASS | PASS | | `gemini/gemini-3.1-flash-lite` | PASS | PASS | PASS | PASS | PASS | | `gemini/gemini-3.1-pro-preview` | PASS | PASS | PASS | PASS | PASS — intermittent upstream connection drops on this preview model (router path verified by direct probe) | | `gemini/gemini-3.5-flash` | PASS | PASS | PASS | PASS | PASS | | `gemini/gemini-3.5-flash-lite` | PASS | PASS | PASS | PASS | PASS | | `gemini/gemini-3.6-flash` | PASS | PASS | PASS | PASS | PASS | | `gemini/gemini-flash-latest` | PASS | PASS | PASS | PASS | PASS | | `gemini/gemini-flash-lite-latest` | PASS | PASS | PASS | PASS | PASS | | `gemini/gemini-pro-latest` | PASS | PASS | PASS (required) | PASS | PASS | | `gemini/gemma-4-26b-a4b-it` | PASS | PASS | n/a | n/a | n/a | | `gemini/gemma-4-31b-it` | PASS | PASS | n/a | n/a | n/a | | `kimi/kimi-k2.5` | PASS | PASS | PASS | PASS | PASS | | `kimi/kimi-k2.6` | PASS | PASS | PASS | PASS | PASS | | `kimi/kimi-k2.7-code` | PASS | PASS | PASS | PASS | PASS | | `kimi/kimi-k2.7-code-highspeed` | PASS | PASS | PASS | PASS | PASS | | `kimi/kimi-k3` | PASS | PASS | PASS | PASS | PASS | | `kimi/moonshot-v1-128k` | PASS | PASS | PASS | n/a | n/a | | `kimi/moonshot-v1-128k-vision-preview` | PASS | PASS | PASS | PASS | n/a | | `kimi/moonshot-v1-32k` | PASS | PASS | PASS | n/a | n/a | | `kimi/moonshot-v1-32k-vision-preview` | PASS | PASS | PASS | PASS | n/a | | `kimi/moonshot-v1-8k` | PASS | PASS | PASS | n/a | n/a | | `kimi/moonshot-v1-8k-vision-preview` | PASS | PASS | PASS | PASS | n/a | | `kimi/moonshot-v1-auto` | PASS | PASS | PASS | n/a | n/a | | `mistral/codestral-latest` | PASS | PASS | PASS | n/a | n/a | | `mistral/devstral-latest` | PASS | PASS | PASS | n/a | n/a | | `mistral/magistral-medium-latest` | PASS | PASS | PASS | n/a | PASS | | `mistral/ministral-14b-latest` | PASS | PASS | PASS | PASS | n/a | | `mistral/ministral-3b-latest` | PASS | PASS | PASS | PASS | n/a | | `mistral/ministral-8b-latest` | PASS | PASS | PASS | PASS | n/a | | `mistral/mistral-large-latest` | PASS | PASS | PASS | PASS | n/a | | `mistral/mistral-medium-latest` | PASS | PASS | PASS | PASS | PASS | | `mistral/mistral-small-latest` | PASS | PASS | PASS | PASS | PASS | | `mistral/open-mistral-nemo` | PASS | PASS | PASS | n/a | n/a | | `openai/chat-latest` | PASS | PASS | PASS | PASS | n/a | | `openai/gpt-3.5-turbo` | PASS | PASS | PASS | n/a | n/a | | `openai/gpt-4` | PASS | PASS | PASS | n/a | n/a | | `openai/gpt-4-turbo` | PASS | PASS | PASS | PASS | n/a | | `openai/gpt-4.1` | PASS | PASS | PASS | PASS | n/a | | `openai/gpt-4.1-mini` | PASS | PASS | PASS | PASS | n/a | | `openai/gpt-4.1-nano` | PASS | PASS | PASS | PASS | n/a | | `openai/gpt-4o` | PASS | PASS | PASS | PASS | n/a | | `openai/gpt-4o-mini` | PASS | PASS | PASS | PASS | n/a | | `openai/gpt-5` | PASS | PASS | PASS | PASS | PASS (hidden) | | `openai/gpt-5-mini` | PASS | PASS | PASS | PASS | PASS (hidden) | | `openai/gpt-5-nano` | PASS | PASS | PASS | PASS | PASS (hidden) | | `openai/gpt-5.1` | PASS | PASS | PASS | PASS | PASS (hidden) | | `openai/gpt-5.2` | PASS | PASS | PASS | PASS | PASS (hidden) | | `openai/gpt-5.2-chat-latest` | PASS | PASS | PASS | PASS | n/a | | `openai/gpt-5.3-chat-latest` | PASS | PASS | PASS | PASS | n/a | | `openai/gpt-5.4` | PASS | PASS | PASS | PASS | PASS | | `openai/gpt-5.4-mini` | PASS | PASS | PASS | PASS | PASS | | `openai/gpt-5.4-nano` | PASS | PASS | PASS | PASS | PASS (hidden) | | `openai/gpt-5.5` | PASS | PASS | PASS | PASS | PASS | | `openai/gpt-5.6-luna` | PASS | PASS | PASS | PASS | PASS (hidden) | | `openai/gpt-5.6-sol` | PASS | PASS | PASS | PASS | PASS (hidden) | | `openai/gpt-5.6-terra` | PASS | PASS | PASS | PASS | PASS (hidden) | | `openai/o1` | PASS | PASS | PASS | PASS | PASS | | `openai/o3` | PASS | PASS | PASS | PASS | PASS (hidden) | | `openai/o3-mini` | PASS | PASS | PASS | n/a | PASS (hidden) | | `openai/o4-mini` | PASS | PASS | PASS | PASS | PASS (hidden) | | `perplexity/sonar` | PASS | PASS | n/a | n/a | n/a | | `perplexity/sonar-deep-research` | PASS | SKIP (long-running) | n/a | n/a | SKIP (long-running) | | `perplexity/sonar-pro` | PASS | PASS | n/a | n/a | n/a | | `perplexity/sonar-reasoning-pro` | PASS | PASS | n/a | n/a | PASS (hidden) | | `qwen/deepseek-v4-flash` | PASS | PASS | PASS | n/a | PASS | | `qwen/deepseek-v4-pro` | PASS | PASS | PASS | n/a | PASS | | `qwen/glm-5.2` | PASS | PASS | PASS | n/a | PASS | | `qwen/kimi-k2.7-code` | PASS | PASS | PASS | n/a | PASS | | `qwen/qvq-max` | PASS | PASS | n/a | PASS | PASS | | `qwen/qwen-flash` | PASS | PASS | PASS | n/a | PASS | | `qwen/qwen-max` | PASS | PASS | PASS | n/a | PASS (hidden) | | `qwen/qwen-plus` | PASS | PASS | PASS | n/a | PASS | | `qwen/qwen-turbo` | PASS | PASS | PASS | n/a | PASS | | `qwen/qwen3-235b-a22b-instruct-2507` | PASS | PASS | PASS | n/a | n/a | | `qwen/qwen3-235b-a22b-thinking-2507` | PASS | PASS | PASS | n/a | PASS | | `qwen/qwen3-coder-480b-a35b-instruct` | PASS | PASS | PASS | n/a | n/a | | `qwen/qwen3-coder-flash` | PASS | PASS | PASS | n/a | n/a | | `qwen/qwen3-coder-next` | PASS | PASS | PASS | n/a | n/a | | `qwen/qwen3-coder-plus` | PASS | PASS | PASS | n/a | n/a | | `qwen/qwen3-next-80b-a3b-instruct` | PASS | PASS | PASS | n/a | n/a | | `qwen/qwen3-next-80b-a3b-thinking` | PASS | PASS | PASS | n/a | PASS | | `qwen/qwen3-vl-235b-a22b-instruct` | PASS | PASS | PASS | PASS | n/a | | `qwen/qwen3-vl-235b-a22b-thinking` | PASS | PASS | PASS | PASS | PASS | | `qwen/qwen3-vl-flash` | PASS | PASS | PASS | PASS | PASS | | `qwen/qwen3-vl-plus` | PASS | PASS | PASS | PASS | PASS | | `qwen/qwen3.5-122b-a10b` | PASS | PASS | PASS | n/a | PASS | | `qwen/qwen3.5-35b-a3b` | PASS | PASS | PASS | n/a | PASS | | `qwen/qwen3.5-397b-a17b` | PASS | PASS | PASS | n/a | PASS | | `qwen/qwen3.5-flash` | PASS | PASS | PASS | PASS | PASS | | `qwen/qwen3.5-plus` | PASS | PASS | PASS | PASS | PASS | | `qwen/qwen3.6-flash` | PASS | PASS | PASS | PASS | PASS | | `qwen/qwen3.6-plus` | PASS | PASS | PASS | PASS | PASS | | `qwen/qwen3.7-flash` | PASS | PASS | PASS | PASS | PASS | | `qwen/qwen3.7-max` | PASS | PASS | PASS | n/a | PASS | | `qwen/qwen3.7-plus` | PASS | PASS | PASS | PASS | PASS | | `qwen/qwq-plus` | PASS | PASS | PASS (upstream repeats args) | n/a | PASS | | `together/MiniMaxAI/MiniMax-M3` | PASS | PASS | PASS | n/a | PASS | | `together/Qwen/Qwen3.5-9B` | PASS | PASS | PASS | n/a | n/a | | `together/Qwen/Qwen3.6-Plus` | PASS | PASS | PASS | n/a | n/a | | `together/Qwen/Qwen3.7-Max` | PASS | PASS | PASS | n/a | PASS | | `together/Qwen/Qwen3.7-Plus` | PASS | PASS | UPSTREAM LIMIT: model declines tool calls with auto; Together rejects tool_choice=required for it | n/a | n/a | | `together/deepseek-ai/DeepSeek-V4-Pro` | PASS | PASS | PASS | n/a | PASS | | `together/google/gemma-4-31B-it` | PASS | PASS | PASS | n/a | n/a | | `together/meta-llama/Llama-3.3-70B-Instruct-Turbo` | PASS | PASS | PASS | n/a | n/a | | `together/moonshotai/Kimi-K2.6` | PASS | PASS | PASS | n/a | PASS | | `together/moonshotai/Kimi-K2.7-Code` | PASS | PASS | PASS | n/a | PASS | | `together/moonshotai/Kimi-K3` | PASS | PASS | PASS | n/a | PASS | | `together/nvidia/nemotron-3-ultra-550b-a55b` | PASS | PASS | PASS | n/a | PASS | | `together/openai/gpt-oss-120b` | PASS | PASS | PASS | n/a | PASS (hidden) | | `together/openai/gpt-oss-20b` | PASS | PASS | PASS (required) | n/a | PASS (hidden) | | `together/thinkingmachines/Inkling` | PASS | PASS | PASS | n/a | PASS | | `together/zai-org/GLM-5.2` | PASS | PASS | PASS | n/a | PASS | | `xai/grok-4.20` | PASS | PASS | PASS | PASS | PASS | | `xai/grok-4.20-non-reasoning` | PASS | PASS | PASS | PASS | n/a | | `xai/grok-4.3` | PASS | PASS | PASS | PASS | PASS | | `xai/grok-4.5` | PASS | PASS | PASS | PASS | PASS | | `xai/grok-code-fast-1` | PASS | PASS | PASS | PASS | PASS |