Output format
Function calling or structured outputs, depending on the model.
Answer tool
The only way the model signals it is done.
Reasoning
Read it, never replay it.
Coordinates
Normalized to
[0, 1000], scale back yourself.Observations
Screenshots in
<observation> tags, last 3 kept.Sampling
0.8 for loops, 0.0 for single calls.
Pick an output format
Pick one and stay in it. Only how you declare tools and read the output changes; everything on this page is shared.
Answer tool
Holo is trained to end a task by calling a tool namedanswer with its work report in the content argument. Register it alongside your action tools, in both formats, and stop the loop when it is called. A step that comes back without any tool call is not a stop signal: treat it as a no-op, append the message, and keep looping. Only answer ends the run.
Reasoning
Holo returns two streams on every call: a thinking trace inmessage.reasoning and the action in content. Reasoning is essential in agent mode (Holo was trained to plan before each step), so leave it on; reasoning_effort: "medium" is a sensible default.
content. When re-adding the assistant message to the conversation, push only the parsed output. Do not splice the reasoning back in.
Coordinates in [0, 1000]
Send a screenshot at any size. Holo returns coordinates as integers in [0, 1000], normalized to that image. Scale back to pixels using its dimensions:
Observations
Each step, the current screenshot goes in as auser message wrapped in <observation> tags:
<observation> wrapper:
Sampling
Agent loops run withtemperature: 0.8. Single-call tasks such as element localization and document OCR run with thinking off and temperature: 0.0.
Common pitfalls
Format-specific pitfalls are listed on each loop guide.