Agent Tools & Interoperability
Um agente isolado é uma máquina customizada numa garagem. Um agente interoperável é membro de uma força de trabalho global. Este guia resume o paper "Agent Tools & Interoperability" (Kanchana Patlolla, Łukasz Olejniczak & Pier Paolo Ippolito, Google) em formato interativo: o stack de protocolos — MCP, A2A, A2UI, AP2 e UCP — com diagramas clicáveis, simuladores, quiz e cheatsheets.
Pressupõe familiaridade com o Dia 1 (Agentic Engineering e o Factory Model). Não pressupõe conhecimento prévio dos protocolos — MCP, A2A, A2UI, AP2 e UCP são apresentados do zero, com analogias.
Introdução: o stack que tira o agente da garagem
Agent = Model + Harness — e os protocolos são os parafusos e porcas padronizados que tornam o harness conectável ao mundo.
O Dia 1 estabeleceu a mudança de paradigma: do código escrito à mão para a Agentic Engineering, onde o desenvolvedor opera como um Factory Model — projetando a linha de produção, não apertando cada parafuso. A equação central daquele paper continua sendo a fundação de tudo o que vem a seguir:
O harness — o andaime de ferramentas, memória, transporte e segurança ao redor do modelo — só atinge seu potencial quando se conecta ao mundo por padrões abertos. Sem padrões, cada integração é uma peça usinada sob medida: funciona na sua garagem, quebra na primeira mudança. Com padrões, o harness vira uma plataforma modular plug-and-play.
O paper apresenta cinco protocolos como os "padrões da indústria" — as roscas e tomadas uniformes do ecossistema agêntico. Clique em cada um para explorar:
Duas peças completam o quadro: a OpenResponses & Interactions API funciona como 'Power Plugs' — abordagens modernas de API para inferência de LLM com suporte a tarefas de longa duração, borrando a fronteira entre um turno stateless e um agente stateful. E os Skills são 'Playbooks' — instruções markdown simples, com scripts ou ferramentas prontos para rodar num ambiente sandbox como um terminal.
MCP
A2A
A2UI
AP2
UCP
MCP — Model Context Protocol
……
Sem protocolos
- cada agente é uma "máquina customizada" isolada na garagem
- wrappers bespoke frágeis para cada API externa
- o desenvolvedor fica preso no papel de Conductor: fiação manual, ponto a ponto
- dívida técnica que cresce a cada integração
Com protocolos
- plataforma modular plug-and-play
- ferramentas e agentes especialistas descobertos e conectados em minutos
- o desenvolvedor sobe para Orchestrator: compõe capacidades, não fia cabos
- foco total na lógica de negócio de alto valor
Como vibe coders podem usar os protocolos para construir uma equipe virtual de dados e execução em uma única tarde — descobrindo, conectando e orquestrando ferramentas e agentes como quem monta blocos.
Por que este paper, por que agora
Na era do vibe coding, menos estrutura exige MAIS confiança — e protocolos são o que constrói essa confiança.
O vibe coding removeu o atrito da escrita de código — e com ele, parte da estrutura que garantia previsibilidade. A velocidade continua sendo o motor principal, mas agora os harnesses e protocolos é que carregam o peso da confiança: eles definem contratos claros entre o agente e o mundo externo.
Sem padrões abertos, cada API vira um "padrão-de-um": um parser custom, um formato de erro custom, um fluxo de autenticação custom. O resultado é dívida técnica que se acumula silenciosamente — e uma lista de tarefas de baixo leverage que consomem o tempo do desenvolvedor:
Escrever wrappers frágeis
cada integração bespoke é código novo que ninguém quer manter — e que quebra na primeira mudança da API.
Manter as pontes
token refresh, retry, rate limit, schema drift: a manutenção de cada ponte é um imposto recorrente.
Adaptar-se a mudanças
quando o fornecedor muda a API, todos os consumidores bespoke quebram ao mesmo tempo.
Com protocolos, o desenvolvedor deixa de ser o builder que fia cada conexão e se torna o orchestrator de alto nível que compõe capacidades padronizadas — gastando energia na lógica que diferencia o produto, não na tubulação.
Para quem é este paper — e a dica aplicada do Dia 1
Um guia prático para quem prioriza velocidade e resultado visual — sem abrir mão do rigor.
O paper foi desenhado para engenheiros de software, engineering managers, arquitetos e líderes técnicos que reconhecem que a mudança para a Agentic Engineering exige adesão estrita a protocolos para manter fidelidade e confiabilidade dos resultados. Ele serve como guia prático para "vibe coders" que priorizam velocidade e resultado visual, mostrando como construir uma equipe virtual de dados e execução.
Quatro hábitos que o paper reforça antes de qualquer código
Use um arquivo AGENTS.MD para orientação padrão dos agentes de codificação. E pense profundamente antes de codar: declare assumptions, exponha tradeoffs e pare para perguntar ao encontrar ambiguidade — em vez de adivinhar silenciosamente.
Escreva o mínimo de código: sem features especulativas, sem abstrações não pedidas. Faça edições cirúrgicas — só as linhas exatas necessárias, mantendo o estilo. E execute guiado por objetivo: plano passo a passo, critérios de sucesso, teste falhando primeiro, loop até passar.
Um mergulho mais profundo em Agent Skills vem no próximo whitepaper; segurança é o tema do seguinte. Este paper foca em ferramentas e interoperabilidade.
MCP: descoberta, configuração e conexão
O "USB-C" dos agentes — um soquete padronizado que substitui a fiação bespoke por três passos.
No enterprise tradicional, conectar um agente a uma ferramenta significa fiação bespoke: wrappers REST customizados, gestão manual de API keys, refresh de tokens OAuth, parsers JSON escritos à mão para cada formato de resposta. Cada ferramenta nova é um projeto. O MCP (Model Context Protocol) substitui esse atrito por um soquete padronizado — descubra, configure, conecte.
Discovery
encontre servidores MCP que expõem as ferramentas que você precisa
Configuration
credenciais e permissões via arquivos de ambiente
Connection
handshake: liste as ferramentas e valide os schemas
Discovery
- …
Antes de conectar qualquer servidor MCP: busque as instruções oficiais do fornecedor, nunca passe credenciais a servidores públicos não verificados e considere uma camada de proteção como o Model Armor. Servidores em registries públicos não são auditados — use por sua conta e risco.
Contornando o problema NxM
A matemática da integração: N modelos × M ferramentas — e por que o MCP transforma explosão combinatória em soma linear.
Toda plataforma agêntica enfrenta a mesma matemática: N modelos × M ferramentas. Na abordagem tradicional, cada par modelo-ferramenta exige uma integração bespoke — O(N×M) pontos de integração. Com 5 modelos e 10 ferramentas, são 50 integrações para manter. Se a API de uma ferramenta muda, múltiplos loops de parser quebram de uma vez.
TRADICIONAL — O(N×M): cada par precisa do seu próprio conector gemini ──┬── calendar 5 modelos claude ──┼── gmail × llama ───┼── bigquery 10 ferramentas gpt ─────┼── maps = 50 integrações bespoke mistral ─┴── drive (e 50 lugares para quebrar) COM MCP — O(N+M): todos falam o mesmo protocolo gemini ─┐ ┌── calendar claude ─┤ ├── gmail llama ──┼── [ MCP ] ──┼── bigquery gpt ────┤ ├── maps mistral─┘ └── drive 5 + 10 = 15 adaptadores
Com o MCP, cada modelo implementa o protocolo uma vez e cada ferramenta implementa o protocolo uma vez — o custo total cai para O(N+M), escala linear. Arraste os controles e veja a diferença explodir:
Por que isso importa: os transportes
Definições de ferramenta padronizadas + transportes padrão = o harness conecta direto, sem camadas custom.
Como as definições de ferramenta são padronizadas, o MCP pode ser ligado diretamente ao harness por transportes padrão — sem camadas de integração custom. Dois transportes cobrem praticamente todos os casos. Clique em cada um:
stdio
SSE over HTTP
stdio
- …
Nos dois casos, o vibe coder ganha o mesmo superpoder: conectar ferramentas sem escrever múltiplas camadas de integração custom — o transporte é resolvido pelo protocolo, não por você.
Debugando problemas com servidores MCP
Quando o agente alucina parâmetros ou chama a ferramenta errada: não mexa no prompt às cegas — inspecione o transporte.
Quando o agente alucina parâmetros, chama a ferramenta errada ou falha ao parsear um payload, o instinto é reescrever as system instructions. Resista. O problema quase sempre está no que o agente vê — e a forma correta de diagnosticar é inspecionar diretamente os canos do transporte, sem iniciar o workflow principal do agente.
MCP Inspector
Ferramenta nativa de desenvolvimento: um painel web local para interrogar qualquer servidor MCP (local ou remoto) manualmente.
- veja os schemas ativos das ferramentas
- teste payloads de input manualmente
- inspecione os pacotes JSON-RPC 2.0 raw
- tudo isso sem disparar o workflow do agente
Chrome DevTools
Para ambientes de desenvolvimento web e conexões SSE, o DevTools é o complemento ideal:
- trace os streams web que chegam
- verifique a latência do servidor por request
- debugue a conexão SSE quadro a quadro
- correlacione erros de rede com falhas do agente
Dados raw do transporte > ajustes cegos de prompt. Se o schema diz date: string e o agente envia um número, o conserto é no schema ou no exemplo — não em mais uma frase de instrução.
Toolkit do vibe coder: boas práticas de consumo MCP
O que fazer e o que nunca fazer ao consumir servidores MCP.
✅ Faça
❌ Não faça
Interoperabilidade Agent-to-Agent (A2A)
Os sistemas de IA estão virando redes distribuídas de especialistas — e comunicação padronizada é o que escala essa rede.
Os sistemas de IA estão evoluindo de aplicações isoladas para redes distribuídas de especialistas de domínio. Nessa realidade, comunicação padronizada não é conveniência — é pré-requisito de escala. O A2A (Agent-to-Agent) é a camada fundacional que resolve a fragmentação do ecossistema: ele permite que desenvolvedores descubram, orquestrem e monetizem uma força de trabalho virtual globalmente interoperável.
A evolução das arquiteturas agênticas
Há um padrão recorrente na história da computação: o manual e de baixo nível dá lugar ao declarativo e baseado em intenção. O usuário diz O QUÊ, não COMO. Essa trajetória se repetiu três vezes — e agora acontece com os agentes:
Infraestrutura → Infrastructure as Code
de servidores configurados à mão para declarações de estado desejado.
ML → AutoML
a visão de Pichai (2017): pipelines de ML que se constroem sozinhos a partir da intenção.
Código → Vibe coding
hoje: aplicações inteiras geradas a partir de intenção em linguagem natural.
Monolito → Microserviços → Agentes
a trajetória espelha Fowler & Lewis (2014): de aplicações monolíticas para serviços especializados e componíveis.
"One way we hope to make AI more accessible is by simplifying the creation of machine learning models called neural networks. Today, designing neural nets is extremely time intensive... That's why we've created an approach called AutoML, showing that it's possible for neural nets to design neural nets. We hope AutoML will take an ability that a few PhDs have today …."
O teto monolítico
O "canivete suíço" de um agente só funciona até certo ponto — depois, a própria arquitetura vira o limite.
O vibe coding inicial produz naturalmente o Single Agent Monolith: um "canivete suíço" com um prompt sofisticado, um agente vestindo múltiplos chapéus e dezenas de ferramentas. Dá para prototipar num fim de semana — mas ele logo bate no Teto Monolítico:
Atrito de escala
Não dá para otimizar a "lógica de banco" sem confundir a "lógica de UI". Mais ferramentas → piores decisões: o espaço de busca fica grande demais e surgem parâmetros alucinados e ferramentas erradas.
Sobrecarga contextual
System instructions + dezenas de schemas de ferramentas + histórico de conversa → a working memory do modelo estoura. Tudo compete pela mesma atenção.
Ponto único de falha
Um bug em uma ferramenta ou instrução → o agente inteiro alucina ou trava. Dados corrompidos se propagam para todas as capacidades.
Ótimo para acampar — péssimo para construir uma casa
Um canivete suíço tem 30 ferramentas numa peça única: tudo disponível o tempo todo, mas cada ferramenta é medíocre e o conjunto é pesado de carregar. É o agente monolítico — versátil, frágil, impossível de escalar.
Uma caixa de ferramentas organizada: cada ferramenta no seu lugar, especializada, pegável sob demanda. É a arquitetura multi-agente — cada especialista carrega só o que precisa.
Especialização interna
A especialização é uma lei fundamental de design de sistemas — e os agentes seguem a mesma planta baixa do ML e do software.
A solução segue a planta baixa que engenheiros de ML e de software já conhecem. O AutoML provou seu valor de negócio e depois foi decomposto em estágios observáveis — versionamento de dados, feature stores, detecção de drift. O mesmo acontece com o agente monolítico: especialização é o mecanismo de escala.
Redução do espaço de busca: restringir as ferramentas de cada sub-agente reduz erros e alucinações. Mitigação da diluição de atenção: um prompt de domínio único produz raciocínio mais nítido. Otimização da carga contextual: o orchestrator roteia a tarefa e cada sub-agente recebe contexto com alta razão sinal-ruído.
Arquitetura multi-agente distribuída
Quando os especialistas saem do seu processo e cruzam fronteiras de rede — e a lente "build vs. buy" entra em cena.
O ecossistema está migrando para arquiteturas multi-agente distribuídas: líderes da indústria (Google, Salesforce, ServiceNow, Workday) já publicam agentes de domínio específicos. O orchestrator delega através de fronteiras de rede — não mais dentro de um único processo.
Build · sub-agentes custom para plataformas 3P
- o desenvolvedor assume total responsabilidade por atualizar lógica de prompt, definições de ferramentas e mudanças de schema de API
- cada mudança na plataforma 3P vira seu trabalho
- você mantém o que não construiu de fato
Buy · agentes especialistas oficiais
- o especialista é mantido por quem conhece o domínio profundamente
- seu orchestrator foca no valor único para o usuário e na inovação central
- atualizações chegam via protocolo, não via reescrita
Cada especialista pode ser construído por uma equipe diferente, com tecnologia diferente: o agente do Google em Python, Go ou Java com ADK, o da Salesforce em LangChain, o da Workday em algo totalmente bespoke. Linguagens diferentes, estruturas de payload diferentes, tratamento de estado conversacional diferente, camadas de transporte diferentes. Se cada integração exige código custom e loops de correção de erro bespoke, a "equipe virtual" vira um projeto de integração — e o imposto de manutenção consome o projeto inteiro.
Domínios bounded × unbounded
Por que um agente especialista não pode ser tratado como uma ferramenta comum — a analogia da reforma da cozinha.
Ferramentas são instrumentos passivos; especialistas são parceiros colaborativos
Você compra a serra, o nível e o manual. A ferramenta faz exatamente o que você comanda — e só. Se a parede está torta, a serra não avisa. É a ferramenta padrão: fire-and-forget, um request perfeitamente formatado → uma response.
Você não entrega a planta e vai embora. O especialista encontra casos de borda, aponta descuidos, pausa, consulta sobre trade-offs e retoma. É um agente: um espaço de resolução de problemas unbounded.
O mundo real tem estruturas de dados ambíguas, requisitos enganosos e preferências de usuário conflitantes — o "equivalente digital de paredes tortas". Raramente é possível especificar todos os detalhes sem clarificação multi-turno. É essa necessidade de negociar, pausar e retomar que separa um agente de uma API.
O problema GOTO na arquitetura agêntica
Forçar um domínio unbounded dentro de um wrapper de ferramenta é o novo GOTO — e o A2A é o bloco estruturado que faltava.
O domínio de um agente é unbounded. Forçá-lo dentro de um wrapper de ferramenta síncrona equivale a ressuscitar o GOTO: o fluxo de controle abandona o contexto estruturado esperado e pode qualquer coisa — atingir um estado interrompido, pedir mais informação, nunca retornar o output esperado, ou ser abandonado quando o usuário muda de ideia no meio do caminho.
Precisamos de um paradigma que isole o estado multi-turno bagunçado — um protocolo que permita pausar a execução → voltar ao Orchestrator → negociar → retomar sem perder o estado conversacional. O A2A preenche exatamente essa lacuna. Ao isolar o roteamento colaborativo na camada A2A, a camada de ferramentas (MCP) permanece limpa, previsível e estritamente estruturada.
"O chamador precisa de um resultado, ou o chamador precisa que outro participante assuma a responsabilidade?"
Resultado → ferramenta (MCP). Responsabilidade → agente (A2A).
Construindo a workforce virtual
A2A + especialização criam novos marketplaces de expertise — com o Agent Card como currículo padronizado.
A2A + especialização são a fundação de novos marketplaces de expertise. Sem A2A, cada aplicação agêntica luta sozinha contra a complexidade crescente. Com A2A, um desenvolvedor pode focar num nicho de alto valor — por exemplo, "Conformidade Regulatória em Tempo Real" — e ter seu especialista descoberto e "contratado" por orchestrators do mundo inteiro.
O Agent Card — o "currículo" do mundo da IA
Um documento padronizado que qualquer orchestrator consegue ler para decidir se contrata o especialista:
- Capabilities: quais tarefas o agente executa
- Security & Compliance: políticas de tratamento de dados e requisitos de permissão
- Interaction Schemas: como outros agentes se comunicam via A2A
Os registries — onde a expertise é publicada
Dois canais de descoberta, dois modelos de governança:
- Registries públicos (marketplaces): a agência de talentos global — liste seu especialista e licencie a expertise para milhares
- Registries privados: ambiente seguro e governado — workflows internos compartilhados entre departamentos
O A2A transforma aplicações agênticas isoladas em membros fundacionais de uma força de trabalho digital global e interoperável.
Implementando o protocolo A2A
Dois movimentos de desenvolvimento: expor seu agente (oferta) e conectar agentes remotos (demanda).
Para transformar seu agente num especialista contratável, três etapas — do cartão de visita ao endpoint vivo:
1 · Agent Card
a especificação formal: capabilities, segurança e schemas de interação
2 · Agent Executor
a camada de tradução: requests/responses A2A ↔ chamadas do framework (ADK, LangGraph, bespoke)
3 · Endpoint A2A
o agente publicado e descobrível na rede
Do lado da demanda, o orchestrator entende a intenção do usuário, gerencia o workflow e delega a agentes A2A remotos — contratados autônomos, limitados ao seu domínio. Dois padrões de conexão:
Padrão 1 · Ponto a ponto direto
Endpoint fixo e conhecido — simples e previsível, ideal para integrações estáveis.
from google.adk.agents import RemoteA2aAgent agent = RemoteA2aAgent( name="travel_specialist", url="https://travel.example.com/a2a", )
Padrão 2 · Descoberta via Agent Registry
O orchestrator consulta o registry e resolve o especialista dinamicamente — a base da workforce virtual.
agent = registry.get_remote_a2a_agent(
capability="real_time_compliance",
)
# o registry resolve o Agent Card
# e devolve um agente pronto para usoA exposição (supply side) publica o especialista; o consumo (demand side) o descobre e delega. Os dois lados se encontram no Agent Card — o contrato que torna a workforce interoperável.
A camada de extensibilidade — e a monetização
O A2A resolve a fragmentação; as extensões constroem aplicações transacionais ricas por cima — e abrem a porta do Agent-as-a-Service.
O núcleo do A2A é o backbone de transporte e negociação. Aplicações transacionais ricas exigem capacidades de ordem superior — e o framework de A2A Extensions as padroniza: anunciar, negociar e executar funcionalidades opcionais. Três frameworks fundacionais vivem como extensões nativas:
A2UI
experiências de usuário dinâmicas e stateful.
UCP
comércio agêntico autônomo e seguro.
AP2
pagamentos agênticos confiáveis e verificáveis.
Monetizando agentes A2A — o modelo Agent-as-a-Service
Seguindo o paradigma do SaaS, o AaaS é um modelo baseado em consumo, vendido por vários canais. O Google Cloud Marketplace funciona como motor de monetização, e o Gemini Enterprise atua como plataforma agêntica — com Agent Registries e um cliente A2A nativo, sendo ao mesmo tempo plataforma AaaS (Assistant API) e hospedeiro de agentes remotos. Um modelo de preço híbrido comum: "taxa fixa com uso" — base previsível + excedentes por token/computação.
Publicar
expor o agente com Agent Card
Descobrir
orchestrators encontram no registry
Negociar
termos e extensões via A2A
Executar
a tarefa roda no especialista
Monetizar
cobrança por consumo / marketplace
O framework de extensões habilita o padrão x402 (ou L402): o servidor intercepta um request não pago e responde com HTTP 402 Payment Required + uma fatura legível por máquina. O agente chamador paga autonomamente e reenvia com um token criptográfico de prova de pagamento. Resultado: endpoints pay-per-call com billing automatizado e estritamente stateless.
Interoperabilidade Agent-to-UI (A2UI)
Agentes não deveriam devolver só JSON — deveriam devolver interfaces inteiras, com segurança.
O gap de comunicação: pergunte a um colega "como foi o Q4 por região?" e ele desenha um gráfico de barras, circula os destaques e adiciona contexto. Um agente devolve JSON puro — e você constrói o gráfico sozinho: importa bibliotecas, configura eixos, gerencia estado. Essa troca de contexto quebra o fluxo do vibe coding. O A2UI muda o jogo: agentes geram UIs interativas completas como output, não apenas blobs de JSON.
Generative UI é o LLM criando interfaces dinamicamente em runtime, com base na intenção e no contexto do usuário. Em vez de hardcodar cada estado de UI, o modelo compõe a interface adequada sob demanda: "compare as vendas de Q4 por região" → o sistema monta um layout interativo com cards, filtros e controles. O desafio central é a segurança: injeção de código, XSS e efeitos colaterais descontrolados.
O compositor não entrega a gravação — entrega a partitura
A mesma partitura toca em piano, orquestra ou sintetizador — cada instrumento interpreta com a própria voz. O A2UI é a partitura da UI: o agente escreve a intenção, e qualquer renderer (React, Angular, Lit, Flutter, Jetpack Compose, SwiftUI) executa nativamente.
O agente não gera código executável (pesadelo de segurança) nem envia pixels pré-renderizados (não reflow, não interage). Ele pede componentes de um catálogo confiável; o cliente monta com a própria biblioteca. "Composicional, como blocos de LEGO — mas os blocos são componentes de UI do seu design system."
O agente não precisa saber o alvo (web, mobile, wearable, eletrodoméstico) — só conhece o catálogo e os exemplos. O catálogo define o que está disponível, o agente decide o arranjo, o cliente monta.
O Catálogo Básico — e como trazer o seu
18 componentes prontos em cinco categorias — e por que "básico" é um sinal deliberado.
A Tabela 1 do paper lista 18 componentes prontos para uso. Em v0.8 o catálogo se chamava "standard"; em v0.9 foi renomeado para "basic" — um sinal deliberado de que, em produção, você deve trazer seu próprio catálogo: mapeie seus componentes existentes (botões, gráficos e mapas do seu design system) para os tipos A2UI. O agente não muda; só o mapeamento do renderer muda. (E ChoicePicker era MultipleChoice em v0.8.)
{
"version": "v0.9",
"updateComponents": {
"surfaceId": "main",
"components": [
{ "id": "root", "component": "Column", "children": ["title", "summary", "export"] },
{ "id": "title", "component": "Text", "text": "Q4 Sales", "variant": "h1" },
{ "id": "summary", "component": "Text", "text": "Revenue grew 12% QoQ" },
{ "id": "export", "component": "Button", "child": "export-label",
"action": { "event": { "name": "export_csv" } } },
{ "id": "export-label", "component": "Text", "text": "Export CSV" }
]
}
}Os componentes formam uma lista de adjacência plana referenciada por id — fácil para o LLM gerar incrementalmente e fácil para o cliente atualizar sem re-renderizar tudo. Uma mensagem createSurface separada informa ao cliente qual id é a raiz. O cliente monta a interface interativa completa: nenhuma linha de React necessária.
Gerando A2UI: dois padrões
A escolha fundamental: onde vive a decisão de layout — no LLM ou na ferramenta?
Padrão 1 · LLM gera A2UI diretamente (padrão)
- o modelo é dono do layout e se adapta à intenção do usuário
- o mesmo agente responde "compare regiões" e "mostre tendências" com interfaces diferentes
- em produção: use o a2ui-agent-sdk oficial
Padrão 2 · Ferramenta devolve estrutura fixa (especialização)
- uma chamada de ferramenta, zero tokens de LLM em geração de UI, totalmente previsível
- certo quando o layout é determinístico a partir dos inputs — a ferramenta vira um template server-side
- a ferramenta faz duas coisas: monta a estrutura com data bindings (referências de path, não f-string) e a devolve; o
A2uiPartConverterintercepta e roteia ao cliente como parte A2UI — a ferramenta continua uma função Python comum
from google.adk.agents import LlmAgent from google.adk.models import Gemini def get_sales_dashboard(region: str) -> dict: """Build a data-bound sales dashboard for `region`.""" data = fetch_sales(region) return { "version": "v0.9", "updateComponents": { "surfaceId": "sales", "components": [ { "id": "root", "component": "Column", "children": ["title", "total", "drill"] }, { "id": "title", "component": "Text", "text": { "path": "/title" }, "variant": "h1" }, { "id": "total", "component": "Text", "text": { "path": "/total" } }, { "id": "drill", "component": "Button", "child": "drill-label", "action": { "event": { "name": "expand_details" } } }, { "id": "drill-label", "component": "Text", "text": "Drill Down" }, ], }, } agent = LlmAgent( name="sales_agent", model=Gemini(model="gemini-flash-latest"), tools=[get_sales_dashboard], ) # Conecte o conversor no setup do executor para que a resposta desta # ferramenta vire uma parte A2UI: # from a2ui.adk.send_a2ui_to_client_toolset import A2uiPartConverter # A2aAgentExecutorConfig(event_converter=A2uiPartConverter(catalog, bypass_tool_check=True))
Os valores de dados chegam numa mensagem paralela updateDataModel que resolve referências {path: "/title"} — os clientes re-renderizam nos updates de dados sem reenviar a estrutura. E o LLM só vê a resposta estruturada da ferramenta (não a UI renderizada), então o contexto permanece focado.
| Query do usuário | Tipo de output | Quem decide o layout |
|---|---|---|
| "Qual é a média?" | Dados (texto) | — |
| "Compare estas regiões" | UI gerada pelo LLM | o modelo (intenção) |
| "Mostre meu dashboard" | UI construída pela ferramenta | template determinístico |
| API-para-API | Dados (JSON) | — |
Use A2UI quando a interação/visualização agrega valor além dos dados brutos. Escolha o padrão por quem é dono do layout: o LLM (guiado por intenção) ou um template determinístico (guiado por input).
Artefatos interativos & o Canvas
Quando a UI deixa de ser output e vira um espaço de trabalho vivo, editado por agente e humano em tempo real.
O chat tradicional é linear: cada resposta é estática. O Canvas é um workspace persistente que agente e usuário editam juntos — um documento vivo onde o agente modifica seções e você edita manualmente, em tempo real. Combinado com o A2UI, a persistência encontra a interatividade: a UI não é só renderizada — é um meio de comunicação. O agente observa suas interações e responde de acordo.
User
edita, clica, ajusta
Agent
observa e responde
Canvas
workspace persistente + A2UI interativo
Boas práticas — deixe o LLM gerar A2UI
Escrever JSON A2UI à mão é tedioso. Use o SDK oficial (pip install a2ui-agent-sdk): o A2uiSchemaManager constrói o system prompt com o schema do catálogo + exemplos trabalhados; o catálogo traz seu próprio validador JSON-Schema; o SDK fornece parser para blocos <a2ui-json> e valida e tenta de novo em erros de schema.
from a2ui_agent_sdk import A2uiSchemaManager manager = A2uiSchemaManager(catalog="basic") system_prompt = manager.build_prompt() # schema + exemplos try: ui = manager.parse(llm_output) # valida o JSON except SchemaError: ui = fallback_text(llm_output) # nunca vaze payload malformado
Envolva create_ui() em try/except e caia para texto em falhas de validação. O output do LLM é estocástico — o renderer nunca deve ver um payload malformado.
Output híbrido para flexibilidade
Forneça dados e UI juntos — cada consumidor escolhe. Clientes de API ignoram o campo ui e usam data; clientes voltados a humanos renderizam a mensagem A2UI.
{
"data": { "avg": 42.7, "regions": ["…"] }, // para APIs
"ui": { "version": "v0.9",
"updateComponents": { "surfaceId": "main", "components": ["…A2UI…"] } }, // para humanos
"ui_available": true // sinaliza a UI
}Generative UI cria interfaces em runtime a partir da intenção; o A2UI é o padrão open-source do Google, framework-agnostic, para declarar intenção de UI. A mesma mensagem renderiza nativamente em Lit, Flutter, React ou no seu design system — e o modelo de segurança garante que o agente não injeta código arbitrário, apenas pede componentes de um catálogo confiável.
Agentes e comércio — AP2 e UCP
Das operações de "leitura" para ações com implicações financeiras reais — a madrugada do burrito às 2h.
As seções anteriores cobriram operações de "leitura" (MCP, A2A, A2UI). A evolução natural: agentes precisam executar "ações" com implicações financeiras no mundo real. Priorizar protocolos de comércio + um harness operacional robusto é o que os transforma em padrões da indústria para transações.
Você e seus colegas de apartamento, com fome, deployam um assistente de IA para buscar comida
Em 2024, a IA abria o Chrome, clicava em "guacamole extra" num site mal projetado e torcia para não travar. Com o UCP, cada restaurante publica cardápio, horários e customizações numa linguagem de máquina padrão. A IA pergunta "ainda estão abertos? tem burrito vegetariano?", monta o pedido e o restaurante responde com impostos, taxa de entrega e ETA. "O UCP é como sua IA conversa com a loja, olha as opções e monta o pedido perfeito."
Comida no carrinho, a IA precisa pagar — e você não vai digitar seu débito no prompt e dizer "vai com tudo". O AP2 é um protocolo aberto com linguagem comum para transações seguras. O Mandate: você aprova a regra "gaste até $25 no Taco Bell". O Handshake: a IA apresenta uma "nota promissória" criptografada e assinada por você; o banco do restaurante verifica a assinatura. Sem taxas escondidas: se o restaurante tentar cobrar $50 em vez de $18,50, o AP2 bloqueia na hora. "O AP2 é o cofre que deixa sua IA pagar com seu dinheiro, mas garante que ela nunca compre uma TV de $1.000 por engano."
Descobrir o cardápio
o restaurante publica menu e horários em linguagem de máquina padrão.
Montar o pedido
a IA pergunta, customiza e monta o carrinho; o restaurante responde com impostos, taxa e ETA.
Checar o mandate
a regra digital aprovada por você ("até $25") é verificada antes de qualquer pagamento.
Handshake assinado
a IA apresenta a nota promissória criptografada; o banco do restaurante valida a assinatura digital.
Bloquear discrepâncias
cobrança fora do assinado ($50 ≠ $18,50) é rejeitada instantaneamente — sem taxas escondidas.
Confirmar o pedido
transação verificada, pedido confirmado — o burrito está a caminho.
| UCP | AP2 | |
|---|---|---|
| Papel | o cérebro que decide o que comprar — maneja o cardápio e põe a comida no carrinho | a carteira que cuida de como pagar com segurança, sem cair em golpe |
| Integra-se com | qualquer fornecedor de negócio | o ecossistema de pagamentos |
| Pilares | integração unificada · linguagem compartilhada · arquitetura extensível · security-first | autorização & auditabilidade · autenticidade de intenção · accountability por erros e alucinações do agente |
Características-chave e benefícios dos protocolos: typed schemas, segurança e open source — a combinação que ataca de frente a dívida de integração e garante neutralidade de vendor.
O laboratório recomenda o codelab codelabs.developers.google.com/next26/adk-agent-commerce para ver AP2 + UCP rodando juntos.
Conclusão: de mecânico a arquiteto
Adotar os padrões fundacionais elimina a dívida técnica esmagadora das integrações bespoke.
Padrões eliminam dívida
Adotar MCP, A2A, A2UI, AP2 e UCP elimina a dívida técnica esmagadora das integrações bespoke — e libera foco total para orquestrar lógica de negócio de alto valor.
Uma mudança de paradigma
O desenvolvedor deixa de ser o mecânico que fia APIs frágeis e se torna o arquiteto de uma força de trabalho autônoma global.
Novas economias de escala
À medida que as camadas de comunicação padronizada amadurecem, elas destravam economias de escala inteiramente novas — transformando como o software enterprise é construído, consumido e monetizado.
é orquestrada por agentes interoperáveis."
Quiz — teste seu domínio do stack
8 perguntas sobre protocolos, arquitetura e comércio agêntico.
Cheatsheets
Três referências rápidas para copiar e colar no seu workflow.
# MCP — CHECKLIST DE CONSUMO FAÇA ✓ auditar servidores públicos antes de conectar (revise o código) ✓ usar RAG para ferramentas (carregar/descartar schemas dinamicamente) ✓ preferir API Gateways e registries internos (schemas governados) ✓ debugar com MCP Inspector (dados raw, não prompt às cegas) ✓ incluir HITL (mostrar inputs antes da chamada) ✓ logar uso de ferramentas para auditoria NÃO FAÇA ✗ construir se pode consumir — procure um servidor MCP existente ✗ MCPs públicos não verificados em produção ✗ hardcodar credenciais — use variáveis de ambiente ✗ conectar em produção — use projeto dev + dados ofuscados ✗ usar para updates — read-only com dados reais ✗ acesso amplo a todos os projetos — escopo específico
# A2A — RECEITA DE IMPLEMENTAÇÃO EXPOR (supply side) 1. definir o Agent Card → capabilities · security · interaction schemas 2. implementar o Agent Executor (camada de tradução) → requests/responses A2A ↔ framework (ADK / LangGraph / bespoke) 3. estabelecer o endpoint A2A CONECTAR (demand side) # Padrão 1 · ponto a ponto direto agent = RemoteA2aAgent(name="x", url="https://…/a2a") # Padrão 2 · descoberta via registry agent = registry.get_remote_a2a_agent(capability="…") REGRA DE DECISÃO chamador precisa de resultado → ferramenta (MCP) chamador precisa de responsabilidade → agente (A2A)
# A2UI — REFERÊNCIA RÁPIDA CATÁLOGO BÁSICO (18 componentes) layout: Row · Column · List display: Text · Image · Icon · Divider containers: Card · Modal · Tabs media: Video · AudioPlayer interactive: Button · TextField · CheckBox · Slider · DateTimeInput · ChoicePicker DOIS PADRÕES DE GERAÇÃO 1. LLM gera A2UI → layout guiado pela intenção (use a2ui-agent-sdk) 2. Ferramenta devolve → layout determinístico, zero tokens de UI QUANDO USAR "qual é a média?" → dados (texto) "compare estas regiões" → UI gerada pelo LLM "mostre meu dashboard" → UI construída pela ferramenta API-para-API → dados (JSON) SEGURANÇA agente pede componentes do catálogo — nunca injeta código arbitrário
Comece agora — checklists
Três trilhas práticas. Marque o que já fez — o progresso fica salvo no seu navegador.
🔌Adotar MCP no seu workflow
🤖Construir arquitetura multi-agente
🪟Habilitar UI generativa e comércio
Glossário
Os termos essenciais do paper, em linguagem direta.
Continue a jornada
Os papers companions da série — cada guia segue o mesmo formato interativo e trilíngue.
Série Agents Whitepaper — hub
Todos os guias da série em um só lugar.
The New SDLC with Vibe Coding
Agentic Engineering, o Factory Model e a equação Agent = Model + Harness.
Context Engineering: Sessions, Memory
Como montar, a cada turno, a informação certa dentro da context window.
Vibe Coding Agent Security and Evaluation
Como avaliar e proteger agentes: quality gates, métricas e segurança em produção.
Spec-Driven Production Grade Development
Desenvolvimento guiado por specs para levar vibe coding a nível de produção.
Referências
As 21 endnotes do paper original, na ordem em que aparecem.
PATLOLLA, Kanchana; OLEJNICZAK, Łukasz; IPPOLITO, Pier Paolo. "Agent Tools & Interoperability" — Agents Whitepaper Series, Google, Maio 2026.