Stunt Double

Personas de usuário de IA testam seu produto, protótipos e prévias em um navegador real e retornam evidências em capturas de tela.

Servidor MCP hospedado

npx add-mcp 'https://app.stuntdouble.io/api/mcp'

Instala no Claude Code, Codex, Cursor e outros

Documentação

Servidor MCP Stunt Double

Implante personas de usuários de IA para validar jornadas de usuário em escala. Encontre atritos de UX antes que usuários reais os encontrem.

Stunt Double implanta agentes de IA com personas de usuários realistas para validar jornadas de usuário em escala. Crie atores, execute fluxos de trabalho automatizados e checklists em qualquer aplicativo web, e revele pontos de atrito antes que usuários reais os encontrem. Integra-se com Claude, Linear, GitHub e Slack.

Este repositório

Este repositório contém configuração de plugin e MCP (.claude-plugin/plugin.json e .mcp.json para Claude, .cursor-plugin/plugin.json e mcp.json raiz para Cursor, server.json para o registro MCP), além de skills, agentes e regras do Cursor. Não há package.json e nenhum servidor executável aqui: o endpoint MCP está hospedado em https://app.stuntdouble.io/api/mcp a partir do código principal do Stunt Double. Consulte CONTRIBUTING.md para saber como validar edições e evitar confundir esta pasta com um pacote Node.

Início Rápido

Claude Code

claude mcp add --transport http stuntdouble https://app.stuntdouble.io/api/mcp

Plugin Claude Code

O repositório também é um plugin Claude: ele agrupa o servidor MCP hospedado (.mcp.json) com as skills em skills/ e os agentes em agents/.

claude plugin marketplace add stunt-double/stuntdouble-mcp
claude plugin install stuntdouble@stuntdouble

Skills (qualquer agente)

As skills em skills/ são instaladas no Claude Code, Cursor, Codex, OpenCode e outros agentes que leem arquivos SKILL.md, usando a CLI de skills. Elas acionam o servidor MCP acima, então conecte-o também.

npx skills add stunt-double/stuntdouble-mcp                          # pick from the list
npx skills add stunt-double/stuntdouble-mcp --skill verify-change     # just one
SkillO que faz
check-agent-readinessVerifica quão bem agentes de IA (ChatGPT, Claude, Gemini, Perplexity e outros) conseguem encontrar, entender e agir em um site usando o Índice Stunt Double, explica a pontuação a partir de sessões reais de agentes, compara com concorrentes e reavalia após correções
check-brandAudita um produto ou site em relação às diretrizes de marca e tom de voz
check-complianceVerifica um produto em relação a requisitos legais e de conformidade no Stunt Double (consentimento de cookies, acesso a privacidade e termos, divulgações obrigatórias, comprovação de alegações, fluxos de cancelamento) e coleta evidências para revisão jurídica
check-continuityVerifica continuidade entre superfícies no Stunt Double
check-design-systemAudita um produto ao vivo em relação ao seu design system no Stunt Double
create-actor-panelCria e configura um ator Stunt Double (persona de IA) com entradas de conhecimento para simulação realista de usuário
design-reviewExecuta uma sessão de revisão de design coletando feedback de múltiplos atores Stunt Double sobre um design ou fluxo proposto
maintain-automationsAltera uma automação ou checklist Stunt Double existente sem perder o histórico de execuções: reprograma gatilhos, edita e reconecta etapas do fluxo de trabalho, cria ramificações condicionais, atualiza verificações no local e pausa ou aposenta o que não é mais necessário
run-qa-suiteExecuta a suíte completa de QA do Stunt Double
run-user-interviewPlaneja, configura e lança uma entrevista de usuário estruturada com participantes de IA no Stunt Double e, em seguida, lê o relatório sintetizado
run-ux-validationValida uma jornada de usuário executando fluxos de trabalho ou checklists do Stunt Double e relatando os resultados
setup-guardrailsEstabelece salvaguardas contínuas no Stunt Double
triage-feedbackRevisa, categoriza e gerencia envios de feedback do Stunt Double entre projetos
verify-changeVerifica uma alteração de código publicada ou em pré-visualização executando um ator Stunt Double pelos fluxos de usuário afetados e, opcionalmente, relata os resultados no pull request

Claude (web, Desktop, mobile)

Vá para Configurações → Conectores → Adicionar conector personalizado e cole:

https://app.stuntdouble.io/api/mcp

Cursor / Windsurf

