Skip to main content
Glama

emulator-mcp

MCP para que los agentes de programación vean la misma página en varios tamaños, interactúen y comprueben el resultado sin perder el estado entre llamadas.

  • Pantallas persistentes: móviles, tablets y escritorio.

  • Panel local lado a lado con capturas actualizadas cada 3 segundos.

  • Scroll, navegación, clics y escritura en todas las pantallas o en una concreta.

  • Capturas para modelos con visión, árbol accesible, auditoría responsive y eventos de consola/red.

  • Chrome o Edge local. Sin claves API, sin servicio remoto ni descarga automática de navegadores.

Installation

Necesitás Node.js 20 o superior con npm/npx y Chrome o Microsoft Edge. El MCP trabaja en la computadora donde lo ejecuta tu agente. Tu aplicación debe estar iniciada y ser accesible desde esa computadora.

El comando corto descarga el paquete desde el registro npm. No necesitás clonar el repositorio ni instalar Git. Ejecutá los instaladores desde la carpeta de la aplicación que quieras revisar.

Conectar directamente como servidor MCP

Para Claude Code:

claude mcp add emulator -- npx -y emulator-mcp

Para Codex:

codex mcp add emulator -- npx -y emulator-mcp

En OpenCode, fusioná este bloque con tu configuración:

{
  "mcp": {
    "emulator": {
      "type": "local",
      "command": ["npx", "-y", "emulator-mcp"],
      "enabled": true,
      "timeout": 60000
    }
  }
}

Los clientes con formato mcpServers pueden usar el bloque de otros clientes. Reiniciá el cliente y pedile al agente que abra tu URL con open_responsive_session.

También podés usar los instaladores siguientes para escribir la configuración del proyecto automáticamente.

OpenCode

npx -y emulator-mcp install opencode

Agrega el servidor local a opencode.json o al opencode.jsonc existente. Después reiniciá OpenCode y comprobá la conexión con opencode mcp list.

Cursor

npx -y emulator-mcp install cursor

Escribe .cursor/mcp.json en el proyecto. Recargá Cursor y habilitá el servidor en sus ajustes MCP si te lo solicita.

Claude Code

npx -y emulator-mcp install claude-code

Agrega el servidor a .mcp.json del proyecto. Abrí Claude Code para aprobar el servidor cuando lo solicite. También podés usar su comando nativo para instalación a nivel usuario:

claude mcp add --scope user --transport stdio emulator-mcp -- npx -y emulator-mcp

Codex

Usá su comando nativo; requiere que la CLI de Codex esté instalada:

codex mcp add emulator-mcp -- npx -y emulator-mcp

Después reiniciá o reconectá Codex y verificá que aparezca el servidor.

VS Code (configuración local compatible)

npx -y emulator-mcp install vscode

Escribe el formato servers en .vscode/mcp.json. Su disponibilidad depende del agente/harness activo en VS Code; las configuraciones actuales de Copilot también permiten agregar un servidor mediante MCP: Add Server → Command (stdio) usando el comando de ejecución que figura abajo.

Otros clientes MCP locales

Comando del servidor: npx. Argumentos:

["-y", "emulator-mcp"]

Si tu cliente usa mcpServers, fusioná este bloque con su configuración:

{
  "mcpServers": {
    "emulator-mcp": {
      "command": "npx",
      "args": ["-y", "emulator-mcp"]
    }
  }
}

En Windows, algunos clientes requieren command: "cmd" con argumentos ["/c", "npx", "-y", "emulator-mcp"] para encontrar el ejecutable de npx. No cambies esto si tu cliente ya conecta correctamente.

El instalador conserva comentarios JSONC y otros servidores, respalda los archivos existentes y se niega a reemplazar una entrada emulator-mcp diferente. install opencode --dry-run muestra la configuración sin escribirla. La primera ejecución necesita conexión para descargar el paquete y sus dependencias; las siguientes aprovechan la caché de npm. La instalación registra el servidor; no comprueba por sí sola la conexión del agente ni acepta sus avisos de confianza.

Related MCP server: Render & Verify MCP

Primer uso

Pedile al agente:

Usá emulator-mcp para abrir http://localhost:3000 en iPhone SE, iPad y laptop. Mostrame el enlace del panel, revisá la página por secciones haciendo scroll, compará las capturas y corregí los problemas responsive. Volvé a capturar para verificar.

El agente puede seguir este flujo:

  1. open_responsive_session: abre la URL en varios dispositivos.

  2. Abre o comparte el dashboardUrl devuelto para que puedas mirar el panel.

  3. observe_responsive_session con dom:true y returnImages:true: obtiene elementos accesibles y capturas.

  4. interact_responsive_session: hace scroll, clics o escribe. El estado persiste entre llamadas.

  5. Tras modificar código, navigate_responsive_session dirige todas a la URL de la aplicación.

  6. close_responsive_session: libera las pantallas cuando termine.

