SPB Git

spb/zyquo-agent Public MIT

The autonomous agent that actually operates your Mac — plans, runs real commands, verifies its own work.

Swift 94.7% Shell 4.1% Python 0.7% Makefile 0.5%
9.1 KB

# Provider Tool-Calling Verification — 2026-07-30

Phase 7.1 live sweep (ZyquoAgent --verify): every agent-capable model receives the list_files tool schema, must emit a valid tool call (streamed), consume the threaded tool_result, and produce a final answer naming the listed files.

80 models tested · 77 green · 3 failed (all 3 failures are provider-side — see the classification at the bottom)

This table merges the full pass-1 sweep with the per-provider re-runs performed after the two client fixes below (each fixed model was re-verified green live):

  • OpenAI GPT-5.4/5.5/5.6: /chat/completions rejects function tools combined with any reasoning_effort other than "none" — the client now downgrades reasoning_effort to "none" whenever tools are attached for these models (OpenAICompatibleClient.buildBody).
  • Gemini 3.x (compat endpoint): tool calls carry an extra_content.google.thought_signature that MUST be echoed back verbatim when the call is threaded into history, or Gemini rejects the request (INVALID_ARGUMENT: Function call is missing a thought_signature). ToolCall now carries the opaque signature; the client captures it from streaming fragments / non-streaming entries and re-attaches it on assistant tool_calls.
