Skip to main content
Holo4 (holo4-27b, holo4-35b-a3b) and Holo3.1 (holo3-1-35b-a3b) speak the standard OpenAI tool-calling API, so they plug into agent frameworks that already do. Read Core concepts first: reasoning, coordinates, observations, and the trim_to_last_n_images helper used below.

Declare tools

Pass tool schemas via tools, and set tool_choice="required" so the model acts on every step. Do not put tool-format examples in the system prompt. The model renders the call in its own native format from tools alone, and a conflicting example degrades quality. The example ships two tools (click, answer) for illustration. Real agents register a wider toolbox the same way, and the tools need not touch a screen: see Mix screen, code, and MCP tools.

Chat layout

Tool results go back as tool-role messages keyed by tool_call_id:

A complete loop

The action comes back in message.tool_calls; each call carries a function.name, a JSON function.arguments string, and a unique id. There is no note field in this format: anything the model must carry across turns goes in the assistant content. Highlighted lines are the ones specific to function calling; everything else is the shared loop from Core concepts. Plug in your own screenshot() (browser, OS, emulator) and execute(name, args) dispatcher.

Mix screen, code, and MCP tools

Holo4 is trained on tasks that cross interfaces, so one toolbox can hold screen actions, a code runner, and the tools of an MCP server. The model picks one per step: it reads a page with click, then switches to run_python for the arithmetic. Nothing else in the loop changes. MCP tools already carry a JSON schema, so they convert one to one:
Python
Route each call to where it runs: screen actions to your browser or OS driver, run_python to a sandbox, and MCP tool names to session.call_tool(name, args). Screenshots stay under the same 3-image budget whichever tool ran.

Browser agent

Playwright, screenshots in, clicks out.

Code agent

A Python runner as the only tool.

MCP agent

Any MCP server’s tools, passed as functions.

Hybrid agent

Browser and code in one loop.

Format-specific pitfalls

Next steps

Element localization

Get click coordinates from a screenshot.

API reference

Endpoint, models, parameters, and limits.