CreaRack-SL

Tool MCP: send_maintenance_email — Envío transaccional via Resend

Tool MCP: send_maintenance_email

Tool del servidor MCP de CreaRack Workspace que permite al Agente de Mantenimiento Semanal (y futuros agentes remotos) entregar informes directamente al inbox del staff, sin pasar por borradores de Gmail.

Contexto / motivación

El connector oficial de Gmail en claude.ai solo expone create_draft, no send_email. Esto causaba que el informe ejecutivo del Agente de Mantenimiento Semanal quedara en la carpeta Borradores y nunca llegara al inbox de Edu. Este tool resuelve el problema de forma definitiva delegando el envío a Resend, cuyo dominio crearack.com ya estaba verificado para el SaaS.

Ubicación en el código

ArtefactoRuta
Handler principalfunctions/api/mcp/handlers/email.ts
Registro en executeToolfunctions/api/mcp/index.ts
Definición de schemafunctions/api/mcp/tools.ts
Env typefunctions/types.ts (RESEND_API_KEY?: string)

Especificación del tool

Nombre

send_maintenance_email

Input schema

CampoTipoRequeridoDescripción
tostringNoDestinatario. Default: edudomo2@gmail.com. Debe estar en la allowlist.
subjectstringSíAsunto del email.
textstringCondicionalCuerpo en texto plano. Requerido si no se proporciona html.
htmlstringCondicionalCuerpo HTML. Requerido si no se proporciona text.

Respuesta (éxito)

{
  "id": "<resend-message-id>",
  "to": "edudomo2@gmail.com",
  "subject": "Informe semanal ...",
  "status": "sent",
  "from": "Mantenimiento CreaRackSL <noreply@crearack.com>"
}

Errores posibles

CondiciónMensaje de error
RESEND_API_KEY no configuradaRESEND_API_KEY not configured in Worker env
Sin subjectsubject is required
Sin text ni htmlat least one of text or html body is required
Destinatario fuera de allowlistRecipient '<to>' not in allowlist + lista de permitidos
Error HTTP de ResendResend API <status> + detalle

Seguridad y defensa en profundidad

Autenticación de transporte

El endpoint /api/mcp valida Bearer token via authenticate() en index.ts antes de llegar a cualquier handler. handleEmail asume que la request ya está autenticada.

Allowlist de destinatarios (hardcoded)

El handler tiene una Set<string> con los únicos destinatarios permitidos. Si el agente pide enviar a cualquier otro correo, el tool devuelve error con la lista de permitidos. Esto acota el blast radius ante prompt injection o prompt comprometido.

Allowlist activa (commit f9aba6a):

  • edudomo2@gmail.com ✅ activa
  • tfuentes@esfericlabs.com — pendiente activación cuenta Esferic Labs
  • dfuentes@esfericlabs.com — pendiente activación cuenta Esferic Labs
  • eesquembri@esfericlabs.com — pendiente activación cuenta Esferic Labs

FROM hardcoded

Mantenimiento CreaRackSL <noreply@crearack.com>

El display name es deliberadamente distinto del SaaS (CreaRack Pro) para separar visualmente ambos flujos en el inbox.

Logging

Registrado en LOGGED_TOOLS con:

send_maintenance_email: { action: 'send', entity_type: 'email' }

Cada invocación queda trazada en el log de actividad del MCP.

Variables de entorno requeridas

VariableScopeEstado
RESEND_API_KEYCF Pages env (Worker)✅ configurada (fase A completada por @Esquembri)

Pasos pendientes (post-commit f9aba6a)

  1. Confirmar deploy CF Pages verde — incorpora RESEND_API_KEY.
  2. Actualizar prompt maintenance-weekly a v1.3 — sustituir mcp__Gmail__create_draft por send_maintenance_email.
  3. Run manual de verificación — comprobar que el email llega al inbox real.

Historial

FechaCambio
2026-05-13Tool creada (f9aba6a). Reemplaza flujo via Gmail__create_draft del connector claude.ai.

Véase también

  • [[workspace—agentes-ia]]
  • [[workspace—que-es-workspace]]