RunStack Checks
External checks of TLS, HTTP headers, email domain, DNS and ports, with cause and fix
¿Debería usar esto?
Calidad y seguridad
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"checks": {
"url": "https://runstack.pro/api/mcp"
}
}
}Puntos de conexión remotos
https://runstack.pro/api/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (8)
🟢check_tls(host, port)
Scan a public host's TLS from the internet: certificate validity, chain completeness, expiry date, hostname match, enabled protocols (TLS 1.0–1.3), cipher suites, HSTS. Use when browsers show certificate errors, before/after renewing or rotating a certificate, or to confirm old TLS versions are disabled. Use this (not check_http) for anything about the certificate or TLS configuration itself; works on any TLS port, not only 443. Returns a verdict, findings with cause and fix, and a shareable report link. Takes up to ~60 s.
Esquema de entrada
{
"type": "object",
"properties": {
"host": {
"type": "string",
"description": "Public hostname to scan, without scheme or path, e.g. example.com"
},
"port": {
"type": "integer",
"minimum": 1,
"maximum": 65535,
"default": 443,
"description": "TLS port, e.g. 443 (HTTPS), 465 (SMTPS), 993 (IMAPS). Default 443."
}
},
"required": [
"host"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"ok": {
"type": "boolean",
"description": "false when the check could not run (see error / message)"
},
"tool": {
"type": "string"
},
"target": {
"type": "string",
"description": "What was checked"
},
"verdict": {
"type": "string",
"enum": [
"ok",
"warn",
"fail"
]
},
"headline": {
"type": "string",
"description": "One-line summary"
},
"findings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"severity": {
"type": "string",
"enum": [
"error",
"warning",
"info",
"ok"
]
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string",
"description": "Why it matters / cause"
},
"fix": {
"type": "string",
"description": "How to fix"
},
"docs": {
"type": "string",
"description": "How-to article URL"
}
},
"required": [
"severity",
"title"
]
}
},
"facts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string"
},
"value": {
"type": "string"
}
},
"required": [
"label",
"value"
]
}
},
"reportUrl": {
"type": "string",
"description": "Shareable report link"
},
"error": {
"type": "string",
"description": "Error code when ok is false"
},
"message": {
"type": "string"
},
"notice": {
"type": "string",
"description": "Usage note, e.g. anonymous-tier limits"
}
},
"required": [
"ok"
]
}🟢check_http(url, followRedirects)
Request a public URL from outside your network and inspect the HTTP layer: status code, full redirect chain, security headers (HSTS, CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy…), caching and compression headers. Use to debug redirect loops, unexpected status codes or missing headers as real visitors and CDNs see them, or to verify a web server / CDN config change after deploy. Use check_tls instead for certificate or TLS protocol questions. Returns a verdict and findings with fixes.
Esquema de entrada
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Full public http(s) URL, e.g. https://example.com/login"
},
"followRedirects": {
"type": "boolean",
"default": true,
"description": "Follow redirects and report every hop (default true). Set false to see only the first response."
}
},
"required": [
"url"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"ok": {
"type": "boolean",
"description": "false when the check could not run (see error / message)"
},
"tool": {
"type": "string"
},
"target": {
"type": "string",
"description": "What was checked"
},
"verdict": {
"type": "string",
"enum": [
"ok",
"warn",
"fail"
]
},
"headline": {
"type": "string",
"description": "One-line summary"
},
"findings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"severity": {
"type": "string",
"enum": [
"error",
"warning",
"info",
"ok"
]
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string",
"description": "Why it matters / cause"
},
"fix": {
"type": "string",
"description": "How to fix"
},
"docs": {
"type": "string",
"description": "How-to article URL"
}
},
"required": [
"severity",
"title"
]
}
},
"facts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string"
},
"value": {
"type": "string"
}
},
"required": [
"label",
"value"
]
}
},
"reportUrl": {
"type": "string",
"description": "Shareable report link"
},
"error": {
"type": "string",
"description": "Error code when ok is false"
},
"message": {
"type": "string"
},
"notice": {
"type": "string",
"description": "Usage note, e.g. anonymous-tier limits"
}
},
"required": [
"ok"
]
}🟢check_email_domain(domain, dkimSelector)
Audit a mail domain as other mail servers see it: MX, SPF (including the 10-DNS-lookup limit), DKIM, DMARC policy, PTR / forward-confirmed reverse DNS, SMTP STARTTLS on the MX hosts, MTA-STS, TLS-RPT, BIMI. Use when mail lands in spam or bounces, after changing mail provider or DNS, or before tightening DMARC. Use this (not check_dns) for any email deliverability or authentication question. Returns a verdict, findings with cause and fix, and a report link.
Esquema de entrada
{
"type": "object",
"properties": {
"domain": {
"type": "string",
"description": "Mail domain (the part after @), e.g. example.com"
},
"dkimSelector": {
"type": "string",
"description": "DKIM selector to check in addition to common ones, e.g. google, selector1, mail. Optional."
}
},
"required": [
"domain"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"ok": {
"type": "boolean",
"description": "false when the check could not run (see error / message)"
},
"tool": {
"type": "string"
},
"target": {
"type": "string",
"description": "What was checked"
},
"verdict": {
"type": "string",
"enum": [
"ok",
"warn",
"fail"
]
},
"headline": {
"type": "string",
"description": "One-line summary"
},
"findings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"severity": {
"type": "string",
"enum": [
"error",
"warning",
"info",
"ok"
]
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string",
"description": "Why it matters / cause"
},
"fix": {
"type": "string",
"description": "How to fix"
},
"docs": {
"type": "string",
"description": "How-to article URL"
}
},
"required": [
"severity",
"title"
]
}
},
"facts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string"
},
"value": {
"type": "string"
}
},
"required": [
"label",
"value"
]
}
},
"reportUrl": {
"type": "string",
"description": "Shareable report link"
},
"error": {
"type": "string",
"description": "Error code when ok is false"
},
"message": {
"type": "string"
},
"notice": {
"type": "string",
"description": "Usage note, e.g. anonymous-tier limits"
}
},
"required": [
"ok"
]
}🟢check_dns(domain, type)
Resolve a name at several public resolvers (Google, Cloudflare, Quad9, …) and compare their answers. Use after changing DNS records to check propagation, or when some users reach a different IP or get NXDOMAIN. Use check_email_domain instead for SPF/DKIM/DMARC analysis. Returns per-resolver answers, inconsistencies and a verdict.
Esquema de entrada
{
"type": "object",
"properties": {
"domain": {
"type": "string",
"description": "Domain or hostname to resolve, e.g. www.example.com"
},
"type": {
"type": "string",
"description": "Record type to query. ALL queries the common types at once. Default ALL.",
"enum": [
"ALL",
"A",
"AAAA",
"CNAME",
"MX",
"TXT",
"NS",
"SOA",
"CAA",
"SRV"
],
"default": "ALL"
}
},
"required": [
"domain"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"ok": {
"type": "boolean",
"description": "false when the check could not run (see error / message)"
},
"tool": {
"type": "string"
},
"target": {
"type": "string",
"description": "What was checked"
},
"verdict": {
"type": "string",
"enum": [
"ok",
"warn",
"fail"
]
},
"headline": {
"type": "string",
"description": "One-line summary"
},
"findings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"severity": {
"type": "string",
"enum": [
"error",
"warning",
"info",
"ok"
]
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string",
"description": "Why it matters / cause"
},
"fix": {
"type": "string",
"description": "How to fix"
},
"docs": {
"type": "string",
"description": "How-to article URL"
}
},
"required": [
"severity",
"title"
]
}
},
"facts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string"
},
"value": {
"type": "string"
}
},
"required": [
"label",
"value"
]
}
},
"reportUrl": {
"type": "string",
"description": "Shareable report link"
},
"error": {
"type": "string",
"description": "Error code when ok is false"
},
"message": {
"type": "string"
},
"notice": {
"type": "string",
"description": "Usage note, e.g. anonymous-tier limits"
}
},
"required": [
"ok"
]
}🟢check_port(host, ports)
Check from the internet whether TCP ports of a public host are open, closed or filtered. Use to verify firewall / security group rules, or to find out why a service works locally but is unreachable from outside. Only public addresses are accepted; this does not test the application behind the port (use check_http or check_tls for that).
Esquema de entrada
{
"type": "object",
"properties": {
"host": {
"type": "string",
"description": "Public hostname or IP address, e.g. example.com or 203.0.113.10"
},
"ports": {
"type": "string",
"description": "Comma-separated TCP ports, e.g. 22,80,443"
}
},
"required": [
"host",
"ports"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"ok": {
"type": "boolean",
"description": "false when the check could not run (see error / message)"
},
"tool": {
"type": "string"
},
"target": {
"type": "string",
"description": "What was checked"
},
"verdict": {
"type": "string",
"enum": [
"ok",
"warn",
"fail"
]
},
"headline": {
"type": "string",
"description": "One-line summary"
},
"findings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"severity": {
"type": "string",
"enum": [
"error",
"warning",
"info",
"ok"
]
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string",
"description": "Why it matters / cause"
},
"fix": {
"type": "string",
"description": "How to fix"
},
"docs": {
"type": "string",
"description": "How-to article URL"
}
},
"required": [
"severity",
"title"
]
}
},
"facts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string"
},
"value": {
"type": "string"
}
},
"required": [
"label",
"value"
]
}
},
"reportUrl": {
"type": "string",
"description": "Shareable report link"
},
"error": {
"type": "string",
"description": "Error code when ok is false"
},
"message": {
"type": "string"
},
"notice": {
"type": "string",
"description": "Usage note, e.g. anonymous-tier limits"
}
},
"required": [
"ok"
]
}🟢check_ip(input)
Look up an IP address or ASN: owner organization, announced prefix, PTR (reverse DNS), RPKI validity and geolocation. Use to identify who is behind an address seen in logs or headers, or to check PTR / RPKI for a mail or BGP issue. Does not test reachability (use check_port).
Esquema de entrada
{
"type": "object",
"properties": {
"input": {
"type": "string",
"description": "IPv4 or IPv6 address, or an ASN, e.g. 1.1.1.1, 2606:4700::1111 or AS13335"
}
},
"required": [
"input"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"ok": {
"type": "boolean",
"description": "false when the check could not run (see error / message)"
},
"tool": {
"type": "string"
},
"target": {
"type": "string",
"description": "What was checked"
},
"verdict": {
"type": "string",
"enum": [
"ok",
"warn",
"fail"
]
},
"headline": {
"type": "string",
"description": "One-line summary"
},
"findings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"severity": {
"type": "string",
"enum": [
"error",
"warning",
"info",
"ok"
]
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string",
"description": "Why it matters / cause"
},
"fix": {
"type": "string",
"description": "How to fix"
},
"docs": {
"type": "string",
"description": "How-to article URL"
}
},
"required": [
"severity",
"title"
]
}
},
"facts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string"
},
"value": {
"type": "string"
}
},
"required": [
"label",
"value"
]
}
},
"reportUrl": {
"type": "string",
"description": "Shareable report link"
},
"error": {
"type": "string",
"description": "Error code when ok is false"
},
"message": {
"type": "string"
},
"notice": {
"type": "string",
"description": "Usage note, e.g. anonymous-tier limits"
}
},
"required": [
"ok"
]
}🟢check_dnsbl(input)
Check whether an IP address or a domain is on email blocklists (DNSBL/RBL): Spamhaus ZEN and DBL, SpamCop, Barracuda, UCEPROTECT, Mailspike, SURBL, URIBL and others. For a domain, its own name is checked on domain lists and its A/AAAA addresses on IP lists. Use when mail bounces with 'listed'/'blocked' errors or lands in spam, or after a server was compromised. Lists that refuse queries from public resolvers are reported as not tested, never as listed. Returns listed lists with the reason and a delisting link. For SPF/DKIM/DMARC use check_email_domain.
Esquema de entrada
{
"type": "object",
"properties": {
"input": {
"type": "string",
"description": "Public IPv4/IPv6 address of the sending mail server, or a domain, e.g. 203.0.113.10 or example.com"
}
},
"required": [
"input"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"ok": {
"type": "boolean",
"description": "false when the check could not run (see error / message)"
},
"tool": {
"type": "string"
},
"target": {
"type": "string",
"description": "What was checked"
},
"verdict": {
"type": "string",
"enum": [
"ok",
"warn",
"fail"
]
},
"headline": {
"type": "string",
"description": "One-line summary"
},
"findings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"severity": {
"type": "string",
"enum": [
"error",
"warning",
"info",
"ok"
]
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string",
"description": "Why it matters / cause"
},
"fix": {
"type": "string",
"description": "How to fix"
},
"docs": {
"type": "string",
"description": "How-to article URL"
}
},
"required": [
"severity",
"title"
]
}
},
"facts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string"
},
"value": {
"type": "string"
}
},
"required": [
"label",
"value"
]
}
},
"reportUrl": {
"type": "string",
"description": "Shareable report link"
},
"error": {
"type": "string",
"description": "Error code when ok is false"
},
"message": {
"type": "string"
},
"notice": {
"type": "string",
"description": "Usage note, e.g. anonymous-tier limits"
}
},
"required": [
"ok"
]
}🟢check_domain_expiry(domain)
Look up a domain's registration in the registry (RDAP, or WHOIS for .ru/.su/.рф): expiry date and days left, registrar, creation date, EPP status codes (clientHold, redemptionPeriod, transfer locks…) with explanations, nameservers and DNSSEC. Use to check when a domain must be renewed or why it suddenly stopped resolving. Subdomains are reduced to the registered domain. For DNS records use check_dns.
Esquema de entrada
{
"type": "object",
"properties": {
"domain": {
"type": "string",
"description": "Domain name, e.g. example.com or пример.рф"
}
},
"required": [
"domain"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"ok": {
"type": "boolean",
"description": "false when the check could not run (see error / message)"
},
"tool": {
"type": "string"
},
"target": {
"type": "string",
"description": "What was checked"
},
"verdict": {
"type": "string",
"enum": [
"ok",
"warn",
"fail"
]
},
"headline": {
"type": "string",
"description": "One-line summary"
},
"findings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"severity": {
"type": "string",
"enum": [
"error",
"warning",
"info",
"ok"
]
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string",
"description": "Why it matters / cause"
},
"fix": {
"type": "string",
"description": "How to fix"
},
"docs": {
"type": "string",
"description": "How-to article URL"
}
},
"required": [
"severity",
"title"
]
}
},
"facts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string"
},
"value": {
"type": "string"
}
},
"required": [
"label",
"value"
]
}
},
"reportUrl": {
"type": "string",
"description": "Shareable report link"
},
"error": {
"type": "string",
"description": "Error code when ok is false"
},
"message": {
"type": "string"
},
"notice": {
"type": "string",
"description": "Usage note, e.g. anonymous-tier limits"
}
},
"required": [
"ok"
]
}Comunidad
Evidencia