Skip to main content
Glama
cloudflare

Cloudflare Playwright MCP

Official
by cloudflare

Cloudflare Драматург MCP

Развертывание в Cloudflare

Обзор

В этом проекте Playwright используется для автоматизированного тестирования браузера и интегрируется с Cloudflare Workers, Browser Rendering и @cloudflare/playwright для развертывания.

Построить и развернуть

Для настройки и развертывания проекта выполните следующие действия:

  1. Установите зависимости:

npm ci
  1. Строить:

cd cloudflare
npm run build
  1. Развертывание в Cloudflare Workers:

cd cloudflare/example
npx wrangler deploy

Использование с Cloudflare AI Playground

альтернативный текст

Cloudflare Playground AI — отличный способ протестировать серверы MCP с использованием моделей LLM, доступных в Workers AI.

  • Перейдите по адресу https://playground.ai.cloudflare.com/

  • Убедитесь, что модель установлена на llama-3.3-70b-instruct-fp8-fast

  • В разделе «Серверы MCP» установите URL -адрес https://[my-mcp-url].workers.dev/sse

  • Нажмите «Подключиться».

  • Статус должен обновиться до «Подключено» , и должно быть указано 14 доступных инструментов.

Теперь вы можете начать взаимодействовать с моделью, и она запустит необходимые инструменты для выполнения запрошенного.

[!СОВЕТ] Для достижения наилучших результатов давайте простые инструкции, состоящие из одного действия, например, «Создать новую запись в списке дел», «Перейти на сайт Cloudflare», «Сделать снимок экрана».

Пример разговора:

Роль

Сообщение

Пользователь

Перейти на demo.playwright.dev/todomvc

Помощник

запускает инструмент browser_navigate Страница перенаправлена на https://demo.playwright.dev/todomvc/ . Заголовок страницы — «React • TodoMVC». Снимок страницы показывает ее содержимое, включая заголовок, текстовое поле и несколько ссылок.

Пользователь

Создайте запись в списке дел

Помощник

запускает инструмент browser_type Создана новая запись todo "Купить продукты". Снимок страницы показывает обновленное содержимое страницы, включая новую запись todo.

Пользователь

Отлично. Теперь создай todo в стиле попугая

Помощник

запускает инструмент browser_type. Новая запись todo "Polly wants a cracker" была создана в стиле попугая. Снимок страницы показывает обновленное содержимое страницы, включая новую запись todo.

Пользователь

И создай еще одну задачу в стиле Йоды

Помощник

запускает инструмент browser_type. Создана новая запись todo "A walk, I must take" в стиле Йоды. Снимок страницы показывает обновленное содержимое страницы, включая новую запись todo.

Пользователь

Сделать снимок экрана

Помощник

запускает инструмент браузера_сделать_скриншотальтернативный текст Сделан снимок экрана текущей страницы. Снимок экрана в формате PNG и имеет размер 56 КБ.

Пользователь

Теперь установите флажок рядом с записью Parrot todo.

Помощник

запускает инструмент browser_clickt Был нажат флажок записи Parrot todo "Polly wants a cracker". Снимок страницы показывает обновленное содержимое страницы, с установленным флажком.

Пользователь

Сделать снимок экрана

Помощник

запускает инструмент браузера_сделать_скриншотальтернативный текст Сделан снимок экрана текущей страницы. Снимок экрана в формате PNG и имеет размер 58 КБ.

Пользователь

Удалить выполненные записи дел

Помощник

запускает инструмент browser_clickt . Была нажата кнопка «Очистить выполненное». Снимок страницы показывает обновленное содержимое страницы, при этом выполненная запись todo «Полли хочет крекера» удалена.

Пользователь

Сделайте последний снимок экрана

Помощник

запускает инструмент браузера_сделать_скриншотальтернативный текст Сделан последний снимок экрана текущей страницы. Снимок экрана в формате PNG и имеет размер 50 КБ.

Использовать с Claude Desktop

На данный момент Claude Desktop поддерживает только локальные серверы MCP. Для использования playground-mcp с Claude Desktop мы используем mcp-remote — инструмент, который проксирует удаленные серверы MCP и предоставляет их локально. Используйте следующую конфигурацию:

  1. Откройте файл конфигурации для Claude Desktop.

  2. Добавьте следующий фрагмент JSON в раздел mcpServers :

{
  "mcpServers": {
    "cloudflare-playwright-mcp": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://[my-mcp-url].workers.dev/sse"
      ]
    }
  }
}
  1. Сохраните файл конфигурации и перезапустите Claude Desktop, чтобы изменения вступили в силу.

Такая настройка гарантирует, что Claude Desktop сможет взаимодействовать с сервером Cloudflare Playwright MCP.

Вот пример сеанса открытия демонстрационного приложения TODO, добавления «купить лимоны» и создания снимка экрана с использованием инструментов playwright-mcp и рендеринга в браузере:

альтернативный текст

Настроить в VSCode

Вы можете установить сервер Playwright MCP с помощью VS Code CLI :

# For VS Code
code --add-mcp '{"name":"cloudflare-playwright","type":"sse","url":"https://[my-mcp-url].workers.dev/sse"}'
# For VS Code Insiders
code-insiders --add-mcp '{"name":"cloudflare-playwright","type":"sse","url":"https://[my-mcp-url].workers.dev/sse"}'

После установки сервер Playwright MCP будет доступен для использования с вашим агентом GitHub Copilot в VS Code.

Режимы инструмента

Инструменты доступны в двух режимах:

  1. Режим моментальных снимков (по умолчанию): использует моментальные снимки доступности для повышения производительности и надежности.

  2. Режим Vision : использует снимки экрана для визуального взаимодействия.

Режим Vision лучше всего работает с компьютерными моделями, которые способны взаимодействовать с элементами, используя координатное пространство XY, судя по предоставленному снимку экрана.

