TLS cert verdict (OK/WARN/CRITICAL/UNKNOWN) from the served chain: expiry, revocation, alerts
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Check one domain's TLS certificate and return a verdict: status OK | WARN | CRITICAL | UNKNOWN, judged from the certificate chain the server actually serves. Measured from Korean point A (full chain and CRL revocation) plus Korean point B and an overseas point on the Globalping public measurement network (per-point results in measuredFrom; disagreement between points is a WARN). Checks: verification (expired, not yet valid, hostname mismatch, self-signed, untrusted root, missing intermediate, revoked via CRL), days left, renewal point, a newer certificate issued but not deployed (CT logs), the served chain and the issuing CA's incident history. If the server cannot be measured the status is UNKNOWN and CT logs are shown only as an estimate, never as OK. Set detail=true to include the full chain in the text output.
Domain name, e.g. example.com
TLS port (default 443). Implicit TLS: 8443 4443 9443 6443 636 465 993 995 853 5061 3269 8883; STARTTLS: 25 587 (SMTP), 143 (IMAP), 110 (POP3), 389 (LDAP). Or pass domain as host:port
Include the full certificate chain in the text output (default false)
Days before expiry that count as CRITICAL "expiring soon" (default 15; must be < warnDays)
Days before expiry that count as WARN (default 30; the default shrinks for short-lived certificates)
Check one domain's TLS certificate and return a verdict: status OK | WARN | CRITICAL | UNKNOWN, judged from the certificate chain the server actually serves. Measured from Korean point A (full chain and CRL revocation) plus Korean point B and an overseas point on the Globalping public measurement network (per-point results in measuredFrom; disagreement between points is a WARN). Checks: verification (expired, not yet valid, hostname mismatch, self-signed, untrusted root, missing intermediate, revoked via CRL), days left, renewal point, a newer certificate issued but not deployed (CT logs), the served chain and the issuing CA's incident history. If the server cannot be measured the status is UNKNOWN and CT logs are shown only as an estimate, never as OK. Set detail=true to include the full chain in the text output.
| Argument | Type | Description |
|---|---|---|
| port | integer | TLS port (default 443). Implicit TLS: 8443 4443 9443 6443 636 465 993 995 853 5061 3269 8883; STARTTLS: 25 587 (SMTP), 143 (IMAP), 110 (POP3), 389 (LDAP). Or pass domain as host:port |
| detail | boolean | Include the full certificate chain in the text output (default false) |
| domain* | string | Domain name, e.g. example.com |
| critDays | integer | Days before expiry that count as CRITICAL "expiring soon" (default 15; must be < warnDays) |
| warnDays | integer | Days before expiry that count as WARN (default 30; the default shrinks for short-lived certificates) |
{
"type": "object",
"required": [
"domain"
],
"properties": {
"port": {
"type": "integer",
"description": "TLS port (default 443). Implicit TLS: 8443 4443 9443 6443 636 465 993 995 853 5061 3269 8883; STARTTLS: 25 587 (SMTP), 143 (IMAP), 110 (POP3), 389 (LDAP). Or pass domain as host:port"
},
"detail": {
"type": "boolean",
"description": "Include the full certificate chain in the text output (default false)"
},
"domain": {
"type": "string",
"description": "Domain name, e.g. example.com"
},
"critDays": {
"type": "integer",
"maximum": 365,
"minimum": 1,
"description": "Days before expiry that count as CRITICAL \"expiring soon\" (default 15; must be < warnDays)"
},
"warnDays": {
"type": "integer",
"maximum": 365,
"minimum": 1,
"description": "Days before expiry that count as WARN (default 30; the default shrinks for short-lived certificates)"
}
}
}DNS and hosting facts for a domain: nameservers with DNS provider, A/AAAA with IP owner (ASN), CNAME, MX, CAA (which CAs may issue), SPF/DMARC, DNSSEC, registrar and domain expiry (RDAP).
| Argument | Type | Description |
|---|---|---|
| domain* | string | Domain name, e.g. example.com |
{
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"description": "Domain name, e.g. example.com"
}
}
}Compare answers for one DNS record across resolvers: the authoritative nameservers, Korean ISPs (KT, SK Broadband, LG U+) and public resolvers (Cloudflare, Google, Quad9, OpenDNS), measured from a Korean network. Use it to confirm a TXT/CNAME for certificate domain validation (e.g. _acme-challenge) has propagated.
| Argument | Type | Description |
|---|---|---|
| name* | string | Record name, e.g. _acme-challenge.example.com |
| type* | string |
{
"type": "object",
"required": [
"name",
"type"
],
"properties": {
"name": {
"type": "string",
"description": "Record name, e.g. _acme-challenge.example.com"
},
"type": {
"enum": [
"A",
"AAAA",
"CNAME",
"TXT",
"MX",
"NS",
"CAA",
"SOA"
],
"type": "string"
}
}
}Verdict for up to 5 domains at once: status OK | WARN | CRITICAL | UNKNOWN per domain combining the served certificate (verification, days left, null when the server cannot be measured) and domain registration expiry (RDAP), plus Korean alert lines. Use this for inventories, CI gates (fail unless status is OK) and periodic checks.
| Argument | Type | Description |
|---|---|---|
| domains* | array | Domain names |
| critDays | integer | Days before expiry that count as CRITICAL "expiring soon" (default 15; must be < warnDays) |
| warnDays | integer | Days before expiry that count as WARN (default 30; the default shrinks for short-lived certificates) |
{
"type": "object",
"required": [
"domains"
],
"properties": {
"domains": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 5,
"minItems": 1,
"description": "Domain names"
},
"critDays": {
"type": "integer",
"maximum": 365,
"minimum": 1,
"description": "Days before expiry that count as CRITICAL \"expiring soon\" (default 15; must be < warnDays)"
},
"warnDays": {
"type": "integer",
"maximum": 365,
"minimum": 1,
"description": "Days before expiry that count as WARN (default 30; the default shrinks for short-lived certificates)"
}
}
}Security posture check of a web server (no port scanning): TLS protocol support (legacy 1.0/1.1 detection via a Korean network probe), security headers (HSTS/CSP/X-Content-Type-Options/anti-clickjacking/Referrer-Policy), HTTP→HTTPS redirect, and certificate key/signature strength. Returns per-item pass/warn/fail and an overall grade.
| Argument | Type | Description |
|---|---|---|
| domain* | string | Domain name, e.g. example.com |
{
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"description": "Domain name, e.g. example.com"
}
}
}Explain a TLS/SSL certificate error message from a browser, curl/OpenSSL, Java, Python, Node.js, Go or .NET: likely causes, fixes, and links to step-by-step guides (Korean). Works offline from a curated knowledge base.
| Argument | Type | Description |
|---|---|---|
| error* | string | Full error text, e.g. "PKIX path building failed" or "NET::ERR_CERT_DATE_INVALID" |
{
"type": "object",
"required": [
"error"
],
"properties": {
"error": {
"type": "string",
"description": "Full error text, e.g. \"PKIX path building failed\" or \"NET::ERR_CERT_DATE_INVALID\""
}
}
}Subscribe an email address to free daily expiry monitoring of up to 5 domains (certificate, domain registration and security grade) with email alerts, plus an optional Slack/Discord/Telegram/webhook channel. Also alerts when Certificate Transparency logs show a new certificate for a domain from a CA not seen before (possible unauthorized issuance). Double opt-in: a confirmation email is sent and monitoring starts only after the recipient clicks the link; one confirmation email per address per 24 hours. Use only an address the user owns and explicitly asked to use.
| Argument | Type | Description |
|---|---|---|
| email* | string | Email address that will receive the alerts |
| domains* | array | Domain names to monitor (host or host:port). For paid certificates you may append the contract (subscription) end date and the DCV method, e.g. "shop.example.com 2027-05-01 email". Contract expiry is alerted with the same thresholds and email DCV gets a reminder (email DCV ends 2028-03-15, CA/B Forum SC-090). A trailing "45/20" sets per-domain WARN/CRITICAL days. |
| webhook | string | Optional alert channel URL. Alerts are also posted there after confirmation. Accepts a Slack or Discord incoming-webhook URL, a Telegram URL https://api.telegram.org/bot<TOKEN>/sendMessage?chat_id=<CHAT_ID>, or any public https endpoint (receives JSON POST, version 1). It is a secret; only pass a URL the user gave you. |
| critDays | integer | Days before expiry that count as CRITICAL "expiring soon" (default 15; must be < warnDays) |
| warnDays | integer | Days before expiry that count as WARN (default 30; the default shrinks for short-lived certificates) |
| slackWebhook | string | Deprecated alias of webhook that accepts only Slack Incoming Webhook URLs (https://hooks.slack.com/services/...). |
{
"type": "object",
"required": [
"email",
"domains"
],
"properties": {
"email": {
"type": "string",
"description": "Email address that will receive the alerts"
},
"domains": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 5,
"minItems": 1,
"description": "Domain names to monitor (host or host:port). For paid certificates you may append the contract (subscription) end date and the DCV method, e.g. \"shop.example.com 2027-05-01 email\". Contract expiry is alerted with the same thresholds and email DCV gets a reminder (email DCV ends 2028-03-15, CA/B Forum SC-090). A trailing \"45/20\" sets per-domain WARN/CRITICAL days."
},
"webhook": {
"type": "string",
"description": "Optional alert channel URL. Alerts are also posted there after confirmation. Accepts a Slack or Discord incoming-webhook URL, a Telegram URL https://api.telegram.org/bot<TOKEN>/sendMessage?chat_id=<CHAT_ID>, or any public https endpoint (receives JSON POST, version 1). It is a secret; only pass a URL the user gave you."
},
"critDays": {
"type": "integer",
"maximum": 365,
"minimum": 1,
"description": "Days before expiry that count as CRITICAL \"expiring soon\" (default 15; must be < warnDays)"
},
"warnDays": {
"type": "integer",
"maximum": 365,
"minimum": 1,
"description": "Days before expiry that count as WARN (default 30; the default shrinks for short-lived certificates)"
},
"slackWebhook": {
"type": "string",
"description": "Deprecated alias of webhook that accepts only Slack Incoming Webhook URLs (https://hooks.slack.com/services/...)."
}
}
}