SSL Labs API: Check a website's SSL Labs HTTPS grade
Checks a website's HTTPS setup with SSL Labs: overall grade, per-server grades, certificate issuer and expiry, supported protocols and known weaknesses. Reuses cached reports from the last 72 hours unless a fresh test is requested.
Unofficial. Not affiliated with or endorsed by SSL Labs.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Website, required
website Website domain or URL, for example https://github.com/about.
www.ssllabs.com
- Use Cached optional
use_cached Reuse a report from the last 72 hours when available, for example true; set false to request a fresh test.
false
True or false. Default
true.
Input as JSON
{ "website": "www.ssllabs.com", "use_cached": false}Output
{ "domain": "www.ssllabs.com", "servers": [ { "grade": "A+", "ip_address": "69.67.183.100", "results_page_link": "https://www.ssllabs.com/ssltest/analyze.html?d=www.ssllabs.com&hideResults=on&s=69.67.183.100" } ], "test_date": "2026-10-23", "overall_grade": "A+", "known_weaknesses": [], "days_until_expiry": 107, "results_page_link": "https://www.ssllabs.com/ssltest/analyze.html?d=www.ssllabs.com&hideResults=on" , "certificate_issuer": "DigiCert Inc", "supported_protocols": [ "TLS 1.3", "TLS 1.2" ], "certificate_expiry_date": "2027-02-07"}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"ssllabs.com/check_ssl_certificate","input":{"website":"www.ssllabs.com","use_cached":false}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "ssllabs.com/check_ssl_certificate" , "input": { "website": "www.ssllabs.com", "use_cached": False }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "ssllabs.com/check_ssl_certificate" , "input": { "website": "www.ssllabs.com", "use_cached": false } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run ssllabs.com/check_ssl_certificate# with {"website":"www.ssllabs.com","use_cached":false}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "website" ], "properties": { "website": { "type": "string", "description": "Website domain or URL, for example https://github.com/about." }, "use_cached": { "type": "boolean", "default": true, "description": "Reuse a report from the last 72 hours when available, for example true; set false to request a fresh test." } }}Output schema
{ "type": "object", "required": [ "domain", "overall_grade", "servers", "certificate_issuer", "certificate_expiry_date", "days_until_expiry", "supported_protocols", "known_weaknesses", "test_date", "results_page_link" ], "properties": { "domain": { "type": "string", "description": "Website domain that was tested." }, "servers": { "type": "array", "items": { "type": "object", "required": [ "ip_address", "grade", "results_page_link" ], "properties": { "grade": { "type": [ "string", "null" ] }, "ip_address": { "type": "string" }, "results_page_link": { "type": "string" } }, "additionalProperties": false }, "description": "Server addresses and grades." }, "test_date": { "type": "string", "format": "date" }, "overall_grade": { "type": "string", "description": "Lowest SSL Labs grade across the tested servers." }, "known_weaknesses": { "type": "array", "items": { "type": "string" } }, "days_until_expiry": { "type": [ "integer", "null" ] }, "results_page_link": { "type": "string" }, "certificate_issuer": { "type": [ "string", "null" ] }, "supported_protocols": { "type": "array", "items": { "type": "string" } }, "certificate_expiry_date": { "type": [ "string", "null" ], "format": "date" } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
ssllabs.com/check_ssl_certificate- Returns
- domain, overall grade, servers, certificate issuer and expiry, protocols, known weaknesses, test date, results link
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method ssllabs.com/check_ssl_certificate with the inputs above.
Ask your agent
- What grade does my site get on an SSL Labs HTTPS test for example.com?
- Can you pull the latest cached SSL Labs report for github.com/about and tell me the overall grade?
- Run a fresh HTTPS check on mybank-portal.net and show me the per-server grades and weaknesses.
- Is the certificate on shop.example.org close to expiring, and who issued it? Check its HTTPS setup.
- Give me the supported TLS protocols and any known vulnerabilities for api.acme-tools.io, using a new scan instead of cached results.
See more
Gets a website's worldwide popularity bucket, exact rank when shown, categories, and recent weekly rank history from Cloudflare Radar. Historical rank points are available only for top-100 domains; other ranked domains have an empty history.
radar.cloudflare.com/get_domain_rankGets the technologies shown in a website's free BuiltWith profile, grouped in the order BuiltWith displays them. A company name is matched to its official website through a public web search.
builtwith.com/get_website_technologiesTests a web page with Google PageSpeed Insights on mobile or desktop: performance, accessibility, best practices and SEO scores, lab timings, real-user Core Web Vitals when available, and the top suggested fixes.
pagespeed.web.dev/check_page_speedGets a website's monthly traffic estimate, rankings, engagement and top countries from Similarweb's free public overview. Traffic-source percentages withheld by the site are null; the site may limit anonymous views.
similarweb.com/get_website_trafficGets a company's Trustpilot rating summary from its name or website: TrustScore, rating label, total reviews, star breakdown, categories, claimed status, reply statistics and location when shown.
trustpilot.com/get_company_ratingFinds certificates issued for a domain and its subdomains on crt.sh, with the DNS names each certificate covers. Expired certificates are excluded unless requested.
crt.sh/search_certificatesChecks whether an app or website has current problems in a country on Downdetector: its status, reports in the latest 15-minute interval, the usual report count, the most reported problem types and the most affected locations when shown. The service must have a public Downdetector page in that country.
downdetector.com/check_service_statusLooks up DNS records for a domain or pasted website link and summarizes its SPF record, DMARC policy and mail servers. A missing record type yields an empty records list.
dns.google/get_dns_records