Взаимодействия на основе моментальных снимков

  • снимок_браузера

    • Описание: Сделать снимок доступности текущей страницы, это лучше, чем снимок экрана

    • Параметры: Нет

  • браузер_щелчок

    • Описание: Выполнить щелчок на веб-странице.

    • Параметры:

      • element (строка): понятное человеку описание элемента, используемое для получения разрешения на взаимодействие с элементом

      • ref (string): Точная ссылка на целевой элемент из снимка страницы

  • браузер_перетаскивание

    • Описание: Выполнение перетаскивания между двумя элементами.

    • Параметры:

      • startElement (строка): понятное человеку описание исходного элемента, используемое для получения разрешения на взаимодействие с элементом.

      • startRef (string): Точная ссылка на исходный элемент из снимка страницы

      • endElement (строка): понятное человеку описание целевого элемента, используемое для получения разрешения на взаимодействие с элементом.

      • endRef (строка): точная ссылка на целевой элемент из снимка страницы

  • браузер_hover

    • Описание: Наведите курсор на элемент на странице.

    • Параметры:

      • element (строка): понятное человеку описание элемента, используемое для получения разрешения на взаимодействие с элементом

      • ref (string): Точная ссылка на целевой элемент из снимка страницы

  • тип_браузера

    • Описание: Введите текст в редактируемый элемент.

    • Параметры:

      • element (строка): понятное человеку описание элемента, используемое для получения разрешения на взаимодействие с элементом

      • ref (string): Точная ссылка на целевой элемент из снимка страницы

      • text (строка): Текст для ввода в элемент.

      • submit (логическое значение, необязательно): следует ли отправить введенный текст (нажмите Enter после этого)

      • slowly (boolean, необязательно): Вводить ли по одному символу за раз. Полезно для запуска обработчиков клавиш на странице. По умолчанию весь текст заполняется сразу.

  • выбор_опции_браузера

    • Описание: Выберите вариант в раскрывающемся списке.

    • Параметры:

      • element (строка): понятное человеку описание элемента, используемое для получения разрешения на взаимодействие с элементом

      • ref (string): Точная ссылка на целевой элемент из снимка страницы

      • values (массив): Массив значений для выбора в раскрывающемся списке. Это может быть одно значение или несколько значений.

  • браузер_сделать_скриншот

    • Описание: Сделать снимок экрана текущей страницы. Вы не можете выполнять действия на основе снимка экрана, используйте для действий browser_snapshot.

    • Параметры:

      • raw (boolean, необязательно): Возвращать ли без сжатия (в формате PNG). Значение по умолчанию — false, что возвращает изображение JPEG.

      • element (строка, необязательно): понятное человеку описание элемента, используемое для получения разрешения на снимок экрана элемента. Если не указано, снимок экрана будет сделан из области просмотра. Если элемент указан, необходимо указать также ссылку.

      • ref (строка, необязательно): Точная ссылка на целевой элемент из снимка страницы. Если не указано, снимок экрана будет сделан из области просмотра. Если указано ref, элемент также должен быть указан.

Взаимодействия на основе видения

  • захват_экрана_браузера

    • Описание: Сделать снимок экрана текущей страницы.

    • Параметры: Нет

  • экран_браузера_перемещение_мыши

    • Описание: Переместить мышь в указанную позицию.

    • Параметры:

      • element (строка): понятное человеку описание элемента, используемое для получения разрешения на взаимодействие с элементом

      • x (число): координата X

      • y (число): координата Y

  • щелчок_по_экрану_браузера

    • Описание: Щелкните левой кнопкой мыши.

    • Параметры:

      • element (строка): понятное человеку описание элемента, используемое для получения разрешения на взаимодействие с элементом

      • x (число): координата X

      • y (число): координата Y

  • перетаскивание_экрана_браузера

    • Описание: Перетащите левой кнопкой мыши

    • Параметры:

      • element (строка): понятное человеку описание элемента, используемое для получения разрешения на взаимодействие с элементом

      • startX (число): Начальная координата X

      • startY (число): начальная координата Y

      • endX (число): Конечная координата X

      • endY (число): Конечная координата Y

  • тип_экрана_браузера

    • Описание: Введите текст

    • Параметры:

      • text (строка): Текст для ввода в элемент.

      • submit (логическое значение, необязательно): следует ли отправить введенный текст (нажмите Enter после этого)

Управление вкладками

  • список_вкладок_браузера

    • Описание: Список вкладок браузера

    • Параметры: Нет

  • браузер_вкладка_новая

    • Описание: Открыть новую вкладку

    • Параметры:

      • url (строка, необязательно): URL для перехода на новую вкладку. Если не указано, новая вкладка будет пустой.

  • выбор_вкладки_браузера

    • Описание: Выберите вкладку по индексу

    • Параметры:

      • index (номер): индекс вкладки для выбора.

  • закрыть_вкладку_браузера

    • Описание: Закрыть вкладку

    • Параметры:

      • index (число, необязательно): индекс вкладки для закрытия. Закрывает текущую вкладку, если не указано.

Навигация

  • браузер_навигация

    • Описание: Перейдите по URL-адресу

    • Параметры:

      • url (строка): URL-адрес для перехода

  • браузер_навигация_назад

    • Описание: Вернуться на предыдущую страницу

    • Параметры: Нет

  • браузер_навигация_вперед

    • Описание: Перейти на следующую страницу

    • Параметры: Нет

Клавиатура

  • браузер_нажмите_клавишу

    • Описание: Нажмите клавишу на клавиатуре.

    • Параметры:

      • key (строка): название клавиши, которую нужно нажать, или символ, который нужно сгенерировать, например, ArrowLeft``a

