DnsGuard

Servidor MCP remoto gratuito que verifica la autenticación de correo de un dominio: SPF, DKIM, DMARC, BIMI, MX, MTA-STS y TLS-RPT. Devuelve una puntuación de 0 a 100, una calificación con letra y correcciones específicas. No se requiere registro ni clave API para el nivel gratuito.

Servidor MCP alojado

npx add-mcp 'https://dnsguard.mike-tusa.workers.dev/mcp'

Se instala en Claude Code, Codex, Cursor y más

Documentación

¿Está configurado correctamente el correo de tu dominio?

Comprobación gratuita de registros SPF, DKIM, DMARC, BIMI y MX, además de MTA-STS y TLS-RPT. Obtén una puntuación de 0 a 100 y correcciones en lenguaje sencillo. Sin registro.

Ejemplos: github.com · paypal.com · example.com

Qué hace cada registro

MX

Los registros de intercambiador de correo indican a otros servidores dónde entregar el correo de tu dominio. Un dominio que nunca gestiona correo puede publicar un "MX nulo" (0 .) para indicarlo.

SPF

Un registro TXT que enumera los servidores autorizados a enviar correo en nombre de tu dominio, que termina en -all o ~all. Los receptores pueden seguir como máximo 10 consultas DNS (include, a, mx, exists, redirect); si se supera, SPF devuelve un error permanente (permerror), que la mayoría de los receptores tratan como un fallo. Guía de SPF

DKIM

Tu servidor de correo firma cada mensaje; los receptores verifican la firma con una clave pública publicada en <selector>._domainkey.yourdomain. Los selectores no se pueden enumerar mediante DNS, así que probamos los comunes, además de los específicos de cada proveedor cuando tu MX o SPF apunta a un servicio de correo conocido (por ejemplo, Microsoft 365, SendGrid, Mailchimp, Mailgun, Zendesk). También puedes introducir el tuyo propio. Guía de DKIM

DMARC

Publicado en _dmarc.yourdomain. Indica a los receptores qué hacer cuando SPF y DKIM no coinciden con la dirección De visible: p=none (supervisión), quarantine (carpeta de spam) o reject. También establece dónde se envían los informes (rua). Guía de DMARC

BIMI

Opcional. Permite que los buzones compatibles muestren tu logotipo. Se publica en default._bimi.yourdomain con un logotipo SVG (l=) y normalmente un certificado VMC/CMC (a=). Requiere DMARC en quarantine o reject. Guía de BIMI

MTA-STS

Opcional. Indica a otros servidores de correo que solo te entreguen mensajes mediante TLS cifrado y con certificado verificado. Un registro TXT en _mta-sts.yourdomain (v=STSv1; id=…) apunta a un archivo de política en https://mta-sts.yourdomain/.well-known/mta-sts.txt con un modo (testing o enforce), tus hosts MX permitidos y un max_age. Guía de MTA-STS

TLS-RPT

Opcional. Un registro TXT en _smtp._tls.yourdomain (v=TLSRPTv1; rua=mailto:…) que solicita a los servidores emisores informes diarios sobre problemas TLS al entregarte correo. Se combina con MTA-STS. Guía de TLS-RPT

Cómo funciona la puntuación

MX 10 · SPF 25 · DMARC 30 · DKIM 25 · BIMI 10 = 100 puntos. MTA-STS (hasta 3) y TLS-RPT (hasta 2) añaden hasta 5 puntos de bonificación, y el total está limitado a 100, por lo que un registro opcional ausente nunca reduce tu puntuación. Los puntos de bonificación solo se aplican cuando SPF pasa y DMARC está en cuarentena o rechazo. Calificaciones: A ≥ 90, B ≥ 80, C ≥ 70, D ≥ 60, en caso contrario F. La puntuación cubre solo lo visible en el DNS público (además del archivo de política MTA-STS).

API JSON gratuita

¿Usas un asistente o agente de IA? DnsGuard también es un servidor MCP remoto: consulta Para agentes de IA.

No se necesita clave. CORS está habilitado, por lo que puedes llamarla desde un navegador. Mantén un volumen razonable: las solicitudes están limitadas por IP (unas 20 comprobaciones/min) y los resultados se almacenan en caché durante 2 minutos. DnsGuard es gratuito solo hasta cierto punto, por lo que todos los visitantes anónimos comparten unas 5.000 comprobaciones por día UTC; si se agotan, recibirás un mensaje claro, y una clave API gratuita sigue funcionando.

Endpoint

GET /api/check?domain=<domain>[&selector=<dkim-selector>]

Ejemplo

curl "https://YOUR-HOST/api/check?domain=example.com"

Respuesta (resumida)

