Why most uncensored models cannot run an agent

Why most uncensored models cannot run an agent

A coding agent acts only through tool calls, and most uncensored models were never trained to make them. What we measured, and how to check any model yourself.

An agent acts through tool calls

Claude Code, Cline and OpenCode never touch your files directly. When the agent wants to read a file or run a command, the model replies with a structured tool call, the harness runs it, and the result goes back to the model. A model that cannot produce that structure can still talk about your code. It cannot change any of it.

Where tool calling gets lost

Labs train tool calling into their models with dedicated data, and that training is fragile. Most uncensored models on the market are community finetunes of older base models, tuned on roleplay and chat logs. Either the base never learned tool calls, or the finetune overwrote the habit. It writes well and has no idea what to do with a function definition.

What we measured

On 20 September 2026 we sent every uncensored model in our upstream catalogue a request with a tool attached. None of them made a working call. Euryale 70B lists tool support and answers any request that carries a tool array with a provider error, so an agent pointed at it fails on its first step.

What works instead

Start from a frontier release that already calls tools well, then remove the refusals in a way that leaves the tool training intact. Abliteration does this by deleting the refusal direction from the weights; a light uncensoring pass can do it too. Then test the result, because neither method guarantees the tool calls survive. That is the route every Xploded model took: GLM 5.3, GLM 5.3 Flash, MiMo V2.6 Flash and Qwen3.8 27B, each checked with a real call before going on sale.

Check any model yourself

Send a request with a tools array and a question that needs the tool, then look at finish_reason. A model that can drive an agent returns "tool_calls".

curl https://api.magmarouter.com/v1/chat/completions \
  -H "Authorization: Bearer sk-mr-..." \
  -H "content-type: application/json" \
  -d '{"model":"glm-5.3-flash-xploded",
       "messages":[{"role":"user","content":"What is the weather in São Paulo?"}],
       "tools":[{"type":"function","function":{"name":"get_weather",
         "parameters":{"type":"object","properties":{"city":{"type":"string"}},"required":["city"]}}}]}'

Run the same request against any other provider's uncensored model and compare. If it answers in prose, it will not run Claude Code.

More from the blog