Adicione o bloco mcpServers abaixo a um arquivo de configuração MCP:

  • Local ao projeto (recomendado para este clone do repositório): .cursor/mcp.json na raiz do seu projeto.
  • Global (todos os projetos): ~/.cursor/mcp.json no macOS/Linux (consulte a documentação MCP do Cursor para seu sistema operacional).
{
  "mcpServers": {
    "stuntdouble": {
      "url": "https://app.stuntdouble.io/api/mcp"
    }
  }
}

Use apenas url para servidores remotos (Streamable HTTP é negociado automaticamente). Chaves extras como "type": "streamable-http" não fazem parte da estrutura mcp.json documentada do Cursor e podem quebrar a validação do plugin.

Marketplace do Cursor (instalação em um clique) espera um layout de plugin: .cursor-plugin/plugin.json mais mcp.json raiz. Esses arquivos estão neste repositório. O caminho do plugin logo é assets/logo.png (incluído neste repositório). O arquivo server.json é o manifesto separado do registro MCP para mcp-publisher e listagens de diretórios; o instalador do Cursor não o utiliza.

Autenticação

A autenticação é tratada automaticamente via OAuth 2.1 com PKCE. Na primeira vez que seu cliente de IA se conectar, uma janela do navegador será aberta para você entrar e autorizar o acesso à sua conta Stunt Double. Nenhuma chave de API ou token é necessária.

Para Cursor, o URI de redirecionamento OAuth é fixado em cursor://anysphere.cursor-mcp/oauth/callback (documentação).

O que uma conexão pode acessar

O servidor age como você, nunca além disso. Cada ferramenta resolve o workspace sobre o qual está sendo consultada e verifica sua associação a ele antes de fazer qualquer coisa, então uma conexão alcança exatamente os workspaces que list_workspaces retorna para você, e um workspace arquivado não alcança nada. Um workspace do qual você não é membro responde da mesma forma que um que não existe: "não encontrado".

Isso vale também para ids, não apenas para o workspace_id que você passa. Uma ferramenta que recebe o id de outro objeto (um checklist para uma etapa de automação, um ator para um participante de entrevista) verifica se esse objeto pertence ao mesmo workspace antes de armazená-lo ou executá-lo e recusa com "não encontrado neste workspace" caso contrário. As recusas nunca dizem a qual workspace um id pertence.

Os escopos restringem ainda mais, nunca ampliam. A tela de consentimento nomeia o que a conexão solicitou, e um token concedido com mcp:read não recebe as ferramentas de escrita ou execução: elas estão ausentes de tools/list em vez de presentes e falhando.

EscopoO que permite
mcp:readLer seus workspaces e seus conteúdos
mcp:writeCriar e editar conteúdo em seus workspaces
mcp:runIniciar execuções de checklist, execuções de automação e entrevistas, que consomem a cota de execução do workspace, e reexecutar pontuações do Índice Stunt Double para domínios que você possui

Ferramentas Disponíveis

Conta

FerramentaDescrição
get_meA conta pela qual esta conexão age: id, email, nome, fuso horário, canal de notificação

Canal de notificação e fuso horário são configurações da conta, não do workspace, então são a mesma resposta em todos os workspaces. Passe o timezone ao criar um fluxo de trabalho agendado, ou "todos os dias úteis às 9" vira nove em UTC.

Workspaces

FerramentaDescrição
list_workspacesLista seus workspaces
get_workspaceObtém detalhes do workspace por ID ou slug, incluindo os controles definidos pelo administrador (settings)
list_workspace_membersLista membros de um workspace

get_workspace relata os controles de segurança do workspace sob settings: compartilhamento público, o widget de feedback, workers auto-hospedados e a política de rede. Eles são limites definidos por um administrador, então um recurso desativado lá não pode ser reativado para um único projeto.

Busca

FerramentaDescrição
searchBusca em um workspace entre projetos, atores, checklists, entrevistas, automações, problemas, metas, feedback, conhecimento de atores, insights, revisões de design, recursos de projeto e conversas. Classificada, com filtros opcionais

search recebe um workspace_id além de um query opcional, filtro types, filtro project_id e limit (máx. 50). Os termos são correspondidos como prefixos, então uma palavra parcial é suficiente. Omita query para navegar pelos itens mais recentemente atualizados. Os resultados trazem o id que você precisa para o getter correspondente, então geralmente é mais barato do que listar um tipo de entidade e filtrar a lista você mesmo. Recorra a ela antes de criar qualquer coisa, para encontrar o ator ou checklist que já cobre o trabalho.

