32 6 days ago

An 8B tool-calling model that picks the right tool with valid arguments and does not loop. Fine-tuned from Ministral 3 8B on production agent traffic. Apache-2.0.

tools
ollama run OculusMindAI/toolcall-8b-v2

Applications

Claude Code
Claude Code ollama launch claude --model OculusMindAI/toolcall-8b-v2
OpenCode
OpenCode ollama launch opencode --model OculusMindAI/toolcall-8b-v2
Hermes Agent
Hermes Agent ollama launch hermes --model OculusMindAI/toolcall-8b-v2
OpenClaw
OpenClaw ollama launch openclaw --model OculusMindAI/toolcall-8b-v2

Models

View all →

Readme

OculusMind-ToolCall-8B-v2 (“Pico V2”)

Pico V2 is an 8-billion-parameter tool-calling model that runs on a laptop and picks the right tool, with valid arguments, on 95 % of the held-out production turns it was built for — 9 points above its base. It is Mistral’s Ministral-3-8B-Instruct-2512, fine-tuned on production tool-calling data from the agents at OculusMind.AI, and selected from a ten-seed sweep under a hard rule: a seed that ever looped was out, whatever it scored.

ollama run oculusmindai/toolcall-8b-v2

Needs Ollama 0.35.1 or newer (tested on 0.35.1). The download is 9.0 GB, the Q8_0 build. Text only: image input is not supported.

What it does well

  • Chooses the right tool, with valid arguments, first time. It agrees with production’s tool choice on 95.45 % of held-out tool-turns, against 86.36 % for the base model on the same items.
  • Does not loop. Degenerate repeated tool calls measured 0.00 % on every population, including a slice built to provoke them, where the base loops on 8.33 %.
  • Keeps its general ability. It is ahead of the base on GSM8K (87.6 vs 79.7), IFEval (72.2 vs 68.7) and BFCL V4 (69.3 vs 65.2 over all 4,441 items).
  • Reads long context. It recalls a planted fact and makes a correct tool call at every step from 2K to 250K tokens.

Tool calling

Pass tools in Ollama’s tools array on /api/chat:

curl -s http://127.0.0.1:11434/api/chat -d '{
  "model": "oculusmindai/toolcall-8b-v2",
  "stream": false,
  "messages": [{"role": "user", "content": "What is the weather in San Francisco in celsius?"}],
  "tools": [{
    "type": "function",
    "function": {
      "name": "get_current_weather",
      "description": "Get the current weather for a city",
      "parameters": {
        "type": "object",
        "properties": {
          "city": {"type": "string", "description": "The city name"},
          "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}
        },
        "required": ["city", "unit"]
      }
    }
  }]
}'

It returns a structured call with empty content:

{"role": "assistant", "content": "",
 "tool_calls": [{"function": {"name": "get_current_weather",
   "arguments": {"city": "San Francisco", "unit": "celsius"}}}]}

Send the tool’s result back as a tool message, keeping the same tools array, and it answers: “The current weather in San Francisco is 14°C and foggy.”

Settings in this package

Setting Value Why
temperature 0 Every published score was measured at 0.
num_ctx 32768 Bounds memory. The scores were measured at 65,536 and the window was smoke-tested to 250K; raise it if your machine allows.
stop </s>, [INST], [/INST], [TOOL_RESULTS] Without these, a tool call can run on into the next turn and fail to parse.
system prompt identity only Replace it with your own agent prompt. The model was fine-tuned on conversations that carried real system prompts and tool schemas.

How the numbers were measured

The scores above come from the Q8_0 GGUF served through llama.cpp, the path the full model card documents. Through Ollama, on the same held-out set, the model scores 93.94 against 95.45 through llama.cpp, with 0 loops on both. The method, every benchmark, the limitations and the file checksums are in the model card: huggingface.co/OculusMindAI/OculusMind-ToolCall-8B-v2.

Licence

Apache-2.0. This package carries the licence and the NOTICE, which states the attribution and modifications that anyone redistributing the model must pass on. Read both with ollama show oculusmindai/toolcall-8b-v2 --license. Fine-tuned from mistralai/Ministral-3-8B-Instruct-2512-BF16 (Apache-2.0).