Skip to main content
Glama
andresolbach

nodriver-mcp-server

Navigate page

navigate_page

Load a URL or move back, forward, or reload the current page, with optional device emulation applied before the request so mobile signals are seen immediately.

Instructions

Navigate the selected page — load a URL, or go back, forward or reload.

Navigating rotates the collected logs: the previous page's console and network entries move into the preserved history (the last 3 navigations are kept), still reachable via include_preserved_* on the list tools.

Passing device applies the emulation before the request is sent, so the server sees mobile signals on the very first byte — calling emulate_device afterwards is too late for that first request.

Returns the resulting URL together with all open pages. This reuses the current tab; use new_page to open an additional one.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlNoTarget URL — required when type="url", ignored otherwise. Include the scheme: "https://example.com", not "example.com".
typeNoThe kind of navigation: "url" loads `url`, "back" and "forward" move through session history, "reload" reloads the current page.url
deviceNoDevice to emulate — sets user agent, UA client hints, viewport, device pixel ratio and touch together. Presets: "pixel_7" (aliases: pixel7, android, android_phone), "pixel_7_landscape" (pixel7_landscape, android_landscape), "ipad_air" (ipadair, ipad, tablet). Case, spaces and -/_ are normalised. Empty string leaves emulation unchanged.
browserNoWhich browser to act on. Each name is an independent Chrome, created on first use. Omit for the shared default; parallel agents each need their own name.default
timeoutNoMaximum wait in milliseconds. 0 uses the built-in default.
init_scriptNoJavaScript executed in every new document before any of the page's own scripts, for this navigation. Use it to stub out APIs or plant values a page reads at startup. Plain statements, not a function expression.
ignore_cacheNoBypass the HTTP cache (a hard reload). Only applies to type="reload".
handle_before_unloadNoHow to answer a beforeunload confirmation ("Leave site?") raised by the page being left. "accept" leaves, "dismiss" stays — in which case the navigation does not happen.accept

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv2.5.0
    • addedInput schema / properties / browser
      Added value: +{
      +  "default": "default",
      +  "description": "Which browser to act on. Each name is an independent Chrome, created on first use. Omit for the shared default; parallel agents each need their own name.",
      +  "type": "string"
      +}
  2. First observedv1.7.2

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint=false, destructiveHint=false, etc.), the description discloses important side effects: navigating rotates collected logs, moves previous entries into preserved history (last 3 kept), and makes them reachable via include_preserved_* on list tools. It also explains the return value and that the tool reuses the current tab. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose in the first sentence and then organized into short, focused paragraphs covering side effects, device timing, and return behavior. Every sentence adds distinct value; there is no filler or repetition of schema content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 8 parameters and an output schema, the description is complete: it states the action, side effects on logs, device timing, return value, and tab reuse. The schema already documents all parameters in detail, so the description does not need to repeat them. The agent has everything needed to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds meaningful parameter nuance beyond the schema: it explains that passing device applies emulation before the request is sent, affecting the first byte seen by the server, which is not stated in the schema's device description. This helps the agent decide when to use the device parameter vs. calling emulate_device separately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Navigate the selected page — load a URL, or go back, forward or reload.' It clearly enumerates the four navigation modes and distinguishes itself from siblings by stating 'This reuses the current tab; use new_page to open an additional one' and contrasting with emulate_device for device emulation timing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use guidance: 'Passing device applies the emulation before the request is sent... calling emulate_device afterwards is too late for that first request' tells the agent when to prefer this tool's device parameter over the sibling emulate_device. It also says 'use new_page to open an additional one,' clearly routing to the alternative when a new tab is needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.