Modele a jornada como estados
O que é: Cada etapa declara o que já aconteceu, quais ações estão disponíveis e qual transição é válida.
Por que aprender: Sem um modelo de estado, o agente pode confirmar antes de iniciar ou repetir um efeito já concluído.
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.
rascunho -> iniciado -> aguardando_confirmacao -> confirmado
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
estado explícito
transição válida
pré-condição
efeito
Separe erros recuperáveis e definitivos
O que é: Erros recuperáveis indicam uma próxima ação; erros definitivos encerram a tentativa com motivo verificável.
Por que aprender: A classificação evita loops cegos e permite que o agente explique alternativas reais ao usuário.
| 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.
return {
ok: false,
code: "INSCRICAO_NAO_INICIADA",
recovery: { tool: "iniciar_inscricao" }
};
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
código estável
mensagem acionável
próxima ação
fim honesto
Proteja contra stale state
O que é: O estado usado para decidir pode mudar antes da execução, especialmente em vagas, preços e permissões.
Por que aprender: Revalidar no momento do efeito impede que uma tool use uma fotografia antiga como autorização atual.
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 (input.version !== inscricao.version) {
throw new ConflictError("Estado mudou; consulte novamente.");
}
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
revalidação
versão de estado
conflito
nova leitura
Faça mutações idempotentes
O que é: Uma chave de idempotência permite repetir uma solicitação sem duplicar inscrição, cobrança ou envio.
Por que aprender: Agentes, redes e usuários podem repetir chamadas; a operação precisa distinguir retry de novo efeito.
CÓDIGO DE REFERÊNCIA
headers: { "Idempotency-Key": executionId }
É 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
idempotency key
retry seguro
resultado anterior
efeito único
Cancele e limite o tempo
O que é: AbortSignal e timeout encerram trabalho que perdeu relevância ou excedeu a janela operacional.
Por que aprender: Cancelar de verdade preserva recursos e evita que a interface mostre sucesso depois que a pessoa desistiu.
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
const signal = AbortSignal.any([
executionSignal,
AbortSignal.timeout(8000)
]);
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
timeout
cleanup visual
resultado cancelado
Teste a recuperação ponta a ponta
O que é: A integração deve provar caminho feliz, ordem inválida, retry, cancelamento e mudança concorrente.
Por que aprender: Uma matriz de falhas transforma resiliência em comportamento verificável, não em intenção de arquitetura.
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 uma inscrição em etapas que bloqueia chamadas fora de ordem e devolve instruções de recuperação.
Critério de Integrator responsável
A entrega precisa funcionar, explicar seus limites e preservar o caminho humano quando a capacidade experimental não existir.
confirmar antes de iniciar -> recovery: iniciar_inscricao
retry com mesma chave -> mesmo resultado
timeout -> interface volta ao estado estável
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
cenários
evidência
reprodução
regressão
📦 Entrega do módulo
Implementar uma inscrição em etapas que bloqueia chamadas fora de ordem e devolve instruções de 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.