El modelo debe admitir imágenes para interpretar las capturas. Con modelos de texto puede usar el árbol accesible, evaluaciones y la auditoría. Las herramientas no deciden ni corrigen código solas: esa tarea corresponde al agente.

Demo sin configurar un agente

npx -y emulator-mcp demo

Imprime un enlace al panel con la página de prueba incluida. Para tu aplicación ya iniciada:

npx -y emulator-mcp demo http://localhost:3000

Mantené ese proceso abierto y usá Ctrl+C para cerrar la demo.

Herramientas

Herramienta

Uso

open_responsive_session

Abre la misma URL en varios tamaños; devuelve IDs y enlace al panel

list_responsive_sessions

Recupera las sesiones y URLs actuales del proceso

observe_responsive_session

PNG por tamaño, DOM accesible opcional, auditoría y eventos

navigate_responsive_session

Navega todas a una URL conservando sus contextos y cookies

interact_responsive_session

Repite pasos en todas o actúa sobre un screenId

close_responsive_session

Cierra páginas y panel

list_devices

Catálogo de dispositivos y resoluciones

screenshot_on

Captura y auditoría puntual de un dispositivo

preview_devices

Capturas puntuales en varios tamaños

check_responsive

Auditoría responsive sin imágenes

interact_on

Flujo completo dentro de una llamada temporal

emulator_status

Navegador, directorio de capturas y diagnóstico

Las herramientas puntuales cierran sus páginas al terminar. Las sesiones persistentes admiten hasta 6 tamaños y 3 sesiones por proceso. Por defecto: iPhone SE, iPhone 15 Pro Max, iPad Pro 11 y laptop.

Ejemplos de argumentos MCP

Abrir una comparación:

{"url":"http://localhost:3000","devices":["iphone-se","ipad-pro-11","laptop"]}

Observar con imágenes y auditoría (reemplazá ID por el sessionId devuelto):

{"sessionId":"ID","dom":true,"audit":true,"returnImages":true}

Scroll hasta una sección en todas las pantallas:

{"sessionId":"ID","screenId":"all","steps":[{"action":"scroll","selector":"#contacto"}]}

También admite {"action":"scroll","to":"bottom"}, to:"top" o y:800. Usá un elemento para comparar la misma sección cuando su posición cambia según el tamaño.

Acciones: navigate, click, tap, dblclick, hover, type, press, scroll, wait_for, screenshot, get_text, count, eval, assert, back, reload. Los localizadores admiten selector, testId, label, placeholder, role + name, alt o text. Las sesiones mantienen sus tamaños fijos; set_viewport solo está disponible en interact_on.

Comportamiento y límites

  • El panel muestra capturas de la región visible; se actualiza cada 3 segundos mientras está abierto. Permite ajustar la escala y pausar. Las acciones, incluido scroll, se ejecutan desde el MCP; el panel no transmite clics ni rueda del mouse a las páginas.

  • fullPage:true en la observación guarda capturas de toda la página. En páginas largas pueden superar el límite de imágenes de la respuesta; el archivo sigue disponible por su ruta.

  • Cada tamaño tiene cookies, almacenamiento y scroll independientes. Se inicia en la misma URL, pero un flujo puede terminar en rutas distintas. Para un menú que solo existe en móvil, actuá sobre ese screenId.

  • Las sesiones viven dentro de un proceso MCP y desaparecen al cerrarlo. Dos agentes que ejecutan procesos separados tienen sesiones independientes.

  • Emula páginas y aplicaciones web; no ejecuta Android, iOS ni aplicaciones nativas. Los perfiles iPhone se renderizan en Chromium, no en Safari real.

  • La auditoría usa heurísticas; los resultados necesitan revisión visual. Aprobarla no equivale a una certificación de accesibilidad ni a validar producción.

  • El panel escucha en 127.0.0.1 con una ruta aleatoria por sesión. No necesita iframes ni quitar CSP/X-Frame-Options. El enlace del panel es una vista local, no un endpoint MCP remoto.

  • El agente puede ejecutar acciones reales en la web abierta. Usá cuentas y entornos adecuados para tus pruebas.

Configuración

Variable

Uso

EMULATOR_MCP_BROWSER

Orden de navegadores: chrome,msedge,chromium

EMULATOR_MCP_HEADED

Si está definida, muestra las ventanas del navegador

EMULATOR_MCP_CAPTURE_DIR

Directorio personalizado para PNG

La CLI guarda capturas en ~/.emulator-mcp/captures. El módulo src/index.cjs, usado directamente durante desarrollo, conserva el directorio captures/ del proyecto. Para usar Chromium de Playwright, instalalo explícitamente con npx playwright install chromium desde una copia del proyecto y ajustá EMULATOR_MCP_BROWSER=chromium.

Desarrollo y pruebas

git clone https://github.com/damipineda/emulator-mcp.git
cd emulator-mcp
npm ci
npm run smoke
npm test
npm run demo
npm pack --dry-run

