Features / Agent tools

Uncensored models that search, fetch and run code.

Declare web search, web fetch, a remote MCP server or the code sandbox in the tools array. The model calls them, the gateway runs them, and the loop finishes inside one request.

Get a key

Tool prices

Web search
$0.01 per search
Web fetch
$0.001 per page fetched
Code sandbox
$0.05 per container-hour, 1-minute minimum
bash, javascript, python
Remote MCP
No tool fee
tokens only

One request, worked

Round 1
1,150 in → 70 out
calls web_search twice · $0.0018
Round 2
4,900 in → 60 out
calls web_fetch on one result · $0.0059
Round 3
9,400 in → 520 out
answers with citations · $0.014
Tool fees
2 searches + 1 fetch
$0.021
Total
$0.0427
Nemotron 3 Ultra 550B Uncensored

Web search and web fetch

The model gets two tools: search the web, and read one page in full. It decides when to use them; the results go back into the conversation and the answer links its sources as url_citation annotations. web_search_options and web_search_preview are read the same way.

search.sh
1curl https://api.uncensoredllm.ai/v1/chat/completions \
2 -H "Authorization: Bearer sk-ullm-live-…" \
3 -H "Content-Type: application/json" \
4 -d '{
5 "model": "nemotron-3-ultra-550b-a55b-uncensored",
6 "tools": [{"type": "web_search"}, {"type": "web_fetch"}],
7 "max_tool_rounds": 4,
8 "messages": [{"role": "user", "content": "What changed in the latest Node.js release? Cite the release notes."}]
9 }'

Remote MCP servers

Point the request at any Streamable HTTP MCP server you run or use. Its tools are listed for the model, calls go to the server with the headers you set, and allowed_tools limits what the model sees. MCP calls carry no tool fee.

mcp.sh
1curl https://api.uncensoredllm.ai/v1/chat/completions \
2 -H "Authorization: Bearer sk-ullm-live-…" \
3 -H "Content-Type: application/json" \
4 -d '{
5 "model": "nemotron-3-ultra-550b-a55b-uncensored",
6 "tools": [{
7 "type": "mcp",
8 "server_label": "tracker",
9 "server_url": "https://mcp.example.com/mcp",
10 "headers": {"Authorization": "Bearer YOUR_MCP_TOKEN"},
11 "allowed_tools": ["search_issues"],
12 "require_approval": "never"
13 }],
14 "messages": [{"role": "user", "content": "List the open issues tagged crash."}]
15 }'

To reach several servers through one URL, register them once in the console or at /v1/mcp-servers with an admin key; https://api.uncensoredllm.ai/mcp/org then lists every tool as server__tool for any MCP client on your API key. Hosted agents attach MCP servers the same way.

Code sandbox

code_interpreter gives the model a sandbox to write and run code in (bash and javascript and python). Files stay in the sandbox for the session; the session id comes back in x-uplink-sandbox-session.

sandbox.py
1from openai import OpenAI
2
3client = OpenAI(base_url="https://api.uncensoredllm.ai/v1", api_key="sk-ullm-live-…")
4raw = client.chat.completions.with_raw_response.create(
5 model="nemotron-3-ultra-550b-a55b-uncensored",
6 tools=[{"type": "code_interpreter"}],
7 messages=[{"role": "user", "content": "Write fib.js that prints the first 30 Fibonacci numbers, run it, show the output."}],
8)
9sandbox = raw.headers.get("x-uplink-sandbox-session")
10print(raw.parse().choices[0].message.content)
11
12# Same sandbox, same files: send the session back on the code tool.
13follow = client.chat.completions.create(
14 model="nemotron-3-ultra-550b-a55b-uncensored",
15 tools=[{"type": "code_interpreter", "session_id": sandbox}],
16 messages=[{"role": "user", "content": "Run fib.js again with 50 numbers."}],
17)

Models that run the tools

The listed builds whose every route takes tool calls, with their prices per million tokens from the live catalog. All models.

