Skip to main content
Holo3.1 (holo3-1-35b-a3b) speaks the standard OpenAI tool-calling API, its most natural format, so it plugs 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 following the same pattern.

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.

Format-specific pitfalls

Next steps

Element localization

Get click coordinates from a screenshot.

API reference

Endpoint, models, parameters, and limits.