Las pruebas cubren registro de herramientas, capturas y auditoría con Chrome/Edge, interacción, sesiones por transporte MCP stdio e instalación con preservación de configuraciones. No constituyen una prueba de cada interfaz de agente: conectá y ejecutá una herramienta desde tu cliente para verificar su integración.

Referencias y licencia

Inspirado en Mobile-Simulator. Su extensión y sus assets no se redistribuyen; este proyecto usa contextos de navegador controlados por Playwright. Ver NOTICE.md.

Formatos de integración consultados: OpenCode, Cursor, Claude Code, Codex, VS Code.

Licencia MIT. Código fuente en GitHub y paquete público en npm.

Publicación del mantenedor

npm login
npm run test:package
npm publish --access public

Después de publicar, verificar npm view emulator-mcp version y ejecutar node test/package.cjs emulator-mcp. Los usuarios no necesitan una cuenta npm para descargar el paquete público.

Versión GitHub disponible

La versión anterior distribuida directamente desde GitHub sigue disponible:

npx -y --package=https://github.com/damipineda/emulator-mcp/archive/refs/tags/v0.2.0.tar.gz emulator-mcp

Available Tools

12 tools
check_responsiveAudit layout across screensA
Read-only

Abre la URL en varias pantallas y reporta SOLO problemas de responsive, sin imagenes: desborde horizontal con el selector exacto que lo causa, texto recortado, targets tocables chicos, imágenes fuera de viewport, meta viewport faltante o que bloquea el zoom, y que media queries activan en cada ancho. Severidades: high = se rompe el layout, medium = se pierde contenido o baja performance, low = incomodo en tactil, info = contexto. Cada pantalla reporta viewport.deviceWidthPx (la pantalla real) y viewport.layoutWidthPx (lo que mide window.innerWidth); si layoutWidthPx > deviceWidthPx la pagina no es responsive ahi. Usa esta tool para verificar un rediseño o para encontrar breakpoints rotos; despues captura con screenshot_on el dispositivo que falla para verlo.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL http/https a abrir en la pantalla emulada
blockNoResource types a bloquear (acelera capturas en paginas pesadas)
localeNoLocale, p.ej. "es-PY" para ver formatos locales
devicesNoPantallas a auditar. Default: iphone-se, iphone-15-max, galaxy-s24, ipad-pro-11, laptop, desktop-hd
settleMsNoMilisegundos extra tras cargar para dejar terminar animaciones (default 400)
timezoneNoTimezone IANA, p.ej. "America/Asuncion"
timeoutMsNoTimeout de navegacion y esperas (default 30000)
toleranceNoPx de holgura antes de marcar desborde (default 2)
waitUntilNoEstrategia de espera antes de capturar. "networkidle" para SPA, "commit" si la red es lenta
minTapSizeNoPx minimos de un target tocable (default 44)
colorSchemeNoTema pedido por CSS prefers-color-scheme
geolocationNoCoordenadas para emular GPS
waitForSelectorNoSelector CSS que debe verse antes de capturar (útil en SPA)
includeMediaQueriesNoIncluye las media queries que matchean en cada viewport (default false)

TDQS

A4.1/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnlyHint, openWorldHint), and the description adds genuinely useful behavior: the severity taxonomy (high/medium/low/info) and the semantic of viewport.deviceWidthPx vs layoutWidthPx as the responsiveness test. It stops short of runtime cost or how heavy a 12-device run is.

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?

Three tight paragraphs with the core purpose front-loaded, then severity definitions, then the usage/handoff guidance. Dense but every sentence carries information; slightly long but no filler.

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 complex 14-parameter, no-output-schema tool, the description adequately explains what is reported, the severity levels, and the responsiveness criterion, so an agent can interpret results. It could say more about runtime expectations across many devices, but nothing essential is missing.

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 the schema already documents all 14 parameters, establishing the baseline of 3. The description corroborates a few (media queries, overflow selector) and clarifies output semantics, but adds little parameter-level 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?

States a specific verb+resource: opens a URL across multiple screens and reports only responsive problems (overflow, clipped text, tap targets, viewport meta, media queries). It explicitly excludes images and names the failing-device handoff to screenshot_on, so an agent can distinguish it from siblings without opening a schema.

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

Usage Guidelines4/5

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

Gives clear when-to-use (verifying a redesign, finding broken breakpoints) and a concrete follow-up alternative (screenshot_on on the failing device). It does not address the session-based siblings (open_responsive_session/observe_responsive_session), so the alternative routing is incomplete but the positive guidance is strong.

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

close_responsive_sessionA

Cierra una comparacion responsive completa: libera sus paginas, contextos y servidor del panel visual. Usa esta herramienta al terminar para no acumular navegadores. Las capturas guardadas permanecen disponibles en disco.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionIdYesID devuelto por open_responsive_session; permanece valido hasta cerrar la sesion o detener el MCP

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false and openWorldHint=true, so the mutation nature is covered. The description adds meaningful detail beyond that: exactly what is torn down (paginas, contextos, servidor del panel visual) and what survives (capturas guardadas permanecen en disco), which is precisely the kind of side-effect context an agent needs before calling a cleanup tool.

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?