Консоль

  • сообщения_консоли_браузера

    • Описание: Возвращает все сообщения консоли.

    • Параметры: Нет

Файлы и медиа

  • загрузка_файла_браузера

    • Описание: Загрузите один или несколько файлов.

    • Параметры:

      • paths (массив): Абсолютные пути к файлам для загрузки. Может быть одним файлом или несколькими файлами.

  • браузер_pdf_сохранить

    • Описание: Сохранить страницу как PDF

    • Параметры: Нет

Коммунальные услуги

  • браузер_закрыть

    • Описание: Закрыть страницу

    • Параметры: Нет

  • браузер_ожидание

    • Описание: Ожидание в течение указанного времени в секундах.

    • Параметры:

      • time (число): время ожидания в секундах

  • изменение_размера_браузера

    • Описание: Изменение размера окна браузера.

    • Параметры:

      • width (число): Ширина окна браузера.

      • height (число): Высота окна браузера.

  • диалог_обработки_браузера

    • Описание: Обработка диалога.

    • Параметры:

      • accept (логическое значение): принимать ли диалог.

      • promptText (строка, необязательно): Текст подсказки в случае диалогового окна подсказки.

Available Tools

22 tools
browser_clickC
Destructive

Perform click on a web page

ParametersJSON Schema
NameRequiredDescriptionDefault
elementNoHuman-readable element description used to obtain permission to interact with the element
targetYesExact target element reference from the page snapshot, or a unique element selector
doubleClickNoWhether to perform a double click instead of a single click
buttonNoButton to click, defaults to left
modifiersNoModifier keys to press

TDQS

C2.8/5.0
Behavior2/5

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

The description simply restates the tool's action without adding behavioral context beyond what annotations already provide (destructiveHint=true, openWorldHint=true). It does not disclose potential side effects like navigation, form submission, or state changes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence, which is concise. However, it is too brief and lacks sufficient detail to fully guide an agent, missing opportunities to add value without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (5 parameters, multiple siblings, no output schema), the description is severely incomplete. It omits return values, side effects, and usage context, leaving the agent underinformed for safe and correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides 100% description coverage for all 5 parameters. The description adds no additional meaning beyond the schema, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Perform click on a web page', which is a specific verb and resource. It distinguishes from sibling tools like browser_hover or browser_drag, though it does not mention parameter-driven variations like double-click or right-click.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like browser_press_key or browser_hover. There is no mention of prerequisites, when not to use it, or how to choose between click and other interaction tools.

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

browser_closeA
Destructive

Close the page

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true and openWorldHint=true, so the description's simple statement is sufficient. It does not add extra context about side effects (e.g., unsaved data loss), but it does not contradict annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that directly states the action. It is front-loaded with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters, no output schema, and annotations covering destructive and open-world behavior, the description is adequately complete. The openWorldHint could be elaborated, but annotations already handle it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, and schema description coverage is 100% trivially. With zero parameters, the description does not need to add parameter details; a baseline of 4 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Close the page' clearly states the verb (close) and the resource (page), distinguishing it from sibling tools like browser_navigate or browser_tabs. It is specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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, such as browser_tabs for switching tabs or browser_navigate for leaving the page. There are no prerequisites or exclusions mentioned.

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

browser_console_messagesC
Read-only

Returns all console messages

ParametersJSON Schema
NameRequiredDescriptionDefault
levelYesLevel of the console messages to return. Each level includes the messages of more severe levels. Defaults to "info".info
allNoReturn all console messages since the beginning of the session, not just since the last navigation. Defaults to false.
filenameNoFilename to save the console messages to. If not provided, messages are returned as text.

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already provide readOnlyHint and destructiveHint, so the description adds no behavioral context beyond stating the return type. Does not disclose filtering behavior or session scoping.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence is concise but too vague; it lacks essential details such as the meaning of 'all' and the relationship to the level parameter. Not front-loaded with key information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite moderate complexity and no output schema, the description does not tie together the parameters or explain the output format. Leaves ambiguity about what 'console messages' entails.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents parameters. The description does not add extra meaning beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns console messages, a specific verb-resource pair. It distinguishes itself from sibling tools like browser_click or browser_navigate, though the word 'all' could be slightly misleading given filtering options.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like browser_network_requests. No exclusions or context for optimal use.

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

browser_dragB
Destructive

Perform drag and drop between two elements

ParametersJSON Schema
NameRequiredDescriptionDefault
startElementNoHuman-readable source element description used to obtain the permission to interact with the element
startTargetYesExact target element reference from the page snapshot, or a unique element selector
endElementNoHuman-readable target element description used to obtain the permission to interact with the element
endTargetYesExact target element reference from the page snapshot, or a unique element selector

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true and openWorldHint=true. The description adds minimal behavioral context beyond the action itself; does not explain interaction permissions, success/failure states, or whether it simulates real mouse events. With annotations present, this is adequate but not enriched.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that is front-loaded and efficient. While more detail could be added, the information is present without unnecessary verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, but the tool is a simple action. Without describing return behavior or failure modes, the description is minimally complete for its complexity. Could be improved by noting that the browser must have page context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, providing clear descriptions for each parameter. The tool description adds no additional value beyond what the schema already offers, meeting the baseline for this dimension.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Perform drag and drop between two elements' uses a specific verb ('drag and drop') and resource ('elements'), clearly distinguishing it from sibling tools like browser_click, browser_drop, and browser_hover.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. No mention of prerequisites such as needing a page snapshot to obtain element references, or when not to use drag and drop.

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

browser_dropA
Destructive

Drop files or MIME-typed data onto an element, as if dragged from outside the page. At least one of "paths" or "data" must be provided.

