Skip to main content
Glama

Navigate

browser_navigate

Navigate the delegated tab to an allowed http(s) origin. Required: sessionId and url. Userinfo in the URL (https://user:password@host) is stripped before navigation and redacted to https://***@host in status, sessions, and history. Does not take observationId. If another action is still running, this call waits for it to finish (about 5s) and then navigates. BUSY means that wait ran out — retry with sessionId and url. Navigation pushes a history entry (location.assign on the top window) so browser_back and browser_forward move the tab. Navigation is paced; RATE_LIMITED means wait retryAfterMs. On a sensitive site, navigation returns APPROVAL_REQUIRED with approvalId. A different site returns APPROVAL_REQUIRED immediately with origin and approvalId — do not wait for command timeout. If a page asks for an HTTP sign-in, navigate returns HTTP_AUTH_REQUIRED and the tab is blocked. Call back (cancels the prompt) or navigate elsewhere. A JavaScript dialog opened by the navigation stays pending and is reported as dialog: { type, message, pending: true }. Navigating again while that dialog is open returns DIALOG_PENDING.

Input Schema

NameRequiredDescriptionDefault
urlYes
sessionIdYes
idempotencyKeyNoA key replays the original result only within ~60 seconds of the first call, only for the same Mcp-Session-Id, the same credential (API key or OAuth token), the same browser session, and the same tool. After the window, or under a different session/credential/tool, the call executes and bills normally. Reusing a key with different arguments returns IDEMPOTENCY_KEY_REUSED and is not executed or billed. Refusals (e.g. NO_HISTORY_ENTRY) are not cached, so the same key re-executes once state changes. A key passed in _meta is ignored.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.5/5.0
Behavior5/5

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

Well beyond the annotations (which only say non-readOnly, open-world, non-idempotent): it discloses URL userinfo stripping and redaction across status/sessions/history, the ~5s busy-wait before navigating, history-push side effects on the top window, pacing/rate limits, approval gating for sensitive and cross-origin sites, HTTP auth blocking, and pending JS dialogs with DIALOG_PENDING on re-navigation.

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?

Purpose and required parameters are front-loaded, and the remaining sentences are each tied to a distinct error state an agent must handle. It is dense and long for a single paragraph, with error-code detail (BUSY, RATE_LIMITED, APPROVAL_REQUIRED, HTTP_AUTH_REQUIRED, DIALOG_PENDING) that could be grouped, but no sentence is filler.

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

Completeness4/5

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

No output schema exists, and the description documents failure and side-effect shapes thoroughly (dialogs, approvals, rate limits) but says nothing about what a successful navigation returns — final URL, page state, or load-completion signal — leaving the agent to infer success behavior.

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 only 33% — url and sessionId have no schema descriptions — but the description compensates partly by stating both are required, that url must be an allowed http(s) origin, and that userinfo is stripped before navigation. It adds no semantics for sessionId beyond its required status, and the idempotencyKey is already richly documented in the schema.

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?

States a specific verb (navigate) and resource (the delegated tab) plus the scope constraint ('allowed http(s) origin'). It also differentiates from siblings by explaining that navigation pushes a history entry so browser_back/browser_forward operate on it, and explicitly excludes observationId, separating it from browser_observe.

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

Usage Guidelines4/5

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

Gives actionable conditions for the common failure paths — retry with sessionId and url on BUSY, wait retryAfterMs on RATE_LIMITED, do not wait for command timeout on cross-site APPROVAL_REQUIRED, call back or navigate elsewhere on HTTP_AUTH_REQUIRED. What's missing is an explicit contrast with sibling actions for the same goal (e.g., browser_reload vs re-navigating to the same URL).

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.