Three short sentences, each earning its place: what is freed, when to call it, and what persists afterward. The core action is front-loaded in the first clause with no preamble or repetition.

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 one-parameter teardown tool with no output schema, the description covers the action, the recommended timing, and the persistence caveat. Only edge behavior (calling with an unknown or already-closed sessionId, and whether a confirmation is returned) is left unspecified.

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?

There is a single sessionId parameter with 100% schema description coverage, and the schema already explains its origin and lifetime ('ID devuelto por open_responsive_session'). The prose adds nothing about the parameter, so the baseline 3 applies.

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 states a specific verb and resource ('Cierra una comparacion responsive completa') and spells out the concrete effect: it releases the session's pages, contexts and server from the visual panel. It is unambiguously the teardown counterpart to open_responsive_session, and no other sibling in the list closes a session.

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

Usage Guidelines4/5

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

It gives explicit when-to-use guidance ('Usa esta herramienta al terminar para no acumular navegadores') with a stated rationale. It stops short of naming alternatives or stating what happens if the session is already closed or the id is invalid, so it is clear context rather than full routing guidance.

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

emulator_statusServer statusA
Read-only

Dice que navegador local usa la emulacion, donde caen las capturas y cuantas pantallas hay disponibles. Usala para diagnosticar antes de culpar a la pagina.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds genuinely useful behavioral content by enumerating the returned facts (browser, capture destination, screen count), which the annotations don't provide. It doesn't mention staleness of the data or any prerequisites, so it stays at a solid 3.

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?

Two short sentences with no filler: the first lists what is reported, the second gives the usage cue. It is front-loaded and efficient, though the second sentence is a soft suggestion rather than something an agent can act on precisely.

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?

With no input parameters and no output schema, the description carries the burden of hinting at the response shape, which it does by naming the three returned facts. That's sufficient for an agent to call it and interpret the result, though richer detail on the returned structure would help.

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?

The tool takes zero parameters, so per the rubric the baseline is 4. There is nothing parameter-related the description needs to compensate for, and schema coverage is trivially 100%.

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?

States a specific verb (reports) and three concrete outputs: which local browser drives the emulation, where screenshots are stored, and how many screens are available. It's clear what the tool returns, but it never names or distinguishes itself from siblings like list_devices or list_responsive_sessions, which could also look status-related.

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?

"Usala para diagnosticar antes de culpar a la pagina" gives an implied usage context (troubleshooting before blaming the page), but it doesn't state when-not to use it or point to any alternative tool. The guidance is directionally useful but incomplete.

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

interact_onDrive a flow on an emulated screenA

Ejecuta una secuencia de pasos en UNA pantalla emulada dentro de la misma sesion de navegador: navegar, tocar, escribir, esperar, scrollear, medir con JS y capturar. Es la tool para probar flujos (login, checkout, menu hamburguesa, scroll) y verificar que el resultado se vea bien en ese dispositivo. Cada paso es { action, ...args }. Localizadores aceptados por paso: selector (CSS o Playwright), text, role+name, label, placeholder, alt, testId. Acciones: navigate, click, tap, dblclick, hover, type, press, scroll, wait_for, set_viewport, screenshot, get_text, count, eval, assert, back, reload. Ejemplo: [{action:"navigate",url}, {action:"click",text:"Menu"}, {action:"assert",text:"Reservar"}, {action:"screenshot",fullPage:false}]. Se detiene en el primer paso que falla (salvo continueOnError). No podras mantener una sesion entre llamadas: meté todo el flujo en una sola invocacion. Si la pagina desborda el ancho del dispositivo, click/tap se resuelven por coordenada (touchscreen.tap o mouse.click) porque el chequeo de hit-target de Playwright falla con el layout expandido; el paso devuelve "via" con lo que usó.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL inicial (los pasos pueden navegar despues)
nameNoPrefijo del archivo de captura
stepsYesPasos en orden, maximo 40
deviceNoPantalla emulada; default "iphone-15-max"
localeNo
viewportNo
colorSchemeNo
continueOnErrorNoSi true sigue ejecutando cuando un paso falla
finalScreenshotNoCaptura al terminar aunque no pidas un paso screenshot (default true)

TDQS

A4.2/5.0
Behavior5/5

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

Goes well beyond the annotations (readOnlyHint=false, openWorldHint=true), disclosing failure semantics ('se detiene en el primer paso que falla salvo continueOnError'), the no-session-persistence constraint, and the non-obvious coordinate-fallback for click/tap when the layout overflows the device width, including the 'via' field it returns. This is exactly the behavioral context an agent needs.

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?

Purpose and the session constraint are front-loaded, and the example is compact; but the action list partly duplicates the schema enum and the coordinate-fallback paragraph is dense. Most sentences earn their place, with some redundancy.

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 complex nested tool with 9 params and no output schema, it covers the essentials: step structure, failure behavior, session limitation, and the coordinate-fallback quirk. It never describes the return shape (screenshot paths, step results) beyond the 'via' field, which is the main remaining gap.

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

