analyzePage
Analyze the current page to produce a structured tree of its elements, metadata, and groups, enabling state tracking and element identification for automated browser interaction.
Instructions
PRIMARY tool for reading page state. Returns APOM tree: {tree, metadata, groups}. Compact format (default): containers as "tag_id":[children] keys, interactive elements as {id, tag, type, position, metadata} without selectors. Use element IDs (e.g., button_45, input_20) with click/type tools. Selectors registered internally for resolution. Use refresh:true after clicks. Efficient: 8-10k tokens vs screenshot 15-25k. Legend: clickTarget format is "tag:id" (e.g., "kp-chats-list-item:container_58") - use the id part for clicking. No clickTarget = element handles its own click.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| diff | No | Return only changes since last analysis: {added, removed, changed} (default: false). | |
| groupBy | No | Group elements: 'type' or 'flat' (default: 'type') | |
| refresh | No | Refresh cache (default: false) | |
| includeAll | No | Include all elements with selectors - full debug format (default: false for compact format) | |
| viewportOnly | No | Only analyze elements in current viewport (default: false). Reduces output for long pages. | |
| includePortals | No | Include React Portal contents — menus, tooltips, popovers outside main root (default: true). Without this, dropdown items are invisible. | |
| portalSelectors | No | Custom portal root CSS selectors. Default: ['#modal-root', '#menu-popup-root', '#tooltip-root', '#popover-root', '[data-portal]']. | |
| useLegacyFormat | No | Return legacy format instead of APOM (default: false - APOM is now default) | |
| registerElements | No | Auto-register elements in selector resolver (default: true) |