RunStack Checks
External checks of TLS, HTTP headers, email domain, DNS and ports, with cause and fix
사용해야 할까요
품질 및 안전성
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"checks": {
"url": "https://runstack.pro/api/mcp"
}
}
}원격 엔드포인트
https://runstack.pro/api/mcpstreamable-http할 수 있는 일
도구 목록
도구 (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.
입력 스키마
{
"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
}출력 스키마
{
"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.
입력 스키마
{
"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
}출력 스키마
{
"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.
입력 스키마
{
"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
}출력 스키마
{
"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.
입력 스키마
{
"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
}출력 스키마
{
"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).
입력 스키마
{
"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
}출력 스키마
{
"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).
입력 스키마
{
"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
}출력 스키마
{
"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.
입력 스키마
{
"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
}출력 스키마
{
"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.
입력 스키마
{
"type": "object",
"properties": {
"domain": {
"type": "string",
"description": "Domain name, e.g. example.com or пример.рф"
}
},
"required": [
"domain"
],
"additionalProperties": false
}출력 스키마
{
"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"
]
}커뮤니티
증거