Parameters4/5

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

At 67% schema coverage the description adds real meaning: the { action, ...args } step contract, the accepted locator kinds, the example step array, and the continueOnError semantics. It does not cover several top-level params (device, locale, viewport, colorScheme, finalScreenshot) beyond what the schema states, so it is strong but not exhaustive.

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?

States a clear verb and resource: 'Ejecuta una secuencia de pasos en UNA pantalla emulada dentro de la misma sesion de navegador'. The enumeration of supported interactions and the note that no session persists between calls implicitly separates it from the open_/observe_/interact_responsive_session family, but no sibling is named explicitly.

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

Usage Guidelines4/5

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

Gives concrete when-to-use context: 'Es la tool para probar flujos (login, checkout, menu hamburguesa, scroll) y verificar que el resultado se vea bien en ese dispositivo'. The 'no podras mantener una sesion entre llamadas: mete todo el flujo en una sola invocacion' constraint is valuable routing guidance, though no alternative tool is named for the when-not case.

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

interact_responsive_sessionA

Ejecuta pasos en una pantalla o repite la secuencia en todas (screenId="all", predeterminado). Mantiene el estado para la proxima llamada. Usa localizadores semanticos porque el DOM puede variar segun el tamaño. Si un menu solo existe en movil, actua sobre ese screenId. Devuelve cada fallo por pantalla; despues usa observe_responsive_session para ver el resultado.

ParametersJSON Schema
NameRequiredDescriptionDefault
stepsYesPasos en orden, maximo 40
screenIdNoall
sessionIdYesID devuelto por open_responsive_session; permanece valido hasta cerrar la sesion o detener el MCP

TDQS

A3.8/5.0
Behavior4/5

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

Adds real context beyond the openWorldHint/readOnlyHint annotations: state persists between calls, semantic locators are preferred because the DOM varies by viewport, and failures are returned per screen. Missing detail on partial-failure semantics (does the batch abort?) and timeouts.

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?

Dense but well front-loaded: execution scope comes first, then state persistence, locator strategy, targeting advice, and the follow-up tool. A couple of sentences could be trimmed but nothing is wasted.

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 complex batched-action tool with no output schema, reporting per-screen failures is helpful and the observe_responsive_session pointer closes the loop. However, step execution order, failure handling, and return shape for successes remain unexplained.

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 67% and the description only adds the screenId='all' default (already in the schema) plus the sessionId lineage from open_responsive_session. The 17-value action enum and the 40-item step cap are left entirely to the schema, so the description adds little parameter meaning.

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?

States a specific verb and resource ('Ejecuta pasos en una pantalla o repite la secuencia en todas'), including the cross-screen broadcast mode. It is distinguishable from navigate_responsive_session and observe_responsive_session, though it does not name the closest sibling interact_on.

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

Usage Guidelines4/5

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

Gives concrete when-to guidance: use screenId='all' to repeat across screens, target a specific screenId when a menu only exists on mobile, and call observe_responsive_session afterward to inspect results. No explicit 'when not to use' or pointer to interact_on/navigate_responsive_session.

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

list_devicesList emulated screensA
Read-only

Devuelve los ids de pantallas que aceptan las demas tools (telefonos, tablets, laptops, desktops, con viewport, DPR, mobile y touch reales). Usa primero esta tool si no sabes que dispositivo pedir. Cualquier nombre del catalogo interno de Playwright (por ejemplo "iPhone 12", "Pixel 5", "Desktop Chrome") tambien funciona, y podes forzar apaisado agregando " landscape" al id.

ParametersJSON Schema
NameRequiredDescriptionDefault
groupNoFiltra por tipo de pantalla
queryNoBusqueda por texto en id o label, p.ej. "ipad" o "fold"

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint=true, openWorldHint=false), so the bar is lower. Beyond that, the description adds genuinely useful behavior: the returned ids are consumed by the other tools, arbitrary Playwright catalog names are accepted as ids, and appending ' landscape' forces landscape orientation. It does not mention error behavior or result size, but the added context is substantive.

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?

Three sentences, front-loaded with the core purpose and return value, followed by usage guidance and the landscape/Playwright tips. No filler, though the parenthetical device enumeration is slightly redundant with the schema enum.

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?

With no output schema, the description correctly takes on the burden of explaining what is returned ('ids de pantallas') and how those ids are used downstream. Combined with the landscape suffix and catalog-name behavior, an agent has enough to call and use the tool, though the overlap with 'preview_devices' is left unresolved.

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% for both parameters (group enum and query text search), so the schema already carries parameter meaning. The description loosely maps to the group enum ('telefonos, tablets, laptops, desktops') but adds no syntax or format detail beyond the schema — and even introduces 'laptops', which is not in the enum. 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 states a specific verb and resource ('Devuelve los ids de pantallas que aceptan las demas tools') and clarifies the scope (phones, tablets, laptops, desktops with viewport, DPR, mobile, touch). It positions itself as the entry-point lookup relative to other tools, but never explicitly differentiates itself from the sibling 'preview_devices', which appears to overlap in purpose.

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