Projetos

FerramentaDescrição
list_projectsListar projetos em um workspace
get_projectObter um projeto (o produto acompanhado por checklists, workflows, feedback)
create_projectCriar um projeto (um produto para acompanhar com checklists, workflows, feedback)
list_project_mcp_serversOs servidores MCP que as execuções deste projeto podem alcançar

Um projeto é arquivado, nunca excluído, e um projeto arquivado aparece como ausente em todas as ferramentas aqui. Registrar um servidor MCP e anexá-lo a um projeto são ações de administrador do workspace no painel; list_project_mcp_servers é como você verifica quais ferramentas uma execução realmente terá antes de escrever um checklist que depende de uma.

Diretrizes

Regras permanentes que o time mantém para o produto: sistema de design, tom de voz, marca, conteúdo, acessibilidade, conformidade, segurança, desempenho ou conhecimento compartilhado. Uma diretriz pertence ao workspace e é anexada aos projetos aos quais se aplica, então uma regra pode valer para todos os projetos sem ser reescrita. O que estiver em vigor é renderizado em cada execução de checklist, revisão de design, entrevista e triagem para aquele projeto.

FerramentaDescrição
list_workspace_guidelinesA biblioteca do workspace, com quantos projetos possuem cada regra
add_workspace_guidelineAdicionar uma regra à biblioteca, opcionalmente anexando-a a projetos
update_workspace_guidelineEditar uma regra, desativá-la ou aplicá-la a toda revisão de design no workspace
remove_workspace_guidelineRemover uma regra da biblioteca, desanexando-a de todos os projetos
list_project_guidelinesAs regras às quais este projeto está sujeito
add_project_guidelineRegistrar uma regra e manter este projeto sujeito a ela
set_project_guidelineAnexar uma regra da biblioteca a um projeto, desanexá-la ou desativá-la lá

Dois interruptores decidem se uma regra está em vigor para um projeto: o enabled da biblioteca e o do anexo. list_project_guidelines os combina em um único enabled para que você nunca precise raciocinar sobre ambos. Uma regra com apply_to_design_reviews definido também vale para revisões de design levantadas do Slack ou Linear, que não carregam um projeto para anexá-la.

Codifique um padrão como diretriz em vez de repeti-lo em cada checklist, e pesquise a biblioteca antes de escrever uma nova regra: anexar a que já existe mantém o padrão do time em um único lugar para editar.

Atores

FerramentaDescrição
list_actorsListar atores ativos em um workspace
get_actorObter detalhes do ator, incluindo prompt de sistema e capacidades
create_actorCriar um novo ator em um workspace
update_actorAtualizar nome, descrição, prompt de sistema, capacidades ou status do ator. Defina status como "arquivado" para exclusão suave

Conhecimento

FerramentaDescrição
list_actor_knowledgeListar entradas de conhecimento para um ator
add_actor_knowledgeAdicionar uma entrada de conhecimento a um ator
remove_actor_knowledgeRemover uma entrada de conhecimento

Conversas

FerramentaDescrição
list_conversationsListar conversas, opcionalmente filtradas por ator
get_conversationObter uma conversa com suas mensagens

Checklists

FerramentaDescrição
list_checklistsListar checklists em um workspace
get_checklistObter detalhes do checklist, verificações e execuções recentes
get_checklist_runObter uma execução de checklist com resultados por verificação
run_checklistAcionar uma execução de checklist (assíncrono). Retorna o ID da execução
create_checklistCriar um checklist de QA baseado em navegador (hospedar via projeto ou URL, ator, instruções, verificações)
update_checklistAtualizar um checklist (passe checks para substituir o conjunto completo)
delete_checklistExcluir um checklist e suas verificações e execuções

Workflows

Um workflow é um grafo, não uma lista: suas etapas são executadas seguindo as conexões entre elas. As ferramentas de etapa mantêm essas conexões, então adicionar, remover e reordenar etapas é suficiente para construir um. connect_workflow_steps só é necessário para ramificar.

