agentic-browser
Summary: A browser-automation server that lets an AI agent control real Chrome through MCP or HTTP using text perception, visible cursor actions, and reusable recipes.
Navigate and manage pages: open URLs, back/forward/reload, list/create/select/close tabs, dismiss popups.
Perceive cheaply: snapshots with element refs/roles/state/coordinates, diffs, text search, pixel-to-element lookup, cursor position.
Interact like a user: click, hover, type, press keys, scroll, drag, select options, upload files; batch several actions.
Read and export: readable page text, structured tables/lists to JSON/CSV, article Markdown, PDF/MHTML, media/video downloads with DRM refusal.
Automate with human oversight: request human help for login/2FA/CAPTCHA, block sensitive typing, wait/watch zero-token page changes, trace/audit actions.
Teach and replay: record a human-performed task as a role/name recipe, list recipes, replay with new parameters.
Observe/debug/record: console/errors, dialogs/downloads/popups, token stats, cursor visibility/privacy mask/HUD, active-tab video recording, last-resort screenshots.
Configure safely: headless/CDP attach, persistent profile, downloads/exports, speed, tool subset, read-only mode, origin allowlist; JS eval and sandbox disabling require explicit opt-in.
Supports using Brave as the Chromium-based browser that the agent controls, enabling the same browser automation capabilities as with Google Chrome.
Provides browser automation tools that control the user's installed Google Chrome, allowing agents to navigate, read pages as compact text, click, type, and interact with web content using pixel coordinates.
Enables the optional chat watcher to monitor Messenger for new messages, read them, and propose or send replies according to a configurable policy.
Enables the optional chat watcher to monitor Telegram Web for new messages, read them, and propose or send replies according to a configurable policy.
Enables the optional chat watcher to monitor WhatsApp Web for new messages, read them, and propose or send replies according to a configurable policy.
Click on "Deploy 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., "@agentic-browserOpen Wikipedia, search for Chrome DevTools Protocol, and summarize the first paragraph"
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.
agentic-browser
Give any AI agent a real browser and watch everything it does.
Built and maintained by Davarion.
No API key. No extra bill. agentic-browser is a tool, not a model: it runs on your computer and uses whatever brain your agent already has. That can be your Claude Pro/Max plan in Claude Code, your ChatGPT plan in Codex, Cursor, or a local model. Nothing to sign up for and no per-token charges from us.
Humans browse the web with browsers. Agents usually need APIs. agentic-browser lets any agent use your installed Google Chrome the way a person does. It perceives pages as compact text with pixel coordinates instead of screenshots, and a visible cursor shows every move and click.
Español · Use cases · Chat watcher · Architecture · Security · Disclaimer
Why
Problem with today's browser agents | agentic-browser |
Screenshots cost ~1,000–1,500 tokens per look | Text snapshot: ~15 tokens per element. |
Agents guess coordinates from images | Every element comes with its exact center |
You can't see what the agent is doing | A red cursor travels to each target, ripples on click and labels the action |
Locked into one agent framework | MCP server and a plain HTTP/JSON API: Claude, GPT, Gemini, Hermes, OpenClaw, LangChain, n8n, curl… |
Stripped-down Chromium builds | Your real Chrome: extensions, codecs, PDF, WebGPU, auto-updates |
Yet another API key and bill | None. Works with the subscription your agent already uses; even the optional chat watcher can run on your Claude plan |
Related MCP server: agent-browser-mcp
Quick start
One line (Claude Code):
claude mcp add agentic-browser -- npx -y agentic-browser-mcpAny other MCP client: use "command": "npx", "args": ["-y", "agentic-browser-mcp"]. Requirements: Node ≥ 18 and Chrome (or Edge).
From source
Requirements: Node ≥ 18 and Google Chrome.
git clone https://github.com/davarion-tech/agentic-browser.gitcd agentic-browser && npm installnpm run doctornpm testUse it from an MCP client
Claude Code:
claude mcp add agentic-browser -- node /absolute/path/to/agentic-browser/src/mcp.jsClaude Desktop, Cursor, Codex, Hermes, OpenClaw or any MCP client: see examples/mcp-config.json.
Claude Code slash command (optional): copy skills/agentic-browser into ~/.claude/skills/. Then /agentic-browser <task> always uses this browser instead of any other built-in browser tool.
Then ask your agent something like:
Use only the browser_* tools from agentic-browser. Open es.wikipedia.org, search for "Chrome DevTools Protocol", open the first result and summarize the first paragraph. Don't take screenshots.
Use it from anything else (HTTP)
npm run httpcurl -s -X POST http://127.0.0.1:8787/tools/browser_navigate -d "{\"url\":\"example.com\",\"snapshot\":true}"GET /tools returns the JSON Schema of every tool, ready to pass as function definitions to any LLM API. A dependency-free Python client is in examples/python_client.py.
Optional: chat watcher
Off by default. Installing agentic-browser only lets your agent use the browser when you ask it to. The watcher is a separate process that you turn on.
The watcher keeps the agent's own messaging tabs open (WhatsApp Web, Telegram, Messenger…). Waiting costs zero tokens; when a message arrives, it wakes Claude to read it and propose a reply. A code-enforced policy controls what happens next:
observe: only notifies you.
draft (default): writes the reply but never sends it.
auto: sends, but only to an allowlist. Sensitive keywords, an hourly limit and a domain lock apply in every mode.
npm run setupnpm run watcherIt runs on your Claude subscription (claude setup-token) or an API key. Read docs/WATCHER.md and the Disclaimer first: many platforms forbid unofficial bots.
What the agent sees
# Test bench
url: http://localhost:3000/
viewport 1280x800 scroll=0,0 docH=2090
[3] textbox "Search" ph="type something" @191,124
[4] button "Search" @339,124
[5] select "color" value="Red" opts=[*Red|Green|Blue] @429,124
[6] checkbox "I agree" {checked} @492,124
[10] button "Button in shadow DOM" @652,316
[f1:1] button "Button inside iframe" @214,217New in 1.4: save anything from a page
browser_article: the main content of any page as clean Markdown (title, author, date, headings, lists, tables, links, images), without menus, ads or footers. The cheapest way for your agent to read or summarize an article.filesaves it as.md.browser_pdf: save the page as PDF (A4/Letter/Legal, backgrounds, lazy images loaded first) or MHTML (one file, exact copy). It uses the agent's session, so it works behind logins.browser_media: every image, video, audio file and document on the page (HTML, CSS backgrounds and what the network loaded), downloaded intoimages/,videos/,audio/,docs/with amanifest.json(source URL, alt text, size, hash). Duplicates and tracking pixels are skipped.browser_video: download the page's video, direct files (MP4/WebM) or HLS/DASH streams joined with ffmpeg. It refuses DRM content (Netflix, Disney+, Spotify…). Only for videos you own or have the right to save: YouTube, TikTok, Instagram and others forbid downloading in their terms.
Files go to ~/.agentic-browser/exports (AGENT_EXPORTS); AGENT_MEDIA_MAX_MB (500) caps each file.
New in 1.3
The chat watcher on a demo chat: it drafts a reply for you to send, and hands bank-detail requests and phishing links to you. Full video.
Privacy mask.
browser_cursor_style({ privacy: "whatsapp" })orAGENT_PRIVACY=whatsappblurs contacts, chat headers and profile photos so you can record or share the agent's screen without exposing anyone. Presets:whatsapp,telegram,gmail, or your own CSS selectors. The agent still reads everything.Watch only the chats you choose. In the chat watcher,
contacts: ["Cliente demo"]keeps every other chat out: they never wake the model, and before typing the watcher reads the open chat's title from the page, so the agent can't write anywhere else. Safe on an account that also has personal chats.On-screen notices and a clip per event. The watcher shows a card for each new message, draft ("review it and press Send"), escalation and block (no names while the privacy mask is on), and
record: truesaves each event as its own video.
New in 1.2
Teach it once, replay forever.
browser_teach_startrecords a task while you do it in the agent's Chrome (clicks, text, selects, Enter). It is saved as a recipe of roles and names, not pixels, so it survives layout changes.browser_replayrepeats it with new values ({"search": "October invoices"}) without perceiving every step. Passwords are never recorded: on replay, the person types them.An "Enseñar" (teach) button in the browser. A small tab on the left edge of the agent's Chrome starts a recording without asking the agent. Name the recipe in the banner, press Finish, then tell your agent "repeat ". Disable it with
AGENT_TEACH_BUTTON=0.A clean screen. Chrome's translate bar, search-engine choice, restore-pages bubble and permission prompts are off (permissions are denied). After every navigation, website popups (language, newsletter, cookie banners, "Sign in with Google") are closed with visible clicks on their close or reject button, never accept, subscribe or sign in.
browser_dismissdoes it on demand;AGENT_AUTO_DISMISS=0turns the automatic pass off.Structured data in one call.
browser_extractturns the most relevant table or repeated list (products, search results, contacts) into JSON or CSV rows with title, link, price and image. Merged table headers are resolved. CSV output is safe to open in Excel.Live token counter.
browser_cursor_style({ hud: true })(orAGENT_HUD=1) shows, in the corner of the page, the tokens used against what screenshots would have cost.browser_statsreturns the same numbers. Formula: tokens ≈ characters / 4; one screenshot ≈ width × height / 750 per perception call.
Tools
Tool | Purpose |
| Main perception. Visible elements with ref, role, name, state and center |
| Find elements by text anywhere on the page, including off-screen |
| Pixel → element (role, text, clickable, DOM path), with no image |
| Where the agent's cursor is and what is under it |
| Visible click or hover by |
| Real keyboard input: |
| Mouse wheel; drag and drop |
|
|
| Navigation and tabs |
| Readable text (wrapped as untrusted content); arbitrary JS (only with |
| Table or repeated list → JSON or CSV rows (title, url, price, image…). |
| Reader mode: the page's main content as clean Markdown, to read or summarize cheaply. |
| Save the page as PDF or MHTML, with the agent's session |
| Download every image, video, audio file and document, organized in folders with a |
| Download the page's video: direct files or HLS/DASH via ffmpeg. Refuses DRM. |
| Record a task the person performs once, as a reusable recipe |
| List or show recipes; replay one with new |
| Tokens used this session vs. the screenshot equivalent |
| Close popups covering the page (close or reject only, never accept). Runs automatically after |
| Several actions in one call, in order, stopping at the first error. Saves one agent turn per action |
| Wait for time, text or selector. |
| Hand control to the person watching (login, 2FA, CAPTCHA, a decision) through an on-page banner |
| JS console and errors; dialogs, downloads and new tabs; audit trail of every action |
| Show or hide the cursor, its trail or the live token counter ( |
| Record the active tab as a video, red cursor included, for demo clips without OBS. MP4 (H.264) when |
| Last resort: JPEG of the page or of a single |
Most actions accept snapshot: true and return the new page state in the same response, which saves one agent turn per step.
Reliability features: refs survive re-renders when the element can be uniquely re-identified. Clicks warn when a modal covers the target (occluded). Open shadow DOM and iframes are traversed. New tabs, dialogs and downloads are reported in the action result. Repeating the same call three times triggers a loop warning.
Configuration
Variable | Default | |
|
|
|
| — | Attach to a running Chrome started with |
|
| Persistent agent profile (cookies and logins survive restarts) |
|
| Download folder |
|
|
|
| from | ms per 100 px of cursor travel; |
| window size | With a window, Chrome opens maximized and the page uses the real window size. |
|
|
|
|
|
|
|
|
|
|
|
|
| — | Privacy mask from the start: |
|
| Where taught recipes are saved (JSON) |
|
| Where |
|
| Size limit per downloaded file (media and video) |
|
|
|
| — | Domain allowlist, e.g. |
|
|
|
|
| Audit log of every tool call |
| auto-detected | Path to the browser. Any Chromium browser works: Chrome, Edge (falls back to it automatically), Brave, Chromium |
|
| HTTP port and required Bearer token. Without |
|
|
|
|
|
|
| downloads folder | Folders |
|
| Where |
|
| Path to ffmpeg for MP4 recordings; |
Limits
Canvas, WebGL and maps: the DOM doesn't describe what is drawn inside them. Use
browser_screenshotwith arefto pay only for that area.Closed shadow roots don't expose their children.
Chrome's own UI (address bar, menus, permission prompts) is not part of the DOM. Use
browser_navigate,browser_tabsand the environment variables instead.No CAPTCHA solving and no bot-detection evasion. The agent should call
browser_request_human.Recent Chrome versions block remote debugging on your default personal profile. The agent uses its own profile; log in there once.
Roadmap
Based on the most common complaints about browser agents (stale refs, token bloat, popups, multi-agent conflicts, prompt injection, observability):
Reference chat watcher for agent-owned accounts: wakes on new messages at zero tokens and replies under a code-enforced policy (draft by default, allowlist, sensitive keywords, rate limit, domain lock). See docs/WATCHER.md.
Teach mode and recipe replay, structured extraction, a live token counter, popup dismissal and
browser_batch(1.2).Multi-agent sessions on one profile, with tab ownership and leases.
browser_batch: several actions in one call.Hidden-text detection (instructions hidden with CSS) as a prompt-injection signal.
Session replay: trace plus a GIF/video of the cursor.
Legal
Released under the MIT License. Provided as is, without warranty. You are solely responsible for how you and your agents use this software. That includes compliance with the law and with the terms of service of the sites you automate. Read the full Disclaimer.
Made by Davarion. Not affiliated with Google. "Google Chrome" is a trademark of Google LLC.
Available Tools
35 toolsbrowser_batchA
Varias acciones en UNA llamada (ahorra un turno del agente por acción): [{tool:"browser_click", args:{ref:12}}, {tool:"browser_type", args:{ref:14, text:"hola", submit:true}}]. Se ejecutan en orden y se detiene en el primer error. Úsala cuando ya sabes los pasos siguientes; con snapshot:true devuelve el estado final.
| Name | Required | Description | Default |
|---|---|---|---|
| actions | Yes | ||
| snapshot | No | Si true, devuelve el snapshot tras la acción (ahorra un turno) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses execution order, fail-fast behavior ("se detiene en el primer error"), and that snapshot:true returns the final state. It omits what the error response looks like and whether partial results are returned or refs stay valid after earlier actions mutate the page.
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?
Front-loaded with the core claim, then the example, then the execution semantics—dense and waste-free. The example is inline rather than a separate block, which reads slightly compressed but nothing is superfluous.
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 2-param orchestration tool with no output schema and no annotations, missing pieces matter: no list of permitted inner tools, no error-payload description, no guidance on whether refs need re-snapshotting mid-batch. Adequate to call it, but an agent will likely need trial and error on failures.
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 50% and the actions array is opaque (tool is an unconstrained string), so the inline example {tool:"browser_click", args:{ref:12}} is genuinely additive—it shows the nested shape the schema never spells out. The description does not enumerate which tool names are legal inside actions, which is the biggest remaining gap.
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 plainly that it runs several actions in ONE call and saves an agent turn per action, which distinguishes it from the single-action siblings like browser_click or browser_type. It stops short of naming those siblings as the alternative, but the batching purpose is 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?
"Úsala cuando ya sabes los pasos siguientes" gives a clear selection cue: use it for pre-planned sequences, not for adaptive flows that depend on intermediate observations. No explicit when-not or named alternative, 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_clickC
Mueve el cursor de forma visible y hace clic real (CDP Input) sobre un ref o x,y.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | Coordenada X en píxeles CSS del viewport | |
| y | No | Coordenada Y en píxeles CSS del viewport | |
| ref | No | Ref de un elemento devuelto por browser_snapshot/browser_find (ej. 12 o "f1:7" en iframes) | |
| button | No | ||
| snapshot | No | Si true, devuelve el snapshot tras la acción (ahorra un turno) | |
| modifiers | No | ||
| clickCount | No | 2 = doble clic |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses that the cursor moves visibly and the click is real CDP Input, but it omits side effects like navigation or form submission, failure behavior, waiting behavior, and what the snapshot parameter changes.
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?
It is a single front-loaded sentence with no filler or repetition. Efficient and easy to scan, though quite terse for a tool with seven optional parameters.
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 are 7 optional parameters, no annotations, and no output schema, yet the description does not explain click side effects, parameter interactions, or return behavior. For a browser interaction tool of this complexity, the description is incomplete.
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 71%, so the schema documents most parameters already. The description only restates that the target can be a ref or x,y coordinates, adding no extra meaning for button, modifiers, clickCount, or snapshot.
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?
States a specific verb and resource: 'hace clic real ... sobre un ref o x,y', and adds that it is a real click via CDP Input with visible cursor movement. It distinguishes itself implicitly from browser_move, though it does not name any sibling tool explicitly.
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 no guidance on when to use this tool versus alternatives such as browser_drag, browser_element_at, or browser_type. It also does not say when to prefer ref versus x,y, or whether a snapshot must be taken first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_consoleC
Últimos mensajes de consola y errores JS de la pestaña activa.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral disclosure burden. It implies a read of recent console output but does not state whether the operation is read-only, whether it clears the console, how many messages are returned, or what happens when the limit is omitted.
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 front-loaded sentence with zero wasted words. For a simple retrieval tool this is appropriately sized, even though it is under-informative in other dimensions.
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 no annotations, no output schema, and an undocumented optional parameter, the description is too thin. An agent cannot confidently determine how many messages are returned, whether the limit parameter controls that, or whether the operation has any side effects on the console buffer.
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 0% and the description does not mention the single optional `limit` parameter at all. The word 'últimos' loosely implies recency, but the meaning, default value, and maximum of `limit` are left entirely undocumented.
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 names the resource (console messages and JS errors) and scopes it to the active tab. It is specific enough to distinguish this from generic browsing tools, but it does not explicitly differentiate itself from sibling tools like browser_events or browser_trace.
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?
There is no guidance on when to use this tool versus alternatives such as browser_events, browser_trace, or browser_eval. The active-tab context implies a debugging use case, but no exclusions or routing advice is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_cursorB
Posición actual del cursor del agente y el elemento bajo él.
| 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; it does convey that this is a state-read (position + element under it) rather than a mutation, which is the key safety signal. However, it says nothing about the shape of the response, coordinate system, or what happens when the cursor is outside the viewport or over no element.
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?
A single front-loaded sentence with no filler. Nothing could be trimmed without losing meaning.
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?
With no output schema and no annotations, the description is the only source of truth about the return value, and it only sketches it (position and element). For a zero-argument getter that is minimally adequate, but the return format and edge cases are left unstated.
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 takes zero parameters, so there is nothing for the description to clarify and the baseline of 4 applies. Schema coverage is 100% for the empty object.
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 names a specific resource: the agent's current cursor position plus the element beneath it. That is precise enough to know what the tool reports, though it lacks an explicit verb and never distinguishes itself from closely related siblings such as browser_element_at, browser_move, or browser_cursor_style.
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?
There is no indication of when to call this versus alternatives like browser_element_at or browser_snapshot, and no stated preconditions. The agent must infer usage entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_cursor_styleB
Muestra/oculta el cursor visual, su estela, el contador de tokens en vivo (hud) o la máscara de privacidad que difumina contactos y números al grabar o compartir pantalla.
| Name | Required | Description | Default |
|---|---|---|---|
| hud | No | Contador de tokens frente a capturas, visible para quien mira | |
| trail | No | ||
| privacy | No | Difumina lo que no debe verse: "whatsapp", "telegram", "gmail", selectores CSS, o "off". Tú sigues leyendo la página igual | |
| visible | No | ||
| teachButton | No | Botón flotante "Enseñar una tarea" en el borde izquierdo |
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 privacy-mask effect (blurring contacts and numbers during recording or screen sharing), which is genuinely useful, but says nothing about defaults, persistence of state across calls, or what happens to unspecified toggles.
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?
A single front-loaded sentence enumerating the four capabilities with no filler. It is efficient, though the enumeration is dense and would benefit from a short lead clause about the recording context.
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?
Five optional parameters, no annotations, and no output schema mean the description must carry the behavioral load. It covers the visible effects but omits the teachButton toggle, default behavior when no arguments are passed, and whether settings persist between calls.
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 60%, and the description names four of the five toggles, adding context for the HUD and privacy mask beyond the schema labels. However, teachButton is absent from the description, and no default or omission semantics are given for any parameter.
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?
States a specific verb pair (muestra/oculta) and enumerates the resources affected: visual cursor, trail, live token HUD, and privacy mask. An agent can distinguish this from siblings like browser_cursor or browser_record_start, though the overlap with browser_cursor is not explicitly resolved.
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 'al grabar o compartir pantalla' hints at the recording/screen-sharing context, but there is no explicit when-to-use guidance, no statement about calling it with zero arguments, and no disambiguation from browser_cursor or browser_teach_start.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_dismissA
Cierra popups que tapan la página (idioma, newsletter, cookies, "inicia sesión con Google"), con clics visibles. Solo pulsa botones de cerrar o rechazar, nunca aceptar, suscribirse ni iniciar sesión. Ya se hace solo tras browser_navigate (AGENT_AUTO_DISMISS=0 lo apaga).
| 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 and does well: it discloses visible clicks, a hard safety boundary (never accept/subscribe/sign in), and the automatic post-navigate invocation with an env-var override. It omits outcome/reporting behavior (e.g., what happens when nothing matches), so not quite a 5.
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 tight sentences, front-loaded with the action and examples, then the safety rule, then the automation note. Every clause carries information; 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 zero-input tool with no output schema, the description covers purpose, safety boundaries, and auto-invocation. It leaves out failure/empty-state behavior, which is the main remaining 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?
Zero-parameter tool, so the baseline is 4. There is nothing for the description to disambiguate, and it correctly implies no inputs 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?
Specific verb+resource: 'Cierra popups que tapan la página' with concrete examples (idioma, newsletter, cookies, Google login), which makes clear it's not a generic click. It distinguishes itself from browser_click by restricting to close/reject actions, though it doesn't name siblings explicitly.
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?
'Ya se hace solo tras browser_navigate (AGENT_AUTO_DISMISS=0 lo apaga)' tells the agent the tool is already auto-invoked and how to disable that, which is real usage context. The when-to-use trigger (popups covering the page) is implied by the constraints rather than stated as an explicit call condition, and there's no guidance on what to do if no popup is found.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_dragB
Arrastra de un punto/ref a otro con el botón pulsado (sliders, kanban, mapas).
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | ||
| from | Yes | ||
| snapshot | No | Si true, devuelve el snapshot tras la acción (ahorra un turno) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must carry the full behavioral burden. It discloses only that the button is held during the move; it says nothing about whether the source element is scrolled into view, how the gesture is sequenced (inserted pauses/steps), whether it fails silently on non-draggable targets, or what side effects occur on the page.
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?
A single dense sentence with zero filler, front-loading the core action and mechanism before the examples. It is appropriately sized for a gesture tool, though it could have packed in one more operational detail at the same length.
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 nested, three-parameter interactive mutation tool with no annotations and no output schema, the description leaves too much open: nothing on ref acquisition workflow, scroll-into-view behavior, or result/wait semantics. The from/to coordinate-vs-ref duality is the only complexity it addresses.
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 33%: the nested from/to properties (x, y, ref) are documented in the schema, but the top-level from/to/snapshot flags are not. The phrase 'de un punto/ref a otro' usefully conveys that each endpoint accepts either coordinates or a snapshot ref, which adds real meaning beyond the schema, but the snapshot parameter is left entirely to 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?
States a specific verb (arrastra/drag) plus the source–target resource ('de un punto/ref a otro') and the mechanic ('con el botón pulsado'), which is enough to tell it apart from a simple click. It never names a sibling such as browser_move or browser_click, so differentiation is only implicit.
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 parenthetical examples (sliders, kanban, mapas) imply the class of UI widgets this is for, which is useful context. There is no explicit 'use this instead of X' routing, no prerequisite (e.g. obtaining the ref via browser_snapshot/browser_find first), and no exclusion cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_element_atB
Visión por píxel SIN imagen: dado (x,y) devuelve qué elemento hay ahí (rol, texto, si es clicable, ruta DOM).
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It does disclose the return payload (role, text, clickability, DOM path), which is the most useful behavioral fact for this tool. However it does not say what happens when nothing is at that point (null vs error), whether a live browser session is required, or that the operation is a non-mutating lookup.
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?
A single dense sentence with zero filler, front-loading the key differentiator ('Visión por píxel SIN imagen') before the concrete contract. Nothing redundant to cut.
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 small two-parameter read tool with no output schema, the description compensates well by enumerating returned fields. The remaining gaps — coordinate frame and behavior at empty coordinates — are the only things an agent might need in order to call 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 0%, and the schema declares both params as bare numbers. The description tells the agent x and y are pixel coordinates for a hit-test, which is real added meaning, but leaves the coordinate frame unspecified (viewport vs page vs device pixels) — a critical ambiguity for a coordinate-based tool.
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?
States a concrete verb and outcome: given (x,y) it returns which element is at that point, plus the shape of what comes back (role, text, clickable, DOM path). The 'SIN imagen' framing implicitly distinguishes it from the visual screenshot approach, so an agent can tell it apart from image-based siblings without opening the schema.
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?
There is no explicit statement of when to reach for this over browser_find (search by selector/text), browser_snapshot (structure) or browser_screenshot (visual). The 'SIN imagen' phrase hints at the screenshot alternative but never names it or states the selecting condition, leaving the agent to infer usage from coordinates alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_evalB
Ejecuta JavaScript en la página y devuelve el resultado (JSON). Desactivada salvo AGENT_ALLOW_EVAL=1.
| Name | Required | Description | Default |
|---|---|---|---|
| expression | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose one important operational trait: the tool is feature-gated behind AGENT_ALLOW_EVAL=1. It says nothing about execution context, whether page state can be mutated by the evaluated code, async/promise handling, error behavior, or return-value serialization limits.
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 short sentences with no filler, and the core action is front-loaded ahead of the availability caveat. The definition is efficient, though its brevity comes at the cost of the missing detail noted elsewhere rather than being tight-but-complete.
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 an arbitrary-code-execution tool with no annotations, no output schema, and an undocumented parameter, the description is too thin. An agent cannot tell what the JSON result looks like, what happens on a JS error or timeout, or what side effects on the page are permitted.
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?
There is one parameter (`expression`) with 0% schema description coverage, so the description must compensate and largely does not. 'Ejecuta JavaScript' weakly implies the string is JS source, but nothing says whether it is an expression vs statements, whether it may be async, or what serialization constraints the returned value must satisfy.
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?
States a specific verb and resource — runs JavaScript in the page and returns the result as JSON — which is unambiguous about what the tool does. It does not, however, differentiate itself from close siblings such as browser_console or browser_extract, so an agent must infer the boundary.
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 only guidance is an availability condition (disabled unless AGENT_ALLOW_EVAL=1), which is useful but is a gate rather than a when-to-use rule. It never says when arbitrary JS evaluation is preferable to browser_console, browser_extract, or browser_find, nor when it should be avoided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_eventsC
Diálogos aceptados, descargas guardadas y popups abiertos desde la última consulta.
| 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 behavioral burden. It discloses an incremental 'since last query' scope and lists included event types, but it does not explain whether calling it advances or clears the cursor, whether it is read-only, or how the 'last query' baseline is maintained.
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 sentence with no wasteful wording. It is efficient, though it lacks a front-loaded verb and is somewhat ambiguous rather than maximally structured.
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?
With no annotations, no output schema, and no parameters, the description must carry the full context. It enumerates event categories but does not explain the return format, the stateful query behavior, or how the agent should interpret the 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 tool has zero parameters, so per the baseline this dimension is naturally strong. There is no parameter behavior to clarify or compensate for in the description.
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 names the event categories it reports (accepted dialogs, saved downloads, opened popups) and implies a list of events since the last query, but it never uses a clear verb like 'list' or 'return' and does not distinguish itself from siblings such as browser_history or browser_console.
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?
There is no guidance on when to use this tool versus alternatives, no prerequisites, and no indication of whether it should be called after other browser actions. The agent is left to infer usage from the event categories alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_extractA
Datos estructurados en UNA llamada: convierte la tabla o la lista repetida más relevante (productos, resultados, contactos) en filas JSON o CSV, con título, enlace, precio e imagen. Limítalo con ref o selector. Con file lo guarda en disco y solo devuelve un resumen.
| Name | Required | Description | Default |
|---|---|---|---|
| max | No | Máximo de filas (100) | |
| ref | No | Ref de un elemento devuelto por browser_snapshot/browser_find (ej. 12 o "f1:7" en iframes) | |
| file | No | Guardar en este archivo (relativo a ~/.agentic-browser/exports) | |
| kind | No | auto (por defecto) elige la tabla o lista con más contenido | |
| format | No | ||
| selector | No | Contenedor CSS donde buscar |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full burden and does reasonably well: it discloses the auto-selection heuristic (the table/list with the most content), that file mode writes to disk and returns only a summary, and that rows are capped. It does not state read-only-ness, permissions, or failure behavior when no table/list is found.
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 short sentences, front-loaded with the value proposition ('en UNA llamada') then the resource, then the scoping and file caveats. The opening phrase is slightly promotional but does convey the one-call efficiency argument. No filler sentences.
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?
Six optional parameters with no output schema mean the description must sketch the return value, and it does (rows with title, link, price, image, as JSON or CSV). Combined with the file-mode summary behavior, an agent can call this correctly; only error/empty-result behavior is missing.
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 83%, so ref, selector, file, kind and max already carry documentation. The description adds only the file-mode consequence (summary instead of full data) and the meaning of auto; format's json/csv trade-off is not explained beyond the enum itself. 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?
States a specific verb+resource: converts the most relevant table or repeated list into JSON/CSV rows. The concrete examples (productos, resultados, contactos) and the field set (título, enlace, precio, imagen) make the output shape unmistakable. It never names a sibling such as browser_read or browser_snapshot, so differentiation is left implicit.
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?
'Limítalo con ref o selector' hints at how to scope the extraction, and 'con file ... solo devuelve un resumen' clarifies the file variant. But there is no explicit when-to-use-this-instead-of guidance against the many sibling tools (browser_read, browser_snapshot, browser_eval) that also surface page content. Usage has to be inferred from the stated output format.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_findB
Busca elementos por texto/etiqueta y devuelve sus refs y coordenadas, incluso fuera del viewport.
| Name | Required | Description | Default |
|---|---|---|---|
| max | No | ||
| query | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses that matches can be returned even outside the viewport and that results include refs and coordinates, but it omits whether this is a pure read operation, permission requirements, result limits, and error behavior.
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 single sentence is front-loaded and has no wasted words. It is efficiently sized, though the compactness contributes to missing parameter and usage details.
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 two-parameter tool with no annotations and no output schema, the description gives useful return-value context (refs and coordinates) and viewport behavior. However, it leaves the 'max' parameter unexplained and gives no sibling routing guidance, so it is only 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?
Schema description coverage is 0%, so the description must compensate. It vaguely explains that 'query' is text/label based, but does not clarify matching semantics or explain the 'max' parameter at all, leaving half the parameters undocumented in both schema and description.
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 verb ('Busca') and resource ('elementos por texto/etiqueta') and says what it returns (refs and coordinates). It does not name or contrast with siblings like browser_snapshot or browser_element_at, so it is clear but not fully differentiated.
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?
There is no explicit guidance on when to use this tool versus alternatives such as browser_snapshot, browser_element_at, or browser_read. The only implied usage is finding elements by text/label, which is not enough to route an agent reliably.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_historyC
Atrás, adelante o recargar.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | ||
| snapshot | No | Si true, devuelve el snapshot tras la acción (ahorra un turno) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it discloses nothing about state effects: whether reload discards unsaved state, whether back fails at history start, or what happens to the page session. Three Spanish words cannot cover a state-mutating browser tool with zero annotation 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?
Extremely short with no wasted words, but the brevity is under-specification rather than economy — nothing is front-loaded because there is essentially no content. It also switches to Spanish while sibling tool names and the schema are English, adding friction.
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?
With no annotations, no output schema, and only half the parameters documented, the description should be doing significant explanatory work. Instead it offers a bare action list, so an agent cannot know return behavior, failure modes, or how the tool relates to browser_navigate and browser_snapshot.
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 only 50%, and the description adds zero parameter meaning beyond what the enum already conveys. The one documented parameter (`snapshot`) is explained in the schema itself; the description neither reinforces it nor clarifies action semantics such as error behavior at history boundaries.
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 names three concrete actions (back, forward, reload) that map to browser history navigation, so the intent is inferable. But it is essentially a restatement of the `action` enum and never distinguishes this tool from siblings like browser_navigate, leaving the agent to infer the boundary itself.
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?
There is no guidance on when to use this versus browser_navigate, no mention of whether history entries must exist, and no exclusion conditions. The agent must guess whether 'reload' here differs from a navigate-to-current-URL.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_moveA
Mueve el cursor visible (hover) a un ref o a x,y. Dispara mouseover/mousemove reales.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | Coordenada X en píxeles CSS del viewport | |
| y | No | Coordenada Y en píxeles CSS del viewport | |
| ref | No | Ref de un elemento devuelto por browser_snapshot/browser_find (ej. 12 o "f1:7" en iframes) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses that it fires real mouseover/mousemove events (not synthetic), but says nothing about what happens on an invalid ref, whether the element is scrolled into view first, or which target wins when both ref and x,y are supplied.
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 short sentences, zero waste, with the action and its targeting options front-loaded.
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 three-parameter, non-mutating interaction tool with no output schema the essentials are present, but the ref-vs-x,y precedence and error behavior on a stale ref remain unstated — the main gaps an agent could hit when calling 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?
Schema coverage is 100% and every parameter carries a description including the ref format example ('f1:7' in iframes), so the schema does the heavy lifting. The description only restates the two target modes and adds no precedence or unit 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?
Names a specific verb+resource: moves the visible cursor (hover) to a ref or to x,y. This clearly separates it from browser_cursor (presumably querying position) and browser_click, though it never explicitly contrasts with any sibling.
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 parenthetical '(hover)' implies the use case and the two targeting modes are stated, but there is no explicit when-to-use/when-not guidance and no pointer to alternatives such as browser_cursor or browser_click for actually triggering elements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_pressB
Pulsa teclas o combinaciones: "Enter", "Escape", "Control+L", "Tab", "ArrowDown"... Varias separadas por espacio.
| Name | Required | Description | Default |
|---|---|---|---|
| keys | Yes | ||
| snapshot | No | Si true, devuelve el snapshot tras la acción (ahorra un turno) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses that multiple keys are space-separated and gives examples, but it does not state focus requirements, whether presses go to the focused element or page, what side effects occur, or what is returned.
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 front-loaded sentence with no wasted preamble. The examples and the space-separation note are compact and useful.
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 action with no output schema, the description covers key syntax adequately but omits focus and side-effect context. It is enough to attempt a call, but not enough to fully distinguish it from related browser input tools.
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 50%: the snapshot parameter is documented in the schema, while the required keys parameter is not. The description compensates partly by giving key examples and the space-separated sequence format, which adds meaningful syntax beyond the schema, though it is not exhaustive.
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?
States a specific action ("Pulsa teclas") and resource (keys/combinations) with concrete examples such as "Enter" and "Control+L". It does not explicitly differentiate from sibling browser_type, but the verb and shortcut examples make the scope clear.
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?
There is no guidance on when to use this tool versus alternatives like browser_type, browser_click, or browser_select. The examples imply keyboard-shortcut scenarios, but the agent must infer the selection conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_readB
Texto legible de la página (o de un selector CSS), para leer artículos/resultados.
| Name | Required | Description | Default |
|---|---|---|---|
| maxChars | No | ||
| selector | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it does disclose the return content (readable text) and implies a non-mutating read. However, it says nothing about truncation via maxChars, behavior when the selector matches nothing, whether it waits for page load, or how text is normalized — all relevant to a browser read.
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?
A single front-loaded clause with no filler; the core (readable text, optional selector) comes first. It is arguably too terse rather than verbose, but on the conciseness axis it wastes nothing.
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?
No annotations, no output schema, and zero parameter documentation mean the description is the only source of truth, yet it omits truncation behavior, selector semantics, error/empty-case handling, and any routing versus 30+ sibling browser tools. Inadequate for an undocumented two-parameter browser tool.
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 0%, so the description must compensate and largely does not. It hints at a CSS selector concept but never links it to the `selector` parameter or states default scope, and it never explains `maxChars` (presumably a truncation limit on returned text).
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 names a specific resource and result: readable page text, optionally scoped to a CSS selector, aimed at reading articles or result sets. It is clear enough for an agent to recognize a text-extraction read, though it never distinguishes itself from near-neighbors such as browser_extract or browser_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?
"para leer artículos/resultados" implies the use case (reading content rather than interacting), but there is no explicit when-to-use, no exclusions, and no pointer to alternatives like browser_extract or browser_snapshot for structured or visual capture. Usage is only inferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_recipesA
Lista las recetas grabadas o, con name, muestra sus pasos y parámetros.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it does convey that the tool is a read operation and that the detail mode returns steps and parameters. It omits what happens when 'name' matches no recipe, whether the list is paginated or ordered, and there is no output schema to fall back on.
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?
A single compact sentence with the default behavior front-loaded and the parameter case second; nothing is wasted. It is arguably too short for the tool's two distinct modes.
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 one-parameter read tool with no annotations and no output schema, the description covers both modes but leaves the return shape, ordering, and not-found behavior unexplained. Adequate, but not more than minimum 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?
Schema coverage is 0%, so the description must compensate, and it does: 'name' is explained both by its absence (list all recipes) and its presence (show that recipe's steps and parameters). It lacks format hints (exact recipe identifier vs. fuzzy title), but the parameter's effect is clear.
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?
States a specific verb+resource ('lista las recetas grabadas') and distinguishes two modes: plain listing vs. detail view when 'name' is supplied. It does not explicitly distinguish itself from siblings like browser_replay or browser_record_start, which also concern recorded recipes, so an agent must infer the boundary.
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 conditional 'o, con name, muestra sus pasos y parámetros' implies when to pass the parameter, but there is no explicit when-to-use/when-not-to-use guidance and no mention of alternatives such as browser_replay for actually executing a recipe.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_record_startA
Empieza a grabar en vídeo la pestaña activa (con el cursor rojo visible) para clips de demostración. Sigue usando las demás herramientas y termina con browser_record_stop. Las pausas sin cambios conservan su duración real. MP4 (H.264) si hay ffmpeg en el PATH; si no, WebM.
| Name | Required | Description | Default |
|---|---|---|---|
| fps | No | Fotogramas por segundo del vídeo final (25) | |
| demo | No | Ralentiza el cursor mientras se graba para que se lea mejor | |
| file | No | Nombre o ruta del archivo; relativo a ~/.agentic-browser/recordings | |
| format | No | mp4 requiere ffmpeg; webm no tiene dependencias pero tarda lo que dura el clip al parar | |
| maxSeconds | No | Se detiene sola tras estos segundos (120, máx. 600) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does disclose real behavior: the cursor overlay is rendered red, idle pauses keep their real duration (so the clip is real-time, not compressed), and the codec falls back from MP4 to WebM when ffmpeg is absent. It omits side effects like where the file lands and what is returned on completion.
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?
Four short sentences, front-loaded with the core action and the start/stop pairing, then pacing and codec caveats. Nothing is repeated from the schema except the one format constraint that matters operationally.
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 5-optional-param capture tool with no annotations and no output schema, the description covers the workflow, cursor overlay, timing behavior and codec fallback adequately. The main omission is what the call returns (handle, path, confirmation), which the agent cannot learn from an output schema that does not exist.
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 schema already documents fps, demo, file, format and maxSeconds. The description only reinforces the ffmpeg dependency behind format, adding little meaning beyond the field descriptions; 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?
States a specific verb and resource ("Empieza a grabar en vídeo la pestaña activa") plus the distinctive scope (red cursor visible, demo clips). It also names the companion tool browser_record_stop, so an agent can tell exactly which of the record pair to call.
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?
Explicitly says to keep using the other tools while recording and to finish with browser_record_stop, which defines the workflow context and the terminating alternative. It does not state when not to use it (e.g., instead of browser_screenshot or browser_trace for capture), leaving one gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_record_stopA
Detiene la grabación de browser_record_start y codifica el vídeo. Devuelve ruta, duración (s), tamaño y formato.
| 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 burden. It discloses that the tool encodes the video and returns path, duration, size, and format, which is useful behavioral context. However, it does not mention error conditions (e.g., stopping when nothing is recording) or whether the file is written to disk, leaving gaps for a mutation/IO 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?
Two compact sentences with zero waste: the action is front-loaded and the return values follow. Every sentence 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?
There is no output schema, but the description lists the return values (path, duration, size, format), so the agent knows what to expect. Combined with zero parameters, this is nearly complete, falling short only on error-condition behavior.
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 takes zero parameters, so there is no parameter semantics to document. The baseline of 4 applies since nothing in the schema needs compensation.
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?
States a specific verb (stops the recording, encodes the video) and explicitly ties it to sibling browser_record_start, so the agent can tell it apart from browser_teach_stop or browser_screenshot. It is clear but does not elaborate on scope beyond that pairing.
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?
Usage is implied by the reference to browser_record_start (call this to end that recording), but there is no explicit statement of when to use it, prerequisites, or what happens if no recording is active. The pairing gives more than a bare name, 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_replayA
Repite una receta grabada. Localiza cada elemento por rol y nombre y ejecuta los pasos sin percibir la página: casi no gasta tokens. params cambia los textos escritos, ej. {"buscar": "facturas octubre"}. Los campos secretos (contraseñas) siempre los escribe la persona.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| params | No | ||
| snapshot | No | Si true, devuelve el snapshot tras la acción (ahorra un turno) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose two valuable traits: it does not perceive the page (cheap in tokens) and password fields are always typed by the human, implying a human hand-off step. It omits failure behavior (what happens if an element cannot be located), whether the recipe must pre-exist, and what the tool returns.
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?
Front-loaded with the action, then mechanism, then parameter example, then the password caveat. Four short sentences with little waste, though the example JSON is slightly bulky for the information it conveys.
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 nested-object, three-parameter tool with no annotations and no output schema, the description covers mechanism and token cost but leaves prerequisites (a recorded recipe must exist) and result/failure behavior unexplained; the 'snapshot' return behavior lives only in the schema.
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 only 33%, yet the description compensates for the most opaque parameter: 'params' is explained as overriding written texts, with a concrete example. 'name' is only implicitly the recipe identifier and is never stated as required, and no constraint on param keys matching recipe placeholders is given.
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?
Names a specific verb and resource: 'Repite una receta grabada' (replays a recorded recipe), and adds the mechanism (locates elements by role and name, executes steps without perceiving the page). An agent can tell this apart from browser_click/browser_type, but the description never names the sibling tools (browser_recipes, browser_record_start) that produce or list recipes.
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?
Usage is only implied: you call it when a recipe already exists, and the note about secret fields hints that a human is involved. There is no explicit 'use this instead of X' routing, no mention of how recipes are obtained, and no stated condition for when not to replay.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_request_humanA
Pide ayuda a la persona que mira el navegador (login, 2FA, CAPTCHA, una decisión). Muestra un banner y espera a que pulse "Listo" o "Cancelar". El agente no ve lo que el humano escribe.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | Yes | Qué necesitas, en una frase | |
| timeout | No | ms (600000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It usefully discloses the mechanism (banner shown, waits for 'Listo'/'Cancelar') and an important privacy trait (the agent does not see what the human types). However it omits what happens on timeout or Cancel and what the call returns (confirmation/success flag), which matters for a blocking human-in-the-loop 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?
Three tight sentences, front-loaded with the action and its triggers, followed by mechanism and the key privacy caveat. Every sentence adds value; nothing is padded.
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 blocking, human-interaction tool with no annotations and no output schema, the description should explain the outcome of Ready vs Cancel and timeout handling. It covers the mechanism and privacy but leaves the return/result semantics unstated.
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 both parameters (reason, timeout in ms) are already documented. The description adds contextual hints about what to put in reason (login, 2FA, CAPTCHA) but nothing about timeout behavior beyond what the schema states. 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?
States a specific verb and resource: asks the human watching the browser for help, with concrete triggers (login, 2FA, CAPTCHA, a decision). This clearly distinguishes it from the automation siblings like browser_click, browser_type, browser_eval, which all act without human involvement.
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?
Names concrete situations when to use it (login, 2FA, CAPTCHA, a decision). No explicit exclusions or named alternatives, but the triggers are specific enough that an agent can decide when to escalate to the human versus acting autonomously.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_screenshotB
ÚLTIMO RECURSO (gasta tokens): imagen JPEG de la página o de un ref, para contenido puramente visual (canvas, gráficos, captchas no).
| Name | Required | Description | Default |
|---|---|---|---|
| ref | No | Ref de un elemento devuelto por browser_snapshot/browser_find (ej. 12 o "f1:7" en iframes) | |
| quality | No | ||
| fullPage | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must carry behavioral weight. It does disclose the token cost and the output format (JPEG), which are genuinely useful. It does not state what quality defaults apply, whether the image is returned inline/base64 vs a path, or how it interacts with the current viewport versus full page — gaps that matter for a capture 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?
A single front-loaded sentence with the cost warning first, then the capability, then the qualifying content type. Compact and appropriately sized, though the garbled 'captchas no' fragment costs some clarity.
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 3-parameter, zero-annotation, no-output-schema tool, the description covers the 'when' reasonably but leaves the return shape (inline data vs URL), default quality, and fullPage semantics to inference. Adequate to call it, insufficient to call it optimally.
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 only 33%, so the description should compensate, but it only restates that a screenshot can target 'la página o un ref'. The quality and fullPage parameters receive no explanation anywhere, leaving their defaults and effect (e.g., full document vs viewport) undocumented.
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?
States a concrete verb+resource: produces a JPEG image of the page or of a given ref, and names the target use case (purely visual content such as canvas or graphics). It implicitly distinguishes itself from browser_snapshot (which yields structure, not pixels) via 'de la página o de un ref'. The trailing 'captchas no' is ambiguous about an edge case but does not obscure the core purpose.
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?
'ÚLTIMO RECURSO (gasta tokens)' explicitly tells the agent to try other tools first and warns about cost, and 'para contenido puramente visual (canvas, gráficos...)' bounds the qualifying cases. It stops short of naming the preferred alternative (browser_snapshot/browser_extract) or excluding specific scenarios cleanly, since 'captchas no' reads as a truncated caveat.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_scrollB
Desplaza con la rueda del ratón (dy>0 baja). Con ref, lleva ese elemento al centro.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | Coordenada X en píxeles CSS del viewport | |
| y | No | Coordenada Y en píxeles CSS del viewport | |
| dx | No | ||
| dy | No | ||
| ref | No | Ref de un elemento devuelto por browser_snapshot/browser_find (ej. 12 o "f1:7" en iframes) | |
| snapshot | No | Si true, devuelve el snapshot tras la acción (ahorra un turno) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full disclosure burden. It usefully adds wheel-direction semantics for dy and explains that a ref centers the target element — behavior not present in the schema — but it omits whether scrolling is synchronous, what page state changes occur, and any permission or waiting requirements.
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 short, front-loaded sentences with no filler; the direction rule and ref behavior are stated immediately. Only slightly under-specified rather than bloated.
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 six-parameter, annotation-free tool with no output schema, the description covers dy direction and ref centering but says nothing about the snapshot shortcut, coordinate params, or what the call returns. Adequate but with clear gaps an agent would need to infer.
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 67%, so the schema already documents x, y, ref, and snapshot. The description adds real meaning for the undocumented dy (direction) and clarifies ref as a centering target, but leaves dx, x, and y semantics untouched. A 3 reflects partial compensation for the coverage gap.
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?
States a specific verb (Desplaza) and resource (rueda del ratón), with the added refinement that dy>0 scrolls down and that a ref centers that element. This clearly identifies it as a scroll tool, though it does not explicitly name sibling tools like browser_move or browser_cursor to differentiate.
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 via 'dy>0 baja' and the optional ref-centering behavior, giving the agent directional context. However, it never states when to choose this over alternatives (e.g., browser_move for pointer movement) or any prerequisites/exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_selectC
Elige opciones en un (por valor o texto visible).
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | ||
| values | Yes | ||
| snapshot | No | Si true, devuelve el snapshot tras la acción (ahorra un turno) |
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 and falls short: it does not state whether selection replaces or appends to existing options (relevant since 'values' is an array, implying multi-select), whether change events fire, or what happens if a value is not found. Only the existence of the action is 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?
A single compact sentence with no filler, and the key disambiguator (value vs. visible text) is placed inline. Brevity is close to under-specification but no sentence is wasted.
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 3-parameter mutation tool with no annotations, no output schema, and only 33% schema coverage, the description should explain 'ref', multi-value/multi-select behavior, and the snapshot flag's purpose. None of these appear, so an agent would have to guess at important call semantics.
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 only 33% (only 'snapshot' is documented in the schema), and the description partially compensates by explaining that 'values' can be matched by value or visible text. However, the 'ref' parameter and array/multi-select semantics are left completely unexplained in both places.
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?
Names a specific action (select options) on a specific resource (<select> element), and adds how options are identified (by value or visible text). This is clearly distinguishable from siblings like browser_click or browser_type at a glance, though it does not explicitly say it is the preferred tool over click for native dropdowns.
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?
No guidance on when to use this versus browser_click/browser_type on a dropdown, nor on what to do with custom (non-<select>) dropdown widgets. The agent must infer the selection context entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_snapshotA
PERCEPCIÓN PRINCIPAL (sin captura). Lista compacta de elementos visibles con ref, rol, nombre, estado y centro @x,y en píxeles. ~15 tokens por elemento. Con diff:true devuelve solo lo que cambió desde el snapshot anterior.
| Name | Required | Description | Default |
|---|---|---|---|
| max | No | Máximo de elementos (250) | |
| diff | No | Solo cambios: + nuevo, - desaparecido, ~ modificado | |
| includeText | No | Añade el texto visible de la página (hasta 4000 chars) | |
| viewportOnly | No | Solo lo visible en pantalla (por defecto true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden well: it discloses the exact output shape (ref, role, name, state, center @x,y in pixels), token cost (~15 tokens/element), default viewport scoping and what diff:true returns. It omits read-only status, ref stability across snapshots and behavior when the element limit is exceeded.
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 dense sentences, front-loaded with the primary-role signal and the no-screenshot constraint, then output shape, then cost and diff behavior. Zero 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?
No output schema exists, yet the description describes the returned fields, cost per element and diff mode, which is enough to call it correctly. Minor gaps: no note on error/empty-page behavior or how refs map to the action tools that consume them.
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 all four parameters are already documented; the description only restates diff semantics and viewport scoping (via 'elementos visibles'). Baseline 3 applies since the schema does the heavy lifting and the description adds no format or interaction detail beyond it.
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?
States a specific verb+resource: a compact list of visible elements with ref, role, name, state and center coordinates, explicitly 'sin captura' (without screenshot), which partly distinguishes it from browser_screenshot. It does not name browser_find or browser_element_at as the complementary lookup tools, so sibling differentiation is only implied.
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?
'PERCEPCIÓN PRINCIPAL' signals this is the default observation step and diff:true usage is explained, but there is no explicit guidance on when to pick this over browser_find, browser_element_at, browser_screenshot or browser_extract, and no stated prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_statsC
Tokens que ha devuelto agentic-browser en esta sesión frente a lo que habrían costado las capturas de pantalla (una por cada percepción, ancho×alto/750).
| Name | Required | Description | Default |
|---|---|---|---|
| reset | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full behavioral burden. It discloses that the comparison is session-scoped and gives the screenshot-cost formula, but it says nothing about whether the optional 'reset' mutates state, whether the tool is read-only, or what the response contains. That leaves a meaningful behavioral gap for a tool with a reset parameter.
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 dense sentence with no filler, and the comparison being reported is front-loaded. The parenthetical formula earns its place by explaining how screenshot cost is estimated, though the sentence could be clearer with an explicit action verb.
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 that there are no annotations, no output schema, and an undocumented reset parameter, the description is too thin. It explains the metric but omits reset behavior, return shape, and usage context, which are all needed for correct invocation.
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 0%, and the description never mentions the single parameter 'reset'. It therefore adds no meaning beyond the bare schema and fails to compensate for the low coverage, leaving reset semantics entirely undocumented.
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 specifies what is being reported: tokens returned by agentic-browser this session versus the cost of equivalent screenshots, including the width×height/750 formula. That is a fairly specific resource, though it never states an explicit verb like 'returns' or 'reports' and leaves the reader to infer that this is a stats tool. Sibling tools contain no other stats tool, so differentiation is adequate once the purpose is inferred.
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 no indication of when to use this tool versus alternatives, no preconditions, and no mention of when not to use it. It also does not explain what the 'reset' option is for, so an agent has no guidance on whether or when to invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_tabsB
Gestiona pestañas: list, new (con url), select (index), close (index).
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | ||
| index | No | ||
| action | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does not say whether closing a tab is destructive to page state, what happens when closing the active or last tab, or what the list operation returns — all critical for a tool that mutates browser tab state.
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?
A single front-loaded sentence with zero filler: resource first, then each action with its relevant parameter in parentheses. Nothing could be removed without losing information.
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 three-parameter, no-annotation, no-output-schema mutation tool, the description leaves too much unsaid: return values for list, index base, url format, and side effects of close. An agent would likely guess on at least one of these.
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 0%, so the description must compensate; it does add value by binding 'url' to the 'new' action and 'index' to 'select' and 'close'. However, it omits the url format (absolute vs relative) and whether index is 0- or 1-based, leaving the two non-enum parameters still ambiguous.
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?
States a specific resource (pestañas/tabs) and enumerates the four supported operations, which is more than a name restatement. It does not distinguish the tool from siblings like browser_navigate or browser_select, so an agent cannot fully infer its scope without reading the schema.
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 action list implies when each operation applies (open a new tab, switch tabs, close tabs), but there is no explicit guidance about when to use this versus browser_navigate or browser_select, and no prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_teach_startA
MODO ENSEÑAR. Empieza a grabar una receta: la persona hace la tarea una vez en el Chrome del agente (clics, textos, selecciones, Enter) y pulsa "Terminar" en el banner. Se guarda por rol y nombre de cada elemento, no por píxeles. Las contraseñas nunca se graban. Después llama a browser_teach_stop.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Página donde empieza la tarea | |
| name | Yes | Nombre corto de la receta, ej. "buscar-factura" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the load well: it discloses that recording happens in the agent's Chrome with human interaction, that the session ends via a banner button, that selectors are stored by accessibility role/name rather than pixels, and that passwords are never captured. It omits what happens if a session is already running and what permissions or side effects apply to the page.
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?
Front-loaded with the mode label, then the workflow, then storage guarantees, then the next call — a logical order with little waste. A couple of clauses (element storage, passwords) are adjacent rather than integrated, but nothing is padding.
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 two-parameter session-start tool with no output schema, the description covers trigger, human interaction model, termination signal, selector strategy, and a security guarantee. Missing only edge cases such as an already-active recording or how to abort without recording.
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 both url and name are already documented in the schema; baseline 3 applies. The description adds no extra detail about the name format or URL expectations beyond the schema's own "buscar-factura" example.
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?
Starts with a mode label ("MODO ENSEÑAR") and a specific verb+resource: start recording a recipe where the human performs the task once in the agent's Chrome. It is clearly separable from browser_teach_stop (the closing step) and from browser_record_start, which it does not overlap with in wording.
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?
Explicitly states the operating procedure (the person performs the task once, then presses "Terminar" in the banner) and names the mandatory follow-up call to browser_teach_stop. It does not explicitly exclude browser_record_start as an alternative, which keeps it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_teach_stopA
Termina la grabación de browser_teach_start. Por defecto espera a que la persona pulse "Terminar" (o "Cancelar"). Guarda la receta y devuelve sus pasos y parámetros.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Esperar al botón Terminar (true); false corta ya | |
| timeout | No | ms (600000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden well: it discloses that by default the call blocks waiting for the human to press 'Terminar' or 'Cancelar', that it persists a recipe, and that it returns steps plus parameters. It omits what happens on cancel (empty/partial recipe?) and what occurs when the timeout fires, which are the remaining behavioral 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?
Three short sentences, front-loaded with the action and then the default blocking behavior and outcome. No filler 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 two-parameter stop tool with no annotations and no output schema, the description covers the action, the default blocking mode, and the return payload (steps and parameters). Edge-case outcomes (cancel, timeout expiry, no active session) are left unstated.
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 schema already documents both parameters; the description's added value is stating the default for `wait` ('por defecto espera...'), a default the schema does not declare. It says nothing extra about `timeout` semantics beyond the schema's millisecond hint.
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?
States a specific verb and resource (termina la grabación de browser_teach_start) and names the paired sibling tool, plus what it produces (guarda la receta y devuelve pasos y parámetros). It does not distinguish itself from browser_record_stop, another stop-recording sibling, so a small ambiguity remains.
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?
Usage is implied by the pairing with browser_teach_start (call this to close that session). There is no explicit statement of when not to use it versus browser_record_stop, nor prerequisites such as requiring an active teach session.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_traceB
Últimas acciones ejecutadas (herramienta, argumentos, duración, URL, resultado) para depurar o auditar.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral load; it does disclose what the returned records contain, which is the core value. However, it never states that this is a read-only diagnostic view, the ordering of the returned actions, any cap on entries, or whether the log spans the session or browser lifetime.
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?
A single compact sentence with the salient content (the returned fields) placed before the purpose clause; no filler. The dense parenthetical is justified because each field is informative.
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?
Adequate for a small read-only-looking tool: the description explains the returned record shape in lieu of an output schema. Gaps remain around the undocumented 'limit' parameter and the scope/retention of the action log, which matter for correct invocation.
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 0% and the single parameter 'limit' is documented nowhere; the description does not mention it at all, leaving an agent to guess whether it is a count of actions, a time bound, or a default. It fails to compensate for the coverage gap.
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?
States a specific resource and verb: the most recent executed actions, enumerating the fields returned (tool, arguments, duration, URL, result) and naming the intent (debugging/auditing). It distinguishes itself from action-performing siblings, though it never contrasts with near-neighbors like browser_history, browser_events or browser_stats.
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 clause 'para depurar o auditar' implies the use case but gives no explicit when-to-use vs the overlapping siblings (browser_history, browser_events, browser_console, browser_stats) and no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_typeA
Escribe texto con eventos de teclado reales. Si das ref/x,y primero hace clic para enfocar. Nunca escribe en contraseñas, códigos 2FA, tarjetas ni números de cuenta (estado {sensitive}): eso lo hace la persona con browser_request_human.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | Coordenada X en píxeles CSS del viewport | |
| y | No | Coordenada Y en píxeles CSS del viewport | |
| ref | No | Ref de un elemento devuelto por browser_snapshot/browser_find (ej. 12 o "f1:7" en iframes) | |
| text | Yes | ||
| clear | No | Borra el contenido antes de escribir | |
| delay | No | ms entre teclas (15; 0 con AGENT_SPEED=fast) | |
| submit | No | Pulsa Enter al final | |
| snapshot | No | Si true, devuelve el snapshot tras la acción (ahorra un turno) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose real traits: real keyboard events, an automatic focus click when ref/x,y are supplied, and a hard refusal on password/2FA/card/account fields tied to a {sensitive} state. It omits failure behavior and whether a field must exist before typing.
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 short sentences, front-loaded with the core action, then the focus behavior, then the safety exclusion. Nothing is repeated from the schema and no sentence is 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 an 8-parameter mutation tool with no annotations and no output schema, the safety and focus semantics are the critical missing pieces and both are covered. Minor gaps remain around result behavior and error cases, though the snapshot flag is already documented in the schema.
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 88%, so the baseline is 3, and the description earns above baseline by explaining the coupling between ref/x,y and an implicit focus click — context the schema cannot express. Text and the remaining flags are left to 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?
States a specific verb and mechanism ('Escribe texto con eventos de teclado reales'), which cleanly separates it from browser_press, browser_click, and browser_select. It never names those siblings explicitly, so differentiation is implied rather than stated.
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?
Gives a concrete precondition ('Si das ref/x,y primero hace clic para enfocar') and an explicit routing rule for the sensitive-field case to browser_request_human. It stops short of saying when to prefer this over browser_press or browser_select for non-text inputs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_uploadB
Adjunta archivos locales a un (o al selector que abre un clic en ese ref). Solo desde las carpetas permitidas (AGENT_UPLOAD_DIRS).
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | ||
| files | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose one meaningful constraint: files must come from folders allowed by AGENT_UPLOAD_DIRS. It omits what happens on rejected paths, whether change/submit events fire, or what the response contains, leaving notable behavioral 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?
Two compact sentences, front-loaded with the action and target, with the security constraint appended. No filler; only slight terseness in the parenthetical that could confuse the ref semantics.
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?
Covers purpose, both modes of targeting, and the folder restriction for a 2-param tool with no annotations or output schema. Missing failure behavior and return-value expectations, so it is adequate 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?
Schema coverage is 0%, so the description must compensate. It explains that 'ref' can target either a file input or a selector opened by clicking that ref, which is real added meaning, and implies 'files' are local paths within allowed folders. It still doesn't state the format of file paths or the array's constraints.
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?
States a specific verb and resource: attaching local files to an <input type=file> or the selector opened by clicking a ref. This is clearly distinct from sibling tools like browser_click or browser_type. It doesn't explicitly name a sibling alternative, so it stops 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 parenthetical clarifies two modes of use (direct input element vs. a selector opened by a click on the ref), which is useful operational context. However, there is no explicit when-to-use/when-not guidance or routing to alternatives, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_waitC
Espera ms, o hasta que aparezca un texto o selector.
| Name | Required | Description | Default |
|---|---|---|---|
| ms | No | ||
| text | No | ||
| timeout | No | ||
| selector | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description must carry the full burden of behavioral disclosure. It fails to clarify how the four parameters interact, specifically whether the 'timeout' applies only to condition checks or also to the 'ms' waits.
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 extremely concise and efficient, communicating the two operational modes (time-based vs. condition-based) in a single, short sentence.
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 4-parameter tool with two distinct waiting modes, the description is incomplete. It does not detail the scope of the wait or the expected success/failure behaviors, especially regarding the timeout limit.
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 0%, and the description offers no semantic meaning for any of the four parameters. It relies entirely on the agent knowing what 'ms', 'text', or 'selector' represent.
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 identifies the tool's function as waiting ('Espera') and states the resource scope (browser context). It successfully distinguishes this temporal function from most action-based sibling tools by focusing on waiting time or conditions.
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. For instance, it does not explain if this is better used than, say, a polling mechanism like 'browser_watch' for specific use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_watchA
Espera (sin gastar tokens) hasta que la página cambie: aparece texto nuevo, cambia el título (ej. "(3) WhatsApp") o coincide un patrón. Ideal para vigilar chats, correos o resultados que tardan.
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | Regex: solo despierta si el texto nuevo coincide | |
| timeout | No | ms máximos de espera (300000) | |
| selector | No | Contenedor CSS a vigilar (por defecto body) | |
| titleChange | No | Despertar si cambia el título (true) |
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 usefully discloses that waiting does not consume tokens and that the tool blocks until a change occurs, but it says nothing about timeout behavior, what is returned when the wait ends, or whether the call fails on timeout.
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?
A single compact sentence pair with the core mechanism front-loaded and the use case trailing. No filler, though the parenthetical "sin gastar tokens" could be tightened.
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?
With no output schema and no annotations, the description should explain what a caller gets back after the wait resolves or times out. It covers the trigger conditions well but leaves the result/timeout contract unspecified for a 4-parameter blocking tool.
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 all four parameters (text, timeout, selector, titleChange) are already documented in the schema. The description only illustrates the titleChange case with an example; it adds no syntax or default detail beyond the schema, 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?
States a specific verb ("Espera") and the exact trigger conditions: new text, title change, or regex match, with a concrete example ("(3) WhatsApp"). It does not distinguish itself from the sibling browser_wait, which is the most likely confusion point.
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?
"Ideal para vigilar chats, correos o resultados que tardan" gives a clear context of use. However it offers no exclusions or explicit guidance on when to prefer browser_wait or browser_snapshot instead of this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
35 tool updates
v0.1.0- First observed
browser_batch - First observed
browser_click - First observed
browser_console - First observed
browser_cursor - First observed
browser_cursor_style - First observed
browser_dismiss - First observed
browser_drag - First observed
browser_element_at - First observed
browser_eval - First observed
browser_events - First observed
browser_extract - First observed
browser_find - First observed
browser_history - First observed
browser_move - First observed
browser_navigate - First observed
browser_press - First observed
browser_read - First observed
browser_recipes - First observed
browser_record_start - First observed
browser_record_stop - First observed
browser_replay - First observed
browser_request_human - First observed
browser_screenshot - First observed
browser_scroll - First observed
browser_select - First observed
browser_snapshot - First observed
browser_stats - First observed
browser_tabs - First observed
browser_teach_start - First observed
browser_teach_stop - First observed
browser_trace - First observed
browser_type - First observed
browser_upload - First observed
browser_wait - First observed
browser_watch
TDQS
Scored across 35 tools
The core interaction tools (click, type, press, scroll, drag, select, upload) are cleanly separated, but the perception layer has four overlapping channels: browser_snapshot, browser_read, browser_extract and browser_screenshot all return page content, and browser_find vs browser_element_at vs browser_cursor all locate elements by different means. browser_wait and browser_watch both wait for page changes, and browser_cursor vs browser_cursor_style differ only subtly in name while doing unrelated things.
Every tool carries the same browser_ prefix and uses snake_case throughout, which makes the set highly predictable. The only inconsistency is grammatical: many names are verbs (navigate, click, extract, replay) while others are nouns (snapshot, tabs, events, history, stats, recipes, cursor), though each remains readable and guessable.
35 tools is well past the comfortable range for a single server and the surface sprawls into four sub-domains: core automation, perception, diagnostics (trace, stats, console, events), and a teaching/recording subsystem (teach_start, teach_stop, recipes, replay, record_start, record_stop). Several of these are convenience wrappers or observability extras that could be collapsed (batch, cursor_style, stats, trace) rather than separate tools.
The surface is unusually thorough: navigation, tabs, full input primitives, human handoff, downloads/dialogs, structured extraction, batch execution and a recipe-recording lifecycle are all covered with no obvious dead ends. Remaining gaps are real but niche for the domain: no iframe/frame targeting, no cookie or localStorage management, no viewport/device emulation, and no clipboard read beyond keyboard shortcuts.
Maintenance
Related MCP Connectors
Control a real browser from AI agents: navigate, click, type, screenshot, read the page.
Give AI agents a real cloud Chrome: open sessions, navigate, read pages, click, type and screenshot.
Web scraping, browser automation, screenshots and AI data extraction for AI agents via MCP.
Real Chrome for agents: start a browser, read pages as numbered markdown, click, type, hand off.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to control the Google Chrome browser through a Node.js WebSocket bridge and a dedicated browser extension. It provides tools for capturing screenshots, executing JavaScript, managing tabs, and extracting page content via the MCP protocol.2-
- AlicenseBqualityFmaintenanceEnables AI agents to directly control your real Chrome browser with full context including login sessions, cookies, and open tabs. It provides tools for page scanning, JavaScript execution, CDP control, screenshots, and physical mouse/keyboard input for authentic browser automation.20245MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to control Chrome browser actions like navigation, clicking, form filling, screenshots, and console/network logging via an MCP server and Chrome extension.444 npmMIT
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to control and interact with a Chrome browser via MCP, providing tools for navigation, screenshots, clicking, form filling, content extraction, and tab management.1-