Usage Guidelines4/5

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

Explicit when-to-use guidance is given: 'Usa primero esta tool si no sabes que dispositivo pedir.' It also offers an alternative path (any Playwright catalog name such as 'iPhone 12' works directly), which tells the agent it can skip this call when it already knows the device. No when-not-to-use rule or contrast with 'preview_devices' is provided.

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

list_responsive_sessionsA
Read-only

Lista las comparaciones responsive abiertas en este proceso MCP, con sus sessionIds, screenIds, tamaños, URLs actuales y enlace al panel visual. Las sesiones conservan su estado entre llamadas y desaparecen al detener el servidor.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered; the description adds genuine lifecycle semantics beyond them — sessions persist their state across calls and vanish when the server is stopped. It also previews the returned fields, which is more than the annotations provide. It does not mention ordering or size limits, so not a 5.

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

Conciseness4/5

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

Two sentences, front-loaded with the core action and then the payload/lifecycle details. Dense but every clause carries information; only the field list is slightly list-heavy.

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?

With no output schema, the description correctly compensates by naming the fields returned, and it explains persistence for a stateful session tool. It omits ordering, pagination/limits, and what an empty list means, so it is complete but not exhaustive for a zero-param read tool.

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 tool takes zero parameters, so the baseline is 4; however, the description's field enumeration ('sessionIds, screenIds, tamaños, URLs actuales, enlace al panel') is really about return values rather than parameters. With no parameters to disambiguate and no output schema, this is adequate but adds nothing parameter-specific, landing at 3.

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?

States a specific verb and resource ('Lista las comparaciones responsive abiertas') and enumerates what each entry contains (sessionIds, screenIds, tamaños, URLs, enlace al panel). It is clearly distinguishable in kind from the session-manipulating siblings, but it never names a sibling (e.g. observe_responsive_session) to route the agent, so it stops short of full 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?

There is no explicit when-to-use, when-not-to-use, or named alternative. The only contextual cue is the scoping phrase 'abiertas en este proceso MCP', which implies the tool is for surveying the current process's sessions but does not tell an agent when to prefer it over observe_responsive_session or check_responsive.

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

observe_responsive_sessionA
Read-only

Observa las pantallas abiertas sin recargarlas: guarda un PNG por tamaño y devuelve estado, URLs y eventos recientes de consola/red. Pide dom para obtener el arbol accesible, audit para revisar el layout y returnImages para que el agente vea las capturas dentro de la respuesta MCP.

ParametersJSON Schema
NameRequiredDescriptionDefault
domNo
auditNo
fullPageNo
sessionIdYesID devuelto por open_responsive_session; permanece valido hasta cerrar la sesion o detener el MCP
returnImagesNo

TDQS

A3.7/5.0
Behavior4/5

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

Annotations only cover readOnlyHint and openWorldHint. The description adds real behavioral context the annotations lack: it does not reload the page, it persists one PNG per viewport size, and it returns status/URLs/recent console and network events. It does not disclose where screenshots are written or any rate/size limits, so it falls short of a 5.

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

Conciseness4/5

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

Two dense sentences: the first front-loads the core behavior and return payload, the second enumerates the opt-in flags. No filler, though the flag list could be tighter.

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?

With no output schema, the description correctly covers the return shape (PNGs, status, URLs, console/network events) and three of the five flags. The gaps are fullPage semantics and explicit guidance on choosing this tool over siblings.

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 only 20% (5 params), so the description must compensate. It usefully explains dom (accessibility tree), audit (layout review) and returnImages (inline screenshots), but says nothing about fullPage, and sessionId's meaning lives only in the schema.

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?

States a specific verb and resource ('Observa las pantallas abiertas'), plus concrete outputs (PNG per size, status, URLs, console/network events). The 'sin recargarlas' qualifier distinguishes it from navigate_responsive_session and interact_responsive_session, though it never names a sibling explicitly.

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?

Implies usage via 'sin recargarlas' (observe without disturbing the page) and explains what each optional flag unlocks. However, it gives no explicit when-to-use/when-not guidance and never contrasts itself with check_responsive or the other session tools, leaving routing to inference.

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

open_responsive_sessionB

Abre la MISMA URL en varios tamaños y mantiene las paginas entre llamadas MCP. Devuelve sessionId, screenIds y dashboardUrl: abre ese enlace para ver capturas lado a lado actualizadas cada 3 segundos. Cada pantalla mantiene su propio estado web. No requiere iframes ni quitar cabeceras de seguridad.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
localeNo
devicesNo
colorSchemeNo

TDQS

B3.4/5.0
Behavior4/5

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