ParametersJSON Schema
NameRequiredDescriptionDefault
elementNoHuman-readable element description used to obtain permission to interact with the element
targetYesExact target element reference from the page snapshot, or a unique element selector
pathsNoAbsolute paths to files to drop onto the element.
dataNoData to drop, as a map of MIME type to string value (e.g. {"text/plain": "hello", "text/uri-list": "https://example.com"}).

TDQS

A4.2/5.0
Behavior4/5

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

Annotations provide readOnlyHint=false, destructiveHint=true, and openWorldHint=true. The description aligns by stating 'Drop files or MIME-typed data onto an element, as if dragged from outside the page,' implying page modification. It adds behavioral context (simulating external drag) beyond the annotations, which is helpful.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: first defines the purpose, second provides a critical parameter guideline. No unnecessary words, front-loaded, and every sentence adds value. It is efficiently structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (4 params, nested objects, no output schema), the description covers purpose and a key constraint. However, it does not mention what happens after the drop (e.g., event triggering) or elaborate on 'MIME-typed data' beyond schema. Still, it is adequately complete for the action.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all parameters. The description adds value by explicitly stating the constraint 'At least one of 'paths' or 'data' must be provided,' which is not enforced by schema (only target is required). This clarifies a key usage rule beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (drop), the resource (element), and the type of data (files or MIME-typed data). It distinguishes itself from siblings like browser_drag (internal drag) and browser_file_upload (different mechanism) by specifying 'as if dragged from outside the page.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides one usage guideline: 'At least one of 'paths' or 'data' must be provided.' However, it does not explicitly state when to use this tool versus alternatives (e.g., when to simulate an external drop vs. a click or file upload). No exclusions or context for selecting among siblings are given.

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

browser_evaluateC
Destructive

Evaluate JavaScript expression on page or element

ParametersJSON Schema
NameRequiredDescriptionDefault
elementNoHuman-readable element description used to obtain permission to interact with the element
targetNoExact target element reference from the page snapshot, or a unique element selector
functionYes() => { /* code */ } or (element) => { /* code */ } when element is provided
filenameNoFilename to save the result to. If not provided, result is returned as text.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already indicate destructiveHint=true and openWorldHint=true, but the description adds no behavioral context, such as potential side effects, permission requirements, or interaction with page state. It does not contradict annotations, but it misses an opportunity to elaborate on risks.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that is front-loaded with the verb 'Evaluate'. It wastes no words, but is perhaps too brief for a tool with potential for complex usage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite the complexity of evaluating JavaScript, the description lacks details on return values, error handling, execution context, or limitations. With no output schema and only basic annotations, the description is insufficient for complete understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% parameter description coverage, so the baseline is 3. The tool description does not add any semantic information beyond what the schema already provides, which is sufficient but not enhanced.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool evaluates JavaScript on a page or element, using a specific verb and resource. However, it does not differentiate from the sibling tool 'browser_run_code', which likely performs a similar function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'browser_run_code'. There is no mention of prerequisites, context, or exclusions, leaving the agent without decision support.

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

browser_file_uploadC
Destructive

Upload one or multiple files

ParametersJSON Schema
NameRequiredDescriptionDefault
pathsNoThe absolute paths to the files to upload. Can be single file or multiple files. If omitted, file chooser is cancelled.

TDQS

C2.9/5.0
Behavior2/5

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

The description only says 'Upload one or multiple files' and does not add behavioral details beyond what annotations provide (destructiveHint=true, openWorldHint=true). It misses explaining interactions like opening a file dialog or needing a file input.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, no redundancy. While minimal, it is efficient and front-loaded. Slightly better than a tautology but still sparse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and annotations, the description is minimally acceptable. However, it lacks guidance on destructive behavior (destructiveHint=true) and prerequisites, leaving gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%: the 'paths' parameter already has a clear description. The tool description adds no additional meaning beyond the schema, meeting baseline expectations.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it uploads files, aligning with the tool name. It is specific enough to distinguish from sibling browser tools, though it does not explicitly mention browser context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool over alternatives or what prerequisites exist (e.g., needing a file input element). The description omits context for appropriate usage.

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

browser_fill_formC
Destructive

Fill multiple form fields

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsYesFields to fill in

TDQS

C2.3/5.0
Behavior2/5

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

The description adds no behavioral context beyond the annotations. Annotations indicate destructiveHint=true but the description does not explain the nature of modifications (e.g., page state changes, potential events triggered). The description is too brief to disclose any behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise (3 words) but fails to provide critical information. Conciseness is not valuable here as it omits necessary context. The description is under-specified rather than efficiently written.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of the input schema (array of objects with multiple required fields) and no output schema, the description is completely inadequate. It does not explain how fields are processed, ordering, error behavior, or interaction with page state, leaving the agent without sufficient information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with each field having a description. The tool description adds no additional meaning beyond the schema. Baseline score of 3 is appropriate as the schema already documents parameters adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Fill multiple form fields' is a vague statement of purpose. It indicates the tool fills form fields but does not specify what 'fill' entails (e.g., setting values, toggling checkboxes). It somewhat distinguishes from siblings like browser_type (single field) by mentioning 'multiple', but lacks explicit differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like browser_type or browser_select_option. There is no mention of context, prerequisites, or when not to use it.

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

browser_handle_dialogC
Destructive

Handle a dialog

ParametersJSON Schema
NameRequiredDescriptionDefault
acceptYesWhether to accept the dialog.
promptTextNoThe text of the prompt in case of a prompt dialog.

TDQS

C2.3/5.0
Behavior2/5

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

