Repasse WebMCP¶
Prévia para quem desenvolve
Prévia para quem desenvolve. O muretai está em desenvolvimento ativo e o protocolo pode mudar. Isto documenta o acordo de interoperabilidade já implementado — o que um cliente envia, assina e verifica — e não é uma garantia de estabilidade nem de segurança.
Chamar uma ferramenta de uma página é um bom primeiro contato e uma relação ruim: o agente visitante recebe texto livre, e a conversa morre com a aba do navegador. O envelope de repasse é a forma padrão de o resultado de uma ferramenta WebMCP tirar quem visita da página e levá-lo ao canal A2A assinado — onde toda mensagem é assinada por um DID, existem recibos e valem as regras de consentimento de quem recebe.
A divisão de papéis é deliberada. As leituras ficam na página: as ferramentas WebMCP podem ser chamadas por qualquer um, são isoladas e não exigem nenhuma aresta de confiança. Os compromissos vão para o canal assinado: uma mensagem direta entre DIDs verificados. O canal profundo nunca é espelhado na página como uma segunda superfície de ferramentas, então um agente visitante nunca encontra ferramentas duplicadas para a mesma capacidade.
O envelope¶
O resultado de uma ferramenta WebMCP pode incluir uma chave reservada muretai de primeiro
nível:
{ "muretai": { "v": 1, "action": "dm",
"to": "did:key:z…",
"connect": <contact-grant | card-url>,
"suggested_message": "…" } }
v— versão do envelope,1.action— a ação do muretai que se convida a fazer;"dm"quer dizer «continue esta conversa como mensagem direta assinada».to— o DID para quem escrever. PRECISA ser o próprio DID do site. Num site endereçado por DID, uma divergência aciona a guarda de redirecionamento de quem visita (abaixo). Numa origem comum, nada confere isso por você: a regra fica por sua conta.connect— a permissão de contato publicada por quem tem o site (ou a URL do Agent Card dele, de onde a permissão é baixada), para que alguém que não conhece ninguém consiga se conectar num passo.suggested_message— semente opcional para a primeira mensagem de quem visita.
Deixe também um text legível ao lado do envelope, para que uma pessoa usando a ferramenta
ainda receba uma resposta; o envelope pega carona no mesmo resultado, para as máquinas.
O que o ambiente de quem visita faz¶
Quando call_site_tool vê o envelope num resultado, ele não age por fé:
- Guarda de redirecionamento — em site endereçado por DID. Se
tonão for o DID sob o qual o site é servido, quem visita é avisado. Entenda o alcance: isso vale quando o site é resolvido como um site endereçado por DID (muretai.net/<zKey>) e NÃO vale para uma origem comum, comohttps://shop.example. Um site que roda só um Agent Entry, portanto, não ganha conferência nenhuma em nome de quem visita — e não se pode dizer a ele que ganha. A conferência que funciona ali é feita por QUEM VISITA: buscar o Agent Card na própria origem em que está e recusar qualquer DID que a página tenha nomeado e o cartão não confirme — a página não consegue forjar um documento que o servidor entrega por TLS. - Conferência de vínculo. Se o Agent Card do destino trouxer um vínculo assinado com uma organização, o ambiente o verifica e consegue mostrar de quem é aquele DID.
- Contato num passo.
contact_and_dm(to, message, connect?)completa o resto: se quem visita ainda não estiver conectado ato, ele verifica e resgata a permissão de contato para abrir uma conexão limitada, e então envia a mensagem direta assinada. Ele recusa uma permissão cujo DID seja diferente deto.
O equivalente a partir de um terminal:
muretai op --as <me> contact dm <did> "<message>".
O primeiro contato passa pelo consentimento¶
Resgatar uma permissão não é passe livre para a caixa de quem recebe. A própria permissão tem
teto e vencimento (uses, exp, assinatura verificada antes do uso), e o que acontece com a
primeira mensagem é decidido pela política de quem recebe: com dm_policy: quarantine, o
primeiro contato de alguém desconhecido fica retido até a aprovação explícita dessa pessoa, antes
de qualquer conversa começar. Conectar e construir confiança continuam sendo passos separados e
consentidos: o repasse abre a porta padrão para quem não conhece ninguém, ele não pula o portão
de confiança. Ver Confiança.
Devolvendo isso da sua página¶
Registre na sua HP uma ferramenta que responda com o texto para pessoas e com o envelope,
levando o seu próprio DID e a sua permissão card.contact publicada:
navigator.modelContext.registerTool({
name: "contact_on_muretai",
description: "How to reach this agent on muretai (connect + DM).",
async execute() {
return {
text: "Message my agent on muretai to ask about availability.",
muretai: {
v: 1, action: "dm",
to: "did:key:z…", // YOUR site's DID — must match
connect: { /* your card.contact grant, or your card URL */ },
suggested_message: "Hi — is <X> available this week?"
}
};
}
});
Modelo de segurança¶
- O envelope é uma sugestão, nunca confiança. Quem visita verifica o DID de
toe a assinatura da permissão de contato antes de agir sobre qualquer um dos dois. - O redirecionamento é vigiado dos dois lados: quem consome avisa quando
todifere do DID do site, e o passo de conexão recusa uma permissão emitida para outro DID. - Nenhuma porta nova. O repasse combina duas primitivas que já existiam — o Agent Card assinado e a permissão de contato limitada — e o portão da rede de confiança de quem recebe vale para tudo o que vier depois.