Separe proposta de execução
O que é: A chamada produzida pelo modelo é uma proposta não confiável até passar por validação e política.
Por que aprender: A fronteira impede que texto probabilístico se transforme diretamente em efeito.
Antes de modelar
Escreva o pedido da pessoa, o estado atual e a evidência que provará conclusão.
Erro de partida
Começar pelo nome de uma função ou por um botão produz uma tool sem objetivo humano claro.
Preveja antes de abrir o código
Qual informação muda a decisão? Qual efeito precisa aparecer na interface? Responda antes de implementar.
const proposal = await model.chooseTool(context);
const approved = await gate.evaluate(proposal, session);
Indo mais fundo: evidência que vale guardar
Registre a entrada, o estado anterior, a decisão tomada, o resultado e a alteração visível da página.
Inclua também uma falha provocada e o comportamento observado sem suporte WebMCP.
Conceitos-chave
tool call
untrusted input
policy gate
execução
Valide o schema novamente
O que é: Mesmo quando o provedor aplica schemas, o runtime valida tipos, limites, enums e campos extras.
Por que aprender: Defesa em profundidade contém divergências de provider e chamadas produzidas por código externo.
| Pergunta | Contrato forte | Contrato fraco |
|---|---|---|
| Quando usar? | A descrição nomeia intenção e contexto. | “Faz coisas” ou “gerencia”. |
| O que recebe? | Somente dados necessários. | Objeto genérico e ilimitado. |
| O que devolve? | Estado e próxima ação verificáveis. | Texto sem protocolo. |
| Como falha? | Código, motivo e recuperação. | Exceção opaca. |
Faça
- ✓ Use verbos específicos.
- ✓ Delimite entradas.
- ✓ Declare a evidência.
Evite
- ✗ Misturar intenções.
- ✗ Aceitar qualquer objeto.
- ✗ Esconder efeitos.
const result = validator.validate(tool.inputSchema, proposal.arguments);
if (!result.ok) return fail("INVALID_ARGUMENTS", result.errors);
Indo mais fundo: evidência que vale guardar
Registre a entrada, o estado anterior, a decisão tomada, o resultado e a alteração visível da página.
Inclua também uma falha provocada e o comportamento observado sem suporte WebMCP.
Conceitos-chave
JSON Schema
coerção proibida
limites
erro estável
Aplique política antes do efeito
O que é: Risco, autenticação, escopo e necessidade de confirmação são decididos fora do modelo.
Por que aprender: O LLM pode recomendar; a aplicação continua responsável por autorizar.
Observe
Capture estado, entrada e contexto antes da ação.
Decida
Valide pré-condições e escolha a transição permitida.
Execute
Aplique a regra compartilhada e respeite cancelamento.
Prove
Atualize a interface e devolva resultado estruturado.
Ponto de controle
Se a etapa 2 reprovar, a tool não tenta “dar um jeito”: ela devolve uma recuperação explícita.
if (tool.annotations?.destructiveHint) {
await requireHumanConfirmation(proposal);
}
Indo mais fundo: evidência que vale guardar
Registre a entrada, o estado anterior, a decisão tomada, o resultado e a alteração visível da página.
Inclua também uma falha provocada e o comportamento observado sem suporte WebMCP.
Conceitos-chave
autorização
risco
confirmação
escopo
Execute com orçamento e cancelamento
O que é: Toda execução recebe AbortSignal, deadline e limites compatíveis com a experiência.
Por que aprender: Uma conversa abandonada não deve manter rede, UI ou backend trabalhando indefinidamente.
CÓDIGO DE REFERÊNCIA
const signal = AbortSignal.any([turn.signal, AbortSignal.timeout(10_000)]);
const tools = await document.modelContext.getTools();
const tool = tools.find((item) => item.name === proposal.name);
if (!tool) throw new Error("Tool não está mais disponível");
return document.modelContext.executeTool(tool, proposal.arguments, { signal });
É pequena, descrita e validável.
Reutiliza a regra real da aplicação.
Permite verificar efeito e continuar.
Leia o código como contrato
Sublinhe onde a entrada é validada, onde o efeito acontece, onde o cancelamento chega e onde a UI é atualizada.
Indo mais fundo: evidência que vale guardar
Registre a entrada, o estado anterior, a decisão tomada, o resultado e a alteração visível da página.
Inclua também uma falha provocada e o comportamento observado sem suporte WebMCP.
Conceitos-chave
AbortSignal
deadline
resource budget
cleanup
Normalize resultados e falhas
O que é: O runtime converte retornos heterogêneos em envelopes com status, dados, evidência e próxima ação.
Por que aprender: Uma forma comum simplifica o loop sem esconder o erro original.
Falha provocada
Execute o cenário com estado ausente, entrada inválida ou capacidade indisponível.
Recuperação esperada
A resposta informa o que falhou, o que permanece seguro e qual ação pode continuar.
Matriz mínima de teste
✓ caminho feliz reproduzível
✓ entrada inválida acionável
✓ cancelamento encerra trabalho
✓ fallback preserva a jornada
✓ interface reflete o estado
✓ backend mantém autorização
return { ok: false, code: "AUTH_REQUIRED", recovery: { action: "request_login" } };
Indo mais fundo: evidência que vale guardar
Registre a entrada, o estado anterior, a decisão tomada, o resultado e a alteração visível da página.
Inclua também uma falha provocada e o comportamento observado sem suporte WebMCP.
Conceitos-chave
envelope
erro recuperável
evidência
next action
Registre um rastro reproduzível
O que é: Cada execução liga turno, catálogo, proposta, decisão de política, duração e resultado sanitizado.
Por que aprender: O rastro permite depurar seleção, execução e efeito sem gravar segredos.
Exercício de síntese
- 1. Explique o problema sem usar o nome da tecnologia.
- 2. Desenhe o estado anterior e posterior.
- 3. Implemente a menor prova funcional.
- 4. Provoque uma falha e registre a recuperação.
- 5. Entregue código, evidência e uma limitação conhecida.
Desafio do módulo
Implementar um executor que recebe uma chamada do modelo, valida a intenção e devolve envelope de sucesso, erro ou recuperação.
Critério de Agent Developer responsável
A entrega precisa funcionar, explicar seus limites e preservar o caminho humano quando a capacidade experimental não existir.
trace.record({ turnId, tool: proposal.name, policy: approved.reason, durationMs, outcome });
Indo mais fundo: evidência que vale guardar
Registre a entrada, o estado anterior, a decisão tomada, o resultado e a alteração visível da página.
Inclua também uma falha provocada e o comportamento observado sem suporte WebMCP.
Conceitos-chave
traceId
catalog version
latência
redaction
📦 Entrega do módulo
Implementar um executor que recebe uma chamada do modelo, valida a intenção e devolve envelope de sucesso, erro ou recuperação.
Critério de aceite
A entrega funciona com suporte WebMCP e mantém o caminho manual quando a API não existe.
Evidência
Inclua código, cenário testado, resultado observado e uma limitação conhecida.
Fontes técnicas
- Draft e repositório oficial WebMCP
- Especificação renderizada
- Snapshot oficial: 26/08/2026 · commit 41d12f0. A API declarativa permanece experimental; valide o draft antes de produção.