Browserose MCP
Controls Google Chrome browser for web automation tasks such as navigation, clicking, typing, and interacting with iframes.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Browserose MCPSnapshot the page including iframes"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Browserose MCP
MCP Tool for Agents to control the Google Chrome browser.
Browserose MCP is an MCP (Model Context Protocol) server that lets AI agents and IDEs control Google Chrome via Playwright, with full iframe support: snapshot and interact inside iframes (e.g. ALM SCORM players, embedded apps).
The toolset is sufficient for full end-to-end automation. You can complete entire flows—login, multi-step navigation, nested iframes, quizzes, and course completion—without manual steps or switching tabs. Use navigation, locators, frame selectors, coordinate fallbacks, and diagnostics as needed.
Requirements
Node.js 18+
Chrome installed (or set
PLAYWRIGHT_MCP_USE_CHROMIUM=1to use Chromium)Playwright browsers:
npx playwright install chromium(orchromeif available)
Related MCP server: OLTestStack
Install and build
npm install
npx playwright install chromium
npm run buildCursor / IDE configuration
Add to ~/.cursor/mcp.json (or project .cursor/mcp.json):
{
"mcpServers": {
"playwright-chrome": {
"command": "node",
"args": ["/absolute/path/to/Browserose-MCP/build/index.js"]
}
}
}Restart Cursor after editing mcp.json.
Environment variables
PLAYWRIGHT_MCP_HEADLESS— set to1ortrueto run the browser headless (default: headed so you see the window).PLAYWRIGHT_MCP_USE_CHROMIUM— set to1ortrueto use Playwright's Chromium instead of system Chrome.PLAYWRIGHT_MCP_VIEWPORT_MAXIMIZED— window opens maximized by default. Set to0orfalseto use a fixed size (see width/height below).PLAYWRIGHT_MCP_VIEWPORT_WIDTH— viewport width in pixels (default:1280). Used only when maximized is off.PLAYWRIGHT_MCP_VIEWPORT_HEIGHT— viewport height in pixels (default:800). Used only when maximized is off.
Examples: To use a fixed size instead of maximized, set PLAYWRIGHT_MCP_VIEWPORT_MAXIMIZED=0 and optionally PLAYWRIGHT_MCP_VIEWPORT_WIDTH=1920, PLAYWRIGHT_MCP_VIEWPORT_HEIGHT=1080.
Popup handler
When a link or button opens a new tab (e.g. Go to activity on IBM SkillsBuild opens the SCORM player in a new window), the MCP automatically attaches to that new tab. The browser context listens for the page event; when a new page is created, the internal page reference is updated so that all subsequent tool calls (navigate, click, snapshot, frame_probe, etc.) run in the new tab, not the original one. You do not need to switch tabs manually or use a separate “switch to tab” tool: click Go to activity, wait for the player to load, then continue with the same tools—they will already target the player tab. Implementation: in src/browser.ts, context.on("page", (newPage) => { page = newPage; }) runs on every new page (popup or target=_blank). Restart the MCP server (or Cursor) after pulling changes so the handler is active.
Tools (quick reference)
Tool | Purpose |
| Go to URL |
| History |
| Accessibility-like tree of the page; use |
| Snapshot a single iframe by selector (e.g. |
| Click by ref; optional |
| Type text; optional |
| Type into element by role/text/css; optional |
| Hover by ref; optional |
| Select option(s) by ref; optional |
| Press a key; optional |
| Page or iframe screenshot; optional |
| Click at |
| Click by locator: |
| List clickables in a frame. Requires |
| Diagnostic: run inside frame to get url, title, readyState, button/clickable counts, textSample. If probe fails or counts=0, UI may be canvas. |
| Get frame bounding box (x, y, width, height) in page coordinates. |
| Click at relative (rx, ry) in 0..1 inside the frame (e.g. 0.5, 0.9 = center-bottom). Uses Playwright page.mouse.click. |
| Inside frame: list child iframes (id, name, src, rect), canvas (rect), shadowHosts count, bodyRect. Use to see if UI is in nested iframe or canvas. |
| elementFromPoint at (rx, ry) in frame; returns tag, id, class, rect, pointerEvents, cursor (and iframe src/name). Confirms where clicks land. |
| Frame screenshot + text with page coords and in-frame pixel where click_at_rel(rx, ry) would click. |
| Click element in frame via DOM |
| Click by text content in frame (frameSelector + text; optional match exact/contains, scopeCss, nth). Bypasses visibility/overlays. Use when quiz options or labels don’t respond to locator/click_at_rel. |
| Sleep (seconds) |
Tools reference and use cases
Detailed description of each tool and when to use it. Optional frameSelector uses >> for nested iframes (e.g. iframe#a >> iframe#b).
Navigation
Tool | What it does | Use cases |
| Opens a URL in the current tab. | Starting a flow, opening login pages, course URLs, or any target site. |
| Goes back in history. | Undoing a navigation or returning from a redirect. |
| Goes forward in history. | Repeating a step after going back. |
Snapshot and ref-based interaction
These tools use an accessibility/DOM snapshot to get refs (e.g. s1e2). You then pass that ref to click, type, hover, or select. Best when the page (or iframe) is same-origin and has a normal DOM.
Tool | What it does | Use cases |
| Captures an accessibility-like tree of the current page. Use | Discovering structure and getting refs for main page and embedded frames in one call. |
| Snapshots a single iframe by selector. For chained selectors ( | Inspecting one frame's tree; getting refs for elements inside that frame (same-origin or when CDP can provide refs). |
| Clicks the element identified by ref. Optional | Buttons, links, checkboxes—any clickable from the snapshot. |
| Types text into the focused element or the element identified by ref. Optional | Text inputs, search boxes, login fields. |
| Hovers over the element identified by ref. Optional | Opening dropdowns or tooltips before clicking. |
| Selects option(s) in a dropdown by ref. Optional | Select elements, language pickers, filters. |
| Sends a key (e.g. Enter, Tab, ArrowRight). Optional | Submitting forms, keyboard navigation, escaping modals. |
Locator-based interaction (no snapshot)
These tools use Playwright locators (role+name, text, or css) and do not require a snapshot. They work in cross-origin iframes and are the main escape hatch when refs aren't available or snapshot is empty.
Tool | What it does | Use cases |
| Clicks an element by locator: | Cross-origin iframes, login buttons, SCORM "Next", quiz "SUBMIT" when multiple SUBMITs exist (use |
| Types into an element found by role/text/css. Optional: | Login fields, search boxes, any input when snapshot isn't used; when several inputs match, use |
| Lists visible buttons/links in a frame. Optional: | Discovering what's clickable; listing only "SUBMIT" buttons ( |
Customizing by situation: Use nth when multiple elements match (e.g. 4th button named "SUBMIT"). Use enabledOnly to click the first enabled match when the DOM has several disabled copies. Use scopeCss to restrict the search to a container (e.g. .quiz-card, [role="dialog"]) so you don't match the same text or role in the sidebar or another panel.
Coordinate-based interaction (escape hatch)
When snapshot and locators both fail (e.g. canvas, custom-rendered UI, or wrong frame depth), use coordinates relative to a frame.
Tool | What it does | Use cases |
| Returns the frame's bounding box (x, y, width, height) in page coordinates. | Converting relative positions to absolute (x, y) for |
| Clicks at pixel | Canvas or non-DOM UI when you know exact coordinates (e.g. from a screenshot). |
| Clicks at relative position | Clicking "bottom-right" or "center" of a frame when you don't have pixel coords; quick fallback for known layout. |
| Returns a screenshot of the frame and the exact page coordinates and in-frame pixel where | Debugging: confirm that (rx, ry) lands on the right element before using |
Diagnostics (finding the right frame / layer)
When a frame shows no buttons or empty text in the snapshot, the real UI is often in a child iframe, canvas, or shadow DOM. These tools help you find it.
Tool | What it does | Use cases |
| Runs a small script inside the frame: returns | Quick check: "Does this frame have any DOM?" If |
| Lists child iframes (id, name, src, rect), canvas elements (rect), count of shadow roots, and | When probe says "no content": find the real content frame (e.g. ALM SCORM's |
| Uses | Verify what element a relative point (rx, ry) hits—e.g. "Is (0.5, 0.92) really the Next button or an overlay?" |
Utility
Tool | What it does | Use cases |
| Takes a screenshot of the full page or a specific iframe ( | Visual verification, debugging layout, or feeding into vision models. |
| Pauses for a given number of seconds. | Letting the page or iframe finish loading before snapshot or click. |
Use cases in practice
Normal web automation (main page)
Usebrowser_snapshot(orbrowser_snapshot_framewith no/minimal nesting) to get refs, thenbrowser_click,browser_type,browser_hover,browser_select_optionwith those refs. Optionalbrowser_screenshotfor verification.Login flows
Often on the main page:browser_type_locatorandbrowser_click_locatorwithrole/nameortext(e.g. email → Continue → password → Log in). No snapshot required.Single iframe, same-origin
browser_snapshot_framewithframeSelector: "iframe#id"→ get refs →browser_click/browser_typewith the sameframeSelector.Cross-origin or "empty" iframe
Snapshot may be empty or refs may not work. Use locators:browser_list_clickableswithframeSelectorto see what's there, thenbrowser_click_locatorandbrowser_type_locatorwith the sameframeSelectorand role/text/css.ALM / SCORM (nested iframes)
The visible lesson UI is often in a third-level iframe. Ifbrowser_frame_probeoniframe#pplayer_iframe >> iframe#modulePlayerIframeshowsclickables: 0, runbrowser_frame_inventoryon that chain; it will list child iframes (e.g.iframe#content-frame). Extend the chain to... >> iframe#content-frameand usebrowser_list_clickablesandbrowser_click_locator(e.g.role: "button",name: "Next") there. One-line takeaway: when the frame has no DOM content, use frame_inventory to find the real content iframe, then add it to the chain.Canvas or custom-rendered UI
If frame_inventory shows a large canvas and no useful iframe, or locators don't match: usebrowser_click_at_rel_debugto see where (rx, ry) lands, thenbrowser_click_at_relwith adjusted (rx, ry), orbrowser_frame_bbox+browser_click_atwith computed (x, y).Quizzes / multiple identical buttons
When several "SUBMIT" or "Next" buttons exist and only one is enabled, usebrowser_click_locatorwithenabledOnly: true(and samerole/name) so the first enabled match is clicked. Or usebrowser_list_clickableswithrole: "button", name: "SUBMIT"(and optionallyenabledOnly: true) to see indices, then click withnth. UsescopeCss(e.g..quiz-card) to restrict to the current question card and avoid matching the sidebar.Debugging "click does nothing"
Check: (1) Correct frame? →browser_frame_probeandbrowser_frame_inventory. (2) Right element? →browser_list_clickablesin that frame;browser_hit_test_relto see what's under (rx, ry). (3) Right coordinates? →browser_click_at_rel_debug. (4) Multiple matches? → usenthorenabledOnly.
End-to-end: IBM SkillsBuild / ALM course
You can run the full course flow with only Browserose MCP tools: from the IBM page through login, learning plan, launching the activity, and completing lessons and quizzes.
1. Start from the IBM page and log in
Navigate to the course or plan URL (e.g.
https://skills.yourlearning.ibm.com/activity/PLAN-...).If redirected to login:
browser_click_locatorwithtext: "Log in with ibm"(or equivalent). On the IBM login page:browser_type_locatorwithrole: "textbox",name: "IBMid", and the email.browser_click_locatorwithrole: "button",name: "Continue".browser_type_locatorwithrole: "textbox",name: "Password", and the password.browser_click_locatorwithrole: "button",name: "Log in".
Use
browser_waitandbrowser_screenshotas needed to confirm the next page.
2. Open the learning plan and the module
From the plan page:
browser_click_locatorwithtext: "Microcredential 1: Data Classification"(or the right section).Then
browser_click_locatorwithtext: "Classifying and Sourcing Data"(or the target module).Launch the activity:
browser_click_locatorwithrole: "button",name: "Go to activity".Wait for the player: Clicking Go to activity may open the SCORM player in a new tab. The MCP attaches to new tabs automatically (popup handler), so the next tool calls then run in the player tab. Use
browser_wait(e.g. 5–8 seconds), thenbrowser_frame_probeorbrowser_frame_inventoryoniframe#pplayer_iframe(and theniframe#pplayer_iframe >> iframe#modulePlayerIframeif needed) until the content frame is present. The visible lesson UI is in the content frame:iframe#pplayer_iframe >> iframe#modulePlayerIframe >> iframe#content-frame
3. Content frame: lessons and “Continue”
Continue / Next (content):
browser_click_locatorwithframeSelector: "iframe#pplayer_iframe >> iframe#modulePlayerIframe >> iframe#content-frame",css: "button.continue-btn".Use
browser_list_clickableswith thatframeSelectorto discover buttons (e.g. “Next”, “Continue”). Usebrowser_screenshotwith thatframeSelectorwhen you need to see what’s on screen.
4. Practice quiz: two-pass strategy
The fastest way to pass is: (1) first pass—answer arbitrarily, submit, read the correct answer from feedback, memorize it; (2) TAKE AGAIN; (3) second pass—answer with the memorized correct options and submit.
Start or restart quiz:
browser_click_locatorin the content frame withtext: "START QUIZ"ortext: "TAKE AGAIN".Select an option:
If locators like#qmc-X-labelare covered by overlays, usebrowser_click_at_relin the content frame with e.g.rx: 0.5, andryroughly: first option ~0.48–0.52, second ~0.56–0.6, third ~0.64–0.68 (tune if layout differs). Or usebrowser_hit_test_rel/browser_click_at_rel_debugto confirm.Submit:
browser_click_locatorin the content frame withrole: "button",name: "SUBMIT",enabledOnly: true(so the active SUBMIT is clicked).Read feedback:
After submit, usebrowser_frame_probeon the content frame and readtextSample(or usebrowser_screenshot) to get “Correct answer: …” and store it per question index (Q1, Q2, …).Next question:
browser_click_at_relin the content frame withrx: 0.65,ry: 0.85(NEXT button area). Repeat until the quiz is done (no more SUBMIT or you see completion).Second pass:
Click TAKE AGAIN, then for each question click the option that matches the stored correct answer (byryband or by locator if the correct option text is clickable), SUBMIT, then click (0.65, 0.85) for NEXT until the quiz is complete.
5. After the quiz and finishing the module
When the quiz is complete, use
browser_click_locatorin the content frame withcss: "button.continue-btn"(or equivalent) to continue to the next lesson or close the module.Repeat the same pattern for further lessons and quizzes until the module/course is marked complete.
Summary: All steps—login, plan navigation, “Go to activity”, waiting for the player, lesson Continue, quiz (two-pass with feedback reading and TAKE AGAIN), and completion—can be done with the existing tools (navigate, click_locator, type_locator, list_clickables, frame_probe, frame_inventory, click_at_rel, screenshot, wait). No manual tab switching or external tools are required.
Using iframes (including cross-origin / ALM SCORM)
Navigate to a page that contains an iframe (e.g. ALM course page).
Call
browser_snapshotwithincludeFrames: trueto get the main page plus same-origin iframes, or callbrowser_snapshot_framewithframeSelector: "iframe"(oriframe#id) to get only that frame's tree.Use the returned refs with
browser_click,browser_type, etc., and pass the sameframeSelector. For nested iframes use a chained selector with>>, e.g.iframe#pplayer_iframe >> iframe#modulePlayerIframe.
Example: click "Next" inside the first iframe:
browser_snapshot_framewithframeSelector: "iframe"→ get ref for the "Next" button (e.g.f1e2).browser_clickwithref: "f1e2",frameSelector: "iframe".
Escape hatch (cross-origin / SCORM): For frames where snapshot fails, use Playwright locators directly (no AX/DOMSnapshot):
browser_list_clickableswithframeSelector: "iframe#pplayer_iframe >> iframe#modulePlayerIframe"→ lists buttons/links with text and enabled/disabled.ALM SCORM: The visible lesson UI (e.g. "Next", "Learning objectives") lives in a third-level iframe. Use
browser_frame_inventoryoniframe#pplayer_iframe >> iframe#modulePlayerIframeto see child iframes; then chain to the content frame:iframe#pplayer_iframe >> iframe#modulePlayerIframe >> iframe#content-frame. Use that selector withbrowser_list_clickablesandbrowser_click_locator(e.g.role: "button",name: "Next").browser_click_locatorwith the sameframeSelectorandrole: "button",name: "Next"(ortext: "Next") → clicks the element. Works because Playwright targets the frame's context directly.
Cross-origin / SCORM (AX tree empty): The server also uses a 3-tier snapshot for frames:
Tier A — CDP
Accessibility.getFullAXTree(refs withbackendDOMNodeId; click via box model).Tier B — If AX is empty, CDP
DOMSnapshot.captureSnapshot(refs with viewport coordinates; click viaInput.dispatchMouseEvent).Tier C — Use
browser_screenshotwithframeSelector, thenbrowser_click_atwith the sameframeSelectorand(x, y)to click by coordinates (e.g. canvas or when both AX and DOM snapshot fail).
License and author
License: This project is open source. Use and modify it freely.
Developer: ETTALBI OMAR
Available Tools
24 toolsbrowser_clickA
Click an element by ref from the snapshot. Use frameSelector for iframes; chain with ' >> ' for nested frames.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | Element ref from snapshot | |
| frameSelector | No | Optional. Iframe selector, e.g. iframe#id or iframe#a >> iframe#b for nested |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the burden of behavioral disclosure. It explains how to target an element but says nothing about side effects, navigation, waiting behavior, or error handling. The iframe chaining detail is more parameter guidance than behavioral context, leaving the post-click outcome unspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action and immediately followed by a precise iframe usage note. Every sentence earns its place with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 2-parameter tool, this is minimally adequate: it covers the basic click action and frame handling. However, without annotations or output schema, it lacks guidance on choosing this ref-based click over sibling click variants and does not explain expected return values or errors.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and already documents both parameters, including the chaining syntax for nested frames. The description's frameSelector mention largely restates schema content, adding no significant extra semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Click') and clearly identifies the target as an element by ref from the snapshot. This distinguishes it from coordinate-based, locator-based, or text-based click tools among the siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use this tool ('by ref from the snapshot') and provides concrete iframe usage instructions with chaining syntax. It does not explicitly exclude or compare against sibling click tools, but the ref-based condition implicitly defines its niche.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_click_atA
Click at (x, y) relative to a frame's viewport. Use when snapshot/refs are unavailable (e.g. cross-origin or canvas). Chain frameSelector for nested frames.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | X offset from frame viewport left | |
| y | Yes | Y offset from frame viewport top | |
| button | No | left | right | left |
| clickCount | No | Number of clicks | |
| frameSelector | Yes | Frame whose viewport (x,y) is relative to; use ' >> ' for nested |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clarifies the coordinate frame ('relative to a frame's viewport') and how to target nested frames, which are meaningful behavioral traits. It does not mention click event details, wait behavior, or side effects, but these are less critical for a simple coordinate click action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, with the core action first and usage guidance second. Every sentence adds value without redundancy or filler. This is a model of conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 parameters, no output schema, no annotations), the description provides necessary context for when to use coordinate-based clicking and how to handle nested frames. It does not explain return values, but that is not essential for a click action. The description, combined with the schema, provides sufficient context for most use cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides descriptions for all 5 parameters (100% coverage), so the schema already documents the parameters. The description adds minimal extra meaning by reinforcing the coordinate system and frame chaining, but this largely duplicates the schema. Baseline 3 is appropriate because the description does not significantly add beyond the structured schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Click at (x, y) relative to a frame's viewport,' which identifies the specific verb, resource, and coordinate system. It distinguishes from sibling tools by noting the use case 'when snapshot/refs are unavailable (e.g. cross-origin or canvas),' separating it from element-based click tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use when snapshot/refs are unavailable' and gives examples (cross-origin, canvas), which clearly indicates when to use the tool. It also instructs to 'Chain frameSelector for nested frames,' providing practical usage guidance. However, it does not explicitly mention alternative tools or when not to use it, so it stops short of full exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_click_at_relB
Click at relative position (rx, ry) in [0..1] inside the frame. E.g. (0.5, 0.9) = center-bottom. Uses Playwright page.mouse.click for reliable coordinates.
| Name | Required | Description | Default |
|---|---|---|---|
| rx | Yes | Relative X in 0..1 (0=left, 1=right) | |
| ry | Yes | Relative Y in 0..1 (0=top, 1=bottom) | |
| button | No | left | right | left |
| frameSelector | Yes | Chained iframe selector |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the implementation method (Playwright page.mouse.click) and reliability, but it does not mention side effects (e.g., triggering events, scrolling) or prerequisites (e.g., frame must be loaded). For a mutating action with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action and then a clarifying example and implementation note. Every word earns its place with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, and the schema covers all parameters, but with no output schema and no annotations, the description doesn't describe what happens upon success/failure or whether the click occurs even if no element is at the coordinates. It is adequate for basic usage but lacks deeper context for a complete picture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds an example that maps (0.5, 0.9) to center-bottom, which is helpful but largely redundant with the per-parameter descriptions. It doesn't provide syntax details beyond what the schema already documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Click') with a precise scope ('at relative position (rx, ry) in [0..1] inside the frame'). The example '(0.5, 0.9) = center-bottom' further clarifies the behavior and distinguishes it from absolute-position click tools like 'browser_click_at'. However, it doesn't explicitly name sibling alternatives, so it falls just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for clicking at relative coordinates within a frame and mentions reliability ('Uses Playwright page.mouse.click for reliable coordinates'). It does not contrast with alternatives (e.g., 'browser_click' for element-based clicks) or state when not to use it. This is clear context but with no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_click_at_rel_debugA
Return frame screenshot plus exact page coordinates and in-frame pixel where click_at_rel(rx, ry) would click. No dot drawn; use to verify target.
| Name | Required | Description | Default |
|---|---|---|---|
| rx | Yes | Relative X in 0..1 | |
| ry | Yes | Relative Y in 0..1 | |
| frameSelector | Yes | Chained iframe selector |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses what it returns (screenshot, page coordinates, in-frame pixel) and a key limitation ('No dot drawn'), which is valuable behavioral context. It does not mention error behavior or side effects, but for a read-only debug tool this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main output, and every word adds value. It conveys the essential information without any redundancy or irrelevant detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple debug tool with no annotations and no output schema, the description covers the return value, key limitation, and usage intent. It lacks details on error handling or coordinate interpretation, but the tool's scope is narrow and the description is sufficiently complete for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds little beyond the schema, only re-mentioning rx and ry in the context of click_at_rel. It does not provide extra meaning for frameSelector or the exact format of coordinates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a frame screenshot plus exact page coordinates and in-frame pixel where click_at_rel(rx, ry) would click. It distinguishes from siblings by explicitly mentioning 'No dot drawn' and 'use to verify target', contrasting with actual click tools like browser_click_at_rel.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'use to verify target' gives a clear when-to-use scenario. It implies this is a debugging/verification alternative to click_at_rel, and the context of sibling tools reinforces that. However, it does not explicitly name alternatives or state when not to use it, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_click_locatorA
Click by Playwright locator. Use frameSelector for iframes; omit for main page. Provide one of: role+name, text, or css. Optional: nth (0-based index), enabledOnly (click first enabled match), scopeCss (resolve within container).
| Name | Required | Description | Default |
|---|---|---|---|
| css | No | CSS selector (e.g. input[type=email], button) | |
| nth | No | Optional. 0-based index of match (e.g. 3 = 4th match). Use when multiple elements match. | |
| name | No | Accessible name (regex or string); use with role | |
| role | No | ARIA role, e.g. button, link | |
| text | No | Visible text to match (alternative to role+name) | |
| force | No | Skip actionability checks | |
| scopeCss | No | Optional. Resolve the locator only within this container (e.g. .quiz-card to avoid matching sidebar). | |
| timeoutMs | No | Timeout in ms | |
| enabledOnly | No | Optional. If true, click the first matching element that is not disabled (e.g. first enabled SUBMIT among several). | |
| frameSelector | No | Optional. Chained iframe selector; omit to target main page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the locator-based approach and frame handling, and notes enabledOnly to click the first enabled match. However, it omits behavior like waiting for actionability, scrolling, error handling on no match, or navigation consequences, which is a notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences. The core purpose is front-loaded, and every sentence provides essential usage guidance without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter tool with no annotations, the description covers the crucial aspects: primary locator modes, iframe handling, and optional parameters. It doesn't mention timeout or force, but those are well-documented in the schema, and overall the description is sufficient for typical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, giving a baseline of 3. The description adds value by enforcing the 'provide one of' rule and clarifying semantics for nth, enabledOnly, and scopeCss beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it clicks by Playwright locator, and outlines the specific locator strategies (role+name, text, css). This distinguishes it from coordinate-based or text-evaluation click tools among its siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete usage instructions: use frameSelector for iframes, omit for main page, and provide one of role+name, text, or css. It does not explicitly compare against alternative click tools like browser_click or browser_evaluate_click, but the intended usage is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_evaluate_clickA
Click an element inside a frame via DOM .click() (runs in frame context). Bypasses visibility/actionability. Use when locator click fails (e.g. SUBMIT disabled or not visible). Same-origin frame only.
| Name | Required | Description | Default |
|---|---|---|---|
| css | Yes | CSS selector (e.g. button.quiz-card__button, [aria-label=SUBMIT]) | |
| nth | No | Optional. 0-based index when multiple match (default 0) | |
| timeoutMs | No | Timeout to resolve frame | |
| frameSelector | Yes | Chained iframe selector |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It transparently reveals that it bypasses visibility/actionability, runs in frame context, and works only for same-origin frames. This is useful, but it doesn't mention side effects or failure behavior beyond the timeout parameter, so it's not fully comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences, each delivering essential information: what it does, why to use it, and its constraint. It is front-loaded and free of filler, making it highly efficient for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (frame clicks, bypassing actionability), the description covers the core behavior, usage scenario, and a key limitation. It lacks an explicit statement about return values or what happens on failure, but the schema's timeoutMs and the absence of an output schema keep this from being a major gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides full descriptions for all parameters (100% coverage), so the baseline is 3. The description reinforces the frame context and the bypassing behavior, which indirectly clarifies the purpose of the frameSelector and css parameters, but it doesn't add significant new parameter-level detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool clicks an element inside a frame using DOM .click(), with the context of running in frame context. It distinguishes itself from sibling tools by specifying the mechanism (DOM .click()) and the limitation (same-origin frame only), 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says to use when locator click fails (e.g., SUBMIT disabled or not visible), providing a clear trigger condition. It also notes the same-origin frame limitation, but does not name sibling alternatives directly or explicitly state when not to use it, so it falls just short of full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_evaluate_click_by_textA
Click an element by its text content via DOM .click() inside the frame. Bypasses visibility/actionability and overlay issues. Use when locator/click_at_rel fail (e.g. quiz options). Same-origin frame only.
| Name | Required | Description | Default |
|---|---|---|---|
| nth | No | 0-based index when multiple elements match (default 0) | |
| text | Yes | Exact or partial text to match (see match param) | |
| match | No | exact = trimmed text equals; contains = textContent includes | exact |
| scopeCss | No | Optional. Search only inside this container (e.g. .page-lesson to exclude sidebar) | |
| timeoutMs | No | Timeout to resolve frame | |
| frameSelector | Yes | Chained iframe selector |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses key behaviors: using DOM .click(), bypassing visibility/actionability and overlay issues, and the same-origin frame constraint. However, it does not mention potential event simulation differences or error behavior, so it is not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact: three sentences, each adding unique value. The main purpose leads, followed by behavioral notes and usage guidance. No fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is relatively simple (click action), and the schema fully documents all parameters. The description provides usage context, constraints, and clarifies when to choose it over alternatives. However, it does not describe return values or failure modes, but for a click tool this is acceptable. Given the lack of annotations, a complete description would ideally mention error handling, but overall it is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description does not add extra parameter information beyond what the schema already provides; the mention of 'text content' aligns with existing parameter descriptions. No additional semantics are provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action: 'Click an element by its text content via DOM .click() inside the frame.' It clearly identifies the method and resource, and differentiates from siblings by positioning it as a fallback when 'locator/click_at_rel fail' and by noting the same-origin frame restriction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use when locator/click_at_rel fail (e.g. quiz options)', naming alternatives and providing an example scenario. It also notes the limitation 'Same-origin frame only', which serves as an exclusion criterion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_frame_bboxA
Get bounding box (x, y, width, height) of the frame in page coordinates. Use with browser_click_at or to compute relative clicks.
| Name | Required | Description | Default |
|---|---|---|---|
| frameSelector | Yes | Chained iframe selector; use ' >> ' for nested |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It adds useful context such as 'page coordinates' and the return tuple, but does not disclose whether the operation is read-only, what happens if the frame selector is invalid, or any potential side effects. This is a minimal but not misleading disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no fluff. The first sentence states the core function, and the second provides a concrete usage example. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read-only tool with no output schema, the description covers the essential return shape and suggests a primary use case. It does not explicitly mention 'iframe' in the description, but the schema does. Overall, it is reasonably complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully documents the single parameter 'frameSelector' with the instruction 'use >> for nested'. Since schema description coverage is 100%, the description adds no extra parameter meaning beyond what the schema already provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get bounding box (x, y, width, height) of the frame in page coordinates.' It uses a specific verb ('Get') and resource ('bounding box of the frame'), and the mention of 'browser_click_at' distinguishes it from other browser tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage context: 'Use with browser_click_at or to compute relative clicks.' This tells the agent when to use the tool, though it does not explicitly exclude alternatives or list when-not-to-use scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_frame_inventoryA
Run inside the frame: list child iframes (id, name, src, rect), canvas elements (rect), count of open shadow roots, bodyRect. Use to see if visible UI is in a nested iframe or canvas.
| Name | Required | Description | Default |
|---|---|---|---|
| timeoutMs | No | Timeout to resolve frame | |
| frameSelector | Yes | Chained iframe selector |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden. It truthfully lists what the tool returns (iframes, canvas rects, shadow root count, bodyRect) and indicates it runs 'inside the frame,' suggesting a read-only operation. It does not mention side effects, error behavior, or timeout handling, but for an inventory operation the output disclosure is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, with the first sentence enumerating the exact output items and the second providing the use case. Every word earns its place, front-loading the essential information without any fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema, the description compensates by enumerating key output fields (id, name, src, rect, bodyRect) and the count of shadow roots. It is adequate for an inventory tool, but it does not specify the exact shape of rectangles or potential failure modes, leaving minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers both parameters with descriptions: frameSelector ('Chained iframe selector') and timeoutMs. The description adds no additional parameter-level meaning beyond reinforcing the 'inside the frame' context, which aligns with frameSelector. Since schema coverage is 100%, a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('list') and identifies exact resources: child iframes, canvas elements, shadow root count, and bodyRect. It clearly distinguishes itself from sibling tools by framing the output as an inventory of frame internals, with a concrete use case (detecting nested iframes or canvas UI).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states when to use the tool: 'Use to see if visible UI is in a nested iframe or canvas.' This provides clear context but does not explicitly name alternatives or exclusions. It implies a diagnostic role without comparing to sibling tools like browser_frame_probe or browser_snapshot_frame, so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_frame_probeA
Run a small diagnostic inside a frame: url, title, readyState, counts (buttons, clickables), textSample. Use to see if Playwright can see DOM (if probe fails or counts=0, UI may be canvas).
| Name | Required | Description | Default |
|---|---|---|---|
| timeoutMs | No | Timeout to resolve frame | |
| frameSelector | Yes | Chained iframe selector, e.g. iframe#pplayer_iframe >> iframe#modulePlayerIframe |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the probe's return fields and the interpretation of failures (counts=0 may mean canvas), which is helpful. However, it doesn't mention side effects, behavior when the frame isn't found, or that it waits for the frame to resolve (timeoutMs implies this but isn't stated).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that front-loads the primary output and then adds a diagnostic note. Every word earns its place with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without an output schema, the description compensates by listing the exact fields returned (url, title, readyState, counts, textSample) and providing a diagnostic interpretation. It's sufficient for a probe tool, though it could clarify how the results are structured or formatted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: both parameters have clear descriptions (frameSelector with an example, timeoutMs with default and purpose). The tool description adds no additional parameter context, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Run a small diagnostic inside a frame' with specific outputs (url, title, readyState, counts, textSample). It distinguishes itself from sibling tools like browser_snapshot and browser_frame_inventory by focusing on DOM visibility probing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage context: 'Use to see if Playwright can see DOM (if probe fails or counts=0, UI may be canvas).' This tells the agent when to choose this tool, though it doesn't explicitly name alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_go_backB
Go back in history
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only states the action, not what happens when history is empty, whether navigation blocks or waits, or what success/failure looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with zero waste. It is as concise as possible while conveying the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple parameterless tool, but contextual completeness is reduced by the absence of return values, error behavior, or navigation semantics. The description is minimally viable but leaves important behavior unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description adds no parameter details, but none are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Go back in history' clearly states the action (go back) and the resource (history), distinguishing it from sibling tools like browser_go_forward and browser_navigate. It is terse but unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention that this is the opposite of browser_go_forward, nor does it advise against using it when no history exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_go_forwardA
Go forward in history
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states 'Go forward in history' without specifying behavior when no forward history exists, whether it waits for page load, or any side effects. This is a minimal disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that directly conveys the tool's purpose. It is front-loaded and contains no unnecessary words or repetition, earning a high score for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with no parameters and no output schema, the description is adequate but lacks edge-case context such as behavior when history is empty. It is complete for basic use but could benefit from a note on failure modes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema is empty. The baseline for 0 parameters is 4, and there is no need for parameter documentation. The description adds no parameter information, which is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Go forward in history' clearly states the action with a specific verb and resource. It is distinguished from siblings like browser_go_back, which covers the opposite direction, and browser_navigate, which handles direct navigation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage is implied: use this tool to move forward in the browser's history. However, there is no explicit comparison to alternatives or mention of when not to use it, though the tool's simplicity makes the context fairly intuitive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_hit_test_relA
Return element at relative (rx, ry) in [0..1] inside the frame via elementFromPoint. Returns tag, id, class, rect, pointerEvents, cursor; if iframe, includes src/name. Confirms where clicks land.
| Name | Required | Description | Default |
|---|---|---|---|
| rx | Yes | Relative X in 0..1 | |
| ry | Yes | Relative Y in 0..1 | |
| timeoutMs | No | Timeout to resolve frame | |
| frameSelector | Yes | Chained iframe selector |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses the implementation ('elementFromPoint'), the return fields (tag, id, class, rect, pointerEvents, cursor; iframe src/name), and implies a read-only, non-mutating operation. It lacks an explicit statement about no side effects, but the overall behavior is well conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences: what it does, what it returns, and its purpose. Each sentence earns its place with no fluff or redundancy. It is front-loaded with the core action and remains highly readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must explain return values, which it does by listing the fields. With no annotations, it also covers the behavioral aspect. It does not mention error cases (e.g., element not found) or clarify that it does not perform a click, but for a simple hit-test tool, the provided information is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds minimal extra parameter meaning beyond the schema—it mentions that rx/ry are relative in [0..1] and that the operation is inside a frame, but these are already captured in the schema descriptions. The description does not provide additional context about the parameters (e.g., coordinate mapping, frame chaining nuances).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Return'), the resource ('element at relative (rx, ry)... inside the frame'), and the method ('via elementFromPoint'). It also explains the purpose ('Confirms where clicks land'), distinguishing it from sibling tools like browser_click_at_rel (which clicks) and browser_frame_bbox (which returns geometry).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context by stating the tool confirms where clicks land, implying use for hit-testing/verification before actual clicks. It does not explicitly name alternatives or exclusions, but the intended use case is evident from the description and the sibling tool names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_hoverA
Hover over an element by ref. Use frameSelector when target is inside an iframe.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | Element ref from snapshot | |
| frameSelector | No | Optional. Iframe selector when target is inside an iframe |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states the action and iframe handling, but doesn't disclose whether the hover has side effects, triggers events, or requires any preconditions. This is minimal coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, directly front-loads the action, and contains no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool, the description covers the primary use and the frame case, but given no annotations, it could mention that hovering may trigger UI changes or that the element must be visible. Still, it's largely complete for its simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes both parameters with 100% coverage; the description's frameSelector note duplicates the schema's description. No new parameter semantics are added, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Hover' and identifies the resource 'an element by ref', clearly distinguishing from sibling tools like browser_click or browser_type. It directly states the core action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit iframe usage guidance ('Use frameSelector when target is inside an iframe'), which is clear context. However, it doesn't discuss when to prefer hover over alternatives or exclusions, so it lacks full comparative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_list_clickablesA
List visible clickable elements (buttons, links) in a frame. Optionally filter by role+name, text, or css; filter by enabledOnly; or scope to a container (scopeCss). Use to discover what to click without snapshot.
| Name | Required | Description | Default |
|---|---|---|---|
| css | No | Optional. Filter to elements matching this CSS selector. | |
| name | No | Optional. Filter to accessible name (regex); use with role. | |
| role | No | Optional. Filter to this ARIA role (e.g. button). Use with name for exact filter. | |
| text | No | Optional. Filter to elements whose text contains this (substring). | |
| scopeCss | No | Optional. List only clickables within this container selector. | |
| timeoutMs | No | Timeout to resolve frame and elements | |
| enabledOnly | No | Optional. If true, list only enabled elements. | |
| frameSelector | Yes | Chained iframe selector, e.g. iframe#pplayer_iframe >> iframe#modulePlayerIframe | |
| includeBoundingBox | No | Include x,y,width,height for each |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that only visible clickables are listed, that listing is frame-scoped, and that various filters are supported. This covers key behavioral traits, though it does not mention return format or potential side effects (which are minimal for a list operation).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no redundancy. The first sentence states the core function, the second lists filter options and the use case. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 9 parameters and no output schema, the description provides sufficient context for selection and invocation: it names the resource, timing, and main filter dimensions. It does not describe the return structure, but parameter details are fully covered in the schema, so overall completeness is good.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds value by grouping filter options (role+name, text, css, enabledOnly, scopeCss) but doesn't elaborate on parameters like timeoutMs or includeBoundingBox beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with a clear, specific action: 'List visible clickable elements (buttons, links) in a frame.' It also distinguishes this tool from the sibling browser_snapshot by adding 'Use to discover what to click without snapshot.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The closing phrase 'Use to discover what to click without snapshot' gives clear context for when to use this tool. It implicitly differentiates from browser_snapshot but does not explicitly state when not to use it or name alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_press_keyB
Press a key (e.g. Enter, Tab, ArrowRight). Use frameSelector to send to an iframe.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Key to press, e.g. Enter, Tab, ArrowRight | |
| frameSelector | No | Optional. Iframe selector to target the frame |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, but it only restates the action ('Press a key') and adds iframe targeting. It does not disclose behavior like event sequencing, modifiers, focus requirements, or potential side effects such as navigation. This is a minimal disclosure with little added context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, precisely front-loaded with the action ('Press a key') and examples. Every word earns its place without unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with two documented parameters and no output schema. The description covers the main action and the iframe nuance, but lacks any note about edge cases, wait behavior, or what happens if the key press triggers navigation, making it adequate but not rich.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes both parameters (key, frameSelector) with examples, so schema coverage is 100%. The description adds a note about using frameSelector to send to an iframe, which is slightly clearer than the schema's 'target the frame', but does not add significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool presses a key and gives examples (Enter, Tab, ArrowRight). It distinguishes from sibling tools like browser_click and browser_type by focusing on key presses, though it does not explicitly compare. The verb 'Press' is specific and the resource is 'key'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives context that keys like Enter/Tab/ArrowRight can be pressed and mentions using frameSelector for iframes, but it does not explicitly state when to prefer this over browser_type or browser_click. It implies usage for key events, but no exclusions or alternatives are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_screenshotA
Take a screenshot of the page or of a specific iframe.
| Name | Required | Description | Default |
|---|---|---|---|
| frameSelector | No | Optional. Iframe selector to screenshot only that frame |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only states the scope (page or iframe) and does not disclose the output format, whether it captures the full page or viewport, or any side effects. This is insufficient for a tool with no annotation support.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that is front-loaded with the verb and resource. It contains no fluff or unnecessary details, making it appropriately sized for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (1 optional param, no output schema, no annotations), the description covers the core action but lacks crucial context about the return value (e.g., image path vs base64) and any behavioral constraints. It is minimally viable but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema describes frameSelector as an optional iframe selector, matching the description's mention of 'specific iframe'. Since schema coverage is 100%, the baseline is 3; the description adds no extra semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool takes a screenshot of the page or a specific iframe, using the specific verb 'take' and identifying the resource. This distinguishes it from siblings like browser_snapshot (DOM snapshot) and browser_frame_bbox (bounding box).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by stating what it does (screenshot) but does not explicitly guide when to use it over alternatives like browser_snapshot. No exclusions or contextual triggers are provided, so it remains at the 'implied usage' level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_select_optionA
Select option(s) in a dropdown by ref. Use frameSelector when inside an iframe.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | Select element ref from snapshot | |
| values | Yes | Option value(s) to select | |
| frameSelector | No | Optional. Iframe selector when target is inside an iframe |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It adds no behavioral details beyond the schema—no mention of return values, error handling, or the prerequisite of having a snapshot ref. The iframe guidance is already present in the schema, so it contributes no unique transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loaded with the main action and no wasted words. Every sentence is purposeful, though the second sentence is somewhat redundant with the schema, it remains concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description omits return value information and preconditions such as needing a snapshot ref. The core function is clear and schema covers all parameters, but the tool's complete behavior is under-specified for an agent to fully anticipate side effects or results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for all three parameters, so the description adds no new semantic information beyond what the schema already states. It merely reiterates 'by ref' and iframe usage, which the schema explains.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Select option(s) in a dropdown by ref' with a specific verb and resource, differentiating it from other browser action tools like click or type. The iframe hint adds specificity, making it obvious what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear usage context with 'Use frameSelector when inside an iframe,' which indicates when to apply that parameter. However, it does not explicitly mention alternatives or when not to use this tool relative to sibling tools, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_snapshotA
Capture accessibility snapshot of the current page. Use for getting refs to interact with. Set includeFrames true to include iframe content.
| Name | Required | Description | Default |
|---|---|---|---|
| includeFrames | No | Include content of same-origin iframes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the transparency burden. It discloses the iframe inclusion behavior ('Set includeFrames true to include iframe content') but does not explain what the snapshot contains, how refs are represented, or any potential side effects. Adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action, and every word contributes meaning. No unnecessary detail or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and no output schema, the description adequately covers purpose and usage. It could mention what the snapshot format looks like, but it provides enough for an agent to decide when to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage for the single parameter (includeFrames) with a description. The tool description merely restates this option ('Set includeFrames true...') without adding new meaning, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it 'Capture[s] accessibility snapshot of the current page' and explains its purpose: 'Use for getting refs to interact with.' This distinguishes it from visual tools like browser_screenshot and interaction tools like browser_click.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context ('Use for getting refs to interact with') but does not explicitly mention alternatives or cases when not to use it. This fits the 'clear context, no exclusions' level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_snapshot_frameA
Snapshot a single iframe by selector. Use ' >> ' for nested frames, e.g. iframe#pplayer_iframe >> iframe#modulePlayerIframe.
| Name | Required | Description | Default |
|---|---|---|---|
| frameSelector | Yes | CSS selector for the iframe, or chained with ' >> ' for nested frames |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden for behavioral disclosure. It discloses the nested frame syntax with an example, which is useful behavior not obvious from the schema. However, it doesn't mention what the snapshot output is (e.g., image path, base64), what happens if the selector is invalid, or explicitly confirm that it's a read-only operation. The nested-frame guidance adds some value but leaves significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long and immediately states the core purpose. The example is concisely embedded and adds real value without fluff. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple tool with one parameter and no output schema or annotations. The description explains the selector mechanics well, but it doesn't state what the snapshot returns (e.g., a screenshot image) or how it relates to browser_snapshot. For an agent to fully understand the tool's effect and output, more information is needed, though the simplicity keeps it adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% since the only parameter, frameSelector, is described in the schema. The description adds value by providing a concrete example ('iframe#pplayer_iframe >> iframe#modulePlayerIframe') that clarifies the chaining format beyond the schema's generic description. This extra guidance helps the agent construct valid selectors.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Snapshot a single iframe by selector.' It specifies the action (snapshot), the resource (iframe), and the method (by selector). This distinguishes it from sibling tools like browser_snapshot which captures the full page, and browser_frame_probe which likely inspects frames.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context that this tool is for snapshotting a single iframe, and gives a specific example of using ' >> ' for nested frames. While it doesn't explicitly state when not to use it or name alternatives, the purpose is distinct enough that an agent can infer when to select this tool over siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_typeA
Type text into the focused element or into the element identified by ref. Use frameSelector for elements inside an iframe.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | No | Optional. Target element ref from snapshot | |
| text | Yes | Text to type | |
| submit | No | Press Enter after typing | |
| frameSelector | No | Optional. Iframe selector when target is inside an iframe |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses that typing targets the focused element or a ref, and that frameSelector handles iframes, but it does not reveal whether existing text is cleared, whether it waits for element interactivity, or what happens on failure. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words, front-loading the core action and adding the iframe tip second.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the moderate complexity of four parameters and no annotations or output schema, the description covers the essential usage but omits details like the submit parameter behavior and distinctions from sibling typing tools. It is minimally viable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents all four parameters with 100% coverage. The description reinforces the ref and frameSelector roles but adds no new semantics beyond the schema, matching the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool types text into the focused element or a ref-identified element, using a specific verb and resource. It does not explicitly distinguish from the sibling browser_type_locator, but the ref-based approach provides some differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context on when to use the tool (focused element or ref) and mentions frameSelector for iframes, but it does not give explicit guidance on when to prefer this over browser_type_locator or browser_press_key. Usage is implied rather than explicitly contrasted with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_type_locatorA
Type text into an element found by locator. Omit frameSelector for main page. Provide one of: role+name, text, or css. Optional: nth (0-based index), scopeCss (resolve within container).
| Name | Required | Description | Default |
|---|---|---|---|
| css | No | CSS selector, e.g. input[type=email] | |
| nth | No | Optional. 0-based index of match when multiple elements match. | |
| name | No | Accessible name; use with role | |
| role | No | ARIA role, e.g. textbox | |
| text | No | Visible text to match | |
| input | Yes | Text to type into the element | |
| submit | No | Press Enter after typing | |
| scopeCss | No | Optional. Resolve the locator only within this container. | |
| timeoutMs | No | Timeout in ms | |
| frameSelector | No | Optional. Iframe selector; omit for main page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of explaining behavior. It adds useful context about locator alternatives, nth being 0-based, and scopeCss resolving within a container. However, it does not disclose error handling, return values, or behavior when multiple elements match without nth, which would be valuable for a typing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences, front-loaded with the core action and followed by parameter guidance. Every sentence earns its place with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having 10 parameters and no annotations or output schema, the description covers the essential usage scenario: how to target an element (role+name, text, css), how to narrow scope (nth, scopeCss), and frame handling. It omits details about submit and timeoutMs, but those are well described in the schema, so the context is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaning beyond schema by enforcing the 'Provide one of' constraint and clarifying that frameSelector is for iframes only, which the schema does not convey as a mutual exclusivity rule.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb and resource: 'Type text into an element found by locator.' It clearly distinguishes this from sibling tools like browser_click_locator by focusing on typing text and specifies the locator strategies (role+name, text, css).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives usage constraints like 'Provide one of: role+name, text, or css' and 'Omit frameSelector for main page,' which help select locator parameters. However, it does not explicitly state when to prefer this tool over alternatives like browser_type or browser_click_locator, leaving the comparison to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_waitB
Wait for a number of seconds
| Name | Required | Description | Default |
|---|---|---|---|
| time | Yes | Seconds to wait |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
'Wait for a number of seconds' discloses only the basic action. With no annotations provided, the description does not clarify whether the wait is blocking, whether fractional seconds are supported, or what happens with invalid values. This is minimal behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence that is direct and free of fluff. It is appropriately concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one fully documented parameter and no output schema, the description covers the core function. However, it lacks any usage context or behavioral nuance, making it minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the 'time' parameter as 'Seconds to wait', and the description adds no information beyond that. With 100% schema coverage, the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('Wait') and resource ('number of seconds'), distinguishing it from sibling browser tools like navigation and clicking. It is specific and non-tautological.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool, no alternatives, and no exclusions. It simply states what it does, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Multiple tools perform clicking (browser_click, browser_click_at, browser_click_locator, browser_click_at_rel, browser_evaluate_click, browser_evaluate_click_by_text) and several snapshot/probe tools overlap (browser_snapshot, browser_snapshot_frame, browser_frame_probe, browser_frame_inventory). Descriptions differentiate by method and use case, but the boundaries are subtle and could easily confuse an agent.
All tools share the 'browser_' prefix and mostly follow a consistent verb-first pattern (navigate, click, type, hover). A few noun-based names like browser_frame_bbox and browser_frame_inventory deviate slightly, but overall the convention is predictable and readable.
At 24 tools, this sits at the upper boundary of a comprehensive browser automation server. The count is justified by the wide range of interactions (clicks, typing, iframes, canvas, debugging), but it feels slightly heavy—some click variants could be consolidated.
The tool surface covers essential browser operations: navigation, history, waiting, clicking, typing, selecting, screenshots, and iframe support. Advanced probing and debug tools fill niche gaps. Minor omissions like an explicit scroll or text-extraction tool are workable via snapshots or evaluate, so the set is nearly complete.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Live browser debugging for AI assistants — DOM, console, network via MCP.
A paid remote MCP for AI agent browser DevTools MCP, built to return verdicts, receipts, usage logs,
Hosted real Google Chrome MCP with per-user persistent state. Navigate, click, type, screenshot.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Related MCP Servers
- AlicenseNot gradedqualityNot gradedmaintenanceA Playwright-based MCP server that exposes a live browser as a traceable, inspectable, debuggable and controllable execution environment for AI agents.5,21857
- FlicenseNot gradedqualityBmaintenanceMCP server that enables AI agents to automate browser testing via Chromium, providing tools for navigation, interaction, and inspection.
- AlicenseAqualityAmaintenanceMCP server that lets AI agents drive your real Chromium browser with your existing signed-in sessions, providing visible, local, and inspectable automation for tasks like navigation, clicking, typing, and form filling.251Apache 2.0
- FlicenseNot gradedqualityCmaintenanceMCP server that enables AI assistants to control a browser through Playwright, supporting tasks like navigation, typing, clicking, and taking screenshots.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/ettomarett/Browserose-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server