Annotations indicate destructiveHint=true and openWorldHint=true, but the description adds no behavioral context (e.g., what happens to the page, whether navigation occurs). The agent must guess the effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short, but it sacrifices informativeness for brevity. It could include a brief example or clarification without being verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple parameter set and no output schema, the description is insufficient. It does not explain return behavior, error cases, or what constitutes a successful dialog handling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 adds no additional meaning, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Handle a dialog' is vague and does not specify what action is performed (e.g., accept, dismiss) or the type of dialog. It barely improves over the tool name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus sibling tools like browser_click or browser_fill_form. The context of dialogs is implied but not explained.

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

browser_hoverC
Destructive

Hover over element on page

ParametersJSON Schema
NameRequiredDescriptionDefault
elementNoHuman-readable element description used to obtain permission to interact with the element
targetYesExact target element reference from the page snapshot, or a unique element selector

TDQS

C2.9/5.0
Behavior2/5

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

Annotations indicate destructiveHint true and readOnlyHint false, but the description does not elaborate on potential side effects (e.g., triggering hover states, popups). The description adds no additional behavioral context beyond the minimal annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, direct sentence with no unnecessary words. It efficiently communicates the basic action, though it could be slightly expanded without harming conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool and lack of output schema, the description is minimally adequate but does not cover important details like event triggering, usage in sequences, or error cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for both parameters, so the description does not need to add much. However, it does not clarify how 'element' differs from 'target' or provide examples, leaving room for ambiguity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('hover') and the resource ('element on page'), effectively distinguishing it from sibling tools like click or drag. However, it could be more specific about the type of element or context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use hover vs other interaction tools (e.g., click, drag), nor any conditions or prerequisites. The agent has no hints about scenario suitability.

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

browser_navigateB
Destructive

Navigate to a URL

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL to navigate to

TDQS

B3.3/5.0
Behavior2/5

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

Annotations already indicate destructiveness and open-world interaction, but the description adds no specifics about page load waiting, state changes, or fallback behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with no wasted words, perfectly efficient for a simple navigation action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Lacks details on whether navigation waits for page load, handles redirects, or returns the final URL; basic but adequate for a straightforward tool with no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with parameter description 'The URL to navigate to'. The tool description adds no additional meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Navigate to a URL' clearly states the action (navigate) and resource (URL), distinguishing it from sibling actions like clicking or closing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., for back navigation use browser_navigate_back), nor any exclusions.

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

browser_navigate_backA
Destructive

Go back to the previous page in the history

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true and readOnlyHint=false, so the description does not need to add much. It adds no extra behavioral context beyond the obvious navigation action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, concise sentence with no unnecessary words. Every part is essential.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless action with no output schema, the description is largely complete. It could mention edge cases like empty history, but overall it adequately defines the tool's purpose.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, and schema coverage is 100%. According to rubric, 0 params earns baseline 4. Description adds no parameter info, which is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the action 'Go back to the previous page in the history'. It uses a specific verb and resource, and distinguishes from sibling tool browser_navigate which goes to a specific URL.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives or when it might fail (e.g., no history). The description is functional but lacks context for appropriate use.

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

browser_network_requestsA
Read-only

Returns all network requests since loading the page

ParametersJSON Schema
NameRequiredDescriptionDefault
staticYesWhether to include successful static resources like images, fonts, scripts, etc. Defaults to false.
requestBodyYesWhether to include request body. Defaults to false.
requestHeadersYesWhether to include request headers. Defaults to false.
filterNoOnly return requests whose URL matches this regexp (e.g. "/api/.*user").
filenameNoFilename to save the network requests to. If not provided, requests are returned as text.

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds 'since loading the page' but does not elaborate on behavior like data volume or performance impact. It is consistent with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that directly states the tool's purpose. No extraneous information, front-loaded with the core action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the description is clear, it lacks details about the return format (e.g., list of objects with URL, method). With no output schema, the agent may need more context. However, annotations and schema parameters provide some support.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and all parameters are described in the schema (e.g., static, filter). The description adds no additional meaning beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it returns network requests since page load. The verb 'Returns' and resource 'network requests' are specific, and it distinguishes from sibling tools like browser_console_messages.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool vs alternatives like browser_navigate or browser_console_messages. It is implied that this tool is for network request inspection, but no when-not or prerequisites are mentioned.

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

browser_press_keyB
Destructive

Press a key on the keyboard

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesName of the key to press or a character to generate, such as `ArrowLeft` or `a`

TDQS

B3.1/5.0
Behavior2/5

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

Annotations note destructiveHint and openWorldHint, but the description adds no behavioral context beyond 'press a key'. It does not mention that key presses can trigger page events, affect focus, or what happens with invalid key values.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, no wasted words. The description is appropriately sized for a simple tool with one parameter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one param and no output schema, the description is minimally adequate. However, it lacks mention of the context (e.g., presses on focused element, vs browser_type) which slightly reduces completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers the single 'key' parameter with helpful examples (e.g., ArrowLeft, a). Since schema coverage is 100%, the description adds no additional parameter info. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('press') and resource ('key'), but it does not differentiate from sibling tools like 'browser_type' which types a sequence. Adding 'single key' would improve distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., 'browser_type' for multiple characters, 'browser_fill_form' for forms). No exclusions or context provided.

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

browser_resizeB
Destructive

Resize the browser window

ParametersJSON Schema
NameRequiredDescriptionDefault
widthYesWidth of the browser window
heightYesHeight of the browser window

TDQS

B3.4/5.0
Behavior2/5

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

Annotations indicate destructiveHint true and readOnlyHint false, but the description adds no explanation of what 'destructive' means (e.g., viewport change affects page layout) or any other behavioral context beyond the bare verb.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no wasted words, front-loaded with the action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with two numeric params and no output schema, the description is nearly complete. Could optionally mention units (pixels) but not critical.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%; both width and height are described with types and required. The description adds no additional meaning beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Resize the browser window' clearly states the action and resource, and it distinguishes this tool from siblings like navigating or clicking.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives, no prerequisites, and no mention of when not to use it.

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