ModelModel idInputOutput
Nemotron 3 Ultra 550B Uncensorednemotron-3-ultra-550b-a55b-uncensored$1.125$6.60
Abliterated Large Flashabliterated-model-large-flash$2.50$5.00
Abliterated Model Largeabliterated-model-large$7.50$12.50
Abliterated Model Large V2abliterated-model-large-v2$7.50$12.50
Aion RP Llama 3.1 8Baion-rp-llama-3.1-8b$3.20$6.40
Apex Flash 1 Abliteratedapex-flash-1-abliterated$0.68$2.32
CyberHeabsycyberheabsy$5.25$15.75
Cydonia 24B v4.1cydonia-24b-v4.1$1.20$2.00
DeepSeek V4.1 Flash 1017 Hereticdeepseek-v4.1-flash-1017-heretic-uncensored$0.825$3.30
DeepSeek V4.1 Flash 1017 Heretic Thinkingdeepseek-v4.1-flash-1017-heretic-uncensored-thinking$0.825$3.30
Gemma 4 12B Starry Oceangemma-4-12b-starry-ocean$0.175$0.875
Gemma 4 12B StationKeepergemma-4-12b-station-keeper$0.175$0.875
Gemma 4 26B A4B Cybersecuritygemma-4-26b-a4b-it-cybersecurity$0.4224$1.3376
Gemma 4 26B-A4B ChimeraX Hereticgemma-4-26b-a4b-chimerax-heretic$0.484$1.52
Gemma 4 26B-A4B Uncensoredgemma-4-26b-a4b-uncensored$0.60$2.80
Gemma 4 31B Garnet V2gemma-4-31b-garnet-v2$1.071$1.071
Gemma 4 31B Gembraingemma-4-31b-gembrain$0.35$1.575
Gemma 4 31B Isometrygemma-4-31b-isometry$0.35$1.575
Gemma 4 31B K1 v5gemma-4-31b-k1-v5$1.071$1.071
Gemma 4 31B Scarletgemma-4-31b-scarlet$0.35$1.575
Gemma 4 31B Split-Untiedgemma-4-31b-split-untied$0.35$1.05
GLM-4.6 Derestricted v5glm-4.6-derestricted-v5$1.40$5.25
GLM-5.3 Flash Cybersecurityglm-5.3-flash-cybersecurity$0.5093$1.6975
Inkling Uncensoredinkling-uncensored$2.13$12.1403
MiMo V2.6 Flash Abliteratedmimo-v2.6-flash-abliterated$2.00$6.00
MiMo V2.6 Flash Uncensored Thinkingmimo-v2.6-flash-uncensored-thinking$1.25$3.75
MiMo V2.6 Pro Uncensoredmimo-v2.6-pro-uncensored$1.5225$3.045
MiMo-V2.5 Uncensoredmimo-v2.5-uncensored$0.75$4.00
OrcaCyber MiniMax M3.1 Flashminimax-m3.1-flash-cybersecurity$2.00$4.00
OrcaCyber MiniMax M3.1 Flashorcacyber-minimax-m3.1-flash$2.00$4.00
OrcaCyber Qwen3.8 Flash Nextorcacyber-qwen3.8-flash-next$2.00$4.00
OrcaCyber Qwen3.8 Flash Nextqwen3.8-flash-next-cybersecurity$2.00$4.00
OrcaCyber Zero 1.5orca-zero-1.5-cybersecurity$7.50$18.75
Qwen3.5 27B Queen Derestrictedqwen3.5-27b-queen-derestricted$1.071$1.071
Qwen3.8 27B Antislopqwen3.8-27b-antislop$0.35$2.10
Qwen3.8 27B Cybersecurityqwen3.8-27b-cybersecurity$0.40$2.40
Qwen3.8 27B DarkIdolqwen3.8-27b-darkidol$0.40$2.40
Qwen3.8 27B Fimiqwen3.8-27b-fimi$0.35$2.10
Qwen3.8 27B Hemingwayqwen3.8-27b-hemingway$0.875$5.25
Qwen3.8 27B Kimikoqwen3.8-27b-kimiko$0.35$2.10
Qwen3.8 27B Kiwenqwen3.8-27b-kiwen$0.35$2.10
Qwen3.8 27B Novelistqwen3.8-27b-novelist$0.35$2.10

The Anthropic and Responses shapes of the same tools are in the OpenAPI document; snippets for every SDK are in the console docs.

Questions

Yes. Add {"type": "web_search"} to the request's tools and the model searches when it decides to; the search runs on our side, the results go back to the model, and the answer comes back with url_citation annotations. Each search is $0.01.

The listed models whose every route takes tool calls: 42 today, in the table on this page. The model decides when to call a tool, so the tools run on any of them without changes to your client.

Up to max_tool_rounds, 1 to 8 (8 unless set, or the x-uplink-max-tool-rounds header). After the last round the model is asked once more without tools, so the answer ends in text.

Each model round at the model’s per-token price, each on its own receipt, plus the tool fee per call. The response headers x-uplink-tool-calls, x-uplink-tool-rounds and x-uplink-tool-charge give the counts and the tool fees of the request.

No. The tools are declared in the OpenAI format the SDKs already send, and the loop runs inside the one request, streamed or not. A tool error goes back to the model as the tool result, never as an HTTP error.

Yes. The first answer carries x-uplink-sandbox-session; send it back as the code tool's session_id and the next request runs in the same sandbox with its files. The sandbox runs bash and javascript and python.

More features

Join on Telegram