RESTful & MCP 2026

Guía Técnica & Estándares de Integración

Manual exhaustivo para desarrolladores e integradores: autenticación criptográfica, webhooks en tiempo real, hardware Edge y gobernanza agéntica.

1. Autenticación con API Keys

Todas las peticiones a la API REST y al servidor MCP requieren autenticación mediante una clave API emitida por sucursal. La clave debe transmitirse en la cabecera HTTP X-API-Key o como token Bearer en Authorization.

💡 Buenas Prácticas de Rotación

Las claves con prefijo mau_live_ cuentan con acceso operativo en tiempo real. Nunca expongas estas llaves en aplicaciones cliente o repositorios públicos.

curl -X GET https://mau.rest/api/v1/pos/menus/active \
  -H "X-API-Key: mau_live_9f83a21b44c80219" \
  -H "X-Restaurant-Slug: petit-gateau"
import requests

url = "https://mau.rest/api/v1/pos/menus/active"
headers = {
    "X-API-Key": "mau_live_9f83a21b44c80219",
    "X-Restaurant-Slug": "petit-gateau"
}
response = requests.get(url, headers=headers)
print(response.json())
const response = await fetch("https://mau.rest/api/v1/pos/menus/active", {
  headers: {
    "X-API-Key": "mau_live_9f83a21b44c80219",
    "X-Restaurant-Slug": "petit-gateau"
  }
});
const menu = await response.json();
console.log(menu);

2. Multi-tenancy & Contexto RLS

MAURICIO opera bajo una arquitectura multi-tenant estricta gobernada por Row-Level Security (RLS) en PostgreSQL. Cada petición debe especificar el slug de la sucursal activa mediante la cabecera X-Restaurant-Slug.

ℹ️ Jerarquía de Resolución de Tenant

El backend valida que la clave API esté autorizada específicamente para el restaurant_slug solicitado antes de ejecutar cualquier consulta de piso o comandería.

3. Estándar de Errores (RFC 7807)

Todas las respuestas de error en la API REST y en llamadas JSON-RPC retornan un cuerpo normalizado conforme al RFC 7807 Problem Details:

Código HTTP Error Code Causa Frecuente
401 Unauthorized AUTH_FAILED API Key faltante, expirada o revocada.
403 Forbidden PERMISSION_DENIED El rol o token no tiene acceso al módulo RBAC.
404 Not Found RESOURCE_NOT_FOUND Mesa, platillo o reservación inexistente.
409 Conflict STATE_CONFLICT Mesa ocupada o comanda modificada concurrentemente.
429 Too Many Requests RATE_LIMIT_EXCEEDED Límite de cuota alcanzado por ventana de tiempo.

4. Rate Limiting & Cuotas

Para garantizar la resiliencia en horas pico de servicio (almuerzo y cena), cada sucursal dispone de una cuota de 600 peticiones por minuto por API Key.

  • X-RateLimit-Limit: Total de peticiones autorizadas por ventana (60s).
  • X-RateLimit-Remaining: Peticiones restantes en la ventana activa.
  • X-RateLimit-Reset: Timestamp UNIX en segundos para el reinicio del contador.

5. Webhooks & Verificación de Firmas HMAC SHA-256

Los eventos del restaurante (órdenes enviadas a cocina, reservaciones creadas o mesas cobradas) se envían vía POST a tus endpoints registrados con la firma criptográfica en la cabecera X-Mauricio-Signature.

⚠️ Protección contra Ataques de Repetición (Replay)

La firma se calcula concatenando el timestamp con el cuerpo JSON: v1=HMAC_SHA256(secret, "${timestamp}.${payload}"). Rechaza cualquier evento con una diferencia superior a 300 segundos.

import hmac, hashlib

def verify_mauricio_webhook(payload_bytes, signature_header, secret):
    expected = hmac.new(secret.encode(), payload_bytes, hashlib.sha256).hexdigest()
    return hmac.compare_digest(f"sha256={expected}", signature_header)
const crypto = require('crypto');

function verifyMauricioWebhook(payloadBuffer, signatureHeader, secret) {
  const hmac = crypto.createHmac('sha256', secret);
  const expected = 'sha256=' + hmac.update(payloadBuffer).digest('hex');
  return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(signatureHeader));
}

6. Hardware Print Bridge (ESC/POS Edge)

Las impresoras térmicas de tickets y comanderas locales se comunican con MAURICIO a través del servicio Print Bridge mediante un modelo de pull continuo por HTTP continuo o WebSockets.

  • No requiere apertura de puertos en el router del restaurante ni IP pública fija.
  • Soporta protocolos térmicos nativos ESC/POS y Star Micronics.
  • Reclamado de trabajos atómico vía POST /api/print-bridge/v1/jobs/claim para evitar impresiones duplicadas.

7. Model Context Protocol (MCP) & Two-Phase Commit

El servidor MCP de MAURICIO implementa el protocolo oficial (versión 2024-11-05) mediante transporte Streamable HTTP en POST /api/v1/mcp.

🛡️ Gobernanza Two-Phase Commit (2PC) & Undo Tokens

Las acciones de alto riesgo (como anulación de cuentas o liberación forzada de mesas) requieren una fase previa de simulación (preview_only: true) que devuelve un preview_token firmado. Las operaciones operativas de piso incluyen una ventana de anulación mediante undo_token válido por 120 segundos.

Para probar las 18 Macro-Tools canónicas y configurar Cursor o Claude con un solo clic, visita nuestro hub dedicado:

⚡ Abrir MCP Server Hub Interactivo →

8. Autodescubrimiento para Agentes Autónomos

Frameworks agénticos (LangChain, AutoGen, CrewAI, LlamaIndex) pueden auto-configurar herramientas y esquemas consumiendo nuestros descriptores estándar:

  • /.well-known/mcp.json: Server Card oficial para descubrimiento en el dominio.
  • /developers/server.json: Manifiesto de publicación en el registro MCP.
  • /llms.txt & /llms-full.txt: Contexto condensado y exhaustivo en Markdown sin ruido de maquetación.