FerramentaDescrição
list_workflowsListar workflows em um workspace
get_workflowObter um workflow com suas etapas, arestas, a ordem de execução e execuções recentes
run_workflowAcionar uma execução de workflow (assíncrono). Retorna o ID da execução
get_workflow_runObter uma execução de workflow com detalhes por etapa
create_workflowCriar um workflow (automação de múltiplas etapas)
update_workflowAtualizar nome, descrição ou gatilho de um workflow
toggle_workflowAtivar ou pausar um workflow
delete_workflowExcluir um workflow e suas etapas e execuções
add_workflow_stepAdicionar uma etapa e conectá-la à execução
update_workflow_stepAlterar o tipo ou a configuração de uma etapa no local
remove_workflow_stepRemover uma etapa e fechar a lacuna que ela deixa
reorder_workflow_stepsDefinir a ordem em que as etapas são executadas
connect_workflow_stepsConectar uma etapa a outra, para os caminhos Verdadeiro e Falso de uma condição

Feedback

FerramentaDescrição
list_feedbackListar feedback para um projeto, mais recente primeiro
get_feedbackObter um envio de feedback com suas respostas
update_feedback_statusAtualizar o status do feedback

GitHub

FerramentaDescrição
list_pull_requestsListar pull requests para um repositório GitHub
get_pull_requestObter detalhes de um pull request do GitHub (título, autor, branches, estatísticas)
comment_on_prPostar um comentário em um pull request do GitHub

Entrevistas

Entrevistas estruturadas com usuários: atores ou personas geradas passam por um guia de discussão (seções + perguntas/tarefas) contra uma URL alvo, e então o Stunt Double sintetiza temas e recomendações.

FerramentaDescrição
list_interviewsListar entrevistas em um workspace, opcionalmente filtradas por projeto
get_interviewObter uma entrevista com seu guia de discussão (seções + itens) e participantes
create_interviewCriar uma nova entrevista em um projeto (nome, URL alvo, resumo de pesquisa)
update_interviewAtualizar nome, URL alvo, resumo de pesquisa ou status de uma entrevista
add_interview_sectionAdicionar uma seção ao guia de discussão
add_interview_itemAdicionar uma pergunta ou tarefa a uma seção
add_interview_participantAnexar um participante, seja um ator existente ou um persona_spec ad hoc
get_interview_participantObter um participante, incluindo sua transcrição completa da execução
get_interview_reportObter o relatório sintetizado atual (resumo, temas, recomendações, consolidação por pergunta)
launch_interviewLançar a rodada de entrevistas (assíncrono). Retorna o ID da execução do gatilho
regenerate_interview_reportReexecutar a síntese em transcrições existentes (assíncrono). Retorna o ID da execução do gatilho

Prompts

A maioria dos clientes MCP (Claude, Claude Code, Cursor) exibe esses como comandos de barra. Cada um é uma receita autônoma: quais ferramentas chamar, em que ordem e como relatar de volta.

PromptDescrição
validate_designValidar um design, protótipo ou URL de pré-visualização ao vivo (Figma Make, artefato Claude, v0, staging) com personas de IA
verify_changeVerificar uma alteração de código publicada ou pré-visualizada executando um ator pelos fluxos afetados, opcionalmente comentando no PR
run_user_researchExecutar um estudo de entrevista estruturado com múltiplas personas e sintetizar temas e recomendações
triage_feedbackTriar feedback de usuários em um projeto: agrupar, reproduzir problemas com um ator e atualizar status
setup_guardrailsCriar checklists para fluxos críticos além de um workflow que os reexecuta em um agendamento ou em eventos de deploy/PR
check_brandAuditar um produto em relação às diretrizes de marca e tom de voz, sinalizando desvios com evidências
check_design_systemAuditar um produto ao vivo em relação ao seu design system (tipografia, cor, espaçamento, componentes) em páginas renderizadas
check_complianceVerificar um produto em relação a requisitos legais e de conformidade e coletar evidências para revisão jurídica
check_continuityVerificar continuidade entre superfícies (preços, terminologia, promessas) entre marketing, produto, documentação e e-mails
stuntdouble_guideOrientação sobre o Stunt Double: o que faz, quando usar e o catálogo completo de ferramentas

Recursos

Contexto somente leitura que um cliente pode anexar sem chamar uma ferramenta. O guia e a conexão estão sempre listados; os recursos do workspace precisam de mcp:read, o mesmo que as ferramentas que retornam esses dados.

URITipo MIMEDescrição
stuntdouble://guidetext/markdownO que o Stunt Double faz, quando usar, o catálogo completo de ferramentas e como consultar uma execução
stuntdouble://connectionapplication/jsonQuem a conexão representa, os escopos que possui, as ferramentas que cada um desbloqueia e quais faltam
stuntdouble://workspacesapplication/jsonOs workspaces que a conexão pode acessar, com seu papel (mesmos dados de list_workspaces)
stuntdouble://workspaces/{workspace_id}/projectsapplication/jsonOs projetos ativos em um workspace, mais recentemente abertos primeiro (mesmos dados de list_projects)

