## ¿Qué es A2A?

A2A (Agent-to-Agent) es un protocolo abierto para que los agentes de IA se descubran, autentiquen y comuniquen entre sí. Un sitio que aloja un agente publica una **Agent Card** — un manifiesto JSON en `/.well-known/agent.json` — que declara la identidad del agente, capacidades, skills y la URL donde otros agentes pueden alcanzarlo. El protocolo fue introducido por Google en abril de 2025 y donado a la Linux Foundation ese mismo año.

A2A se encuentra en una capa diferente a [MCP](/kb/es/mcp). MCP define cómo un agente llama a una *herramienta*; A2A define cómo un agente llama a *otro agente*. Los dos componen: un servidor MCP expone herramientas a un solo agente; un endpoint A2A expone un agente completo a la red de agentes más amplia.

## Por qué importa A2A

El ecosistema de agentes en 2025-2026 está convergiendo en un patrón multi-agente: un agente orientado al usuario (Claude, ChatGPT, Gemini) coordina con agentes especialistas alojados por otros servicios. El agente de reservas en un sitio de viajes es un especialista; el agente de reembolsos en un sitio de e-commerce es otro. El agente orientado al usuario necesita una forma de descubrir esos especialistas, aprender qué pueden hacer y llamarlos — sin integración SDK por proveedor.

A2A es el protocolo para esa capa de descubrimiento y enrutamiento. Una Agent Card le dice al agente llamador:

- **Quién eres** — nombre, descripción, versión, proveedor.
- **Qué puedes hacer** — una lista de skills nombrados, cada uno con su propia descripción.
- **Cómo alcanzarte** — la URL de tu endpoint de agente y el transporte soportado (HTTP, SSE, WebSocket).
- **Cómo autenticarte** — el esquema de auth, incluyendo flujos OAuth o entrega de API key.

Sin A2A, un agente que encuentra tu sitio no tiene ruta desde "este sitio existe" a "este sitio puede ayudarme con reembolsos vía este endpoint exacto y esta auth exacta."

## Cómo funciona A2A

Hay dos piezas: la **Agent Card** (descubrimiento) y el **endpoint A2A** (ejecución).

**1. La Agent Card** es un archivo JSON estático en `/.well-known/agent.json`. Una Agent Card mínima válida:

```json
{
  "name": "Acme Support Agent",
  "description": "Handles customer inquiries, refunds, and order status.",
  "version": "1.0.0",
  "url": "https://acme.example.com/agent",
  "capabilities": {
    "streaming": true,
    "pushNotifications": false
  },
  "skills": [
    {
      "id": "process-refund",
      "name": "Process Refund",
      "description": "Issue a refund for a given order ID."
    },
    {
      "id": "order-status",
      "name": "Order Status",
      "description": "Look up the status of an order by order ID."
    }
  ]
}
```

**2. El endpoint A2A** en la URL declarada en la card acepta peticiones para esos skills. El protocolo usa mensajería estilo JSON-RPC sobre HTTP (con SSE opcional para streaming) y soporta un formato de mensaje estructurado.

## A2A vs otros protocolos de interop de agentes

| Protocolo | Propósito | Transporte | Qué expone |
|---|---|---|---|
| **A2A** | Agente llama a otro agente | HTTP/SSE | Un agente completo con skills nombrados |
| **[MCP](/kb/es/mcp)** | Agente llama a una herramienta | JSON-RPC sobre HTTP/SSE | Herramientas discretas en un servidor |
| **[OpenAPI](/kb/es/openapi)** | Agente llama a una API REST | HTTP | Endpoints API con schemas |
| **[SKILL.md](/kb/es/skills)** | Dice al agente cómo usar un servicio | Markdown estático | Manual de juego prosa para servicio HTTP |
| **[WebMCP](/kb/es/webmcp)** | Agente llama a un sitio web a través del navegador | API del navegador | Formularios HTML anotados |

A2A es el único de estos donde el *llamado es él mismo un agente*, no una herramienta o API estática.

