web-doctor
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@web-doctorcheck the health of example.com"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
web-doctor π©Ί
Give it a domain, get an AβF health grade for its TLS, HTTPS and security headers β checked live.
web-doctor opens a real TLS connection to the target and fetches its HTTP headers, then grades:
π TLS certificate β validity & trusted issuer, hostname (SAN) match, days until expiry, self-signed / expired detection
π§© TLS version β flags obsolete TLS 1.0/1.1; notes TLS 1.2 vs the stronger TLS 1.3
βͺοΈ HTTPS upgrade β does plain
http://301-redirect tohttps://?π‘οΈ Security headers β
Strict-Transport-Security(HSTS),Content-Security-Policy,X-Frame-Options,X-Content-Type-Options,Referrer-Policy,Permissions-Policyβ present and well-formedβ‘ Availability β HTTP status & response latency
β¦and returns a single AβF grade with a concrete fix for every issue.
It is read-only: it never logs in or changes anything on the target.
Why an MCP / API and not just a script?
An LLM agent can't open a socket or finish a TLS handshake on its own. web-doctor does the live network work server-side and hands back a clean, graded verdict β so an agent (or a CI step) can audit a deployment in one call.
Related MCP server: Webby MCP Server
Use it as an MCP server (free)
{
"mcpServers": {
"web-doctor": { "command": "npx", "args": ["-y", "web-doctor-mcp"] }
}
}Tools:
check_website_healthβ{ "target": "example.com" }check_manyβ{ "targets": ["example.com", "github.com"] }
Or connect over HTTP at POST https://web-doctor.vercel.app/mcp.
Free HTTP API
GET https://web-doctor.vercel.app/check?target=example.com
GET https://web-doctor.vercel.app/check?target=https://github.com
GET https://web-doctor.vercel.app/check_many?targets=example.com,github.com,vercel.comRate-limited to 30 requests/hour/IP.
Pay-per-call (x402) β no sign-up, no API key
The /pro/* routes are gated by x402. Your agent pays $0.02 USDC per call automatically and gets the result. Settles on-chain (Base) to the operator wallet.
GET https://web-doctor.vercel.app/pro/check?target=<domain> # 402 β pay β result
GET https://web-doctor.vercel.app/pro/check_many?targets=... # up to 50 targetsExample output
π’ A β github.com (health score 96/100)
A β github.com is healthy: valid certificate, HTTPS enforced and the key security headers are in place.
TLS / certificate:
β’ Protocol: TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 handshake=84ms
β’ Certificate: valid & trusted issuer=CN=Sectigo ... expires in 220d
HTTP:
β’ Status 200 latency=140ms server=github.com
β’ HTTPβHTTPS redirect: yes
Security headers:
β
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
β
Content-Security-Policy: default-src 'none'; ...
β
X-Frame-Options: deny
β
X-Content-Type-Options: nosniff
β
Referrer-Policy: ...
β
Permissions-Policy: ...Develop
npm install
npm run build
npm run test:engine # live smoke test
npm run dev:http # local server on :8080 (payments default ON; set X402_ENABLED=false to disable)
npm run dev:mcp # stdio MCP serverEnvironment (deploy)
Var | Purpose |
| receiving wallet (default set) |
|
|
|
|
| mainnet facilitator that settles on the chosen network (required to actually collect on mainnet) |
|
|
License
MIT
Available Tools
2 toolscheck_manyA
Run the live web health & security check on several domains/URLs at once and return one AβF grade per site. Useful to audit a fleet of sites or compare deployments.
| Name | Required | Description | Default |
|---|---|---|---|
| targets | Yes | List of domains or URLs to check. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral disclosure. It mentions it is a 'live' check returning 'AβF grade', but does not address potential side effects, rate limits, or authentication requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences, no filler. It front-loads the action and purpose effectively.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description partially covers return format ('AβF grade per site') and usage context. However, it lacks details on error handling, speed, or edge cases, leaving gaps for a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a description for the sole parameter. The tool description adds no new semantic detail beyond restating 'several domains/URLs'. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Run', the resource 'live web health & security check', and the scope 'several domains/URLs at once'. It distinguishes from the sibling tool 'check_website_health' by implying aggregation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context by stating it is 'useful to audit a fleet of sites or compare deployments', which implicitly guides when to use it over a single-site check. However, it lacks explicit exclusions or alternative comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_website_healthA
Run a LIVE web health & security check on a domain or URL and return an AβF grade with concrete fixes. Performs a real TLS handshake to read the SSL/TLS certificate (validity, trusted issuer, hostname match, days-to-expiry, self-signed detection), determines the negotiated TLS protocol version, checks whether plain HTTP redirects to HTTPS, evaluates the standard security response headers (Strict-Transport-Security/HSTS, Content-Security-Policy, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy), and measures basic availability and latency. Use this before launching a site, when auditing a deployment, or to verify a domain you are about to trust. The check is read-only β it never logs in or modifies the target.
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | A domain (e.g. 'example.com') or full URL (e.g. 'https://example.com'). http(s):// is optional. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It thoroughly discloses all behaviors: read-only, never logs in or modifies target, performs TLS handshake, checks certificate validity, protocol version, redirects, security headers, and latency. This exceeds typical transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately long but well-structured, with each sentence adding specific value. It could be slightly more concise, but it is not verbose and clearly communicates the tool's functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a security check tool with many sub-checks and only one parameter, the description fully covers what the tool does, what it returns (grade, fixes), and its read-only nature. No output schema is needed as the return is explained adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes the target parameter as a domain or full URL with 100% coverage. The description adds minimal extra meaning beyond stating that http(s):// is optional. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states it performs a live web health and security check on a domain or URL, returning an AβF grade with concrete fixes. It lists specific checks (TLS, redirects, headers) and distinguishes from the sibling tool 'check_many' by focusing on a single target.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage scenarios: 'before launching a site, when auditing a deployment, or to verify a domain you are about to trust.' It does not explicitly mention when not to use or directly reference the sibling, but the context implies it's for single-target checks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
v0.1.1- First observed
check_many - First observed
check_website_health
TDQS
Scored across 2 tools
The two tools have clearly distinct purposes: check_website_health performs a detailed check on a single domain, while check_many runs a batch check on multiple domains. There is no overlap.
Both tool names start with 'check_' but 'check_many' uses a quantifier instead of a noun, deviating from the typical verb_noun pattern seen in check_website_health. Still, the pattern is consistent overall.
With only two tools, the server covers single-domain and batch checks, but the scope feels minimal. A few more specialized tools (e.g., SSL-only check) would make the set more robust, but the current count is functional.
The single check tool is comprehensive, covering TLS, headers, redirects, and latency. The batch tool adds value. Missing are tools for specific subchecks, but the core workflow of auditing and comparing sites is well-covered.
Maintenance
Related MCP Connectors
Scan a website for vulnerabilities: OWASP Top 10, CVEs, SSL, headers - with plain-English fixes
SSL/TLS scanning, free Let's Encrypt issuance, and certificate-expiry monitoring.
Free anonymous website, DNS, email and TLS checks, plus monitor read and opt-in write access.
DNS lookups, health reports, SSL certs, security scans, GEO scoring, uptime checks
Related MCP Servers
- -licenseNot gradedqualityNot gradedmaintenanceEnables ethical security testing and attack surface management through SSL certificate validation, CVE queries, subdomain enumeration, security header analysis, and comprehensive reconnaissance capabilities. Designed for authorized penetration testing workflows with responsible disclosure practices.-
- AlicenseBqualityNot gradedmaintenanceProvides comprehensive website validation across performance, accessibility, SEO, and security dimensions using multiple testing services including WebPageTest, Google PageSpeed Insights, Axe DevTools, Mozilla Observatory, and SSL Labs. Enables automated website health assessments through browser automation and API integrations.123 npm1-
- FlicenseNot gradedqualityBmaintenancePassive website security and trust auditor that checks for security, SEO, AI surface, email, and other exposures, producing a score and remediation plan.-
- FlicenseNot gradedqualityDmaintenanceEnables auditing of websites for performance, SEO, accessibility, security, and mobile readiness, with tools to validate URLs, run page audits, save results, and retrieve reports.1-