La superficie primaria es la API REST y el servidor MCP.
No hay panel como camino principal. Envía, consulta, sella y verifica por HTTP o desde un agente que habla MCP. El panel llega después.
POST /v1/messages · MCP · mailack-verify
POST /v1/messages con Idempotency-Key.
Fija Message-ID y Date, hashea el byte-stream exacto que saldrá por el cable y no reintenta el mismo envío si repites la clave. El cuerpo acepta from, to, subject y html.
curl -X POST https://api.mailack.com/v1/messages \
-H "Authorization: Bearer $MAILACK_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"from": "noreply@acme.mx",
"to": "cliente@ejemplo.com",
"subject": "Estado de cuenta",
"html": "<p>Tu estado de cuenta está listo.</p>"
}'Estado, proof bundle y sellado bajo demanda.
Consulta el mensaje, descarga el paquete de prueba (hash, ruta Merkle, constancia) o solicita sellado individual cuando lo necesites.
curl -s https://api.mailack.com/v1/messages/$MESSAGE_ID \
-H "Authorization: Bearer $MAILACK_API_KEY"curl -s https://api.mailack.com/v1/messages/$MESSAGE_ID/proof-bundle \
-H "Authorization: Bearer $MAILACK_API_KEY" \
-o bundle.jsoncurl -X POST https://api.mailack.com/v1/messages/$MESSAGE_ID/seal \
-H "Authorization: Bearer $MAILACK_API_KEY"Comprueba el bundle sin red.
mailack-verify lee el proof bundle y, opcionalmente, el .eml original. No consulta nuestros servidores.
./bin/mailack-verify bundle.json -eml mensaje.emlHash canónico
Prueba de inclusión Merkle
Raíz contra la constancia
Agentes que envían, consultan, verifican y operan.
mailack-mcp expone tools MCP sobre la misma API: enviar mensajes, leer estado, obtener proof bundles, verificar y aplicar operaciones permitidas (supresión, consulta de eventos).
Añade el servidor al cliente MCP que uses (Claude Desktop, Cursor u otro con soporte stdio). La autenticación va por API key en el entorno del proceso.
{
"mcpServers": {
"mailack": {
"command": "./bin/mailack-mcp",
"env": {
"MAILACK_API_KEY": "mlk_...",
"MAILACK_API_URL": "https://api.mailack.com"
}
}
}
}Siete procesos, un contrato de evidencia.
Cada servicio tiene un rol acotado. La entrega no depende del LLM; el sellado no re-serializa el MIME.
RLS, supresión y correlación VERP.
PostgreSQL con Row Level Security. Cada tenant solo ve sus filas. Las tablas de trabajo son messages, batches, events, suppressions y access_log.