Imagem de capa de WebMCP na prática com document.modelContext, com o índice do texto

WebMCP na prática com document.modelContext

O WebMCP é uma API JavaScript, proposta no grupo comunitário Web Machine Learning do W3C, que deixa a página expor funções como ferramentas para agentes chamarem no navegador. Em novembro de 2026, o registro é feito em document.modelContext, o origin trial começou no Chrome 149 e foi estendido até o Chrome 162, e este site expõe 14 ferramentas.

  • O rascunho da especificação WebMCP, do grupo comunitário Web Machine Learning do W3C, define modelContext como atributo de Document, em contexto seguro;
  • Pela mesma especificação, registerTool recebe a ferramenta e um objeto de opções com signal, e devolve uma Promise;
  • O origin trial do WebMCP começou no Chrome 149, com anúncio publicado em 9 de junho de 2026, e em 28 de setembro de 2026 o Chrome registrou a extensão até o Chrome 162;
  • A ToolAnnotations da especificação tem só quatro dicas booleanas, readOnlyHint, untrustedContentHint, consequentialHint e debugging;
  • O lucasferraz.com expõe 14 ferramentas WebMCP em /agentes/webmcp.js, e 12 delas levam readOnlyHint verdadeiro;
  • Em 25 de setembro de 2026, o primeiro resultado em português para "webmcp como implementar registerTool" ainda ensinava navigator.modelContext.

O que é WebMCP?

O WebMCP é uma API JavaScript proposta no grupo comunitário Web Machine Learning do W3C que deixa a página expor funções como ferramentas para agentes de IA e tecnologias assistivas chamarem no navegador. Cada ferramenta tem nome, descrição em linguagem natural e um schema de entrada, e o agente decide quando chamar. O Chrome descreve duas APIs, a declarativa, que transforma um formulário HTML em ferramenta, e a imperativa, que registra a ferramenta por JavaScript.

O WebMCP difere do MCP no lugar onde a ferramenta roda. No MCP, a ferramenta roda em um servidor que o agente acessa pela rede. No WebMCP, ela roda no script da própria página, com a sessão de quem está navegando. O lado do servidor está no texto sobre servidor MCP em um site.

O WebMCP deixa a página registrar ferramentas que um agente de IA chama no navegador, com a sessão de quem navega, enquanto no MCP a ferramenta roda em um servidor.

Lucas Ferraz, especialista em SEO

Resumo e principais pontos de WebMCP na prática com document.modelContext, por Lucas Ferraz
Resumo e principais pontos deste texto em uma imagem.

Onde a API mora agora?

O WebMCP registra ferramentas em document.modelContext, e não em navigator.modelContext, na especificação e na documentação do Chrome de novembro de 2026. O rascunho da especificação define modelContext como atributo de Document, exposto só em contexto seguro, com três métodos, registerTool, getTools e executeTool. O navigator.modelContext é o local antigo, que alguns builds ainda expõem como alias, e não aparece no texto atual da especificação.

A assinatura também mudou em relação às primeiras demonstrações. O registerTool recebe a ferramenta e um objeto de opções, onde vão o signal de um AbortController para desregistrar e a lista exposedTo, e devolve uma Promise. A ferramenta tem name, title, description, inputSchema, outputSchema, a função execute e annotations. A especificação define só quatro anotações, todas booleanas, readOnlyHint, untrustedContentHint, consequentialHint e debugging. Pela documentação do Chrome, a partir do Chrome 153 desregistrar uma ferramenta não cancela as execuções que já estão em andamento.

const mc = document.modelContext || navigator.modelContext;
if (mc && typeof mc.registerTool === 'function') {
  const ctrl = new AbortController();
  mc.registerTool({
    name: 'gerar_url_amigavel',
    description: 'Converte um título em slug de URL amigável.',
    inputSchema: { type: 'object', properties: { texto: { type: 'string' } }, required: ['texto'] },
    annotations: { readOnlyHint: true },
    execute: async ({ texto }) => ({ content: [{ type: 'text', text: slugify(texto) }] })
  }, { signal: ctrl.signal }).catch(() => {});
}

O fallback para navigator.modelContext cobre os builds que ainda expõem o local antigo. Quando o Chrome remover o alias, a primeira condição basta.

O que estava errado no meu site?

