Phase 16 - Lesson 12
A2A — El Protocolo Agent-to-Agent
Google anunció A2A en abril de 2025; para abril de 2026, la especificación está en https://a2a-protocol.org/latest/specification/ y más de 150 organizaciones la respaldan. A2A es el complemento horizontal de MCP (Lección 13): donde MCP es vertical (agente ↔ herramientas), A2A es de igual a igual o peer-to-peer (agente ↔ agente). Define Agent Cards (descubrimiento), tareas con artefactos (texto, datos estructurados, video), ciclos de vida de tareas opacos y autenticación. Los sistemas de producción combinan cada vez más MCP con A2A. Google Cloud integró el soporte de A2A en Vertex AI Agent Builder durante 2025-2026.
Tipo: Aprender + Construir
Lenguajes: Python (stdlib, http.server, json)
Prerrequisitos: Phase 16 · 04 (Primitive Model)
Tiempo: ~75 minutos
Problema
Su agente necesita llamar a otro agente en otro sistema. ¿Cómo? Puede exponer un endpoint HTTP, definir un esquema JSON personalizado y esperar que el otro lado lo entienda. Cada par de agentes se convierte en una integración a la medida.
A2A es el protocolo de comunicación universal para esa llamada. Descubrimiento estándar, modelo de tarea estándar, transporte estándar, artefactos estándar. Como HTTP+REST pero para agentes como ciudadanos de primera clase.
Concepto
Los cuatro elementos
Agent Card. Un documento JSON en /.well-known/agent.json que describe al agente: nombre, habilidades, endpoints, modalidades soportadas, requisitos de autenticación. El descubrimiento ocurre al leer la tarjeta.
GET https://agent.example.com/.well-known/agent.json
→ {
"name": "code-review-agent",
"skills": ["review-python", "review-typescript"],
"endpoints": {
"tasks": "https://agent.example.com/tasks"
},
"auth": {"type": "bearer"},
"modalities": ["text", "structured"]
}
Task. La unidad de trabajo. Un objeto asíncrono y con estado (stateful) con un ciclo de vida: submitted → working → completed / failed / canceled. Un cliente envía una tarea, realiza consultas periódicas (polling) o se suscribe para recibir actualizaciones.
Artifact. El tipo de resultado producido por una tarea. Texto, JSON estructurado, imagen, video, audio. Los artefactos están tipados para que las diferentes modalidades sean tratadas como primera clase.
Opaque lifecycle. A2A no prescribe cómo el agente remoto resuelve la tarea. El cliente ve las transiciones de estado y los artefactos; la implementación es libre de usar cualquier framework.
La división MCP/A2A
- MCP (Lección 13): agente ↔ herramienta. El agente lee/escribe a través de JSON-RPC a un servidor de herramientas. Sin estado (stateless) por defecto.
- A2A: agente ↔ agente. Protocolo de pares (peer); ambos lados son agentes con su propio razonamiento.
Los sistemas multiagente de producción utilizan ambos. Un par A2A llama a herramientas MCP de su propio lado. La división mantiene limpias y separadas ambas preocupaciones.
Flujo de descubrimiento
Client Agent server
├──GET /.well-known/agent.json──>
<──Agent Card JSON─────────────
├──POST /tasks {skill, input}──>
<──201 task_id, state=submitted
├──GET /tasks/{id}──────────────>
<──state=working, 42% done──────
├──GET /tasks/{id}──────────────>
<──state=completed, artifacts──
O con streaming: suscripción SSE a /tasks/{id}/events para actualizaciones automáticas (push).
Autenticación
A2A admite tres patrones comunes:
- Bearer token — OAuth2 o del tipo opaco.
- mTLS — TLS mutuo; las organizaciones se prueban la identidad entre sí.
- Signed requests — HMAC sobre la carga útil (payload).
La autenticación se declara en la Agent Card; los clientes la descubren y la cumplen.
Más de 150 organizaciones en abril de 2026
La adopción empresarial impulsó la escala de A2A. El punto clave: A2A se convirtió en la forma en que los sistemas de agentes empresariales cruzan los límites de confianza. Google Cloud lanzó el soporte de A2A para Vertex AI Agent Builder; Microsoft Agent Framework lo admite; la mayoría de los frameworks principales (LangGraph, CrewAI, AutoGen) distribuyen adaptadores de A2A.
Dónde gana A2A
- Llamadas interorganizacionales. Un agente en la empresa A llama a un agente en la empresa B. Sin A2A, cada par es un contrato a la medida.
- Frameworks heterogéneos. Un agente de LangGraph llama a un agente de CrewAI que llama a un agente de Python personalizado. A2A normaliza esto.
- Artefactos tipados. Resultados de video, JSON estructurado, audio — todos tratados como de primera clase.
- Tareas de larga duración. El ciclo de vida opaco + polling hace que las tareas de horas de duración sean sencillas de manejar.
Dónde A2A tiene dificultades
- Micro-llamadas sensibles a la latencia. El ciclo de vida de A2A es asíncrono. La comunicación agente a agente de submilisegundos no se adapta; use RPC directa.
- Agentes estrechamente acoplados en el mismo proceso. Si ambos agentes se ejecutan en el mismo proceso de Python, el viaje de ida y vuelta HTTP de A2A es innecesario.
- Equipos pequeños. El costo de la especificación es real; los agentes de uso exclusivamente interno pueden no necesitar la formalidad.
A2A vs ACP, ANP, NLIP
Varias especificaciones relacionadas surgieron en 2024-2026:
- ACP (IBM/Linux Foundation) — predecesor de A2A, de alcance más estrecho.
- ANP (Agent Network Protocol) — enfocado en el descubrimiento de pares descentralizado.
- NLIP (Ecma Natural Language Interaction Protocol, estandarizado en diciembre de 2025) — tipo de contenido en lenguaje natural.
A2A es el protocolo de pares más adoptado a partir de abril de 2026. Consulte arXiv:2505.02279 (Liu et al., "A Survey of Agent Interoperability Protocols") para la comparación.
Constrúyelo
code/main.py implementa un servidor y cliente A2A mínimos utilizando http.server y JSON. El servidor:
- expone
/.well-known/agent.json, - acepta
POST /tasks, - gestiona el estado de las tareas,
- devuelve artefactos en
GET /tasks/{id}.
El cliente:
- obtiene la Agent Card,
- envía una tarea,
- realiza consultas periódicas (polling) hasta la finalización,
- lee el artefacto.
Ejecutar:
python3 code/main.py
El script inicia el servidor en un hilo en segundo plano y luego ejecuta el cliente contra él. Verá el flujo completo: descubrimiento, envío, consulta periódica (polling), artefacto.
Úsalo
outputs/skill-a2a-integrator.md diseña una integración de A2A: contenidos de la Agent Card, esquemas de tareas, elección de autenticación, streaming frente a polling.
Ponlo en Producción
Lista de verificación:
- Fijar la versión de la especificación. A2A todavía está evolucionando; la Agent Card debe declarar la versión del protocolo.
- Creación de tareas idempotente. Los envíos duplicados (reintentos de red) deben producir una sola tarea.
- Esquemas de artefactos. Declare qué estructuras devuelve el agente; los consumidores deben validarlas.
- Límites de tasa + autenticación. A2A está expuesto al público; aplique seguridad web estándar.
- Dead-letter para tareas fallidas. Inspeccione los patrones a lo largo del tiempo para detectar tipos de fallas recurrentes.
Ejercicios
- Ejecute
code/main.py. Confirme que el cliente descubre al servidor y recibe el artefacto correcto. - Agregue una segunda habilidad al servidor (por ejemplo, "summarize"). Actualice la Agent Card. Escriba un cliente que elija la habilidad en función del tipo de tarea.
- Implemente un endpoint de streaming SSE:
/tasks/{id}/eventsque emita cambios de estado. ¿Qué necesita hacer el cliente de manera diferente? - Lea la especificación de A2A (https://a2a-protocol.org/latest/specification/). Identifique tres cosas que la especificación exige pero que esta demostración no implementa.
- Compare A2A (descubrimiento por Agent Card) con MCP (listado de capacidades del lado del servidor a través de
listTools). ¿Cuál es la compensación entre los agentes autodescriptivos y la exploración de capacidades?
Términos Clave
| Término | Lo que la gente dice | Lo que realmente significa |
|---|---|---|
| A2A | "Agent-to-agent" | Protocolo de pares para que los agentes llamen a otros agentes en diferentes sistemas. Google 2025. |
| Agent Card | "La tarjeta de presentación del agente" | JSON en /.well-known/agent.json que describe habilidades, endpoints y autenticación. |
| Task | "La unidad de trabajo" | Objeto asíncrono con estado y un ciclo de vida; se producen artefactos al finalizar. |
| Artifact | "El resultado" | Salida tipada: texto, JSON estructurado, imagen, video, audio. Medios de primera clase. |
| Opaque lifecycle | "Cómo se resuelve es asunto del agente" | El cliente ve las transiciones de estado; el servidor es libre de elegir el framework/herramientas. |
| Discovery | "Encontrar al agente" | GET /.well-known/agent.json devuelve la tarjeta. |
| MCP vs A2A | "Herramientas vs pares" | MCP: vertical agente ↔ herramienta. A2A: horizontal agente ↔ agente. |
| ACP / ANP / NLIP | "Protocolos hermanos" | Especificaciones adyacentes; A2A es el más adoptado en 2026. |
Lecturas Adicionales
- A2A specification — la especificación canónica
- Google Developers Blog — A2A announcement — publicación de lanzamiento de abril de 2025
- A2A GitHub repo — implementaciones de referencia y SDKs
- Liu et al. — A Survey of Agent Interoperability Protocols — comparación de MCP, ACP, A2A, ANP