Annotations only say readOnlyHint=false and openWorldHint=true, so the description carries real weight and delivers: pages persist between MCP calls, each screen keeps independent web state, screenshots refresh every 3 seconds, and no iframes or security-header stripping are needed. These are meaningful behavioral traits beyond the annotations, though it omits resource/lifecycle limits (e.g. max sessions, cleanup).

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 core action and its payoff (dashboardUrl with live side-by-side screenshots) are front-loaded, and each sentence adds information. It is dense but not padded, though the trailing note about iframes/headers is somewhat incidental.

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?

There is no output schema, and the description usefully enumerates the return values (sessionId, screenIds, dashboardUrl), which covers the response side. But for a stateful, mutating session-creating tool, the undocumented input parameters leave a clear gap in what an agent needs to call it correctly.

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

Parameters2/5

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

Schema description coverage is 0% across four parameters, and the description does not compensate: url, locale, devices (array, 1-6 items) and colorScheme are never explained. 'Various sizes' only loosely gestures at devices, leaving the agent to infer the meaning and format of every input.

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 states a specific verb and resource: it opens the same URL at multiple viewport sizes and creates a persistent session, returning sessionId, screenIds and a dashboardUrl. This is clear enough for an agent to distinguish it from list/observe/navigate siblings, though it does not explicitly name an alternative it is not.

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?

Usage is implied (open a session first, then pages persist across MCP calls), and it hints at the advantage over one-off screenshot tools. However it never states when to prefer it over siblings like check_responsive, preview_devices or screenshot_on, nor any prerequisites.

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

preview_devicesSame page on many screensA
Read-only

Captura la MISMA URL en varias pantallas a la vez (hasta 4 en paralelo) y devuelve un PNG por dispositivo con el desborde horizontal de cada uno. Es la tool para responder "como se ve esto en movil, tablet y desktop". Sin "devices" usa el set standard: iphone-15-max, galaxy-s24, ipad-pro-11, laptop, desktop-hd. Si solo necesitas saber donde se rompe el layout, usa check_responsive: hace las mismas aperturas y no baja imagenes.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL http/https a abrir en la pantalla emulada
blockNoResource types a bloquear (acelera capturas en paginas pesadas)
localeNoLocale, p.ej. "es-PY" para ver formatos locales
devicesNoIds de pantalla. Default: set estandar de 5
fullPageNoCaptura completa por dispositivo (pesa mucho en paginas largas)
settleMsNoMilisegundos extra tras cargar para dejar terminar animaciones (default 400)
timezoneNoTimezone IANA, p.ej. "America/Asuncion"
timeoutMsNoTimeout de navegacion y esperas (default 30000)
waitUntilNoEstrategia de espera antes de capturar. "networkidle" para SPA, "commit" si la red es lenta
colorSchemeNoTema pedido por CSS prefers-color-scheme
concurrencyNoCapturas simultaneas (default 4)
geolocationNoCoordenadas para emular GPS
waitForSelectorNoSelector CSS que debe verse antes de capturar (útil en SPA)

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds real context beyond that: one PNG per device including horizontal overflow, a parallelism cap of 4, and the default device set. It omits auth/permission requirements and rate limits, keeping it short of a 5.

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

Conciseness5/5

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

Four sentences, front-loaded with the core action, then output, then default behavior, then the routing alternative. Each sentence carries distinct information with no filler.

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 13-parameter tool with no output schema, the description covers the return value (PNG per device plus overflow), the default device behavior, and the sibling alternative. Parameter details are fully carried by the 100% schema coverage, so the only minor gap is that permissions/auth context is not mentioned.

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 description coverage is 100%, so the baseline is 3. The description earns above that by naming the concrete default device ids (iphone-15-max, galaxy-s24, ipad-pro-11, laptop, desktop-hd) and restating the 'up to 4 in parallel' constraint tied to concurrency, adding meaning the schema only alludes to.

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?

States a specific verb and resource ('Captura la MISMA URL en varias pantallas') plus the output (un PNG por dispositivo con el desborde horizontal). It explicitly differentiates from sibling check_responsive and implicitly from screenshot_on by contrasting scope.

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?

Gives the exact use-case question it answers ('como se ve esto en movil, tablet y desktop') and names the alternative check_responsive with the condition that selects it (only need to know where the layout breaks, no images downloaded). Nothing is left to inference.

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

screenshot_onScreenshot on one screenA
Read-only

