webmcpify (Agent Skill)
Torne qualquer aplicativo web pronta para agentes com WebMCP: inventarie ações do usuário, aprove um manifesto de ferramentas, integre ferramentas, verifique-as no Chrome e corrija falhas.
Documentação
webmcpify — a habilidade de agente WebMCP
Website · Docs · Install · Demo · Changelog
webmcpify é uma habilidade de agente que torna um aplicativo web existente chamável por agentes de IA de navegador
por meio do WebMCP —
document.modelContext, o padrão proposto incubado no W3C Web Machine
Learning Community Group e no teste de origem do Chrome. Seu agente de codificação inventaria
o aplicativo, propõe um manifesto de ferramentas para sua aprovação, integra as ferramentas com um
runtime mínimo embutido e prova que cada uma funciona no Chrome real. Código não relacionado
permanece intocado — de uma página de destino estática a um SaaS multi-tenant.
npx skills add TueJon/webmcpify # once
/webmcpify # in your app's repo, inside your coding agent
[!TIP] Novo na v0.6.0: retomada com consciência de evidências — arquivos de aplicativo alterados, contratos ou navegadores invalidam a verificação que afetam — além de acesso ao navegador com escopo e verificações independentes para cada mutação.
Como funciona
- Um ponto de verificação humano. Você aprova o manifesto de ferramentas: nomes, esquemas, exemplos, motivos de cobertura e uma classe somente leitura ou mutável por ferramenta. Depois disso, o agente só volta para o que genuinamente não consegue resolver — um aplicativo que não inicia, ou uma ferramenta que ainda falha após suas tentativas de correção limitadas.
- Loop sobre estado persistido. Cada fase lê e grava
.webmcpify/manifest.json, para que uma execução seja retomada entre sessões, janelas de contexto e até mesmo agentes diferentes. Evidências registradas informam quais verificações ainda são válidas. - Prova, não promessas. Cada ferramenta é enumerada e executada por meio do
getTools()/executeTool()nativo do Chrome, verificando o resultado da ferramenta e o estado da interface resultante.
O que seu agente adiciona ao seu aplicativo
Do fixture de prova reproduzível. Primeiro, a entrada do manifesto que você aprova no portão (abreviada):
{
"id": "set_release_filter",
"mutating": "client", // browser state only — no server write
"inputSchema": {
"type": "object",
"properties": { "category": { "type": "string", "enum": ["all", "feature", "fix"] } },
"required": ["category"],
"additionalProperties": false
},
"source": ["proof/demo/app.js:applyFilter"], // the UI's existing code path
"examples": { "valid": { "category": "fix" }, "invalid": { "category": "private" } },
"expect": { "result": "2 release notes visible",
"ui": "only the two synthetic fix notes remain visible" },
"cleanup": "execute the same UI path with category=all"
}
Depois a integração: um registro que chama o caminho de código que a interface já usa, por meio do runtime embutido.
import { createToolScope } from './webmcpify.js'; // vendored, MIT, ~290 lines
import { applyFilter } from './app.js'; // existing UI logic, unchanged
createToolScope('proof-release-notes', [{
name: 'set_release_filter',
description: 'Filters the visible synthetic release notes by category '
+ "using the page's existing filter path.",
inputSchema: schema, // the approved schema above
annotations: { readOnlyHint: false, untrustedContentHint: false, consequentialHint: false },
execute: ({ category }) => {
if (!schema.properties.category.enum.includes(category)) {
return 'ERROR: category must be one of all, feature, or fix.';
}
return `${applyFilter(category)} release notes visible for ${category}.`;
},
}]); // feature-detected: a safe no-op in browsers without WebMCP
Veja em execução
Um fixture local preparado passa por um clique de aprovação real, registra uma ferramenta somente cliente,
e então exercita o document.modelContext.getTools() / executeTool() nativo, uma mudança visível na
interface, tratamento de entrada inválida e limpeza. O registro do runtime e as verificações
do navegador são reais; os rótulos das fases são avançados por um script para legibilidade, então a
gravação não executa as fases de inventário, integração ou auditoria da habilidade. Reproduza
as verificações nativas com npm run proof:verify; o pacote proof/ contém
o fixture, manifestos antes/depois, um patch ilustrativo e somas de verificação.
Instalação
| Onde | Como |
|---|---|
| Qualquer agente — Claude Code, Codex, Cursor, opencode, Copilot e 70+ outros | npx skills add TueJon/webmcpify |
| Plugin do Claude Code | /plugin marketplace add TueJon/webmcpify e depois /plugin install webmcpify@webmcpify |
| Manual | Copie skills/webmcpify/ para o diretório de habilidades do seu agente, ou diga ao seu agente para seguir SKILL.md |
O diretório de habilidades é autocontido: pipeline, guias de fase, runtime embutível e o modelo de verificação estão todos incluídos nele.
Uso
Abra seu agente no repositório de destino e escolha um escopo — ou apenas diga "webmcpify este aplicativo".
| Comando | O que acontece | Altera seu código |
|---|---|---|
/webmcpify | Pipeline completo, retomando onde o manifesto indica | Após sua aprovação |
/webmcpify inventory | Investigar e propor o manifesto de ferramentas | Nunca |
/webmcpify integrate | Integrar o manifesto aprovado em pequenos lotes | Sim |
/webmcpify workbench | Agente inicia um inspetor visual temporário de ferramentas | Não — apenas auxílio de desenvolvimento |
/webmcpify verify | Verificar e corrigir o que está integrado | Somente para corrigir uma ferramenta com falha |
/webmcpify status | Onde estamos, o que vem a seguir | Nunca (somente leitura) |
/webmcpify full parity | Censo de cada elemento interativo em cada rota autenticada | Após sua aprovação |
Núcleo selecionado ou paridade rota por rota
| Selecionado | Paridade | |
|---|---|---|
| Objetivo | Um conjunto de ferramentas utilizável para as ações que importam | Completude auditável |
| Saída | Mapa revisado de rota → ferramenta para ações principais | Censo por rota de elementos: cada interação mapeia para uma ferramenta ou um motivo escrito |
| Mantém utilizável por | Ondas de prioridade, uma regra de sobreposição (nenhuma duas ferramentas correspondem à mesma solicitação), cobertura de função/tenant | Registro com escopo de rota; lacunas de capacidade do cliente são relatadas, nunca adivinhadas |
O agente pede que você escolha antes do inventário — não há padrão silencioso — e uma contagem de ferramentas sozinha nunca é chamada de 100%.
Garantias
| Garantia | Como é aplicada | |
|---|---|---|
| 🧩 | Código não relacionado permanece intocado | Cada trecho de diff rastreia até uma entrada do manifesto; uma auditoria final verifica contra o commit de linha de base registrado; arquivos já sujos no início nunca são modificados ou revertidos |
| 🔒 | Somente leitura primeiro | Mutações do servidor precisam da sua aprovação explícita por ferramenta; autenticação, cadastro, cobrança, pagamento e ferramentas que retornam credenciais permanecem excluídas; exclusões irreversíveis só podem abrir a interface de confirmação do próprio aplicativo |
| 🛡️ | Seu servidor permanece o limite de confiança | Ferramentas só chamam caminhos de código que sua interface já usa — sem novos endpoints, sem desvios |
| 📦 | Zero dependências | Um runtime MIT pequeno é embutido e detectado por recursos; o aplicativo se comporta da mesma forma em navegadores sem WebMCP |
| 🚦 | Sem resultados imperativos ambíguos | O runtime rejeita null / undefined nus acidentais; ferramentas que mudam de rota retornam um resultado estruturado antes da navegação e da eliminação do escopo da rota |
| 🧪 | Exercitado, não presumido | Cada ferramenta roda no Chrome real contra o resultado e o estado da interface; mutações são confirmadas por um caminho de leitura independente com um vizinho inalterado; formulários declarativos recebem o clique de envio real |
| 📝 | Verificações de mutação à prova de falhas | Um auxiliar de host sem dependências registra despachos e limpezas, resolve resultados verificados atomicamente e serializa executores por meio de um arquivo lateral de bloqueio consultivo no Linux e macOS/FreeBSD |
| ♻️ | Retomada honesta | Arquivos alterados, contratos, runtimes ou navegadores invalidam as evidências que afetam, dependências desconhecidas significam uma nova verificação completa e mutações interrompidas são reconciliadas antes de qualquer nova tentativa (re-verificação) |
| 🔐 | Acesso com escopo | Um contexto de teste dedicado com origens, contas e fixtures aprovados; orientação oficial é lida diretamente, nunca executada como um pacote não revisado |
| 🧭 | Especificação em vez de placar | Descobertas do verificador são classificadas, não perseguidas; a camada de descoberta pública (/.well-known/webmcp) é uma aprovação separada |
Construído para escalar para grandes bases de código
- Inventário mapeia a base de código em áreas (rotas, visualizações, módulos) primeiro, depois faz leitura profunda de uma área por iteração — um SaaS de 500 arquivos é processado área por área, nunca em uma varredura única que estoura o contexto. Fan-out de subagentes grava arquivos de fragmento por área; um único coordenador os mescla.
- Integração funciona em lotes de uma área ou no máximo cinco ferramentas, cada uma construída e verificada por tipo — commit por lote somente se você optou por isso.
- Verificar / Corrigir itera por ferramenta com limites de tentativas e escalonamento honesto; ferramentas mutáveis recebem etapas de limpeza entre novas tentativas.
- Interrompa em qualquer lugar. A próxima execução retoma do manifesto;
statuspermanece somente leitura.
Status da plataforma e compatibilidade
WebMCP é um teste de origem (Chrome 149 em diante; o marco estável é uma
estimativa, não um compromisso). Exposição em produção precisa de um
token de teste de origem; desenvolvimento local
precisa de chrome://flags/#enable-webmcp-testing. A API já mudou durante
o teste (API de teste removida em 2026-07; navigator → document) — webmcpify
isola essa mudança em um único arquivo embutido, e sua verificação testa se o
navegador aceita entrada de objeto atual ou a entrada legada de string JSON do Chrome 150 sem
repetir ferramentas reais. A integração lê os guias oficiais do Chrome e o rascunho do CG
diretamente.
A superfície de cliente separada do ChatGPT, limitada por modelo e conta, é documentada como Site tools, com fatos de disponibilidade datados e uma ordem de solução de problemas. Adaptações de especificação por versão estão no changelog.
O que há neste repositório
| Caminho | Propósito |
|---|---|
skills/webmcpify/SKILL.md | O pipeline que seu agente segue |
skills/webmcpify/references/ | Guias de fase: inventário, integração, Workbench, runtime, verificação, re-verificação, correção, segurança, descoberta, superfícies de cliente |
skills/webmcpify/templates/ | Runtime embutível (TS + JS), diário de mutação durável, Workbench visual temporário, tipos ambientais, modelo de verificação Playwright, manifesto de descoberta |
proof/ | Prova reproduzível em Chrome nativo: fixture, manifestos, gravação, somas de verificação |
Projetos relacionados
- webmcpify.at — o site do projeto, ele próprio pronto para agentes nas três camadas: ferramentas imperativas via runtime embutido, um formulário de instalação declarativo e um manifesto
/.well-known/webmcppublicado - webmachinelearning/webmcp — o rascunho da especificação (W3C WebML CG)
- GoogleChromeLabs/webmcp-tools — demos, tipos e CLI de avaliações do Google (webmcpify segue esses padrões)
- GoogleChrome/modern-web-guidance — guias oficiais de melhores práticas (CLI opcional; aprovação de versão exata e execução necessária)
- Puppeteer WebMCP — API experimental de automação WebMCP de primeira classe (Chrome 151+ conforme documentado em 2026-08-29; harness de verificação alternativo)
- MCP-B / WebMCP-org — polyfill, extensão, transportes e ferramentas de desenvolvimento (webmcpify embute um runtime mínimo em vez de adicionar dependências)
Licença
MIT — © Jonas Tüchler
