# Page actions The 52 page tools the agent uses to read, click, type, move between tabs and script a page. You do not name them in an instruction, since the agent picks the tool, but knowing what exists tells you what is worth asking for. On Claude Code, OpenCode, Mistral Vibe, DeepSeek Harness and Codex (unless it runs through `codex exec`), the less common ones (captchas, theming, diagnostics, monitors and timers, downloads, dragging) stay out of the agent's tool list until a page calls for them, because those agents would otherwise send the model every tool's description on every turn. The agent opens their guide, or Codex searches for them, when it needs one, and they then work exactly as the others do. Every parameter is in [reference/tools.md](../../reference/tools.md). --- ## How targeting works Most actions take a target as a **CSS selector, visible text, ARIA role or index**. `page_getPageInfo` returns an inventory of links, buttons, fields and forms with a **stable selector already computed** for each, so the agent uses those instead of guessing. Targeting by **visible text** is sturdier still: it survives redesigns that break CSS paths. --- ## Reading | | | | --- | --- | | `page_getPageInfo` | The main snapshot. Document metadata, viewport and scroll state, a text diagram of the landmark regions with a selector for each, the heading outline, and an inventory of every interactive element with its selector, its ARIA role, its live state (disabled, checked, expanded, filled, `aria-current`) and the landmark region it sits in | | `page_extractText` | Rendered text of an element or the whole page, a sentence-aligned group at a time; long pages come back through a cursor instead of being truncated. Raw HTML is [denied by default](../approvals.md) | | `page_waitForElement` | Wait until an element is attached, visible, hidden or detached | | `page_findProgress` | Scan for progress signals worth [monitoring](monitoring.md) | | `page_findSearch` | Report whether this site has a search of its own, where its box is, and the URL a search lands on | | `page_pickElement` | Hand the page over and let the user point at the element they mean. See [A-Eye](a-eye.md) | | `page_screenshot` | See [Screenshots](screenshots.md) | ## Clicking and typing | | | | --- | --- | | `page_clickElement` | Clicks like a user, firing the full pointer and mouse sequence | | `page_trustedClick` | A real browser-level click: `isTrusted` is true, because it is dispatched through Chrome's debugger instead of from the page. The pointer travels to the target and pauses before pressing, so widgets that sample pointer movement get the sequence they wait for. For the few pages that reject synthetic clicks, and the browser features only a genuine gesture unlocks | | `page_hoverElement` | Triggers menus, tooltips and hover states | | `page_dragElement` | Drag one element onto another, or to a point | | `page_focusInput` | Focus and place the caret, or select all | | `page_fillInput` | Set a value in an input, textarea or contenteditable | | `page_typeText` | Types one keystroke at a time at a human pace: a real key event per character, varying pauses, longer pauses after punctuation. For pages that *watch* you type | | `page_selectOption` | Choose a `