Abre una URL dentro del navegador local emulando UNA pantalla concreto (viewport, DPR, mobile flag, touch y user-agent reales) y guarda un PNG. Tambien corre una auditoria responsive en ese viewport y devuelve los hallazgos junto al path de la imagen. Pedido tipico: { url, device: "iphone-15-max" }. Para cambiar tamano sin dispositivo: { url, viewport: { width: 380, height: 800 } }. Devolve el path en captures/; pide returnImage=true solo si necesitas ver la imagen, porque consume muchos tokens.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL http/https a abrir en la pantalla emulada
nameNoNombre semantico para el archivo (se sanitiza y vive en captures/)
blockNoResource types a bloquear (acelera capturas en paginas pesadas)
deviceNoId de pantalla de list_devices ("iphone-15-max", "ipad-pro-11", "laptop") o nombre Playwright
localeNoLocale, p.ej. "es-PY" para ver formatos locales
fullPageNoCaptura toda la altura del documento, no solo lo visible
settleMsNoMilisegundos extra tras cargar para dejar terminar animaciones (default 400)
timezoneNoTimezone IANA, p.ej. "America/Asuncion"
viewportNoViewport explicito cuando ningun dispositivo del catalogo te sirve
timeoutMsNoTimeout de navegacion y esperas (default 30000)
waitUntilNoEstrategia de espera antes de capturar. "networkidle" para SPA, "commit" si la red es lenta
colorSchemeNoTema pedido por CSS prefers-color-scheme
geolocationNoCoordenadas para emular GPS
returnImageNoSi es true, además del path se devuelve el PNG embebido
waitForSelectorNoSelector CSS que debe verse antes de capturar (útil en SPA)

TDQS

A3.7/5.0
Behavior4/5

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

With readOnlyHint/openWorldHint already declared, the description adds real context: the PNG is written to captures/, a responsive audit runs in the same viewport and its findings are returned alongside the path, and returnImage is flagged as token-expensive. It doesn't mention network/permission caveats, but the token-cost warning and artifact-location disclosure go beyond the annotations.

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?

Front-loaded with the core action and artifact location, then the audit behavior, then call examples and the returnImage caveat. Four dense sentences with little waste, though the mixed Spanish/enum tokens make it slightly denser than ideal.

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 15 parameters, nested viewport/geolocation objects, and no output schema, the description does the necessary work of stating the return shape (PNG path in captures/ plus audit findings) and the expensive optional image path. It stops short of explaining how its viewport audit relates to the dedicated responsive siblings.

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% across all 15 parameters, so the schema already carries the bulk of the semantics and the 3 baseline applies. The description adds marginal value by showing typical request shapes, pointing at list_devices for device ids, and clarifying the token cost of returnImage.

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?

States a specific verb and resource: opens a URL in the local browser emulating ONE concrete screen and saves a PNG, plus runs a responsive audit. The emphasis on 'UNA pantalla' implicitly differentiates it from multi-screen siblings, but no sibling is named, so the contrast is left to inference.

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?

Provides concrete call shapes ({ url, device: "iphone-15-max" } and { url, viewport: {...} }) which imply usage, and warns to set returnImage=true only when the image is actually needed. However, it never says when to pick this over check_responsive, preview_devices or the session-based siblings, so the routing decision is left implicit.

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.

  1. 12 tool updatesv0.2.1
    • First observedcheck_responsive
    • First observedclose_responsive_session
    • First observedemulator_status
    • First observedinteract_on
    • First observedinteract_responsive_session
    • First observedlist_devices
    • First observedlist_responsive_sessions
    • First observednavigate_responsive_session
    • First observedobserve_responsive_session
    • First observedopen_responsive_session
    • First observedpreview_devices
    • First observedscreenshot_on

TDQS

A3.7/5.0

Scored across 12 tools

Disambiguation4/5

There is real overlap: preview_devices, check_responsive, and open_responsive_session all 'open one URL across multiple screens', and interact_on mirrors interact_responsive_session. However, the descriptions sharply differentiate them (images vs. problems-only vs. persistent session; single-shot vs. stateful), so an agent can tell them apart with care.

Naming Consistency3/5

Two recognizable families exist (_on: screenshot_on, interact_on; _responsive_session: open/list/observe/navigate/interact/close), but conventions are mixed across the set (screenshot_on, preview_devices, check_responsive, list_devices, emulator_status) with inconsistent verb/noun ordering and suffixes.

Tool Count4/5

12 tools is well within a reasonable range for a device-emulation/QA server. Six of them are session lifecycle management, which is somewhat heavy but justified by the persistent-session feature.

Completeness4/5

Coverage spans device listing, single/multi screenshots, responsive auditing, scripted interaction, persistent sessions, navigation, observation, and cleanup, with diagnostics (emulator_status). Missing niceties like visual diffing or video capture, but core workflows are complete.

Maintenance

ActivityNo data
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Enables AI agents to rapidly drive and inspect real web pages through persistent browser sessions, using accessibility-tree snapshots and DevTools-grade diagnostics to identify and diagnose issues.
    26
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents to inspect live web and responsive UIs across mobile and desktop sessions, returning measured text findings on contrast ratios, touch-target sizes, overflow, and theme drift instead of screenshot guesses. It also lets a human and the agent share one live panel, so the agent can navigate, tap, and type while reading the user's pinned notes and frames.
    109 npm
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables a developer and their AI agent to share the same live mobile and desktop browser sessions, letting the agent navigate pages and receive measured UI findings — contrast ratios, undersized touch targets, overflow, and theme drift — as precise text tied to exact selectors instead of screenshots. It also runs one-shot device × theme audits and lets humans pin notes with the exact frame the agent then reads.
    109 npm
    MIT