A implementação que publiquei em 5 de setembro de 2026 checava só navigator.modelContext e não tinha token de origin trial, então nenhuma ferramenta era registrada para um visitante comum. O script fazia feature detection e ficava inerte quando a API não existia, o que é o comportamento certo. O problema é que ele procurava a API no lugar antigo, e no Chrome estável a API só aparece com o token do trial. Duas condições, as duas falhando em silêncio.

Encontrei o erro ao preparar este texto, lendo a especificação atual contra o código. Três ajustes entraram em 25 de setembro. O script passou a procurar primeiro em document.modelContext. O registerTool passou a receber o signal no objeto de opções, como a especificação define. E o tema ganhou a saída da meta tag de origin trial, que imprime o token quando ele estiver configurado.

PontoAté 25/09/2026Depois
Onde procura a APInavigator.modelContextdocument.modelContext, com fallback
Token de origin trialausentemeta tag, quando o token existir
signaldentro da ferramentano objeto de opções do registerTool
Anotação de leituraausentereadOnlyHint nas cinco ferramentas

A busca mostra que o desencontro não é só meu. Em 25 de setembro, o primeiro resultado em português para "webmcp como implementar registerTool" era um tutorial de 17 de setembro que ainda ensinava navigator.modelContext.

O token que liga a API

Fora da flag de teste, o Chrome só expõe o WebMCP em origens registradas no origin trial, que começou no Chrome 149 e, pela extensão registrada em 28 de setembro de 2026, vai até o Chrome 162. O trial original terminava no Chrome 156, e o Chrome Status atribui a extensão às melhorias feitas na API a partir do retorno do trial. A data de calendário do fim não foi publicada.

O registro é feito no painel de origin trials do Chrome, para o domínio, e devolve um token. O token vai na página como meta tag http-equiv origin-trial, ou no cabeçalho HTTP Origin-Trial. Para desenvolver, a flag chrome://flags/#enable-webmcp-testing liga a API só na sua máquina.

Como a página que carrega o token pode ficar em cache na CDN, prefiro a meta tag no HTML a um cabeçalho montado por requisição. O HTML é igual para todos os visitantes, e o token também. Quando o trial terminar, o token para de valer e a API some, sem quebrar o site, porque o script continua fazendo feature detection.

Quais ferramentas publiquei?

O lucasferraz.com serve 14 ferramentas WebMCP em /agentes/webmcp.js, e 12 delas levam readOnlyHint verdadeiro. O arquivo é gerado de um template com as ferramentas da mesma função que alimenta o servidor MCP do site em /mcp, então os dois saem de uma definição só. As ferramentas ficam em dois grupos.

  • Do servidor (8): search_content, list_studies, get_study, list_posts, get_page_markdown, get_author_profile, get_book e cite, cujo execute chama o /mcp da mesma origem, sem credencial, e marca a chamada com a origem webmcp;
  • Da página (6): get_current_page, list_page_sections, scroll_to_section, open_faq_answer, navigate_to e set_color_theme, que só existem no navegador.

O registro das ferramentas do servidor é um laço curto sobre a mesma lista do /mcp.

TOOLS.forEach(function (t) {
  registrar({
    name: t.name, title: t.title, description: t.description, inputSchema: t.inputSchema, annotations: t.annotations,
    execute: function (input) { return chamarMcp(t.name, input); }
  });
});

As duas sem readOnlyHint verdadeiro são navigate_to, que abre outra página do próprio site, e set_color_theme, que troca o tema claro ou escuro. As duas mudam a página, e nenhuma das duas envia dado. No site da agência, as ferramentas WebMCP seguem a mesma regra, e a que leva ao pedido de orçamento é um caso pequeno de comércio agêntico, com o envio sempre na mão de quem navega.

A regra vem da própria orientação de segurança do Chrome e da natureza da API. A ferramenta roda na página, com a sessão de quem está navegando. Um agente que leu conteúdo malicioso pode chamar uma ferramenta legítima com um pedido falso. Por isso só publico o que um humano não se incomodaria de ver sendo chamado sem aviso, e marco com readOnlyHint o que não muda nada.

Relendo o código contra a IDL de 2 de novembro, achei um resíduo do MCP. O objeto de anotações do site leva também destructiveHint, idempotentHint e openWorldHint, que vêm das anotações do MCP e não existem na ToolAnnotations do WebMCP. Na conversão de dicionário do WebIDL, membro desconhecido é ignorado, então nada quebra, mas essas três dicas não dizem nada ao navegador.