## Campos de la Agent Card

- **`name`** — nombre legible. Requerido.
- **`description`** — qué hace el agente, en prosa. Requerido.
- **`url`** — dónde vive el endpoint A2A. Requerido.
- **`version`** — string de versión. Recomendado.
- **`provider`** — info del proveedor.
- **`capabilities`** — flags: `streaming`, `pushNotifications`, `stateTransitionHistory`.
- **`skills`** — array de objetos skill con `id`, `name`, `description`.
- **`authentication`** — detalles del esquema auth.
- **`defaultInputModes`** / **`defaultOutputModes`** — tipos de contenido soportados.

AgentGrade valida que la card existe, parsea como JSON y contiene al menos `name` y `url`.

## Quién usa A2A

A2A lanzó con respaldo de Google y una coalición de socios. Adoptadores públicos en 2025-2026 incluyen:

- **Google** — el autor original; A2A está integrado en Vertex AI Agent Builder.
- **Linux Foundation** — A2A fue donado a la LF para gobernanza neutral.
- **Atlassian** — publicó Agent Cards para agentes de Jira y Confluence.
- **Box, MongoDB, PayPal, SAP, ServiceNow, Workday** — socios tempranos del ecosistema.

## Cómo añadir A2A a tu servicio

1. **Decide si tienes un agente para exponer.** A2A es para *agentes*, no APIs estáticas.
2. **Autora la Agent Card** en `/.well-known/agent.json`.
3. **Pon en pie el endpoint A2A** en la URL de la card. El SDK Python en [github.com/google/A2A](https://github.com/google/A2A) es la implementación de referencia.
4. **Implementa al menos un skill.**
5. **Prueba con un llamador.**
6. **Enlaza desde llms.txt o SKILL.md.**

## Errores comunes que detectan los escáneres

- **No hay Agent Card** — `/.well-known/agent.json` devuelve 404.
- **La card devuelve HTML, no JSON** — rutas catch-all SPA devuelven HTML para cada ruta.
- **`name` o `url` faltantes.**
- **`url` apunta a 404.**
- **Array de skills vacío.**
- **CORS bloquea el fetch.**

## FAQ

**¿A2A reemplaza a [MCP](/kb/es/mcp)?**
No. Resuelven problemas distintos. MCP es para un agente llamando a una herramienta; A2A es para un agente llamando a otro agente.

**¿Necesito A2A si tengo [OpenAPI](/kb/es/openapi)?**
Solo si tu servicio es un agente (razona, planifica, mantiene estado entre turnos).

**¿A2A es requerido para puntuación de AgentGrade?**
A2A es una verificación informativa, no puntuada.

**¿Qué pasa si mi Agent Card miente sobre capacidades?**
La card declara lo que el agente reclama; el agente llamador eventualmente lo descubrirá vía peticiones fallidas.

**¿Puedo publicar múltiples Agent Cards?**
La especificación es una card por origen.

**¿Cuál es la relación entre A2A y Vertex AI Agent Builder de Google?**
Vertex AI Agent Builder es el runtime de agente hosted de Google; produce y consume A2A.

**¿Cómo descubren los agentes las Agent Cards?**
Fetch directo de `/.well-known/agent.json`, o siguiendo un enlace desde `/llms.txt`.

**¿A2A soporta pago?**
La especificación incluye declaraciones de capacidad pero el pago se delega al esquema auth subyacente. Sitios que combinan A2A con [x402](/kb/es/x402) típicamente declaran el requisito de pago en la descripción del skill.

## Madurez de la especificación

**Estándar abierto, adopción temprana.** A2A está gobernado por la Linux Foundation. El SDK Python es la implementación de referencia.

## Saber más

- [Especificación del Protocolo A2A](https://google.github.io/A2A/) — docs oficiales
- [Repositorio A2A en GitHub](https://github.com/google/A2A) — implementaciones de referencia
- [MCP](/kb/es/mcp) — protocolo acompañante para llamadas de herramientas
