genmux API is now generally available. Read the docs →
genmux API

Measured reliability

What works, what does not

Function calling is emulated by genmux — the tools are rendered into the system prompt and the reply is parsed back into OpenAI tool_calls — so the honest list matters more than a checkbox.

FeatureStatus
tools, tool_choice, tool_calls, role: toolworksOn the models flagged tools: true (listed above); ≤ 128 tools, ≤ 64 KiB of definitions. Other models answer 400 tools_unsupported.
Streamed tool callsworksdelta.tool_calls chunks exactly as OpenAI emits them, finish_reason tool_calls.
JSON modeworksresponse_format json_object and json_schema, validated on non-streamed replies with one automatic retry; cannot be combined with tools.
OpenAI error envelopeworks{"error": {message, type, code, param, request_id}} on the chat route, so client retry logic recognises rate limits and quota.
Large max_tokensworksValues above the model's max_output_tokens are clamped, not rejected. Default reply budget on the tool models is 8192 tokens.
tool_choice: required / named functionpartialAn instruction the model usually follows; small models occasionally answer in prose instead. Agents retry, so in practice this is rare.
Parallel tool callspartialModels usually emit one call per turn; parallel_tool_calls is accepted and ignored. Agents loop, so the task still completes.
n > 1, logprobs, legacy functionsnot yetRejected with 400 unsupported_parameter. stream_options, seed, user, metadata, store and logit_bias are accepted and ignored.
Claude Code, Codex CLInot yetThey speak the Anthropic Messages and OpenAI Responses APIs, which the endpoint does not serve yet — coming soon.

Measured reliability

20 agent-style tasks per model through the real API on September 7, 2026: file writes with multi-line code and Unicode, shell commands with quotes, nested arguments, forced and forbidden tool choice, a full tool round-trip and a streamed write.

Every model handles the basic loop — call, result, answer, streamed or not. The misses were model behaviour, mostly ignoring tool_choice: required, not parsing. We re-run the set before every release and keep a model on the list only above 90 %.

Tool calling in the API reference →

Start with a key

Sign up, create a key in the dashboard, paste one of the configs above. The first request is billed on actual tokens — no subscription and no seat.

Image generation in your assistant: the MCP server →