Agent Tools & Interoperability
Un agente aislado es una máquina personalizada en un garaje. Un agente interoperable es miembro de una fuerza de trabajo global. Esta guía resume el paper "Agent Tools & Interoperability" (Kanchana Patlolla, Łukasz Olejniczak & Pier Paolo Ippolito, Google) en formato interactivo: el stack de protocolos — MCP, A2A, A2UI, AP2 y UCP — con diagramas interactivos, simuladores, quiz y cheatsheets.
Asume familiaridad con el Día 1 (Agentic Engineering y el Factory Model). No asume conocimiento previo de los protocolos — MCP, A2A, A2UI, AP2 y UCP se presentan desde cero, con analogías.
Introducción: el stack que saca al agente del garaje
Agent = Model + Harness — y los protocolos son los tornillos y tuercas estandarizados que hacen el harness conectable al mundo.
El Día 1 estableció el cambio de paradigma: del código escrito a mano a la Agentic Engineering, donde el desarrollador opera como un Factory Model — diseñando la línea de producción, no apretando cada tornillo. La ecuación central de ese paper sigue siendo la base de todo lo que viene:
El harness — el andamiaje de herramientas, memoria, transporte y seguridad alrededor del modelo — solo alcanza su potencial cuando se conecta al mundo mediante estándares abiertos. Sin estándares, cada integración es una pieza mecanizada a medida: funciona en tu garaje, se rompe con el primer cambio. Con estándares, el harness se convierte en una plataforma modular plug-and-play.
El paper presenta cinco protocolos como los "estándares de la industria" — las roscas y tomas uniformes del ecosistema agéntico. Haz clic en cada uno para explorar:
Dos piezas más completan el cuadro: la OpenResponses & Interactions API funciona como 'Power Plugs' — enfoques modernos de API para inferencia de LLM que soportan tareas de larga duración, difuminando la frontera entre un turno stateless y un agente stateful. Y los Skills son 'Playbooks' — instrucciones markdown muy simples, con scripts o herramientas listos para ejecutarse en un entorno sandbox como una terminal.
MCP
A2A
A2UI
AP2
UCP
MCP — Model Context Protocol
……
Sin protocolos
- cada agente es una "máquina personalizada" aislada en el garaje
- wrappers bespoke frágiles para cada API externa
- el desarrollador queda atrapado en el rol de Conductor: cableado manual, punto a punto
- deuda técnica que crece con cada integración
Con protocolos
- plataforma modular plug-and-play
- herramientas y agentes especialistas descubiertos y conectados en minutos
- el desarrollador asciende a Orchestrator: compone capacidades, no cablea
- enfoque total en la lógica de negocio de alto valor
Cómo los vibe coders pueden usar los protocolos para construir un equipo virtual de datos y ejecución en una sola tarde — descubriendo, conectando y orquestando herramientas y agentes como quien arma bloques.
Por qué este paper, por qué ahora
En la era del vibe coding, menos estructura exige MÁS confianza — y los protocolos son lo que construye esa confianza.
El vibe coding eliminó la fricción de escribir código — y con ella, parte de la estructura que garantizaba previsibilidad. La velocidad sigue siendo el motor principal, pero ahora los harnesses y protocolos cargan el peso de la confianza: definen contratos claros entre el agente y el mundo externo.
Sin estándares abiertos, cada API se convierte en un "estándar-de-uno": un parser personalizado, un formato de error personalizado, un flujo de autenticación personalizado. El resultado es deuda técnica que se acumula en silencio — y una lista de tareas de bajo leverage que consumen el tiempo del desarrollador:
Escribir wrappers frágiles
cada integración bespoke es código nuevo que nadie quiere mantener — y que se rompe con el primer cambio de la API.
Mantener los puentes
token refresh, retry, rate limit, schema drift: el mantenimiento de cada puente es un impuesto recurrente.
Adaptarse a los cambios
cuando el proveedor cambia la API, todos los consumidores bespoke se rompen al mismo tiempo.
Con protocolos, el desarrollador deja de ser el builder que cablea cada conexión y se convierte en el orchestrator de alto nivel que compone capacidades estandarizadas — gastando energía en la lógica que diferencia el producto, no en la tubería.
Para quién es este paper — y el consejo aplicado del Día 1
Una guía práctica para quienes priorizan velocidad y resultado visual — sin sacrificar rigor.
El paper fue diseñado para ingenieros de software, engineering managers, arquitectos y líderes técnicos que reconocen que el cambio hacia la Agentic Engineering exige adhesión estricta a protocolos para mantener fidelidad y confiabilidad de los resultados. Sirve como guía práctica para "vibe coders" que priorizan velocidad y resultado visual, mostrando cómo construir un equipo virtual de datos y ejecución.
Cuatro hábitos que el paper refuerza antes de cualquier código
Usa un archivo AGENTS.MD para orientación estándar de los agentes de codificación. Y piensa profundamente antes de codificar: declara supuestos, expón tradeoffs y detente a preguntar al encontrar ambigüedad — en lugar de adivinar en silencio.
Escribe el mínimo código: sin features especulativas, sin abstracciones no solicitadas. Haz ediciones quirúrgicas — solo las líneas exactas necesarias, manteniendo el estilo. Y ejecuta guiado por objetivo: plan paso a paso, criterios de éxito, test fallando primero, loop hasta pasar.
Una inmersión más profunda en Agent Skills viene en el próximo whitepaper; seguridad es el tema del siguiente. Este paper se enfoca en herramientas e interoperabilidad.
MCP: descubrimiento, configuración y conexión
El "USB-C" de los agentes — un socket estandarizado que reemplaza el cableado bespoke con tres pasos.
En el enterprise tradicional, conectar un agente a una herramienta significa cableado bespoke: wrappers REST personalizados, gestión manual de API keys, refresh de tokens OAuth, parsers JSON escritos a mano para cada formato de respuesta. Cada herramienta nueva es un proyecto. El MCP (Model Context Protocol) reemplaza esa fricción con un socket estandarizado — descubre, configura, conecta.
Discovery
encuentra servidores MCP que exponen las herramientas que necesitas
Configuration
credenciales y permisos vía archivos de entorno
Connection
handshake: lista las herramientas y valida los schemas
Discovery
- …
Antes de conectar cualquier servidor MCP: busca las instrucciones oficiales del proveedor, nunca pases credenciales a servidores públicos no verificados y considera una capa de protección como Model Armor. Los servidores en registries públicos no están auditados — úsalos bajo tu propia responsabilidad.
Resolviendo el problema NxM
La matemática de la integración: N modelos × M herramientas — y por qué el MCP transforma la explosión combinatoria en suma lineal.
Toda plataforma agéntica enfrenta la misma matemática: N modelos × M herramientas. En el enfoque tradicional, cada par modelo-herramienta exige una integración bespoke — O(N×M) puntos de integración. Con 5 modelos y 10 herramientas, son 50 integraciones para mantener. Si la API de una herramienta cambia, múltiples loops de parser se rompen de una 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
Con MCP, cada modelo implementa el protocolo una vez y cada herramienta implementa el protocolo una vez — el costo total cae a O(N+M), escala lineal. Arrastra los controles y observa la diferencia explotar:
Por qué esto importa: los transportes
Definiciones de herramienta estandarizadas + transportes estándar = el harness conecta directo, sin capas personalizadas.
Como las definiciones de herramienta están estandarizadas, el MCP puede conectarse directamente al harness mediante transportes estándar — sin capas de integración personalizadas. Dos transportes cubren prácticamente todos los casos. Haz clic en cada uno:
stdio
SSE over HTTP
stdio
- …
En ambos casos, el vibe coder gana el mismo superpoder: conectar herramientas sin escribir múltiples capas de integración personalizada — el transporte lo resuelve el protocolo, no tú.
Depurando problemas con servidores MCP
Cuando el agente alucina parámetros o llama a la herramienta equivocada: no ajustes el prompt a ciegas — inspecciona el transporte.
Cuando el agente alucina parámetros, llama a la herramienta equivocada o falla al parsear un payload, el instinto es reescribir las system instructions. Resiste. El problema casi siempre está en lo que el agente ve — y la forma correcta de diagnosticarlo es inspeccionar directamente las tuberías del transporte, sin iniciar el workflow principal del agente.
MCP Inspector
Herramienta nativa de desarrollo: un panel web local para interrogar manualmente cualquier servidor MCP (local o remoto).
- ver los schemas activos de las herramientas
- probar payloads de input manualmente
- inspeccionar los paquetes JSON-RPC 2.0 raw
- todo esto sin disparar el workflow del agente
Chrome DevTools
Para entornos de desarrollo web y conexiones SSE, DevTools es el complemento ideal:
- trazar los streams web entrantes
- verificar la latencia del servidor por request
- depurar la conexión SSE cuadro a cuadro
- correlacionar errores de red con fallos del agente
Datos raw del transporte > ajustes ciegos de prompt. Si el schema dice date: string y el agente envía un número, la corrección va en el schema o en el ejemplo — no en una frase más de instrucción.
El toolkit del vibe coder: buenas prácticas de consumo de MCP
Qué hacer y qué no hacer nunca al consumir servidores MCP.
✅ Haz
❌ No hagas
Interoperabilidad Agent-to-Agent (A2A)
Los sistemas de IA se están convirtiendo en redes distribuidas de especialistas — y la comunicación estandarizada es lo que escala esa red.
Los sistemas de IA están evolucionando de aplicaciones aisladas a redes distribuidas de especialistas de dominio. En esta realidad, la comunicación estandarizada no es una comodidad — es un prerequisito de escala. A2A (Agent-to-Agent) es la capa fundacional que resuelve la fragmentación del ecosistema: permite a los desarrolladores descubrir, orquestar y monetizar una fuerza de trabajo virtual globalmente interoperable.
La evolución de las arquitecturas agénticas
Hay un patrón recurrente en la historia de la computación: lo manual y de bajo nivel da paso a lo declarativo y basado en intención. El usuario dice QUÉ, no CÓMO. Esta trayectoria se repitió tres veces — y ahora sucede con los agentes:
Infraestructura → Infrastructure as Code
de servidores configurados a mano a declaraciones de estado deseado.
ML → AutoML
la visión de Pichai (2017): pipelines de ML que se construyen solos a partir de la intención.
Código → Vibe coding
hoy: aplicaciones enteras generadas a partir de intención en lenguaje natural.
Monolito → Microservicios → Agentes
la trayectoria refleja a Fowler & Lewis (2014): de aplicaciones monolíticas a servicios especializados y componibles.
“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 ….”
El techo monolítico
La "navaja suiza" de un agente solo funciona hasta cierto punto — después, la propia arquitectura se convierte en el límite.
El vibe coding inicial produce naturalmente el Single Agent Monolith: una "navaja suiza" con un prompt sofisticado, un agente usando múltiples sombreros y decenas de herramientas. Se puede prototipar en un fin de semana — pero pronto choca con el Techo Monolítico:
Fricción de escala
No se puede optimizar la "lógica de banco" sin confundir la "lógica de UI". Más herramientas → peores decisiones: el espacio de búsqueda se vuelve demasiado grande y surgen parámetros alucinados y herramientas equivocadas.
Sobrecarga contextual
System instructions + decenas de schemas de herramientas + historial de conversación → la working memory del modelo se desborda. Todo compite por la misma atención.
Punto único de fallo
Un bug en una herramienta o instrucción → el agente entero alucina o se bloquea. Los datos corruptos se propagan a todas las capacidades.
Genial para acampar — pésima para construir una casa
Una navaja suiza tiene 30 herramientas en una sola pieza: todo disponible todo el tiempo, pero cada herramienta es mediocre y el conjunto es pesado de cargar. Es el agente monolítico — versátil, frágil, imposible de escalar.
Una caja de herramientas organizada: cada herramienta en su lugar, especializada, tomable bajo demanda. Es la arquitectura multi-agente — cada especialista carga solo lo que necesita.
Especialización interna
La especialización es una ley fundamental del diseño de sistemas — y los agentes siguen el mismo plano que el ML y el software.
La solución sigue el plano que los ingenieros de ML y de software ya conocen. AutoML probó su valor de negocio y luego fue descompuesto en etapas observables — versionado de datos, feature stores, detección de drift. Lo mismo sucede con el agente monolítico: la especialización es el mecanismo de escala.
Reducción del espacio de búsqueda: restringir las herramientas de cada sub-agente reduce errores y alucinaciones. Mitigación de la dilución de atención: un prompt de dominio único produce un razonamiento más nítido. Optimización de la carga contextual: el orchestrator enruta la tarea y cada sub-agente recibe contexto con una alta relación señal-ruido.
Arquitectura multi-agente distribuida
Cuando los especialistas salen de tu proceso y cruzan fronteras de red — y la lente "build vs. buy" entra en juego.
El ecosistema está migrando a arquitecturas multi-agente distribuidas: los líderes de la industria (Google, Salesforce, ServiceNow, Workday) ya publican agentes de dominio específicos. El orchestrator delega a través de fronteras de red — ya no dentro de un único proceso.
Build · sub-agentes personalizados para plataformas 3P
- el desarrollador asume total responsabilidad por actualizar la lógica de prompt, las definiciones de herramientas y los cambios de schema de API
- cada cambio en la plataforma 3P se convierte en tu trabajo
- mantienes lo que en realidad no construiste
Buy · agentes especialistas oficiales
- el especialista lo mantiene quien conoce el dominio profundamente
- tu orchestrator se enfoca en el valor único para el usuario y en la innovación central
- las actualizaciones llegan vía protocolo, no vía reescritura
Cada especialista puede ser construido por un equipo diferente, con tecnología diferente: el agente de Google en Python, Go o Java con ADK, el de Salesforce en LangChain, el de Workday en algo totalmente bespoke. Lenguajes diferentes, estructuras de payload diferentes, manejo de estado conversacional diferente, capas de transporte diferentes. Si cada integración exige código personalizado y bucles de corrección de errores bespoke, el "equipo virtual" se convierte en un proyecto de integración — y el maintenance tax consume el proyecto entero.
Dominios bounded × unbounded
Por qué un agente especialista no puede tratarse como una herramienta común — la analogía de la reforma de la cocina.
Las herramientas son instrumentos pasivos; los especialistas son socios colaborativos
Compras la sierra, el nivel y el manual. La herramienta hace exactamente lo que le ordenas — y nada más. Si la pared está torcida, la sierra no te avisa. Es la herramienta estándar: fire-and-forget, un request perfectamente formateado → una response.
No entregas el plano y te vas. El especialista encuentra casos de borde, señala descuidos, pausa, consulta sobre trade-offs y retoma. Es un agente: un espacio de resolución de problemas unbounded.
El mundo real tiene estructuras de datos ambiguas, requisitos engañosos y preferencias de usuario conflictivas — el "equivalente digital de paredes torcidas". Rara vez es posible especificar todos los detalles sin clarificación multi-turno. Es esta necesidad de negociar, pausar y retomar lo que separa a un agente de una API.
El problema GOTO en la arquitectura agéntica
Forzar un dominio unbounded dentro de un wrapper de herramienta es el nuevo GOTO — y A2A es el bloque estructurado que faltaba.
El dominio de un agente es unbounded. Forzarlo dentro de un wrapper de herramienta síncrona equivale a resucitar el GOTO: el flujo de control abandona el contexto estructurado esperado y puede cualquier cosa — alcanzar un estado interrumpido, pedir más información, nunca devolver el output esperado, o ser abandonado cuando el usuario cambia de idea a mitad de camino.
Necesitamos un paradigma que aísle el estado multi-turno desordenado — un protocolo que permita pausar la ejecución → volver al Orchestrator → negociar → retomar sin perder el estado conversacional. A2A llena exactamente ese vacío. Al aislar el enrutamiento colaborativo en la capa A2A, la capa de herramientas (MCP) permanece limpia, predecible y estrictamente estructurada.
"¿El llamador necesita un resultado, o el llamador necesita que otro participante asuma la responsabilidad?"
Resultado → herramienta (MCP). Responsabilidad → agente (A2A).
Construyendo la fuerza de trabajo virtual
A2A + especialización crean nuevos marketplaces de experiencia — con el Agent Card como currículum estandarizado.
A2A + especialización son la base de nuevos marketplaces de experiencia. Sin A2A, cada aplicación agéntica lucha sola contra la complejidad creciente. Con A2A, un desarrollador puede enfocarse en un nicho de alto valor — por ejemplo, "Cumplimiento Regulatorio en Tiempo Real" — y lograr que su especialista sea descubierto y "contratado" por orchestrators de todo el mundo.
El Agent Card — el "currículum" del mundo de la IA
Un documento estandarizado que cualquier orchestrator puede leer para decidir si contrata al especialista:
- Capabilities: qué tareas ejecuta el agente
- Security & Compliance: políticas de manejo de datos y requisitos de permisos
- Interaction Schemas: cómo se comunican otros agentes vía A2A
Los registries — donde se publica la experiencia
Dos canales de descubrimiento, dos modelos de gobernanza:
- Registries públicos (marketplaces): la agencia de talento global — lista tu especialista y licencia la experiencia a miles
- Registries privados: un entorno seguro y gobernado — workflows internos compartidos entre departamentos
A2A transforma aplicaciones agénticas aisladas en miembros fundacionales de una fuerza de trabajo digital global e interoperable.
Implementando el protocolo A2A
Dos movimientos de desarrollo: exponer tu agente (oferta) y conectar agentes remotos (demanda).
Para convertir tu agente en un especialista contratable, tres etapas — de la tarjeta de visita al endpoint vivo:
1 · Agent Card
la especificación formal: capabilities, seguridad y schemas de interacción
2 · Agent Executor
la capa de traducción: requests/responses A2A ↔ llamadas del framework (ADK, LangGraph, bespoke)
3 · Endpoint A2A
el agente publicado y detectable en la red
Del lado de la demanda, el orchestrator entiende la intención del usuario, gestiona el workflow y delega en agentes A2A remotos — contratistas autónomos, limitados a su dominio. Dos patrones de conexión:
Patrón 1 · Punto a punto directo
Endpoint fijo y conocido — simple y predecible, ideal para integraciones estables.
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))
Patrón 2 · Descubrimiento vía Agent Registry
El orchestrator consulta el registry y resuelve al especialista dinámicamente — la base de la workforce virtual.
agent = registry.get_remote_a2a_agent(
capability="real_time_compliance",
)
# o registry resolve o Agent Card
# e devolve um agente pronto para usoLa exposición (lado de la oferta) publica al especialista; el consumo (lado de la demanda) lo descubre y delega en él. Ambos lados se encuentran en el Agent Card — el contrato que hace interoperable a la workforce.
La capa de extensibilidad — y la monetización
A2A resuelve la fragmentación; las extensiones construyen aplicaciones transaccionales ricas encima — y abren la puerta al Agent-as-a-Service.
El núcleo de A2A es el backbone de transporte y negociación. Las aplicaciones transaccionales ricas requieren capacidades de orden superior — y el framework de A2A Extensions las estandariza: anunciar, negociar y ejecutar funcionalidades opcionales. Tres frameworks fundamentales viven como extensiones nativas:
A2UI
experiencias de usuario dinámicas y con estado.
UCP
comercio agéntico autónomo y seguro.
AP2
pagos agénticos confiables y verificables.
Monetizando agentes A2A — el modelo Agent-as-a-Service
Siguiendo el paradigma del SaaS, el AaaS es un modelo basado en consumo, vendido por múltiples canales. Google Cloud Marketplace funciona como motor de monetización, y Gemini Enterprise actúa como plataforma agéntica — con Agent Registries y un cliente A2A nativo, siendo al mismo tiempo plataforma AaaS (Assistant API) y hospedaje de agentes remotos. Un modelo de precios híbrido común: "tarifa fija más uso" — base predecible + excedentes por token/cómputo.
Publicar
exponer el agente con un Agent Card
Descubrir
los orchestrators lo encuentran en el registry
Negociar
términos y extensiones vía A2A
Ejecutar
la tarea se ejecuta en el especialista
Monetizar
cobro por consumo / marketplace
El framework de extensiones habilita el patrón x402 (o L402): el servidor intercepta una solicitud no pagada y responde con HTTP 402 Payment Required + una factura legible por máquina. El agente llamador paga autónomamente y reenvía con un token criptográfico de prueba de pago. Resultado: endpoints pay-per-call con facturación automatizada y estrictamente stateless.
Interoperabilidad Agent-to-UI (A2UI)
Los agentes no deberían devolver solo JSON — deberían devolver interfaces completas, con seguridad.
La brecha de comunicación: pregúntale a un colega "¿cómo fue el Q4 por región?" y dibuja un gráfico de barras, rodea los destacados y agrega contexto. Un agente devuelve JSON puro — y tú construyes el gráfico solo: importas bibliotecas, configuras ejes, gestionas estado. Ese cambio de contexto rompe el flujo del vibe coding. A2UI cambia el juego: los agentes generan UIs interactivas completas como output, no solo blobs de JSON.
Generative UI es el LLM creando interfaces dinámicamente en tiempo de ejecución, basado en la intención y el contexto del usuario. En lugar de hardcodear cada estado de UI, el modelo compone la interfaz adecuada bajo demanda: "compara las ventas del Q4 por región" → el sistema ensambla un layout interactivo con cards, filtros y controles. El desafío central es la seguridad: inyección de código, XSS y efectos secundarios descontrolados.
El compositor no entrega la grabación — entrega la partitura
La misma partitura suena en piano, orquesta o sintetizador — cada instrumento la interpreta con su propia voz. A2UI es la partitura de la UI: el agente escribe la intención, y cualquier renderer (React, Angular, Lit, Flutter, Jetpack Compose, SwiftUI) la ejecuta nativamente.
El agente no genera código ejecutable (una pesadilla de seguridad) ni envía píxeles pre-renderizados (sin reflow, sin interacción). Pide componentes de un catálogo confiable; el cliente los ensambla con su propia biblioteca. "Composicional, como bloques de LEGO — pero los bloques son componentes de UI de tu design system."
El agente no necesita saber el destino (web, móvil, wearable, electrodoméstico) — solo conoce el catálogo y los ejemplos. El catálogo define lo que está disponible, el agente decide la disposición, el cliente ensambla.
El Catálogo Básico — y cómo traer el tuyo
18 componentes listos para usar en cinco categorías — y por qué "basic" es una señal deliberada.
La Tabla 1 del paper lista 18 componentes listos para usar. En v0.8 el catálogo se llamaba "standard"; en v0.9 fue renombrado a "basic" — una señal deliberada de que, en producción, debes traer tu propio catálogo: mapea tus componentes existentes (botones, gráficos y mapas de tu design system) a los tipos A2UI. El agente no cambia; solo cambia el mapeo del renderer. (Y ChoicePicker era MultipleChoice en 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" }
]
}
}Los componentes forman una lista de adyacencia plana referenciada por id — fácil para el LLM generar incrementalmente y fácil para el cliente actualizar sin re-renderizar todo. Un mensaje createSurface separado informa al cliente cuál id es la raíz. El cliente ensambla la interfaz interactiva completa: ninguna línea de React necesaria.
Generando A2UI: dos patrones
La elección fundamental: ¿dónde vive la decisión de layout — en el LLM o en la herramienta?
Patrón 1 · El LLM genera A2UI directamente (predeterminado)
- el modelo es dueño del layout y se adapta a la intención del usuario
- el mismo agente responde a "compara regiones" y "muestra tendencias" con interfaces diferentes
- en producción: usa el a2ui-agent-sdk oficial
Patrón 2 · La herramienta devuelve estructura fija (especialización)
- una llamada de herramienta, cero tokens de LLM en generación de UI, totalmente predecible
- correcto cuando el layout es determinístico a partir de los inputs — la herramienta se convierte en un template server-side
- la herramienta hace dos cosas: construye la estructura con data bindings (referencias de path, no f-strings) y la devuelve; el
A2uiPartConverterintercepta y la enruta al cliente como parte A2UI — la herramienta sigue siendo una función Python común
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))
Los valores de datos llegan en un mensaje paralelo updateDataModel que resuelve referencias {path: "/title"} — los clientes re-renderizan en las actualizaciones de datos sin reenviar la estructura. Y el LLM solo ve la respuesta estructurada de la herramienta (no la UI renderizada), así que el contexto permanece enfocado.
| Consulta del usuario | Tipo de output | Quién decide el layout |
|---|---|---|
| "¿Cuál es el promedio?" | Datos (texto) | — |
| "Compara estas regiones" | UI generada por el LLM | el modelo (intención) |
| "Muestra mi dashboard" | UI construida por la herramienta | template determinístico |
| API-a-API | Datos (JSON) | — |
Usa A2UI cuando la interacción/visualización agrega valor más allá de los datos brutos. Elige el patrón por quién es dueño del layout: el LLM (guiado por intención) o un template determinístico (guiado por input).
Artefactos interactivos & el Canvas
Cuando la UI deja de ser output y se convierte en un espacio de trabajo vivo, editado por agente y humano en tiempo real.
El chat tradicional es lineal: cada respuesta es estática. El Canvas es un workspace persistente que agente y usuario editan juntos — un documento vivo donde el agente modifica secciones y tú editas manualmente, en tiempo real. Combinado con A2UI, la persistencia se encuentra con la interactividad: la UI no solo se renderiza — es un medio de comunicación. El agente observa tus interacciones y responde en consecuencia.
User
edita, hace clic, ajusta
Agent
observa y responde
Canvas
workspace persistente + A2UI interactivo
Buenas prácticas — deja que el LLM genere A2UI
Escribir JSON A2UI a mano es tedioso. Usa el SDK oficial (pip install a2ui-agent-sdk): el A2uiSchemaManager construye el system prompt con el schema del catálogo + ejemplos trabajados; el catálogo trae su propio validador JSON-Schema; el SDK proporciona un parser para bloques <a2ui-json> y valida y reintenta en errores 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
Envuelve create_ui() en try/except y cae a texto en fallos de validación. El output del LLM es estocástico — el renderer nunca debe ver un payload malformado.
Output híbrido para flexibilidad
Proporciona datos y UI juntos — cada consumidor elige. Los clientes de API ignoran el campo ui y usan data; los clientes orientados a humanos renderizan el mensaje 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 crea interfaces en tiempo de ejecución a partir de la intención; A2UI es el estándar open-source de Google, agnóstico al framework, para declarar intención de UI. El mismo mensaje se renderiza nativamente en Lit, Flutter, React o tu design system — y el modelo de seguridad garantiza que el agente no inyecta código arbitrario, solo pide componentes de un catálogo confiable.
Agentes y comercio — AP2 y UCP
De operaciones de "lectura" a acciones con implicaciones financieras reales — la madrugada del burrito a las 2.
Las secciones anteriores cubrieron operaciones de "lectura" (MCP, A2A, A2UI). La evolución natural: los agentes necesitan ejecutar "acciones" con implicaciones financieras en el mundo real. Priorizar protocolos de comercio + un harness operativo robusto es lo que los convierte en estándares de la industria para transacciones.
Tú y tus compañeros de piso, hambrientos, despliegan un asistente de IA para pedir comida
En 2024, la IA abría Chrome, hacía clic en "guacamole extra" en un sitio mal diseñado y cruzaba los dedos para que no se colgara. Con UCP, cada restaurante publica su menú, horarios y personalizaciones en un lenguaje de máquina estándar. La IA pregunta "¿siguen abiertos? ¿tienen burrito vegetariano?", arma el pedido y el restaurante responde con impuestos, costo de envío y ETA. "UCP es cómo tu IA habla con la tienda, revisa las opciones y arma el pedido perfecto."
La comida está en el carrito y la IA necesita pagar — y no vas a escribir tu PIN de débito en un prompt y decir "dale con todo." AP2 es un protocolo abierto con un lenguaje común para transacciones seguras. El Mandate: apruebas la regla "gasta hasta $25 en Taco Bell." El Handshake: la IA presenta un pagaré cifrado y firmado por ti; el banco del restaurante verifica la firma. Sin cargos ocultos: si el restaurante intenta cobrar $50 en vez de $18.50, AP2 lo bloquea al instante. "AP2 es la bóveda que deja que tu IA pague con tu dinero, pero garantiza que nunca compre un televisor de $1,000 por error."
Descubrir el menú
el restaurante publica su menú y horarios en un lenguaje de máquina estándar.
Armar el pedido
la IA pregunta, personaliza y arma el carrito; el restaurante responde con impuestos, tarifas y ETA.
Verificar el mandate
la regla digital que aprobaste ("hasta $25") se verifica antes de cualquier pago.
Handshake firmado
la IA presenta el pagaré cifrado; el banco del restaurante valida la firma digital.
Bloquear discrepancias
un cargo fuera de lo firmado ($50 ≠ $18.50) se rechaza al instante — sin cargos ocultos.
Confirmar el pedido
transacción verificada, pedido confirmado — el burrito está en camino.
| UCP | AP2 | |
|---|---|---|
| Rol | el cerebro que decide qué comprar — maneja el menú y pone la comida en el carrito | la cartera que se encarga de cómo pagar de forma segura, sin caer en estafas |
| Se integra con | cualquier proveedor de negocio | el ecosistema de pagos |
| Pilares | integración unificada · lenguaje compartido · arquitectura extensible · security-first | autorización & auditabilidad · autenticidad de intención · accountability por errores y alucinaciones del agente |
Características clave y beneficios de los protocolos: typed schemas, seguridad y open source — la combinación que ataca de frente la deuda de integración y garantiza neutralidad de vendor.
El laboratorio recomienda el codelab codelabs.developers.google.com/next26/adk-agent-commerce para ver AP2 + UCP funcionando juntos.
Conclusión: de mecánico a arquitecto
Adoptar los estándares fundamentales elimina la aplastante deuda técnica de las integraciones bespoke.
Los estándares eliminan la deuda
Adoptar MCP, A2A, A2UI, AP2 y UCP elimina la aplastante deuda técnica de las integraciones bespoke — y libera el enfoque total para orquestar lógica de negocio de alto valor.
Un cambio de paradigma
El desarrollador deja de ser el mecánico que cablea APIs frágiles y se convierte en el arquitecto de una fuerza de trabajo autónoma global.
Nuevas economías de escala
A medida que las capas de comunicación estandarizada maduran, desbloquean economías de escala completamente nuevas — transformando cómo el software empresarial se construye, consume y monetiza.
se orquesta mediante agentes interoperables."
Quiz — pon a prueba tu dominio del stack
8 preguntas sobre protocolos, arquitectura y comercio agéntico.
Cheatsheets
Tres referencias rápidas para copiar y pegar en tu workflow.
# MCP — CHECKLIST DE CONSUMOFAÇ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 auditoriaNÃ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ÇÃOEXPOR (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 A2ACONECTAR (demand side)# Padrão 1 · ponto a ponto diretoagent = RemoteA2aAgent(name="x", url="https://…/a2a")# Padrão 2 · descoberta via registryagent = registry.get_remote_a2a_agent(capability="…")REGRA DE DECISÃOchamador precisa de resultado → ferramenta (MCP) chamador precisa de responsabilidade → agente (A2A)
# A2UI — REFERÊNCIA RÁPIDACATÁ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 · ChoicePickerDOIS PADRÕES DE GERAÇÃO1. LLM gera A2UI → layout guiado pela intenção (use a2ui-agent-sdk) 2. Ferramenta devolve → layout determinístico, zero tokens de UIQUANDO 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ÇAagente pede componentes do catálogo — nunca injeta código arbitrário
Empieza ahora — checklists
Tres pistas prácticas. Marca lo que ya hiciste — el progreso se guarda en tu navegador.
🔌Adoptar MCP en tu workflow
🤖Construir una arquitectura multi-agente
🪟Habilitar UI generativa y comercio
Glosario
Los términos esenciales del paper, en lenguaje directo.
Continúa el recorrido
Los papers compañeros de la serie — cada guía sigue el mismo formato interactivo y trilingüe.
Serie Agents Whitepaper — hub
Todas las guías de la serie, en un solo lugar.
The New SDLC with Vibe Coding
Agentic Engineering, el Factory Model y la ecuación Agent = Model + Harness.
Context Engineering: Sessions, Memory
Cómo ensamblar la información correcta dentro de la context window, turno a turno.
Vibe Coding Agent Security and Evaluation
Cómo evaluar y proteger agentes: quality gates, métricas y seguridad en producción.
Spec-Driven Production Grade Development
Desarrollo guiado por specs para llevar el vibe coding a nivel de producción.
Referencias
Las 21 endnotes del paper original, en el orden en que aparecen.
PATLOLLA, Kanchana; OLEJNICZAK, Łukasz; IPPOLITO, Pier Paolo. "Agent Tools & Interoperability" — Agents Whitepaper Series, Google, Mayo 2026.