{
  "domain": "example.com",
  "score": 95, "maxScore": 100, "grade": "A",
  "scoreBreakdown": { "base": 93, "bonus": 2, "bonusMax": 5, "cap": 100 },
  "checks": {
    "mx":    { "status": "pass", "score": 10, "maxScore": 10, "records": [...], "findings": [...], "recommendations": [...] },
    "spf":   { "status": "pass", "record": "v=spf1 -all", "lookupCount": 0, "lookupLimit": 10, ... },
    "dmarc": { "status": "warn", "policy": "reject", "pct": 100, "rua": [], "alignment": {...}, ... },
    "dkim":  { "status": "info", "selectorsChecked": [...], "keys": [...], ... },
    "bimi":  { "status": "info", "logoUrl": null, "vmcUrl": null, ... },
    "mtaSts": { "status": "info", "score": 0, "maxScore": 3, "bonus": true, "record": null, "mode": null, "mxPatterns": [], "maxAge": null, ... },
    "tlsRpt": { "status": "pass", "score": 2, "maxScore": 2, "bonus": true, "record": "v=TLSRPTv1; rua=mailto:tls@example.com", "rua": [...], ... }
  },
  "notes": [...],
  "meta": { "version": "0.7.2", "dnsQueries": 31, "durationMs": 180 }
}

status es uno de pass, warn, fail o info. Cada hallazgo es { "level", "message" }. mtaSts y tlsRpt llevan "bonus": true: sus puntos se suman a las cinco comprobaciones principales y score está limitado a 100 (scoreBreakdown muestra ambas partes). mtaSts también tiene policyUrl, policyFetch (ok, httpStatus, error), mxCoverage (covered, uncovered) y id.

Errores

HTTPcódigoSignificado
400invalid_domain / invalid_selectorLa entrada no superó la validación
422domain_not_foundEl dominio no existe (NXDOMAIN)
401invalid_api_keyBearer / X-Api-Key presente pero desconocido
429rate_limited / daily_quota_exceeded / daily_capacity_reachedDemasiadas solicitudes (por minuto, límite diario de tu clave o asignación diaria compartida); consulta Retry-After
502 / 504dns_unavailable / timeoutEl DNS ascendente falló o fue demasiado lento; reintenta

Cuerpo del error: { "error": { "code": "invalid_domain", "message": "…" } }. Comprobación de estado: GET /api/health.

Clave API gratuita (límites más altos)

El uso anónimo se mantiene en unas 20 comprobaciones/min por IP. Inicia sesión con Google para generar una clave API gratuita con unas 120 comprobaciones/min y un límite de 1.000 comprobaciones/día (día UTC). Los titulares de claves también tienen reservada parte de la asignación diaria compartida (unas 8.000 comprobaciones por día UTC entre todos los usuarios, de las cuales el uso anónimo puede tomar como máximo unas 5.000). ¿Necesitas más? Consulta DnsGuard Pro ($9/mes, unas 600 comprobaciones/min y 10.000/día).

Envía una clave gratuita en cada solicitud:

Authorization: Bearer dg_live_…
# or
X-Api-Key: dg_live_…
curl -H "Authorization: Bearer dg_live_YOUR_KEY" \
  "https://YOUR-HOST/api/check?domain=example.com"

Las claves de licencia Pro (prefijo DNSG, emitidas por Polar tras la suscripción) usan los mismos encabezados:

Authorization: Bearer DNSG-…
# or
X-Api-Key: DNSG-…
curl -H "Authorization: Bearer DNSG-YOUR_LICENSE_KEY" \
  "https://YOUR-HOST/api/check?domain=example.com"

Comprobando si el inicio de sesión con Google está disponible…

Continuar con Google

El inicio de sesión con Google usa una redirección OAuth del lado del servidor (sin JavaScript de Google en esta página) y solicita solo los ámbitos openid y email. Tu correo de Google debe estar verificado. Se establece una cookie CSRF de corta duración solo durante el inicio de sesión.

¿Perdiste tu clave? Haz clic en Continuar con Google de nuevo. Verás "Ya tienes una clave API gratuita" con un botón Rotar clave. Rotar requiere un inicio de sesión adicional con Google, luego muestra una nueva clave y elimina la anterior, que deja de funcionar en aproximadamente un minuto.

Para agentes de IA (MCP)

DnsGuard también es un servidor remoto de Model Context Protocol (MCP), por lo que los asistentes y agentes de IA pueden comprobar un dominio por ti. La mayoría de los clientes MCP aceptan esta configuración; algunos usan un formato diferente (por ejemplo, VS Code usa una clave servers). Los clientes con pantalla de configuración solo necesitan la URL https://dnsguard.mike-tusa.workers.dev/mcp.

{
  "mcpServers": {
    "dnsguard": {
      "type": "http",
      "url": "https://dnsguard.mike-tusa.workers.dev/mcp"
    }
  }
}

Tiene una herramienta de solo lectura, check_domain (domain, más un dkim_selector opcional), y puntúa exactamente igual que la API JSON. Los límites también son los mismos: no se necesita clave para un uso ligero. Para límites más altos, haz que tu cliente envíe Authorization: Bearer dg_live_… (clave gratuita) o Authorization: Bearer DNSG-… (Pro). Cada llamada a la herramienta cuenta como una comprobación.

