Skip to main content
Glama
Zindaar

operagx-connector-plus

by Zindaar

Map Interactive Elements

operagx_map_elements
Read-only

Maps page elements to numeric IDs and draws numbered badges, enabling targeted clicks and typing in browser automation.

Instructions

Scans the page for clickable/fillable elements (links, buttons, inputs, selects, ARIA widgets) and returns each with a small integer id, role, text, CSS selector, and viewport coordinates.

By default it also draws numbered badges on the live page — call the base connector's screenshot tool right after this to visually ground the ids, then reference them as elementId in operagx_click / operagx_type_text / etc. Call operagx_clear_annotations when done looking, so the badges don't linger in future screenshots.

Args:

  • tabId / tabIndex / matchUrl / matchTitle (optional): which tab to scan. Defaults to the first open tab.

  • annotate (boolean, default true): draw numbered overlay badges.

  • visibleOnly (boolean, default true): skip elements outside the viewport or CSS-hidden.

  • limit (number, default 100, max 500): cap on elements returned, to avoid overwhelming context on dense pages.

Returns: { "count": number, // elements actually returned (<= limit) "totalFound": number, // elements matched before truncation "truncated": boolean, // true if totalFound > count "elements": [ { "id": number, // pass this as elementId to other tools "tag": string, // e.g. "input", "button", "a" "role": string | null, // ARIA role, if set "text": string, // visible text / placeholder / aria-label, truncated to 120 chars "selector": string, // CSS selector (fallback addressing) "rect": { "x": number, "y": number, "width": number, "height": number }, "center": { "x": number, "y": number }, "attributes": { [name: string]: string } // id/class/name/type/role/placeholder/aria-label/value/href } ] }

Examples:

  • Use when: "click the login button" -> map_elements first to find its id, then operagx_click with that elementId.

  • Use when: a page has more interactive elements than the default limit -> re-call with a higher limit, or narrow with visibleOnly=true (default) to only what's on-screen.

  • Don't use when: you already have a fresh element map from a moment ago and the page hasn't changed — re-resolve selectors instead of re-scanning.

Error Handling:

  • Returns "No open tabs found..." if the browser has no open tabs — open one first.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum elements to return (default 100, max 500).
tabIdNoTab id from operagx_list_tabs. Omit to use the first open tab.
annotateNoDraw numbered overlay badges on the live page for the next screenshot.
matchUrlNoPick the tab whose URL contains this substring.
tabIndexNoZero-based tab index, alternative to tabId.
matchTitleNoPick the tab whose title contains this substring.
visibleOnlyNoSkip elements outside the viewport or hidden via CSS display/visibility.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
countYes
elementsYes
truncatedYes
totalFoundYes
Behavior5/5

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

Annotations already indicate readOnlyHint=true and destructiveHint=false, but the description adds critical behavioral context: it draws numbered badges on the live page, which can linger in future screenshots unless cleared. It also discloses truncation behavior (totalFound vs count) and the error case when no tabs are open. This goes well beyond what annotations express, especially the side-effect of visual overlays.

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?

The description is well-structured with clear sections (intro, behavior, args, returns, examples, error handling) and is front-loaded with the core purpose. Every sentence contributes meaning, from the workflow hint about calling screenshot next to the error-handling note. Despite its length, it remains scannable and avoids filler. The complexity of the tool justifies the detail.

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 (7 optional parameters, rich output schema), the description is exceptionally complete. It covers return field semantics ('pass this as elementId to other tools', 'truncated to 120 chars'), truncation behavior, tab selection precedence, and error handling when no tabs exist. The output schema already defines the return structure, so the description focuses on behavioral and workflow context, filling all gaps.

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 100%, so parameters are already documented. The description adds value by explaining the rationale behind limit (avoid overwhelming context on dense pages), visibleOnly (only what's on-screen), and annotate (draw overlays for the next screenshot). It also clarifies the tab selection fallback ('Defaults to the first open tab'), which supplements the schema's individual property descriptions without redundancy.

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 clearly states the tool 'Scans the page for clickable/fillable elements (links, buttons, inputs, selects, ARIA widgets)' and returns them with ids and coordinates. This verb+resource formulation distinguishes it from sibling tools like operagx_click and operagx_type_text, which operate on existing element ids. It also mentions the return structure including CSS selectors and coordinates, making its purpose unambiguous.

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 provides explicit when-to-use guidance through examples: 'Use when: "click the login button" -> map_elements first to find its id', and also gives a don't-use case: 'Don't use when... re-resolve selectors instead of re-scanning.' It additionally explains when to increase the limit or use visibleOnly based on page density, and references the workflow of calling screenshot next and clearing annotations when done. This is exemplary usage guidance.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Zindaar/operagx-connector-plus'

If you have feedback or need assistance with the MCP directory API, please join our Discord server