Model comparison · 2026-09-16
What is Motif 3? The free agentic coding model, measured
Motif 3 is a text model built for agentic coding and tool use, with a 262,144-token context window, currently offered free. Read the measured capability list, how its always-on reasoning behaves, and how it compares with the other free rows that share its context window.
What is Motif 3?
Motif 3 is a text model built for agentic coding, tool use and terminal-style troubleshooting. It sits in the LLMTR catalog as motif/motif-3, is called through the OpenAI-compatible chat completions endpoint, and is currently offered free.
Motif in the name is the lab that owns the model. A provider row in LLMTR always names the model's owner rather than whatever infrastructure serves it, and the practical consequence for you is that the identifier is stable: your code keeps saying motif/motif-3 even if the serving arrangement behind it changes.
Every figure in this article comes from real requests sent through LLMTR. There is a reason for that: the model's published metadata contradicts itself on at least one point, and the only way to settle a contradiction like that is to send a request.
The model card
The values below are the catalog row itself, not a transcription from a marketing page.
The one line worth pausing on is the output ceiling: there is no separate one, because no limit below the context window could be found by measurement. The limit applies to the prompt and the answer together.
| Field | Value |
|---|---|
| Model identifier | motif/motif-3 |
| Context window | 262,144 tokens |
| Separate output ceiling | None, the answer shares the context window |
| Input ($/1M tokens) | $0 |
| Cache read ($/1M tokens) | $0 |
| Output ($/1M tokens) | $0 |
| Modality | Text in, text out only |
| Endpoint | /v1/chat/completions |
Measured capabilities
Every row in the table below is the result of a request. A parameter being accepted and a parameter working are not the same thing, and this is precisely the model where that distinction matters.
Tool calling is solid: all three forms work, including forced and named selection, the model can call several tools in one turn, and it reads back a tool result you return and answers from it. Streaming behaves the same way.
| Capability | State | How it was measured |
|---|---|---|
| Text in and text out | Yes | The basic call returned 200 |
| Image input | No | Both a base64 data URL and a remote https address were rejected with 400 |
| Audio input | No | 400, with the same error message |
| Document input | No | The file content part is not accepted |
| Tool calling | Yes | tool_choice auto, required and a named function all worked |
| Several tools in one turn | Yes | Two tools were requested and two calls came back in one response |
| JSON mode | Yes | json_object returned bare, parseable JSON |
| Schema-enforced output | Yes | A strict schema beat a prompt written to violate it |
| Streaming | Yes | The same call was assembled from delta.tool_calls fragments |
| Prompt cache | Yes | On a repeated prefix cached_tokens went from 0 to 8,704 |
| Reasoning control | No | All three off switches that were tried are accepted and ignored |
| Multiple completions | No | The n field is rejected with 400 |
The published metadata claims vision; the model refuses it
This is the most important finding on the row. The model's published metadata shows vision support enabled, while the input-modality list in the same record says text only. The source contradicts itself.
The contradiction was settled by measurement: an image was sent both as a base64 data URL and as a public https address, and both were rejected with 400 on the same day, from the same credential. The error message says the model is not multimodal. Audio input is refused the same way, and a document content part is not accepted by the request at all.
That is why the LLMTR catalog does not declare image input on this row, and why the gateway refuses a request carrying an image before it ever reaches the provider. Trusting the flag and building a multimodal flow on it would have meant a pipeline that breaks on its first real image in production.
Output shares the context window
The model has no separate output ceiling, and that is a measurement rather than an omission. The limit is applied to the sum of the prompt and the answer: together they cannot exceed 262,144 tokens.
The measurement is unambiguous. A 257,160-token prompt returned 200 with max_tokens set to 32, and 400 with max_tokens set to 10000, with the rejection naming a total of at least 262,145 tokens. So a long prompt leaves less room for the answer.
In an agent workflow that translates into something concrete: sending a long repository context in one shot directly shortens the patch the model is able to write. Trimming context here is not an optimisation, it is the only way to reserve an output budget.
Reasoning is always on and cannot be switched off
The model thinks before every answer. All three off switches that were tried are accepted, and none of them works. Five samples were taken per method, and not one of the fifteen attempts produced an empty reasoning trace.
The unit of measurement is the length of the reasoning trace in characters rather than a token count, for a simple reason: this row reports its reasoning token counter as zero on every response even while streaming a full trace, so that counter is not a usable measure.
| Method tried | Mean reasoning length (characters) | Range |
|---|---|---|
| Field not sent at all | 880 | 535 - 1839 |
| chat_template_kwargs.enable_thinking = false | 919 | 516 - 1715 |
| reasoning.enabled = false | 895 | 454 - 1606 |
| reasoning.exclude = true | 1154 | 595 - 1787 |
reasoning_effort is not a control on this model
The provider validates this field without implementing it, which is the most confusing combination there is. The values none, minimal, xhigh and max are rejected with 400, so the field looks like a real scale. The three values it accepts do not separate.
As the table shows, low reasons roughly twice as long as high, and all three ranges overlap each other. Three labels, one behaviour, in the wrong order.
That is why LLMTR offers no reasoning level on this row and does not advertise reasoning or include_reasoning as supported parameters on the model card. Putting a dial in the interface that does nothing would mean billing a user for thinking tokens under a setting they believe reduces them.
| Level | Mean reasoning length (characters) | Range |
|---|---|---|
| low | 1461 | 911 - 2243 |
| medium | 1132 | 534 - 2336 |
| high | 767 | 247 - 1555 |
The other free rows that share this context window
The LLMTR catalog holds six free rows with a 262,144-token context window, and the table lists all six rather than a selection. All six support tool calling, so that column is not discriminating and does not appear.
Motif 3 wins one column here and loses two. The column it wins is schema-enforced JSON: of the six rows, only this one carries structured output in the catalog. What it loses is image input and the ability to turn reasoning off.
The selection rule falls out of that. If you are writing an agent step that needs a strictly shaped object back, Motif 3 is the only candidate among these six. If you need to read an image, or need to silence the reasoning for a short answer, the same list has better-suited rows.
| Model | Context | Image input | Schema-enforced JSON | Prompt cache | Can reasoning be disabled |
|---|---|---|---|---|---|
| motif/motif-3 | 262,144 | No | Yes | Yes | No, it cannot be switched off |
| nvidia/nemotron-3-super-120b-a12b | 262,144 | No | No | No | The model does not reason |
| poolside/laguna-xs-2.1 | 262,144 | No | No | Yes | Yes |
| inclusionai/ling-3.0-flash-fin | 262,144 | No | No | Yes | Yes |
| inclusionai/ling-3.0-flash-vl | 262,144 | Yes | No | Yes | Yes |
| inclusionai/ling-3.0-flash-sante | 262,144 | No | No | Yes | Yes |
What it suits, and what it does not
Where it fits: agent steps that call tools, reading code and proposing patches, debugging from terminal output, extraction work whose result has to match a fixed schema, and scanning long codebases in a single prompt.
Where it does not: anything that needs to read an image, audio or a document; interactive interfaces measured in milliseconds, because the model reasons before every answer and you cannot disable that; and tests that expect the same prompt to produce the same answer, because reproducibility could not be measured even at temperature zero.
Being free is not an invitation to put production load on it. The row is served under a request-counting quota, and requests are processed on third-party infrastructure abroad. Do not send sensitive data to this model; how the quota behaves is covered in detail in this series' integration guide.
Frequently asked questions
Is Motif 3 really free?
Yes. All three metrics in the LLMTR catalog — input, cache read and output — are priced at zero and nothing is deducted from your credit. In exchange there is a request-counting quota: every call spends one allowance regardless of how many tokens it used.
Can Motif 3 read images?
No. Although the model's published metadata shows vision support enabled, images sent to it were rejected: both a base64 data URL and a remote https address returned 400. LLMTR does not declare image input on this row and refuses an image-carrying request before it reaches the provider.
Can I turn reasoning off to get a faster answer?
No. Three different off switches were tried and all three are accepted and ignored. The reasoning_effort field is not supported on this row either. Hidden reasoning tokens count as output, so the model thinks first even where you expect a one-line answer.
What is the maximum output length?
There is no separate output ceiling. The prompt and the answer share the same 262,144-token window, so a long prompt leaves less room for the answer. If you expect a long response you have to reserve room for it on the prompt side.
How do I choose between Motif 3 and the other free models with the same context?
If you need schema-enforced JSON output, Motif 3 is the only one of the six free rows with a 262,144-token window that carries structured output. If you need to read images, or need to be able to disable reasoning, the same list has rows that can do it.