browser_run_codeB
Destructive

Run Playwright code snippet

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNoA JavaScript function containing Playwright code to execute. It will be invoked with a single argument, page, which you can use for any page interaction. For example: `async (page) => { await page.getByRole('button', { name: 'Submit' }).click(); return await page.title(); }`
filenameNoLoad code from the specified file. If both code and filename are provided, code will be ignored.

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true and readOnlyHint=false, so the description's minimalism is acceptable. However, it adds no extra behavioral context (e.g., potential page state changes, side effects) beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, readable sentence. It is concise but not underspecified—it effectively communicates the core function without unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description does not explain return values, error handling, or that the tool can load code from a file. Given the lack of an output schema and the tool's power (destructive, open world), more context is needed for complete understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage with detailed descriptions for both parameters (code and filename). The description adds no additional meaning, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Run Playwright code snippet' clearly states the action and resource. It distinguishes this tool from siblings like browser_click or browser_navigate because it executes arbitrary Playwright code, not a specific browser action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 vs. alternatives like browser_evaluate or other specific actions. There is no mention of prerequisites, when to avoid it, or when it is preferable.

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

browser_select_optionA
Destructive

Select an option in a dropdown

ParametersJSON Schema
NameRequiredDescriptionDefault
elementNoHuman-readable element description used to obtain permission to interact with the element
targetYesExact target element reference from the page snapshot, or a unique element selector
valuesYesArray of values to select in the dropdown. This can be a single value or multiple values.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true (modifies UI state) and openWorldHint=true (potential side effects). The description does not add any behavioral context beyond this, such as whether it triggers events or requires permissions. It meets the baseline but adds no extra transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no filler. It is appropriately sized and front-loaded with the core action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with full schema coverage and no output schema, the description is sufficient. It could mention multi-select capability (implied by 'values' array) but that is already in the schema. It lacks context like dropdowns with search or custom options, but given the sibling set, this is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the description adds no parameter details beyond what the schema provides (e.g., element for permission, target as selector, values as array). The description does not compensate for missing schema descriptions, but they are already present.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Select an option in a dropdown', using a specific verb and resource. It distinguishes this tool from siblings like browser_click and browser_fill_form, as it is focused exclusively on dropdown selections.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 (e.g., browser_click for regular clicks) or prerequisites (e.g., the dropdown must be visible). Usage context is only implied by 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
Read-only

Capture accessibility snapshot of the current page, this is better than screenshot

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoExact target element reference from the page snapshot, or a unique element selector
filenameNoSave snapshot to markdown file instead of returning it in the response.
depthNoLimit the depth of the snapshot tree
boxesNoInclude each element's bounding box as [box=x,y,width,height] in the snapshot

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already set readOnlyHint=true and destructiveHint=false; the description adds that the snapshot is an 'accessibility snapshot', hinting at its nature, but does not detail behavioral traits like what elements are included or performance implications.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, concise and to the point, though the phrasing 'this is better than screenshot' is slightly informal. No unnecessary text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of annotations and full schema coverage, the description is adequate but lacks details about the output format or return value, which is not provided by an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema covers all 4 parameters with descriptions (100% coverage); the description adds no additional meaning beyond the schema, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool captures an accessibility snapshot of the current page and explicitly distinguishes it from screenshots by claiming superiority, which helps the agent differentiate it from sibling tool browser_take_screenshot.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use when an accessibility snapshot is better than a screenshot, but lacks explicit when-to-use or when-not-to-use guidance, nor mentions alternatives beyond the brief comparison.

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

browser_tabsB
Destructive

List, create, close, or select a browser tab.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesOperation to perform
indexNoTab index, used for close/select. If omitted for close, current tab is closed.
urlNoURL to navigate to in the new tab, used for new.

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true and readOnlyHint=false. The description aligns with these but adds no extra context (e.g., effect on browser state, whether closing is reversible). No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, immediately front-loaded with the four actions. Every word earns its place. No unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 3 parameters, 4 actions, and no output schema, the description is minimal. It does not explain return values or behavior after selecting a tab. Could be expanded to disambiguate from sibling tools like browser_close.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear parameter descriptions. The description does not add meaning beyond the schema; it merely restates the action enum labels. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool can list, create, close, or select a browser tab, using specific verbs and a clear resource. However, it does not differentiate from sibling tools like browser_close (which closes the whole browser) or browser_navigate, which could confuse agents.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool vs alternatives. The description lists actions but does not explain when to choose 'list' over 'select', or when to use browser_tabs 'close' instead of the separate browser_close tool.

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

browser_take_screenshotA
Read-only

Take a screenshot of the current page. You can't perform actions based on the screenshot, use browser_snapshot for actions.

ParametersJSON Schema
NameRequiredDescriptionDefault
elementNoHuman-readable element description used to obtain permission to interact with the element
targetNoExact target element reference from the page snapshot, or a unique element selector
typeYesImage format for the screenshot. Default is png.png
filenameNoFile name to save the screenshot to. Defaults to `page-{timestamp}.{png|jpeg}` if not specified. Prefer relative file names to stay within the output directory.
fullPageNoWhen true, takes a screenshot of the full scrollable page, instead of the currently visible viewport. Cannot be used with element screenshots.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description is consistent and adds the behavioral constraint that the screenshot cannot be used for interactive actions. This adds value beyond annotations, but doesn't elaborate on other traits like permission requirements or return behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long with no superfluous information. It is front-loaded with the primary purpose and immediately provides usage guidance, making it efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 5 parameters (all fully described in schema) and no output schema, the description adequately covers purpose, usage, and differentiation. No additional explanation of return values is needed, as the tool is a simple capture.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters are well-documented in the schema. The description does not add additional meaning beyond what the schema provides, thus meeting the baseline for full coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function ('Take a screenshot of the current page') and differentiates it from a sibling tool (browser_snapshot) by noting that the screenshot cannot be used for actions. This provides specific verb and resource scope, distinguishing it from alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells when to use the tool (taking a screenshot) and when not to (for performing actions, use browser_snapshot instead). This provides clear context and alternatives, meeting the highest standard.

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