Experimento, não canal

O WebMCP ainda é um experimento, e até novembro de 2026 não encontrei fonte primária de um agente de uso amplo que chame essas ferramentas em produção. No Google I/O de 2026, o Google anunciou que o Gemini no Chrome vai suportar o WebMCP em breve, o que é promessa e não uso. O custo de manter é baixo, com um script gerado da mesma definição do servidor MCP e uma meta tag com o token.

O que acompanho é o registro do servidor deste site. O /mcp grava cada chamada com data, método, ferramenta e cliente, sem IP, e a chamada que vem do WebMCP chega marcada com a origem webmcp. As seis ferramentas da página não passam pelo servidor e não deixam rastro nele. Quando o registro mostrar chamadas de um agente real, este texto ganha uma atualização com o que foi chamado e de onde.

Nota de método

O que foi medido
O código do webmcp.js publicado no site da agência desde 5 de setembro de 2026, o /agentes/webmcp.js deste site e o template que o gera, a especificação WebMCP nas versões lidas em 25 de setembro e 2 de novembro de 2026, a página do WebMCP no Chrome Status, a documentação do Chrome e a primeira página de resultados em português para a busca sobre como implementar.
Quando
25 de setembro de 2026 e 2 de novembro de 2026.
Como
Leitura da IDL da especificação nas duas datas, teste do código novo com um document.modelContext simulado em setembro, leitura do Chrome Status e da documentação do Chrome em novembro, leitura do código do /agentes/webmcp.js e da meta do token no HTML deste site e leitura da SERP com gl=br.
Limitação
O token do origin trial está no HTML deste site desde 1º de outubro de 2026, mas até 2 de novembro não observei chamada de um agente real às ferramentas. O registro do servidor só enxerga as oito ferramentas que passam pelo /mcp.

Os termos de medição estão definidos no vocabulário de medição, e o protocolo das rodadas na política editorial.

O que a IA desdobra desta pergunta?

Quando alguém faz esta busca em uma IA, o sistema abre subperguntas antes de responder. Estas são as que apareceram na medição, e onde cada uma é respondida.

Perguntas frequentes

Para testar na sua máquina, não. A flag chrome://flags/#enable-webmcp-testing liga a API localmente. Para que visitantes comuns do Chrome tenham a API exposta no seu site, sim, é o token do origin trial, que vai do Chrome 149 ao 162 depois da extensão, servido em uma meta tag http-equiv origin-trial ou no cabeçalho HTTP Origin-Trial.

Até novembro de 2026, não encontrei fonte primária de um agente de uso amplo que chame essas ferramentas em produção. No Google I/O de 2026, o Google anunciou que o Gemini no Chrome vai suportar o WebMCP em breve, o que ainda é promessa. Por isso trato o WebMCP como experimento, com custo baixo e sem expectativa de tráfego.

Tecnicamente pode, e é o tipo de ferramenta que eu não publico. A ferramenta roda na página com a sessão do usuário, e um agente enganado por conteúdo malicioso pode chamá-la. No site da agência, a ferramenta de contato só preenche os campos e pede que a pessoa revise e envie.

O WebMCP funciona hoje no Chrome, pela flag de teste ou pelo origin trial. Na página da funcionalidade no Chrome Status, Firefox e Safari aparecem sem sinal, ou seja, nenhum dos dois declarou posição sobre a API. Por isso o script que publico faz feature detection e fica inerte em qualquer navegador sem document.modelContext.

Fontes citadas

  1. W3C Web Machine Learning Community Group, WebMCP, Draft Community Group Report (2026)
  2. Chrome for Developers, Join the WebMCP origin trial (9 de junho de 2026) (2026)
  3. Chrome for Developers, WebMCP is available for early preview (10 de fevereiro de 2026) (2026)
  4. Chrome for Developers, segurança de ferramentas WebMCP (2026)
  5. Chrome Status, WebMCP (origin trial e extensão até o Chrome 162) (2026)
  6. Chrome for Developers, documentação do WebMCP (2026)
  7. Chrome for Developers, Chrome no Google I/O 2026 (19 de maio de 2026) (2026)

Histórico deste texto

  • : Seção nova sobre o que é o WebMCP, estado do origin trial com a extensão até o Chrome 162, anotações conferidas na especificação de novembro, as 14 ferramentas deste site como exemplo e uma pergunta nova no FAQ.