Skip to main content
Glama
Intrect-io

lyra-browser

Official
by Intrect-io

scroll

Move the page to top/bottom, by pixel amount, or bring a matching element into view; repeat to bottom for lazy-loading content.

Instructions

Scroll the page. Give exactly one of to, by_y or selector.

  • to='top' / to='bottom': jump to that end of the document.

  • by_y: scroll by that many pixels, positive down and negative up (at most 20000 either way per call), with the mouse wheel.

  • selector: bring the first matching element into view.

Pages that load more as you reach the end (feeds, lazy lists) grow after a scroll, so call scroll(to='bottom') again until the reply says at_bottom. The reply is scroll_y, scroll_height and at_bottom once the position has settled. A scroll that moved nothing says so: the content may sit in an inner scrolling panel, which selector on an element inside it reaches.

selector fails fast like click (not_found, hidden, disabled, timeout, page_closed).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
toNo
by_yNo
reasonNo
confirmNo
selectorNo
timeout_msNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so: it documents the 20000-pixel-per-call clamp and sign convention, the lazy-list growth behavior, the settled-position reply fields (scroll_y, scroll_height, at_bottom), and the fast-fail codes for selector (not_found, hidden, disabled, timeout, page_closed).

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?

Front-loads the mutually-exclusive-argument rule, then uses terse bullets for each mode and a short paragraph for edge cases. Every sentence carries operational information; nothing restates the tool name or schema.

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?

For a scroll tool with an output schema, the description covers the core invocation contract, the lazy-load repetition case, the no-movement fallback, and selector failure modes. The remaining gap is the three unexplained auxiliary parameters (reason, confirm, timeout_ms), which leaves the tool slightly incomplete for an unannotated 6-parameter schema.

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

Parameters3/5

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

Schema description coverage is 0% across 6 parameters, so the description must compensate, and it only covers three: to, by_y (with sign/limit semantics) and selector. reason, confirm, and timeout_ms are left entirely undocumented in both schema and description, so an agent cannot infer their expected values.

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?

Opens with a specific verb+resource ('Scroll the page') and immediately narrows the invocation contract ('Give exactly one of to, by_y or selector'). This is clearly distinct from siblings like click, navigate, and read_page, and the three modes are individually defined.

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?

Explicitly routes usage: to='top'/'bottom' for document ends, by_y for pixel wheel movement, selector to bring an element into view. It also prescribes re-calling scroll(to='bottom') on lazy-loading pages until the reply says at_bottom, and tells the agent what to do when a scroll moved nothing (try selector for inner panels).

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