Documentación legible por máquina: llms.txt · Especificación OpenAPI 3.1 · Endpoint MCP POST /mcp (HTTP Streamable, respuestas JSON sin estado).

DnsGuard Pro — $9/mes

Límites de API más altos para uso en producción: unas 600 comprobaciones/min y 10.000 comprobaciones/día (UTC) por licencia. Después de suscribirte, Polar emite una clave de licencia con prefijo DNSG. Envíala como Authorization: Bearer DNSG-… (o X-Api-Key) de la misma manera que una clave gratuita. Las respuestas incluyen x-dnsguard-tier: pro.

Suscribirse con Polar

Polar es el comerciante registrado (pago, impuestos, reembolsos). Cancela o gestiona la facturación en tu portal de cliente de Polar. DnsGuard valida las licencias Pro mediante un almacén de licencias compartido escrito por nuestra pasarela de pago de flota tras los eventos de suscripción de Polar; solo almacenamos contadores de uso con hash, no la clave de licencia en bruto.

Opcional: notificarme sobre resúmenes

Un resumen de monitoreo semanal (correo cuando cambian los registros SPF, DKIM, DMARC o BIMI) y planes superiores llegarán más adelante. Deja tu correo si quieres un aviso; no es necesario para usar Pro.

Eliminar mi correo de notificación de resumen

Introduce la dirección con la que te registraste. Si está en la lista, se elimina de inmediato. Por privacidad, verás el mismo mensaje en ambos casos.

Privacidad

Última actualización: 6 de octubre de 2026 (se añadió la obtención del archivo de política MTA-STS).

Una comprobación solo lee datos públicos: registros DNS y, si el dominio publica un registro MTA-STS, su archivo de política público en https://mta-sts.<domain>/.well-known/mta-sts.txt (ese servidor web ve una solicitud desde la red de Cloudflare, no desde tu IP). Consultamos DNS mediante resolutores DNS-over-HTTPS (Cloudflare cloudflare-dns.com, con respaldo de Google dns.google), por lo que esos proveedores ven los nombres consultados. No almacenamos los dominios que compruebas ni tu dirección IP. El sitio se ejecuta en Cloudflare Workers, y Cloudflare procesa las solicitudes para servirlo. Los resultados se mantienen en memoria hasta 2 minutos para caché, y tu IP se usa solo en contadores de corta duración para limitación de velocidad. Para mantener el servicio gratuito dentro de su presupuesto de alojamiento, también mantenemos totales diarios a nivel de sitio (recuentos simples de comprobaciones y solicitudes de lista de espera, sin IP, claves ni dominios), eliminados después de unos 2 días.

Lista de notificación de resumen: si te suscribes, almacenamos solo tu dirección de correo y la hora de registro, en Cloudflare Workers KV. La usamos solo para enviarte correos sobre resúmenes de monitoreo semanales o planes superiores cuando se lancen. No la vendemos ni compartimos, y no almacenamos tu IP con ella. Puedes eliminarla tú mismo en cualquier momento con el formulario Eliminar mi correo de notificación de resumen; la eliminación es inmediata.

Cuenta API gratuita (inicio de sesión con Google): cuando OAuth de Google está habilitado, almacenamos tu ID de cuenta de Google (sub), correo, ID de clave, hash de clave (SHA-256, nunca la clave en bruto después de la emisión) y hora de creación en un espacio de nombres KV separado de Workers. Solo solicitamos los ámbitos openid y email a Google (sin nombre ni foto de perfil). Para aplicar el límite diario gratuito, también mantenemos un contador de uso diario por clave: el número de comprobaciones realizadas con tu clave en cada día UTC, almacenado en un Durable Object de Cloudflare bajo tu ID de cuenta de Google. Los contadores se eliminan automáticamente después de unos 2 días. No almacenamos tu IP ni los dominios que compruebas con nada de esto. Una cookie CSRF HttpOnly de corta duración se establece solo durante la redirección de inicio de sesión con Google y se borra después. Puedes reemplazar una clave perdida tú mismo con Rotar clave (consulta la sección de API). Para eliminar los datos de tu cuenta API gratuita, envía un correo a la dirección de contacto a continuación.

DnsGuard Pro (Polar): las licencias Pro se validan mediante un almacén de licencias compartido escrito por nuestra pasarela de pago de flota tras los eventos de suscripción de Polar. DnsGuard solo almacena contadores de uso con hash para límites de velocidad y diarios (SHA-256 de la clave de licencia; nunca la clave en bruto). Polar es el comerciante registrado para pago, impuestos y reembolsos: cancela o gestiona la facturación a través de Polar. El contacto para solicitudes de privacidad o eliminación de DnsGuard sigue siendo la misma dirección a continuación.

Sin análisis ni scripts de terceros. No usamos cookies excepto la cookie CSRF de OAuth de corta duración durante el inicio de sesión con Google.

Contacto: preguntas, o una solicitud de privacidad o eliminación: digitalpromohub.support+dnsguard@gmail.com.