Ten, Ten, Ten, Two: The Lopsided Capability Profile of Z.ai

Ten, ten, ten, two. That is the capability census OrcaRouter prints on its z.ai api page: every one of the ten GLM models in the catalogue supports tool calling, every one supports reasoning, every one supports JSON mode, and two of them carry vision. Three of the four capability flags are unanimous and the fourth is nearly absent, and that is not a rounding artefact of a small catalogue — it is the most lopsided capability distribution of any provider page on the site.
The gap is worth sitting with, because the two halves of it pull in opposite directions for an agent stack. Tools, reasoning and JSON mode are exactly the flags you need to build an agent that can act: call functions, plan a sequence of steps, and return something a program can parse. Vision is the flag you need the moment any input arrives as an image instead of text. A stack that needs the first group is fully served here. A stack that needs both groups has two rows to choose from out of ten, and a stack whose inputs are images has almost no shopping to do at all.
Why 10/10 on tools and 2/10 on vision can both be true
These two numbers describe different things, and confusing them is the common mistake. Tool support, reasoning and structured output are properties of the text pipeline: they are about how a model is prompted, whether it emits a structured decision, and whether the serving stack implements the function-calling protocol around it. A model can be trained for it, fine-tuned for it, or wrapped for it, and once it is, the flag applies to every request regardless of what the request contains.
Vision is a property of the input encoder. A model either has the weights and the preprocessing path to accept an image token stream or it does not, and there is no protocol shim that adds it later — you cannot wrap a text-only model into a multimodal one at the serving layer. That asymmetry explains the shape of the census: text-side capabilities propagate cheaply across a model family, because they live in the interface and the training objective, while a modality is expensive, per-model work that a vendor ships deliberately, on the rows where it expects the demand.
So both readings are honest. Read as an agentic catalogue, ten out of ten is a strong page: nothing on it will refuse to call your function. Read as a multimodal catalogue, two out of ten is a very thin page, and the two flags are not two versions of the same fact — one tells you what the model can do with your text, the other tells you whether your image ever reaches the model at all.
The whole catalogue, side by side
| Model | Input / 1M | Output / 1M | Context | Max output | Quality (ours) |
| GLM 5.3 | $1.26 | $3.96 | 1M | 128K | 9 |
| GLM 5.1 | $1.40 | $4.40 | 200K | 128K | 9 |
| GLM 5.2 | $1.40 | $4.40 | 1M | 128K | 9 |
| GLM 5.3 Flash | $0.150 | $0.500 | 1M | 128K | 8 |
| GLM 5 | $1.00 | $3.20 | 200K | 128K | 8 |
| GLM 4.5 | $0.600 | $2.20 | 128K | 96K | 7 |
| GLM 4.6 | $0.600 | $2.20 | 200K | 128K | 7 |
| GLM 4.7 | $0.600 | $2.20 | 200K | 128K | 7 |
| GLM 4.5 Air | $0.200 | $1.10 | 128K | 96K | 6 |
| GLM 5.3 Flash (Free) | $0.00 per request | — | 1M | 128K | — |
The quality column is our own 0-to-10 composite, built by grading each model across our own quality dimensions; it is not a third-party benchmark and it is not a vendor-reported figure. Prices are the vendor’s published rates, and OrcaRouter adds no markup, so the table is what calling Z.ai directly would bill.
Two things in that table matter for a stack that needs both text and vision. The first is that the capability flags do not track price or quality — a row being cheaper or scoring lower on our composite tells you nothing about whether it carries vision, so you cannot infer the flag from the columns around it. The second is the bottom row. `GLM 5.3 Flash (Free)` is billed at $0.00 per request, which is per-request billing, not free tokens: the row is charged by the request rather than by the token, and it is not a free allowance you can spend down.
Building an agent stack around a two-row vision budget
If your inputs are text, the census is a non-issue: pick by price and context and ignore the vision flag entirely. If part of your traffic carries images, the practical shape of the build is a split, and the census tells you where the split has to happen.
Route the image traffic to the rows that can take it. With two vision-capable rows out of ten, that is not a preference — it is a hard constraint, and it is better understood as a routing rule than a model choice. The rule reads: this request contains an image, therefore it may only be sent to a row on the vision list.
Keep the text traffic on the wide side of the catalogue. Everything else — classification, extraction, summarisation, tool orchestration — can run on any of the ten rows, and those ten span a real price range on input, from the $0.150 cheapest row to $1.40. That is where the cost optimisation lives, because that is where you have choices.
Do not assume the vision rows are the ones you would have picked anyway. A two-of-ten flag often puts the multimodal capability on rows that are not the flagship. If your assistant has to both read a screenshot and reason over it, the constraint is the vision list first and everything else second — including price, including the composite score.
Model the failure mode. The failure mode of a lopsided catalogue is not a wrong answer; it is a runtime rejection when an image reaches a row that cannot accept one. That is a routing bug, and it is worth an explicit guard rather than a comment in the code — a rule that inspects the request payload before it picks a model.
What the uniformity on the other three flags is worth
It is worth more than it sounds, and it is the reason the census is worth reading at all rather than treating “supports tools” as a given. A catalogue where tools, reasoning and JSON mode are unanimous means you can change models freely for cost or context reasons without re-checking whether your function-calling code still works. Every row on the page speaks the same protocol at the text layer, so a swap between the $0.150 row and the $1.26 row is a pricing decision, not an integration project — and integrations are usually the expensive half of a model migration.
That is the trade this page offers: maximum freedom where the flags are uniform, minimum freedom where they are not. Teams that only need the text half get the full benefit and never notice the two-of-ten vision figure. Teams that need images inherit a constraint they did not choose, and the only defence is to read the flags before the price column, since the flags are the column that will actually stop the request.


The takeaway
A capability census that reads ten, ten, ten, two is a precise statement about what a catalogue is for. It is built as an agentic text platform first and a multimodal one a distant second, and both halves of that sentence are load-bearing. The uniform flags mean a model swap here costs you nothing at the text layer. The lopsided flag means an image in the wrong request path costs you a failed call, unless you route for it deliberately.
The mistake to avoid is reading the big number as if it covered the small one. “Ten out of ten support tools” and “two out of ten support vision” are not a strong claim and a weak claim about the same thing — they are claims about two different layers of the stack, and the one that will page you at two in the morning is the small one. Count both, and route on the second.
Sourcing note: the model count, the capability census (vision 2, tools 10, reasoning 10, JSON mode 10), the cheapest-input statistic, the median p50, the context and max-output figures and every price in the table are from the OrcaRouter Z.ai provider page and the linked model page, read 2026-10-14. Prices are the vendor’s published rates with $0 markup [VENDOR]. The quality column is our own 0-to-10 composite, built by grading each model across our own quality dimensions — it is not a third-party benchmark and we label it as our own wherever it appears [OURS]. The per-request row is billed by the request, not by tokens. All figures read 2026-10-14.




