Compatibility matrix
This page is the current MUSCLE Flex by Adhibita behavior contract.
- PASS means the listed workflow passed on the named Flex build and client version.
- FAIL means it was tested and did not meet the acceptance criteria.
- EXCLUDED means Flex intentionally does not offer the behavior in the beta.
- Pending means it has not yet been run against the deployed beta. The note describes how the current build is designed to behave.
A similar field name or endpoint is not evidence of support.
Verification in progress
Only the coding-agent rows that read PASS have been verified on the deployed Flex beta. Do not rely on a Pending row until it reads PASS.
Recorded against: Flex builds 7819bd3b and b823556b, as each row names. First run: 2026-09-26, coding agents only. Re-run 2026-10-02 on build cce8ffca, coding agents only. A PASS is evidence about the build it names, not about later builds. The Re-verified on build column reads Not yet until a row is run again on a later build and passes.
A row reads PASS only after the exact configuration on this site passed on the named Flex build and client version: authentication, a non-streamed reply with its request ID, a streamed reply, and one tool call with its result sent back.
Request surfaces
Chat Completions
| Surface | Behavior | Status | Tested version | Notes |
|---|---|---|---|---|
| Chat Completions | Non-stream text | Pending | — | POST /v1/chat/completions. The same handler also answers POST /chat/completions. |
| Chat Completions | Stream text | Pending | — | Server-sent events of data: lines, ending with data: [DONE]. |
| Chat Completions | Function tools | Pending | — | tools of type: "function". Tool choice auto, required, none and a named function. |
| Chat Completions | Tool-result continuation | Pending | — | Send the tool result back as a tool message with the matching tool_call_id. |
| Chat Completions | reasoning_effort | Pending | — | low, medium and high only. Other values return 400 invalid_request_error. |
| Chat Completions | top_p, user | Pending | — | Accepted and ignored. |
| Chat Completions | parallel_tool_calls | Pending | — | Accepted and treated as true. |
| Chat Completions | n above 1, seed, logprobs | EXCLUDED | — | 400 unsupported_field. seed and logprobs fail with any value, even false, so omit them. n: 1 is accepted. |
| Chat Completions | frequency_penalty, presence_penalty | EXCLUDED | — | 400 unsupported_field for any value, even 0. Omit the fields. |
Responses
| Surface | Behavior | Status | Tested version | Notes |
|---|---|---|---|---|
| Responses | Non-stream text | Pending | — | POST /v1/responses only. There is no path without /v1. |
| Responses | Stream text | Pending | — | Responses stream events. |
| Responses | Function tools and continuation | Pending | — | Stateless: send the full input, including function_call_output items, every turn. |
| Responses | Stored responses and retrieval (store: true) | EXCLUDED | — | 400 unsupported_field. store: false is accepted. |
| Responses | Background responses | EXCLUDED | — | 400 unsupported_field. |
| Responses | Chaining with previous_response_id | EXCLUDED | — | 400 unsupported_field. Resend the conversation instead. |
| Responses | Hosted tools: web search, file search, code interpreter, computer use, image generation, MCP | EXCLUDED | — | 400 unsupported_field. Only function tools are offered. |
| Responses | Structured output through text.format | EXCLUDED | — | Not applied in the beta. The reply is free text and no error is returned. See Structured outputs. |
Anthropic Messages
| Surface | Behavior | Status | Tested version | Notes |
|---|---|---|---|---|
| Anthropic Messages | Non-stream text | Pending | — | POST /v1/messages and POST /messages. Auth by x-api-key or bearer token. |
| Anthropic Messages | Stream text | Pending | — | Anthropic event names, from message_start to message_stop. |
| Anthropic Messages | tool_use and tool_result | Pending | — | Client tools with an input_schema. |
| Anthropic Messages | Token counting | Pending | — | POST /v1/messages/count_tokens and POST /messages/count_tokens. |
| Anthropic Messages | Server-side tools, such as hosted web search | EXCLUDED | — | Not offered in the beta, and not rejected: Flex treats the tool as an ordinary client tool, so it never runs on the server and the model may return a tool_use for it. Remove server tools from requests. |
| Anthropic Messages | Structured output through output_format | EXCLUDED | — | Not applied in the beta. The reply is free text and no error is returned. See Structured outputs. |
Shared behavior
| Surface | Behavior | Status | Tested version | Notes |
|---|---|---|---|---|
| Shared | JSON mode and schema output (response_format) | EXCLUDED | — | Chat Completions and Responses return 400 unsupported_field for any value, even {"type": "text"}. Omit the field. Schema-constrained output is not offered in the beta. See Structured outputs. |
| Shared | Stop sequences (stop, stop_sequences) | Pending | — | Flex ends the reply before the first stop sequence on every route, streamed or not. Chat Completions reports finish_reason: "stop". Messages reports stop_reason: "stop_sequence" only when Flex finds the match; when the route stops first, it reports stop_reason: "end_turn" with stop_sequence: null. At most 16 stop sequences of up to 256 characters. Usage can include text generated after the stop. See Stop sequences. |
| Shared | Image and audio input | EXCLUDED | — | Not supported yet. An image or audio part anywhere in the request, a tool result included, fails it before routing with 400 unsupported_content; Flex never drops it. Send text only. See Images and audio. |
| Shared | Cancellation | Pending | — | Not yet tested. The charging boundary for a cancelled stream will be recorded here. |
| Shared | Long context | Pending | — | GET /v1/models reports the advertised context_length for muscle/auto. |
| Shared | Model list | Pending | — | GET /v1/models and GET /models list muscle/auto only; GET /v1/models/muscle/auto retrieves it. They need the API key. |
| Shared | Model id (model) | Pending | — | muscle/auto, or its short form auto, is routed. Model names that the supported agents and the official SDKs send on their own are routed the same way and echoed. Any other value returns 404 model_not_found before credits are held; a missing model returns 400 invalid_request_error. |
| Shared | Account check | Pending | — | GET /v1/account returns a read-only account summary with available credits. |
| Shared | Request ID | Pending | — | Every response carries X-Request-Id. |
| Shared | Client attribution headers (x-source, HTTP-Referer, X-Title) | Pending | — | Flex does not read them and does not pass them on. |
Coding agents
Each agent has a setup page. The status applies to the exact configuration on that page.
| Agent | Request shape | Setup | Status | Tested agent version | Tested Flex build | Re-verified on build | Notes |
|---|---|---|---|---|---|---|---|
| Claude Code | Anthropic Messages | Setup | PASS | 2.1.250 | 7819bd3b | cce8ffca | Base URL without /v1. Model set with ANTHROPIC_MODEL. Re-verified with 2.1.284. |
| Codex CLI | Responses | Setup | PASS | 0.144.1 | 7819bd3b | cce8ffca | wire_api = "responses", hosted web search disabled. Re-verified with 0.159.2. |
| opencode | Chat Completions | Setup | PASS | 1.18.31 | 7819bd3b | cce8ffca | Custom provider with a /v1 base URL. |
| Cursor | Chat Completions | Not yet published | Pending | — | — | — | Chat panel only. Tab completion and inline edit do not use Flex. |
| Cline | Chat Completions | Not yet published | Pending | — | — | — | OpenAI Compatible provider. |
| Continue | Chat Completions | Not yet published | Pending | — | — | — | Chat, edit and apply roles. Not for autocomplete. |
| Crush | Chat Completions | Setup | PASS | 0.96.1 | b823556b | cce8ffca | openai-compat provider entry. |
| GitHub Copilot | Chat Completions | Not yet published | Pending | — | — | — | Needs streaming and tool calling. Inline completions do not use Flex. |