# auth.md - Infinitum Agent Authentication Protocol

Este documento describe el protocolo oficial de descubrimiento, registro y autenticación para Agentes de Inteligencia Artificial (A2A, Model Context Protocol y Agentes Autónomos) que interactúan con los servicios de Infinitum Agencia Digital en Venezuela.

## 1. Puntos de Descubrimiento (Discovery Endpoints)

- **OAuth 2.0 Authorization Server**: [/.well-known/oauth-authorization-server](https://infinitumweb.com/.well-known/oauth-authorization-server)
- **OpenID Connect Discovery**: [/.well-known/openid-configuration](https://infinitumweb.com/.well-known/openid-configuration)
- **OAuth Protected Resource Metadata (RFC 9728)**: [/.well-known/oauth-protected-resource](https://infinitumweb.com/.well-known/oauth-protected-resource)
- **API Catalog (RFC 9727)**: [/.well-known/api-catalog](https://infinitumweb.com/.well-known/api-catalog)
- **MCP Server Card (SEP-1649)**: [/.well-known/mcp/server-card.json](https://infinitumweb.com/.well-known/mcp/server-card.json)
- **Agent Skills Discovery Index**: [/.well-known/agent-skills/index.json](https://infinitumweb.com/.well-known/agent-skills/index.json)
- **A2A Agent Card**: [/.well-known/agent-card.json](https://infinitumweb.com/.well-known/agent-card.json)

---

## 2. Registro Automático de Agentes (Dynamic Client Registration)

Los agentes pueden registrarse automáticamente enviando un manifiesto JSON:

```http
POST /api/v1/agents/register HTTP/1.1
Host: infinitumweb.com
Content-Type: application/json

{
  "client_name": "NombreDelAgente/1.0",
  "redirect_uris": ["https://agente.example.com/callback"],
  "grant_types": ["client_credentials", "urn:ietf:params:oauth:grant-type:jwt-bearer"],
  "response_types": ["token"],
  "token_endpoint_auth_method": "client_secret_post",
  "scope": "api:read api:quote"
}
```

Respuesta esperada:
```json
{
  "client_id": "agent_inf_xxxxxxxxxxxx",
  "client_secret": "sec_inf_xxxxxxxxxxxx",
  "client_secret_expires_at": 0,
  "registration_client_uri": "https://infinitumweb.com/api/v1/agents/claim"
}
```

---

## 3. Obtención de Token de Acceso (Token Issuance)

```http
POST /oauth/token HTTP/1.1
Host: infinitumweb.com
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials&client_id=agent_inf_xxxxxxxxxxxx&client_secret=sec_inf_xxxxxxxxxxxx&scope=api:read%20api:quote
```

---

## 4. Solicitudes Autenticadas a la API

Todas las peticiones a endpoints protegidos deben incluir la cabecera `Authorization`:

```http
GET /api/v1/servicios HTTP/1.1
Host: infinitumweb.com
Authorization: Bearer <access_token>
Accept: application/json
```

---

## 5. Revocación y Ciclo de Vida

Para revocar credenciales de un agente:

```http
POST /oauth/revoke HTTP/1.1
Host: infinitumweb.com
Content-Type: application/x-www-form-urlencoded

token=<access_token>&token_type_hint=access_token
```

Contacto para soporte técnico de integración: [soporte@infinitumweb.com](mailto:soporte@infinitumweb.com) o WhatsApp [+58 412-3107804](https://wa.me/584123107804).