resources/list inclui uma entrada de projetos por workspace, para que um cliente possa navegar por eles sem expandir o template.

Índice Stunt Double

O Índice Stunt Double é um ranking público de como agentes de IA experienciam sites: cada domínio rastreado recebe uma pontuação de 0 a 100 a partir de sondas HTTP e sessões de agentes ao vivo, uma por provedor de IA e tarefa de benchmark. Os dados do índice são públicos, não dados de workspace, então as ferramentas de leitura alcançam qualquer site rastreado.

FerramentaDescrição
get_index_reportA pontuação de um site, faixa, classificação, categoria e pontuações por provedor, fricções, verificações de sonda com falha e quando foi pontuado pela última vez
list_index_sessionsAs sessões de agente por trás de uma pontuação (execução mais recente por padrão), com status, pontuação, evidências, um resumo e fricções. Filtrar por provedor ou categoria
search_index_domainsEncontrar um site por domínio ou nome, ou navegar pelo ranking, opcionalmente por setor
request_index_rerunRe-pontuar um domínio que você possui (mcp:run). Sondas novas agora, cerca de 24 sessões de agente em alguns minutos. Uma vez a cada 10 minutos

get_index_report, list_index_sessions e request_index_rerun aceitam um domain, ou um project_id para usar o domínio do Índice vinculado àquele projeto (que verifica sua associação como qualquer leitura de projeto). Somente o proprietário do domínio pode reexecutá-lo: um administrador da plataforma, a pessoa que o reivindicou ou, enquanto não reivindicado, alguém conectado com um e-mail de trabalho nesse domínio exato. Após uma reexecução, consulte list_index_sessions com o run_id retornado até que as sessões terminem, depois leia get_index_report. (convidar/remover membros) está disponível no painel web.

Exemplos de prompts

Quatro prompts que exercitam o núcleo do servidor uma vez conectado:

  1. Verificar um fluxo: "Crie um checklist que cadastre uma nova conta em https://demo-checkout-stunt-double.vercel.app,, adicione um item ao carrinho e chegue ao pagamento, depois execute e me diga quais verificações falharam."
  2. Executar uma entrevista de usuário: "Configure uma entrevista com três personas (um comprador de primeira viagem, um cliente recorrente e um usuário de leitor de tela) sobre nossa página de preços, inicie e resuma o relatório."
  3. Verificar prontidão de agente: "Quão bem agentes de IA podem usar stripe.com de acordo com o Índice Stunt Double, e quais categorias estão puxando a pontuação para baixo?"
  4. Triar feedback: "Resuma o feedback aberto no meu projeto principal, agrupe em temas e marque qualquer coisa já corrigida como resolvida."

Política de Privacidade

O servidor é hospedado pela Stunt Double e atua como o usuário conectado. Ele lê e escreve apenas nos workspaces aos quais esse usuário pertence, dentro dos escopos OAuth que ele concede (mcp:read, mcp:write, mcp:run). Ele não lê sua conversa com o cliente de IA além dos argumentos passados a cada chamada de ferramenta, e não acessa a memória, histórico de chat ou arquivos do cliente.

Dados criados por meio do servidor (projetos, atores, checklists, execuções, entrevistas, feedback) são armazenados no seu workspace Stunt Double e tratados sob a Política de Privacidade da Stunt Double, que cobre coleta, uso, armazenamento, subprocessadores, retenção e seus direitos. Revogue uma conexão a qualquer momento desconectando-a no seu cliente de IA.

Suporte

Transporte

Este servidor usa transporte Streamable HTTP. O endpoint é:

https://app.stuntdouble.io/api/mcp

Registro MCP

O servidor está listado no Registro MCP oficial como io.stuntdouble/mcp-server, então clientes e diretórios com suporte a registro podem encontrá-lo pelo nome:

curl "https://registry.modelcontextprotocol.io/v0.1/servers?search=io.stuntdouble/mcp-server"

Cada versão mesclada ao main é publicada lá automaticamente (veja CONTRIBUTING.md).

Links

Verificando alterações

A partir da raiz do repositório:

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

Mais contexto em CONTRIBUTING.md. O GitHub Actions executa as mesmas verificações em push e pull requests.

Licença

MIT