Stunt Double
Las personas de usuario de IA prueban tu producto, prototipos y vistas previas en un navegador real y devuelven evidencia en capturas de pantalla.
Servidor MCP alojado
npx add-mcp 'https://app.stuntdouble.io/api/mcp'Se instala en Claude Code, Codex, Cursor y más
Documentación
Servidor MCP de Stunt Double
Implementa personajes de usuario de IA para validar recorridos de usuario a escala. Encuentra fricciones de UX antes que los usuarios reales.
Stunt Double implementa agentes de IA con personajes de usuario realistas para validar recorridos de usuario a escala. Crea actores, ejecuta flujos de trabajo automatizados y listas de verificación contra cualquier aplicación web, y detecta puntos de fricción antes de que los usuarios reales los encuentren. Se integra con Claude, Linear, GitHub y Slack.
Este repositorio
Este repositorio contiene configuración de plugin y MCP (.claude-plugin/plugin.json y .mcp.json para Claude, .cursor-plugin/plugin.json y mcp.json raíz para Cursor, server.json para el registro MCP), además de habilidades, agentes y reglas de Cursor. No hay package.json ni servidor ejecutable aquí: el endpoint MCP está alojado en https://app.stuntdouble.io/api/mcp desde el código principal de Stunt Double. Consulta CONTRIBUTING.md para saber cómo validar ediciones y evitar confundir esta carpeta con un paquete de Node.
Inicio rápido
Claude Code
claude mcp add --transport http stuntdouble https://app.stuntdouble.io/api/mcp
Plugin de Claude Code
El repositorio también es un plugin de Claude: agrupa el servidor MCP alojado (.mcp.json) con las habilidades en skills/ y los agentes en agents/.
claude plugin marketplace add stunt-double/stuntdouble-mcp
claude plugin install stuntdouble@stuntdouble
Habilidades (cualquier agente)
Las habilidades en skills/ se instalan en Claude Code, Cursor, Codex, OpenCode y otros agentes que leen archivos SKILL.md, usando la CLI de habilidades. Estas impulsan el servidor MCP anterior, así que conéctalo también.
npx skills add stunt-double/stuntdouble-mcp # pick from the list
npx skills add stunt-double/stuntdouble-mcp --skill verify-change # just one
| Habilidad | Qué hace |
|---|---|
check-agent-readiness | Comprueba qué tan bien los agentes de IA (ChatGPT, Claude, Gemini, Perplexity y otros) pueden encontrar, entender y actuar en un sitio web usando el Índice de Stunt Double, explica la puntuación de sesiones reales de agentes, compara con pares y vuelve a puntuar después de correcciones |
check-brand | Audita un producto o sitio contra pautas de marca y tono de voz |
check-compliance | Verifica un producto contra requisitos legales y de cumplimiento en Stunt Double (consentimiento de cookies, acceso a privacidad y términos, divulgaciones requeridas, respaldo de afirmaciones, flujos de cancelación de suscripción) y recopila evidencia para que el consejo legal la revise |
check-continuity | Verifica la continuidad entre superficies en Stunt Double |
check-design-system | Audita un producto en vivo contra su sistema de diseño en Stunt Double |
create-actor-panel | Crea y configura un actor de Stunt Double (personaje de IA) con entradas de conocimiento para simulación realista de usuarios |
design-review | Ejecuta una sesión de revisión de diseño recopilando comentarios de múltiples actores de Stunt Double sobre un diseño o flujo propuesto |
maintain-automations | Cambia una automatización o lista de verificación existente de Stunt Double sin perder el historial de ejecuciones: reprograma disparadores, edita y reconecta pasos del flujo de trabajo, crea ramas condicionales, actualiza verificaciones en su lugar y pausa o retira lo que ya no se necesita |
run-qa-suite | Ejecuta la suite completa de control de calidad de Stunt Double |
run-user-interview | Planifica, configura y lanza una entrevista de usuario estructurada con participantes de IA en Stunt Double, y luego lee el informe sintetizado |
run-ux-validation | Valida un recorrido de usuario ejecutando flujos de trabajo o listas de verificación de Stunt Double e informando los resultados |
setup-guardrails | Establece salvaguardas continuas en Stunt Double |
triage-feedback | Revisa, categoriza y gestiona envíos de comentarios de Stunt Double entre proyectos |
verify-change | Verifica un cambio de código publicado o en vista previa ejecutando un actor de Stunt Double a través de los flujos de usuario afectados y, opcionalmente, informa los resultados en la solicitud de extracción |
Claude (web, Desktop, móvil)
Ve a Configuración → Conectores → Agregar conector personalizado y pega:
https://app.stuntdouble.io/api/mcp
Cursor / Windsurf
Agrega el bloque mcpServers a continuación a un archivo de configuración MCP:
- Local al proyecto (recomendado para este clon del repositorio):
.cursor/mcp.jsonen la raíz de tu proyecto. - Global (todos los proyectos):
~/.cursor/mcp.jsonen macOS/Linux (consulta documentación de MCP de Cursor para tu sistema operativo).
{
"mcpServers": {
"stuntdouble": {
"url": "https://app.stuntdouble.io/api/mcp"
}
}
}
Usa solo url para servidores remotos (HTTP Streamable se negocia automáticamente). Claves adicionales como "type": "streamable-http" no forman parte de la forma documentada de mcp.json de Cursor y pueden romper la validación del plugin.
Mercado de Cursor (instalación en un clic) espera un diseño de plugin: .cursor-plugin/plugin.json más mcp.json raíz. Esos archivos están en este repositorio. La ruta logo del plugin es assets/logo.png (incluida en este repositorio). El archivo server.json es el manifiesto separado del registro MCP para mcp-publisher y listados de directorios; el instalador de Cursor no lo usa.
Autenticación
La autenticación se maneja automáticamente mediante OAuth 2.1 con PKCE. La primera vez que tu cliente de IA se conecta, se abrirá una ventana del navegador para que inicies sesión y autorices el acceso a tu cuenta de Stunt Double. No se requieren claves API ni tokens.
Para Cursor, el URI de redirección de OAuth está fijado a cursor://anysphere.cursor-mcp/oauth/callback (documentación).
Lo que una conexión puede alcanzar
El servidor actúa como tú, nunca más. Cada herramienta resuelve el espacio de trabajo sobre el que se le pregunta y verifica tu membresía en él antes de hacer cualquier cosa, por lo que una conexión alcanza exactamente los espacios de trabajo que list_workspaces devuelve para ti, y un espacio de trabajo archivado no alcanza nada. Un espacio de trabajo del que no eres miembro responde igual que uno que no existe: "no encontrado".
Eso también aplica a los IDs, no solo al workspace_id que pasas. Una herramienta que toma el ID de otro objeto (una lista de verificación para un paso de automatización, un actor para un participante de entrevista) verifica que ese objeto pertenezca al mismo espacio de trabajo antes de almacenarlo o ejecutarlo, y se niega con "no encontrado en este espacio de trabajo" en caso contrario. Las negativas nunca dicen a qué espacio de trabajo pertenece un ID.
Los alcances reducen esto aún más, nunca lo amplían. La pantalla de consentimiento nombra lo que la conexión solicitó, y un token otorgado con mcp:read no muestra las herramientas de escritura o ejecución en absoluto: están ausentes de tools/list en lugar de presentes y fallando.
| Alcance | Qué permite |
|---|---|
mcp:read | Leer tus espacios de trabajo y su contenido |
mcp:write | Crear y editar contenido en tus espacios de trabajo |
mcp:run | Iniciar ejecuciones de listas de verificación, ejecuciones de automatización y entrevistas, que consumen la asignación de ejecuciones del espacio de trabajo, y volver a ejecutar puntuaciones del Índice de Stunt Double para dominios que posees |
Herramientas disponibles
Cuenta
| Herramienta | Descripción |
|---|---|
get_me | La cuenta bajo la que actúa esta conexión: ID, correo electrónico, nombre, zona horaria, canal de notificación |
El canal de notificación y la zona horaria son configuraciones de cuenta más que de espacio de trabajo, por lo que son la misma respuesta en todos los espacios de trabajo. Pasa el timezone al crear un flujo de trabajo programado, o "todos los días hábiles a las 9" se convierte en las nueve en UTC.
Espacios de trabajo
| Herramienta | Descripción |
|---|---|
list_workspaces | Lista tus espacios de trabajo |
get_workspace | Obtén detalles del espacio de trabajo por ID o slug, incluidos sus controles establecidos por el administrador (settings) |
list_workspace_members | Lista los miembros de un espacio de trabajo |
get_workspace informa los controles de seguridad del espacio de trabajo bajo settings: uso compartido público, el widget de comentarios, trabajadores autoalojados y la política de red. Son límites establecidos por un administrador, por lo que una función desactivada allí no puede reactivarse para un solo proyecto.
Búsqueda
| Herramienta | Descripción |
|---|---|
search | Busca en un espacio de trabajo entre proyectos, actores, listas de verificación, entrevistas, automatizaciones, problemas, objetivos, comentarios, conocimiento de actores, información, revisiones de diseño, recursos de proyecto y conversaciones. Clasificada, con filtros opcionales |
search toma un workspace_id más un query opcional, filtro de types, filtro de project_id y limit (máximo 50). Los términos se comparan como prefijos, por lo que una palabra parcial es suficiente. Omite query para explorar los elementos actualizados más recientemente. Los resultados incluyen el id que necesitas para el getter correspondiente, por lo que generalmente es más económico que listar un tipo de entidad y filtrar la lista tú mismo. Úsala antes de crear cualquier cosa, para encontrar el actor o la lista de verificación que ya cubre el trabajo.
Proyectos
| Herramienta | Descripción |
|---|---|
list_projects | Listar proyectos en un espacio de trabajo |
get_project | Obtener un proyecto (el producto rastreado por listas de verificación, flujos de trabajo, comentarios) |
create_project | Crear un proyecto (un producto para rastrear con listas de verificación, flujos de trabajo, comentarios) |
list_project_mcp_servers | Los servidores MCP a los que pueden acceder las ejecuciones de este proyecto |
Un proyecto se archiva, nunca se elimina, y un proyecto archivado se lee como ausente en
cada herramienta aquí. Registrar un servidor MCP y adjuntarlo a un proyecto son
acciones de administrador del espacio de trabajo en el panel; list_project_mcp_servers es cómo verificas
qué herramientas tendrá realmente una ejecución antes de escribir una lista de verificación que dependa de una.
Pautas
Reglas permanentes a las que el equipo somete el producto: sistema de diseño, tono de voz, marca, contenido, accesibilidad, cumplimiento, seguridad, rendimiento o conocimiento compartido. Una pauta es propiedad del espacio de trabajo y se adjunta a los proyectos a los que aplica, por lo que una regla puede aplicarse a cada proyecto sin ser reescrita. Lo que esté en vigor se renderiza en cada ejecución de lista de verificación, revisión de diseño, entrevista y triaje para ese proyecto.
| Herramienta | Descripción |
|---|---|
list_workspace_guidelines | La biblioteca del espacio de trabajo, con cuántos proyectos mantienen cada regla |
add_workspace_guideline | Agregar una regla a la biblioteca, opcionalmente adjuntándola a proyectos |
update_workspace_guideline | Editar una regla, desactivarla o aplicarla a cada revisión de diseño en el espacio de trabajo |
remove_workspace_guideline | Eliminar una regla de la biblioteca, desadjuntándola de cada proyecto |
list_project_guidelines | Las reglas a las que este proyecto está sujeto |
add_project_guideline | Registrar una regla y someter este proyecto a ella |
set_project_guideline | Adjuntar una regla de la biblioteca a un proyecto, desadjuntarla o desactivarla allí |
Dos interruptores deciden si una regla está en vigor para un proyecto: el enabled de la biblioteca
y el del adjunto. list_project_guidelines los combina en un solo enabled para que nunca
tengas que razonar sobre ambos. Una regla con apply_to_design_reviews configurado también aplica a
revisiones de diseño planteadas desde Slack o Linear, que no llevan un proyecto al que adjuntarla.
Codifica un estándar como pauta en lugar de repetirlo en cada lista de verificación, y busca en la biblioteca antes de escribir una nueva regla: adjuntar la que ya existe mantiene el estándar del equipo en un solo lugar para editar.
Actores
| Herramienta | Descripción |
|---|---|
list_actors | Listar actores activos en un espacio de trabajo |
get_actor | Obtener detalles del actor, incluido el mensaje del sistema y las capacidades |
create_actor | Crear un nuevo actor en un espacio de trabajo |
update_actor | Actualizar nombre, descripción, mensaje del sistema, capacidades o estado del actor. Establecer estado en "archivado" para eliminación suave |
Conocimiento
| Herramienta | Descripción |
|---|---|
list_actor_knowledge | Listar entradas de conocimiento para un actor |
add_actor_knowledge | Agregar una entrada de conocimiento a un actor |
remove_actor_knowledge | Eliminar una entrada de conocimiento |
Conversaciones
| Herramienta | Descripción |
|---|---|
list_conversations | Listar conversaciones, opcionalmente filtradas por actor |
get_conversation | Obtener una conversación con sus mensajes |
Listas de verificación
| Herramienta | Descripción |
|---|---|
list_checklists | Listar listas de verificación en un espacio de trabajo |
get_checklist | Obtener detalles de la lista de verificación, verificaciones y ejecuciones recientes |
get_checklist_run | Obtener una ejecución de lista de verificación con resultados por verificación |
run_checklist | Activar una ejecución de lista de verificación (asíncrono). Devuelve el ID de ejecución |
create_checklist | Crear una lista de verificación de QA basada en navegador (alojar vía proyecto o URL, actor, instrucciones, verificaciones) |
update_checklist | Actualizar una lista de verificación (pasa checks para reemplazar el conjunto completo) |
delete_checklist | Eliminar una lista de verificación y sus verificaciones y ejecuciones |
Flujos de trabajo
Un flujo de trabajo es un grafo, no una lista: sus pasos se ejecutan siguiendo las conexiones entre ellos. Las herramientas de pasos mantienen esas conexiones, por lo que agregar, eliminar y reordenar pasos es suficiente para construir uno. connect_workflow_steps solo se necesita para ramificar.
| Herramienta | Descripción |
|---|---|
list_workflows | Listar flujos de trabajo en un espacio de trabajo |
get_workflow | Obtener un flujo de trabajo con sus pasos, bordes, el orden que toma una ejecución y ejecuciones recientes |
run_workflow | Activar una ejecución de flujo de trabajo (asíncrono). Devuelve el ID de ejecución |
get_workflow_run | Obtener una ejecución de flujo de trabajo con detalles a nivel de paso |
create_workflow | Crear un flujo de trabajo (automatización de múltiples pasos) |
update_workflow | Actualizar el nombre, descripción o activador de un flujo de trabajo |
toggle_workflow | Activar o pausar un flujo de trabajo |
delete_workflow | Eliminar un flujo de trabajo y sus pasos y ejecuciones |
add_workflow_step | Agregar un paso y conectarlo en la ejecución |
update_workflow_step | Cambiar el tipo o configuración de un paso en su lugar |
remove_workflow_step | Eliminar un paso y cerrar el hueco que deja |
reorder_workflow_steps | Establecer el orden en que se ejecutan los pasos |
connect_workflow_steps | Conectar un paso a otro, para las rutas Verdadero y Falso de una condición |
Comentarios
| Herramienta | Descripción |
|---|---|
list_feedback | Listar comentarios para un proyecto, más recientes primero |
get_feedback | Obtener un envío de comentarios con sus respuestas |
update_feedback_status | Actualizar el estado de los comentarios |
GitHub
| Herramienta | Descripción |
|---|---|
list_pull_requests | Listar solicitudes de extracción para un repositorio de GitHub |
get_pull_request | Obtener detalles de una solicitud de extracción de GitHub (título, autor, ramas, estadísticas) |
comment_on_pr | Publicar un comentario en una solicitud de extracción de GitHub |
Entrevistas
Entrevistas de usuario estructuradas: actores o personas generadas pasan por una guía de discusión (secciones + preguntas/tareas) contra una URL objetivo, luego Stunt Double sintetiza temas y recomendaciones.
| Herramienta | Descripción |
|---|---|
list_interviews | Listar entrevistas en un espacio de trabajo, opcionalmente filtradas por proyecto |
get_interview | Obtener una entrevista con su guía de discusión (secciones + elementos) y participantes |
create_interview | Crear una nueva entrevista en un proyecto (nombre, URL objetivo, breve de investigación) |
update_interview | Actualizar el nombre, URL objetivo, breve de investigación o estado de una entrevista |
add_interview_section | Agregar una sección a la guía de discusión |
add_interview_item | Agregar una pregunta o tarea a una sección |
add_interview_participant | Adjuntar un participante, ya sea un actor existente o un persona_spec ad hoc |
get_interview_participant | Obtener un participante, incluida su transcripción completa de la ejecución |
get_interview_report | Obtener el informe sintetizado actual (resumen, temas, recomendaciones, resumen por pregunta) |
launch_interview | Lanzar la ronda de entrevistas (asíncrono). Devuelve el ID de ejecución de activación |
regenerate_interview_report | Re-ejecutar la síntesis en transcripciones existentes (asíncrono). Devuelve el ID de ejecución de activación |
Prompts
La mayoría de los clientes MCP (Claude, Claude Code, Cursor) muestran estos como comandos de barra. Cada uno es una receta autocontenida: qué herramientas llamar, en qué orden y cómo informar.
| Prompt | Descripción |
|---|---|
validate_design | Validar un diseño en vivo, prototipo o URL de vista previa (Figma Make, artefacto de Claude, v0, staging) con personas de IA |
verify_change | Verificar un cambio de código publicado o en vista previa ejecutando un actor a través de los flujos afectados, comentando opcionalmente en el PR |
run_user_research | Ejecutar un estudio de entrevistas estructurado con múltiples personas y sintetizar temas y recomendaciones |
triage_feedback | Triar comentarios de usuarios sobre un proyecto: agruparlos, reproducir problemas con un actor y actualizar estados |
setup_guardrails | Crear listas de verificación para flujos críticos más un flujo de trabajo que las re-ejecuta en un horario o en eventos de despliegue/PR |
check_brand | Auditar un producto contra pautas de marca y tono de voz, señalando desviaciones con evidencia |
check_design_system | Auditar un producto en vivo contra su sistema de diseño (tipografía, color, espaciado, componentes) en páginas renderizadas |
check_compliance | Verificar un producto contra requisitos legales y de cumplimiento y recopilar evidencia para que el consejo la revise |
check_continuity | Verificar la continuidad entre superficies (precios, terminología, promesas) entre marketing, producto, documentación y correos electrónicos |
stuntdouble_guide | Orientación para Stunt Double: qué hace, cuándo usarlo y el catálogo completo de herramientas |
Recursos
Contexto de solo lectura que un cliente puede adjuntar sin llamar a una herramienta. La guía y la conexión siempre están listadas; los recursos del espacio de trabajo necesitan mcp:read, igual que las herramientas que devuelven esos datos.
| URI | Tipo MIME | Descripción |
|---|---|---|
stuntdouble://guide | text/markdown | Qué hace Stunt Double, cuándo usarlo, el catálogo completo de herramientas y cómo consultar una ejecución |
stuntdouble://connection | application/json | Quién actúa como la conexión, los alcances que tiene, las herramientas que desbloquea y las que le faltan |
stuntdouble://workspaces | application/json | Los espacios de trabajo a los que la conexión puede acceder, con tu rol (mismos datos que list_workspaces) |
stuntdouble://workspaces/{workspace_id}/projects | application/json | Los proyectos en vivo en un espacio de trabajo, los más recientemente abiertos primero (mismos datos que list_projects) |
resources/list incluye una entrada de proyectos por espacio de trabajo, para que un cliente pueda navegarlos sin expandir la plantilla.
Índice de Stunt Double
El Índice de Stunt Double es un ranking público de cómo los agentes de IA experimentan los sitios web: cada dominio rastreado recibe una puntuación sobre 100 a partir de sondeos HTTP más sesiones de agentes en vivo, una por proveedor de IA y tarea de referencia. Los datos del índice son públicos, no datos del espacio de trabajo, por lo que las herramientas de lectura alcanzan cualquier sitio rastreado.
| Herramienta | Descripción |
|---|---|
get_index_report | La puntuación de un sitio, banda, rango, categoría y puntuaciones por proveedor, fricciones, comprobaciones de sondeo fallidas y cuándo se puntuó por última vez |
list_index_sessions | Las sesiones de agente detrás de una puntuación (ejecución más reciente por defecto), con estado, puntuación, evidencia, un resumen y fricciones. Filtrar por proveedor o categoría |
search_index_domains | Encontrar un sitio por dominio o nombre, o navegar el ranking, opcionalmente por sector |
request_index_rerun | Re-puntuar un dominio que posees (mcp:run). Sondeos frescos ahora, unas 24 sesiones de agente en unos minutos. Una vez cada 10 minutos |
get_index_report, list_index_sessions y request_index_rerun toman un domain, o un project_id para usar el dominio del Índice vinculado a ese proyecto (que verifica tu membresía como cualquier lectura de proyecto). Solo el propietario del dominio puede re-ejecutarlo: un administrador de la plataforma, la persona que lo reclamó o, mientras no esté reclamado, alguien que haya iniciado sesión con un correo de trabajo en ese dominio exacto. Después de una re-ejecución, consulta list_index_sessions con el run_id devuelto hasta que las sesiones terminen, luego lee get_index_report.
(invitar/eliminar miembros) está disponible en el panel web.
Ejemplos de prompts
Cuatro prompts que ejercitan el núcleo del servidor una vez conectado:
- Verificar un flujo: "Crea una lista de verificación que se registre para una nueva cuenta en https://demo-checkout-stunt-double.vercel.app,, añada un artículo al carrito y llegue al pago, luego ejecútala y dime qué comprobaciones fallaron."
- Ejecutar una entrevista de usuario: "Configura una entrevista con tres personas (un comprador primerizo, un cliente recurrente y un usuario de lector de pantalla) sobre nuestra página de precios, lánzala y resume el informe."
- Verificar la preparación del agente: "¿Qué tan bien pueden usar los agentes de IA stripe.com según el Índice de Stunt Double, y qué categorías están arrastrando su puntuación?"
- Triar comentarios: "Resume los comentarios abiertos en mi proyecto principal, agrupa en temas y marca cualquier cosa ya corregida como resuelta."
Política de privacidad
El servidor está alojado por Stunt Double y actúa como el usuario que ha iniciado sesión. Lee y escribe solo en los espacios de trabajo a los que ese usuario pertenece, dentro de los alcances OAuth que otorga (mcp:read, mcp:write, mcp:run). No lee tu conversación con el cliente de IA más allá de los argumentos pasados a cada llamada de herramienta, y no accede a la memoria, historial de chat o archivos del cliente.
Los datos creados a través del servidor (proyectos, actores, listas de verificación, ejecuciones, entrevistas, comentarios) se almacenan en tu espacio de trabajo de Stunt Double y se manejan bajo la Política de privacidad de Stunt Double, que cubre recopilación, uso, almacenamiento, subprocesadores, retención y tus derechos. Revoca una conexión en cualquier momento desconectándola en tu cliente de IA.
Soporte
- Correo electrónico: support@stuntdouble.io
- Centro de ayuda y documentación: stuntdouble.io/support
- Referencia MCP: stuntdouble.io/support/docs/api/mcp
- Informes de seguridad: ver SECURITY.md
Transporte
Este servidor usa transporte Streamable HTTP. El endpoint es:
https://app.stuntdouble.io/api/mcp
Registro MCP
El servidor está listado en el Registro MCP oficial como io.stuntdouble/mcp-server, por lo que los clientes y directorios respaldados por el registro pueden encontrarlo por nombre:
curl "https://registry.modelcontextprotocol.io/v0.1/servers?search=io.stuntdouble/mcp-server"
Cada versión fusionada a main se publica allí automáticamente (ver CONTRIBUTING.md).
Enlaces
- Sitio web
- Documentación
- Referencia del servidor MCP
- Política de privacidad
- Términos de servicio
- llms.txt
Verificación de cambios
Desde la raíz del repositorio:
node scripts/validate-json.mjs
npx --yes prettier@3.4.2 --check README.md CONTRIBUTING.md SECURITY.md CHANGELOG.md mcp.json .mcp.json server.json .cursor-plugin/plugin.json .claude-plugin/plugin.json .claude-plugin/marketplace.json
Más contexto en CONTRIBUTING.md. GitHub Actions ejecuta las mismas comprobaciones en push y pull requests.
Licencia
MIT