Skip to main content
Navigator n1.5 is a browser-use model. It operates a webpage — given a task in natural language, the current screenshot, and the action history, it predicts the next browser action. Use the API model id n1.5-latest (or a dated version) in the model field of your chat.completions requests.

Model Versions

Supported Actions

Core Tools

The default tool set (browser_tools_core-20260403). 18 coordinate-based browser tools. Parameter notes:
  • coordinates is always [x, y] in the normalized 1000x1000 space.
  • ref is an optional DOM element reference, used as an alternative to coordinates in browser contexts.
  • modifier is a modifier key held during the action: ctrl, shift, alt, meta, command, or super.
  • direction for scroll is one of: down, up, left, right.
  • amount for scroll is an integer where 1 unit is approximately 10% of the screen height.

Expanded Browser Tools

Includes all core tools plus DOM/ref-based extras (browser_tools_expanded-20260403):
Like every Navigator tool, these are predicted by the model and executed by your client — the API never touches your browser. What’s specific to the expanded tools is how you execute them: instead of mapping to a Playwright primitive (click, type, scroll), each one needs custom JavaScript evaluated against the page (e.g., via page.evaluate()). The result comes back as a tool message in the next request.

Reference Implementation

The Yutori Python SDK bundles a reference implementation for each tool, along with an async helper that evaluates them against a Playwright page. Import the script constants and evaluate_tool_script from yutori.navigator.tools: The helper evaluate_tool_script(page, SCRIPT, *args) JSON-serializes its arguments, evaluates the script against the page, and returns a Python dict. Three common patterns:
For the full agent loop — including how each tool’s response envelope feeds back into the next assistant turn — see examples/navigator_n1_5.py in the SDK.

Key Space

Navigator n1.5 uses lowercase key names. Combinations are joined with +, and sequential presses are separated by spaces. Examples: ctrl+c, ctrl+shift+t, alt+left, down down down enter

Coordinate System

n1.5 outputs normalized coordinates in a 1000×1000 space, origin top-left. Scale them to the real pixel size of the browser viewport before executing an action — the model is never told the resolution.
See yutori.navigator.coordinates for the inverse normalize_coordinates function.

Features

Tool Sets

Use the tool_set parameter to select which set of browser tools are available to the model:
Available tool sets:
  • browser_tools_core-20260403 (default) — coordinate-based visual browser tools
  • browser_tools_expanded-20260403 — core + DOM-based tools (extract_elements, find, set_element_value, execute_js)

Disabling Specific Tools

Remove specific tools from the active tool set:

JSON Structured Output

Provide a json_schema to get structured data extracted from the model’s response. The schema is appended to your task message, and the model returns JSON inside ```json code fences. The API parses this and returns it as a parsed_json field.
When json_schema is provided, the API also adds a structural tag for guided decoding of the JSON output, constraining it to match your schema. If the model doesn’t return valid JSON (e.g., it’s still navigating), the parsed_json field will not be present in the response.

Multi-Turn Conversations

The Python SDK provides create_trimmed / acreate_trimmed (in yutori.navigator) which strip older screenshots automatically while preserving recent ones and all text — by default keeping the 6 most recent screenshots (and always the latest), and only trimming when a request would otherwise exceed the size limit. Do not drop messages — the model uses its own action history to avoid repeating work. Keep at least the 2 most recent screenshots, and never send a request with no screenshot at all; stale-only or screenshot-free requests sharply degrade grounding and can make the model loop. Include the assistant’s previous response with its tool_calls, followed by tool results with the new screenshot:
The tool result can be a short description of what the tool did or whether it was successful. Including the current URL in the tool response is important for better attribution of information sources. If the tool extracts additional information (e.g. extract_elements, execute_js), the raw output of the tool can be provided as the tool result so the model also has visibility of the extracted information.

Screenshot Requirements

Screenshots should capture only the browser content itself. Do not include the operating system UI, window title bars, browser tabs, URL bars, or other chrome elements. For the best performance, render screenshots in WXGA (1280×800, 16:10). The model should generalize well to most other resolutions, but grounding accuracy may degrade with extreme aspect ratios. We recommend using the WebP format for screenshots, as it offers significantly better compression than PNG — especially for multi-step trajectories with many images. The Python SDK provides helpers that handle resizing, WebP conversion, and base64 encoding:
See yutori.navigator.images for full options (custom resolution, quality settings).

Custom Tools

You can provide additional tools alongside the built-in browser actions using the tools parameter. Custom tools are appended after the default tool set.
Results of custom tool calls should also be provided as a tool response so the model can use it for subsequent decisions:

Tool Choice

Control whether tool calls are parsed into the tool_calls array:
  • "auto" (default): Parses and returns tool calls as a structured tool_calls list
  • "none": Returns the raw model response as content text (tool calls may still appear inside <tool_call> XML tags in content)

Structured Decoding

By default, the API uses a structural_tag response format to enforce valid tool call generation via guided decoding. You do not need to provide this yourself — the API generates it automatically based on the active model and tool set. If custom tools are included in your request, their schemas are automatically incorporated. We do not recommend overriding the response_format unless you also set tool_choice="none" to work with the raw model output directly.

Prompting

A system message you supply adds to n1.5’s defaults rather than replacing them, and extra behavioral instructions generally degrade results — we do not recommend a custom system prompt. Put task-specific instructions in the first user message, after the task description:
Avoid interrupting a trajectory with extra user messages, except to stop the model and have it summarize: