Skip to main content
Glama

navigate

Navigate a Firefox tab to a URL, adding https:// if missing, or move backward/forward through tab history. Returns after page load completes.

Instructions

Send a tab to an address, or walk that tab through the history it has already built. Only url is always required. For an ordinary address you may leave tabId out when navigate is called on its own: the session's tab group is opened or reused for you (the work tabs_context_mcp{createIfEmpty:true} does), the group's first tab is driven, and the refreshed listing is printed under the result so the ids are in front of you for the next call. Two cases have no fallback and fail without a tabId: url set to "back" or "forward", and any navigate running inside browser_batch, where a guessed tab would be the one that existed before the batch opened its own. Name the tab yourself whenever the group holds several pages and the others are mid-task. The call returns after loading settles, which retires every ref_N an earlier read_page handed out - read the page again before using refs. In Firefox the page opens in the automation profile this server launched, apart from your everyday windows and with no per-site approval step; a load parked behind an alert or a beforeunload prompt is cleared with firefox_dialog instead of ending the session.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlYesWhere to go: a full address, or a bare one such as example.com or localhost:3000, which gets https:// put in front of it when no scheme is present. The two literal words "back" and "forward" (case ignored) load nothing new and move one entry through this tab's own history instead.
tabIdNoWhich tab of this session's group does the navigating; ids come from tabs_context_mcp. Omit it only for a plain address in a standalone call, where the group's first tab is used and a group is opened if none exists yet. It is mandatory for "back" and "forward", mandatory for every navigate inside browser_batch, and worth passing whenever one particular page has to be the one that moves.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.2.0

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It explains that the call returns after loading settles, that it retires ref_N from earlier read_page calls, that Firefox opens in a separate automation profile without per-site approval, and that alerts/beforeunload are cleared via firefox_dialog. This is unusually thorough and covers side effects, environment behavior, and error recovery.

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

Conciseness4/5

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

The description is longer than typical but every sentence earns its place: it covers purpose, fallback logic, mandatory cases, return behavior, Firefox specifics, and alert handling. It is front-loaded with the core action and then layers detail. No redundant filler; the only slight deduction is that it is denser than necessary, but it remains well-structured and readable.

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?

Given the tool's complexity (two parameters, special values, batch context, browser-specific behavior, return semantics) and the absence of an output schema, the description covers everything an agent needs to call it correctly. It explains all edge cases, prerequisites, and side effects. No missing information that would cause a mis-invocation.

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

Parameters5/5

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

Schema description coverage is 100%, so baseline is 3. However, the description adds substantial meaning beyond the schema: it explains the 'back'/'forward' literal values, the fallback tab selection logic, and the mandatory/optional contexts for tabId. It also clarifies URL normalization (adding https://) and the distinction between standalone calls and browser_batch. This goes well beyond the schema's field-level descriptions.

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 precise statement: 'Send a tab to an address, or walk that tab through the history it has already built.' This distinguishes navigation from reading (read_page), form input, and other siblings. It also names the two distinct modes (direct navigation and history traversal) clearly, so an agent knows exactly what the tool does.

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 conditions: 'Only url is always required' and explains when tabId can be omitted, when it is mandatory (for 'back'/'forward' and inside browser_batch), and when it is advisable ('whenever the group holds several pages'). It also contrasts with firefox_dialog for handling blocked loads and mentions the tab group behavior. This is comprehensive, actionable guidance with no ambiguity.

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