browser_typeA
Destructive

Type text into editable element

ParametersJSON Schema
NameRequiredDescriptionDefault
elementNoHuman-readable element description used to obtain permission to interact with the element
targetYesExact target element reference from the page snapshot, or a unique element selector
textYesText to type into the element
submitNoWhether to submit entered text (press Enter after)
slowlyNoWhether to type one character at a time. Useful for triggering key handlers in the page. By default entire text is filled in at once.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations declare destructiveHint=true and openWorldHint=true, and the description does not contradict them. However, it adds no behavioral context beyond the annotations, such as confirmation prompts or character limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that is front-loaded with the verb, conveying the core functionality without unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool and the rich parameter descriptions in the schema, the description is nearly complete. It could mention that typing overwrites existing content or that the element must be focused, but overall adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All 5 parameters have schema descriptions, so the description adds no extra meaning. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('type text') and the resource ('editable element'), distinguishing it from sibling tools like browser_click or browser_press_key.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. No mention of when not to use or prerequisites like element visibility or focus.

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

browser_wait_forA
Read-only

Wait for text to appear or disappear or a specified time to pass

ParametersJSON Schema
NameRequiredDescriptionDefault
timeNoThe time to wait in seconds
textNoThe text to wait for
textGoneNoThe text to wait for to disappear

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already indicate read-only behavior (readOnlyHint=true, destructiveHint=false). The description adds minimal context (waiting for conditions) but does not specify polling behavior or timeout details. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that is clear and efficient, with no redundancy or unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with three optional parameters and no output schema, the description covers the main use cases. However, it could clarify mutual exclusivity or default behavior, but overall it is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 100% description coverage for all three parameters. The description mentions text appearance/disappearance and time, matching the parameters, but adds no additional meaning beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'wait' and the resource (text appearance/disappearance or a time duration). It is specific and distinguishes from sibling tools like browser_click or browser_navigate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage contexts (waiting for text or time) but does not explicitly state when to use this tool versus alternatives like browser_click or browser_fill_form. No exclusions or comparisons are provided.

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. Dates show when Glama detected each change.

  1. 28 tool updatesv0.0.5
    • Changedbrowser_click5 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / properties / modifiers
        Added value: +{
        +  "description": "Modifier keys to press",
        +  "items": {
        +    "enum": [
        +      "Alt",
        +      "Control",
        +      "ControlOrMeta",
        +      "Meta",
        +      "Shift"
        +    ],
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • removedInput schema / properties / ref
        Removed value: -{
        -  "description": "Exact target element reference from the page snapshot",
        -  "type": "string"
        -}
      • addedInput schema / properties / target
        Added value: +{
        +  "description": "Exact target element reference from the page snapshot, or a unique element selector",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "element",
        -  "ref"
        -]New value: +[
        +  "target"
        +]
    • Changedbrowser_close1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbrowser_console_messages5 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / properties / all
        Added value: +{
        +  "description": "Return all console messages since the beginning of the session, not just since the last navigation. Defaults to false.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / filename
        Added value: +{
        +  "description": "Filename to save the console messages to. If not provided, messages are returned as text.",
        +  "type": "string"
        +}
      • addedInput schema / properties / level
        Added value: +{
        +  "default": "info",
        +  "description": "Level of the console messages to return. Each level includes the messages of more severe levels. Defaults to \"info\".",
        +  "enum": [
        +    "error",
        +    "warning",
        +    "info",
        +    "debug"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "level"
        +]
    • Changedbrowser_drag6 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / properties / endRef
        Removed value: -{
        -  "description": "Exact target element reference from the page snapshot",
        -  "type": "string"
        -}
      • addedInput schema / properties / endTarget
        Added value: +{
        +  "description": "Exact target element reference from the page snapshot, or a unique element selector",
        +  "type": "string"
        +}
      • removedInput schema / properties / startRef
        Removed value: -{
        -  "description": "Exact source element reference from the page snapshot",
        -  "type": "string"
        -}
      • addedInput schema / properties / startTarget
        Added value: +{
        +  "description": "Exact target element reference from the page snapshot, or a unique element selector",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "startElement",
        -  "startRef",
        -  "endElement",
        -  "endRef"
        -]New value: +[
        +  "startTarget",
        +  "endTarget"
        +]
    • Addedbrowser_drop
    • Changedbrowser_evaluate4 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / properties / filename
        Added value: +{
        +  "description": "Filename to save the result to. If not provided, result is returned as text.",
        +  "type": "string"
        +}
      • removedInput schema / properties / ref
        Removed value: -{
        -  "description": "Exact target element reference from the page snapshot",
        -  "type": "string"
        -}
      • addedInput schema / properties / target
        Added value: +{
        +  "description": "Exact target element reference from the page snapshot, or a unique element selector",
        +  "type": "string"
        +}
    • Changedbrowser_file_upload3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedInput schema / properties / paths / description
        Previous value: -"The absolute paths to the files to upload. Can be a single file or multiple files."New value: +"The absolute paths to the files to upload. Can be single file or multiple files. If omitted, file chooser is cancelled."
      • removedInput schema / required
        Removed value: -[
        -  "paths"
        -]
    • Addedbrowser_fill_form
    • Changedbrowser_handle_dialog1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbrowser_hover4 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / properties / ref
        Removed value: -{
        -  "description": "Exact target element reference from the page snapshot",
        -  "type": "string"
        -}
      • addedInput schema / properties / target
        Added value: +{
        +  "description": "Exact target element reference from the page snapshot, or a unique element selector",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "element",
        -  "ref"
        -]New value: +[
        +  "target"
        +]
    • Removedbrowser_install
    • Changedbrowser_navigate1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbrowser_navigate_back1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Removedbrowser_navigate_forward
    • Changedbrowser_network_requests7 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / properties / filename
        Added value: +{
        +  "description": "Filename to save the network requests to. If not provided, requests are returned as text.",
        +  "type": "string"
        +}
      • addedInput schema / properties / filter
        Added value: +{
        +  "description": "Only return requests whose URL matches this regexp (e.g. \"/api/.*user\").",
        +  "type": "string"
        +}
      • addedInput schema / properties / requestBody
        Added value: +{
        +  "default": false,
        +  "description": "Whether to include request body. Defaults to false.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / requestHeaders
        Added value: +{
        +  "default": false,
        +  "description": "Whether to include request headers. Defaults to false.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / static
        Added value: +{
        +  "default": false,
        +  "description": "Whether to include successful static resources like images, fonts, scripts, etc. Defaults to false.",
        +  "type": "boolean"
        +}
      • addedInput schema / required
        Added value: +[
        +  "static",
        +  "requestBody",
        +  "requestHeaders"
        +]
    • Changedbrowser_press_key1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbrowser_resize1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Addedbrowser_run_code
    • Changedbrowser_select_option4 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / properties / ref
        Removed value: -{
        -  "description": "Exact target element reference from the page snapshot",
        -  "type": "string"
        -}
      • addedInput schema / properties / target
        Added value: +{
        +  "description": "Exact target element reference from the page snapshot, or a unique element selector",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "element",
        -  "ref",
        -  "values"
        -]New value: +[
        +  "target",
        +  "values"
        +]
    • Changedbrowser_snapshot5 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / properties / boxes
        Added value: +{
        +  "description": "Include each element's bounding box as [box=x,y,width,height] in the snapshot",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / depth
        Added value: +{
        +  "description": "Limit the depth of the snapshot tree",
        +  "type": "number"
        +}
      • addedInput schema / properties / filename
        Added value: +{
        +  "description": "Save snapshot to markdown file instead of returning it in the response.",
        +  "type": "string"
        +}
      • addedInput schema / properties / target
        Added value: +{
        +  "description": "Exact target element reference from the page snapshot, or a unique element selector",
        +  "type": "string"
        +}
    • Removedbrowser_tab_close
    • Removedbrowser_tab_list
    • Removedbrowser_tab_new
    • Removedbrowser_tab_select
    • Addedbrowser_tabs
    • Changedbrowser_take_screenshot6 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedInput schema / properties / element / description
        Previous value: -"Human-readable element description used to obtain permission to screenshot the element. If not provided, the screenshot will be taken of viewport. If element is provided, ref must be provided too."New value: +"Human-readable element description used to obtain permission to interact with the element"
      • changedInput schema / properties / filename / description
        Previous value: -"File name to save the screenshot to. Defaults to `page-{timestamp}.{png|jpeg}` if not specified."New value: +"File name to save the screenshot to. Defaults to `page-{timestamp}.{png|jpeg}` if not specified. Prefer relative file names to stay within the output directory."
      • removedInput schema / properties / ref
        Removed value: -{
        -  "description": "Exact target element reference from the page snapshot. If not provided, the screenshot will be taken of viewport. If ref is provided, element must be provided too.",
        -  "type": "string"
        -}
      • addedInput schema / properties / target
        Added value: +{
        +  "description": "Exact target element reference from the page snapshot, or a unique element selector",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "type"
        +]
    • Changedbrowser_type4 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / properties / ref
        Removed value: -{
        -  "description": "Exact target element reference from the page snapshot",
        -  "type": "string"
        -}
      • addedInput schema / properties / target
        Added value: +{
        +  "description": "Exact target element reference from the page snapshot, or a unique element selector",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "element",
        -  "ref",
        -  "text"
        -]New value: +[
        +  "target",
        +  "text"
        +]
    • Changedbrowser_wait_for1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  2. 24 tool updatesv1.0.0
    • First observedbrowser_click
    • First observedbrowser_close
    • First observedbrowser_console_messages
    • First observedbrowser_drag
    • First observedbrowser_evaluate
    • First observedbrowser_file_upload
    • First observedbrowser_handle_dialog
    • First observedbrowser_hover
    • First observedbrowser_install
    • First observedbrowser_navigate
    • First observedbrowser_navigate_back
    • First observedbrowser_navigate_forward
    • First observedbrowser_network_requests
    • First observedbrowser_press_key
    • First observedbrowser_resize
    • First observedbrowser_select_option
    • First observedbrowser_snapshot
    • First observedbrowser_tab_close
    • First observedbrowser_tab_list
    • First observedbrowser_tab_new
    • First observedbrowser_tab_select
    • First observedbrowser_take_screenshot
    • First observedbrowser_type
    • First observedbrowser_wait_for

TDQS

B3.4/5.0
Disambiguation4/5

Most tools have clear distinct purposes, but browser_evaluate and browser_run_code both execute JavaScript, and browser_snapshot vs browser_take_screenshot could cause confusion despite the descriptions clarifying differences.

Naming Consistency5/5

All tools follow the 'browser_verb_noun' pattern in snake_case, which is highly consistent and predictable.

Tool Count5/5

22 tools cover a comprehensive range of browser automation tasks (navigation, interaction, state capture, etc.) without feeling excessive.

Completeness4/5

The toolset covers core browser interactions but lacks some advanced features like scrolling or cookie management, which are minor gaps for typical use cases.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/cloudflare/playwright-mcp'

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