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

webmcpify — make any web app agent-ready, verifiably. The WebMCP agent skill for existing web apps.

Latest release Checks MIT license WebMCP: document.modelContext

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

Pipeline: detect, inventory, you approve the tool manifest, integrate, verify in real Chrome, heal failures with capped retries, audit. Every phase reads and writes .webmcpify/manifest.json.

  • 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

Watch the uncut 63-second runtime demo: approval click, native getTools and executeTool, UI change, invalid input, cleanup

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

OndeComo
Qualquer agente — Claude Code, Codex, Cursor, opencode, Copilot e 70+ outrosnpx skills add TueJon/webmcpify
Plugin do Claude Code/plugin marketplace add TueJon/webmcpify e depois /plugin install webmcpify@webmcpify
ManualCopie 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".

ComandoO que aconteceAltera seu código
/webmcpifyPipeline completo, retomando onde o manifesto indicaApós sua aprovação
/webmcpify inventoryInvestigar e propor o manifesto de ferramentasNunca
/webmcpify integrateIntegrar o manifesto aprovado em pequenos lotesSim
/webmcpify workbenchAgente inicia um inspetor visual temporário de ferramentasNão — apenas auxílio de desenvolvimento
/webmcpify verifyVerificar e corrigir o que está integradoSomente para corrigir uma ferramenta com falha
/webmcpify statusOnde estamos, o que vem a seguirNunca (somente leitura)
/webmcpify full parityCenso de cada elemento interativo em cada rota autenticadaApós sua aprovação

Núcleo selecionado ou paridade rota por rota

SelecionadoParidade
ObjetivoUm conjunto de ferramentas utilizável para as ações que importamCompletude auditável
SaídaMapa revisado de rota → ferramenta para ações principaisCenso por rota de elementos: cada interação mapeia para uma ferramenta ou um motivo escrito
Mantém utilizável porOndas de prioridade, uma regra de sobreposição (nenhuma duas ferramentas correspondem à mesma solicitação), cobertura de função/tenantRegistro 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

GarantiaComo é aplicada
🧩Código não relacionado permanece intocadoCada 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 primeiroMutaçõ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çaFerramentas só chamam caminhos de código que sua interface já usa — sem novos endpoints, sem desvios
📦Zero dependênciasUm runtime MIT pequeno é embutido e detectado por recursos; o aplicativo se comporta da mesma forma em navegadores sem WebMCP
🚦Sem resultados imperativos ambíguosO 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 presumidoCada 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 falhasUm 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 honestaArquivos 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 escopoUm 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 placarDescobertas 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; status permanece 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

CaminhoPropósito
skills/webmcpify/SKILL.mdO 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/webmcp publicado
  • 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