Provider Model Tool call Threading Streaming Latency Notes
OpenAI gpt-5.6-sol 3.0s pass 1 ❌ (tools+reasoning_effort rejected); green after client fix
OpenAI gpt-5.6-terra 1.4s pass 1 ❌ (tools+reasoning_effort rejected); green after client fix
OpenAI gpt-5.6-luna 1.6s pass 1 ❌ (tools+reasoning_effort rejected); green after client fix
OpenAI gpt-5.5 4.1s pass 1 ❌ (tools+reasoning_effort rejected); green after client fix
OpenAI gpt-5.4 1.8s pass 1 ❌ (tools+reasoning_effort rejected); green after client fix
OpenAI gpt-5.4-mini 0.9s pass 1 ❌ (tools+reasoning_effort rejected); green after client fix
OpenAI gpt-5.2 3.3s
OpenAI gpt-5.1 1.6s
OpenAI gpt-5 2.4s
OpenAI gpt-5-mini 2.1s
OpenAI o3 1.3s
OpenAI o4-mini 1.2s
Anthropic claude-opus-5 3.9s
Anthropic claude-sonnet-5 4.0s
Anthropic claude-fable-5 7.5s
Anthropic claude-opus-4-8 3.2s
Anthropic claude-opus-4-7 3.2s
Anthropic claude-opus-4-6 6.1s
Anthropic claude-sonnet-4-6 4.1s
Anthropic claude-haiku-4-5-20251001 1.6s
xAI grok-4.5 2.5s
xAI grok-4.3 4.5s
xAI grok-4.20 4.9s
xAI grok-4.20-non-reasoning 1.2s
xAI grok-code-fast-1 5.3s
Mistral mistral-medium-latest 1.4s
Mistral mistral-large-latest 3.7s
Mistral mistral-small-latest 0.9s
Google Gemini gemini-3.6-flash 2.1s pass 1 ❌ (thought_signature missing on threading); green after client fix
Google Gemini gemini-3.5-flash 2.0s pass 1 ❌ (thought_signature); green after client fix
Google Gemini gemini-3.5-flash-lite 1.0s pass 1 ❌ (thought_signature); green after client fix
Google Gemini gemini-3.1-pro-preview 3.9s pass 1 ❌ (thought_signature); green after client fix
Google Gemini gemini-2.5-pro 3.3s
Google Gemini gemini-2.5-flash 1.3s
Google Gemini gemini-pro-latest 4.2s alias of Gemini 3.x; pass 1 ❌ (thought_signature); green after client fix
Google Gemini gemini-flash-latest 1.5s alias of Gemini 3.x; pass 1 ❌ (thought_signature); green after client fix
Alibaba Qwen qwen3.7-max 3.0s
Alibaba Qwen qwen3.7-plus 2.6s
Alibaba Qwen qwen3.7-flash 1.6s
Alibaba Qwen qwen3.6-plus 2.2s
Alibaba Qwen qwen3.5-plus 2.0s
Alibaba Qwen qwen3-coder-plus 2.1s
Alibaba Qwen qwen3-coder-flash 2.0s
Alibaba Qwen qwen3-coder-next 2.3s
Alibaba Qwen qwen3-coder-480b-a35b-instruct 2.6s
Alibaba Qwen qwen3.5-397b-a17b 1.9s
Alibaba Qwen deepseek-v4-pro 4.6s
Alibaba Qwen glm-5.2 2.1s
DeepSeek deepseek-v4-flash 2.5s
DeepSeek deepseek-v4-pro 3.2s
Kimi kimi-k3 100.5s INFRA: HTTP 429 engine_overloaded_error on most requests during the sweep window (reproduced with raw curl in every request shape; intermittent 200s prove the key/tier is fine). One harness attempt DID emit a correct list_files call, so the wire format is right — Moonshot capacity issue; re-verify when the engine recovers
Kimi kimi-k2.7-code 2.3s
Kimi kimi-k2.7-code-highspeed 1.8s
Kimi kimi-k2.6 5.1s
Kimi kimi-k2.5 4.8s
Together AI moonshotai/Kimi-K3 19.0s slow first token (reasoning)
Together AI moonshotai/Kimi-K2.7-Code 1.6s
Together AI deepseek-ai/DeepSeek-V4-Pro 1.6s
Together AI zai-org/GLM-5.2 1.2s
Together AI Qwen/Qwen3.7-Max 4.6s
Together AI openai/gpt-oss-120b 2.2s
Together AI nvidia/nemotron-3-ultra-550b-a55b 1.2s
Together AI MiniMaxAI/MiniMax-M3 6.1s
DeepInfra anthropic/claude-fable-5 6.3s
DeepInfra anthropic/claude-opus-5 5.6s
DeepInfra anthropic/claude-sonnet-5 7.1s
DeepInfra anthropic/claude-opus-4-8 4.1s
DeepInfra anthropic/claude-haiku-4-5 2.3s
DeepInfra google/gemini-3.1-pro 4.0s SERVER-SIDE: step 1 works, but DeepInfra never returns Gemini's thought_signature and strips extra_content from requests (verified with raw probes, incl. Google's documented bypass placeholder) → Google rejects every threaded tool result with INVALID_ARGUMENT. Multi-turn tool use is impossible through DeepInfra — REMOVAL CANDIDATE (the same model is green via the native Gemini provider)
DeepInfra google/gemini-3.5-flash 2.3s SERVER-SIDE: same as google/gemini-3.1-pro — thought_signature dropped by DeepInfra; REMOVAL CANDIDATE
DeepInfra deepseek-ai/DeepSeek-V4-Pro 4.1s
DeepInfra deepseek-ai/DeepSeek-V4-Flash 3.3s
DeepInfra moonshotai/Kimi-K2.7-Code 2.2s
DeepInfra zai-org/GLM-5.2 3.1s
DeepInfra Qwen/Qwen3.7-Max 4.7s
DeepInfra Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo 0.8s
DeepInfra openai/gpt-oss-120b 2.6s
DeepInfra MiniMaxAI/MiniMax-M3 3.0s
Cerebras gpt-oss-120b 1.4s
Cerebras gemma-4-31b 0.6s

# Failure classification

Model Class Evidence / disposition
deepinfra google/gemini-3.1-pro Broken server-side DeepInfra never emits thought_signature and drops extra_content on requests; Gemini 3 requires it for threaded tool calls. No client-side workaround exists (Google's documented placeholder is also stripped). Recommend removing from the agent-capable set — the identical models are green via the native Gemini provider.
deepinfra google/gemini-3.5-flash Broken server-side Same as above. Recommend removing from the agent-capable set.
kimi kimi-k3 Infra (provider capacity) HTTP 429 engine_overloaded_error on most requests during the sweep window, reproduced with raw curl in every request shape; intermittent 200s prove the key/tier is fine and one harness attempt did emit a correct list_files call. Not a wire-format or capability failure — keep in the set, re-verify when Moonshot capacity recovers.

No model id in the agent-capable set was rejected as nonexistent/deprecated, and no model failed tool calling because of model capability — every ❌ above is provider-side.