Serveur MCP

Feranor Resilience

com.feranor/resilience
Cloud et infrastructure Sécurité Public et accessible MCP 2025-11-25

Ce que fait ce MCP

Audits public domains for TLS, DNS, security headers and response performance, and scans or cleans suspicious Unicode text.

domain_check_batch_v1
Domain Resilience Check, Batch
Runs the full resilience check on up to 100 domains in a single call and returns the same scored report for each one: TLS certificate, security headers, DNS redundancy, response time, with every individual finding. Use it to audit a portfolio, to rank a list of vendors, or to re-check a fleet after a config rollout. A domain that cannot be reached is returned with its own error rather than failing the batch, and it is still charged, because the crawl was attempted. Do not use it for a single domain: domain_check_v1 is simpler and costs the same for one. Private, internal and localhost hostnames and IP addresses are rejected. Price: $0.01 per domain, dropping to $0.005 from 100 domains, up to 100 per call. One payment covers the whole batch (x402, USDC on Base). No signup, no API key.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['domains'], 'properties': {'domains': {'type': 'array', 'items': {'type': 'string'}, 'description': "Bare domain names, apex or subdomain, for example ['example.com', 'www.example.org']. Between 1 and 100 entries. Scheme, path, port and query string are ignored if present. Duplicates are removed before billing."}}}
Schéma de sortie
{'type': 'object', 'properties': {'results': {'type': ['array', 'null'], 'items': {'type': 'object', 'properties': {'error': {'type': ['string', 'null'], 'description': 'Why this domain could not be evaluated. Null on success.'}, 'domain': {'type': ['string', 'null'], 'description': 'Domain as it was requested.'}, 'report': {'type': ['object', 'null'], 'properties': {'error': {'type': ['string', 'null']}, 'score': {'type': 'integer'}, 'checks': {'type': ['array', 'null'], 'items': {'type': 'object', 'required': ['id', 'category', 'label', 'weight', 'earned', 'status', 'message'], 'properties': {'id': {'type': ['string', 'null']}, 'label': {'type': ['string', 'null']}, 'earned': {'type': 'integer'}, 'status': {'enum': ['Ok', 'Warning', 'Critical', 'Unknown'], 'type': 'string'}, 'weight': {'type': 'integer'}, 'message': {'type': ['string', 'null']}, 'category': {'type': ['string', 'null']}}}}, 'domain': {'type': ['string', 'null']}, 'noIndex': {'type': 'boolean'}, 'success': {'type': 'boolean'}, 'noArchive': {'type': 'boolean'}, 'evaluatedAt': {'type': 'string', 'format': 'date-time'}, 'requestedDomain': {'type': ['string', 'null']}}, 'description': 'Full report, or null when the check could not complete.'}}}, 'description': 'One entry per distinct domain, in no guaranteed order.'}, 'evaluated': {'type': 'integer', 'description': 'Number of distinct domains actually evaluated. This is the billed quantity.'}, 'requested': {'type': 'integer', 'description': 'Number of domains in the request, before de-duplication.'}, 'succeeded': {'type': 'integer', 'description': 'How many produced a full report. The rest carry an error field.'}, 'evaluatedAt': {'type': 'string', 'format': 'date-time', 'description': 'UTC timestamp of the batch.'}}}
domain_check_score_batch_v1
Domain Resilience Score, Batch
Free. Returns the overall resilience score out of 100 for up to 100 public web domains, plus the score of each category and how many findings each one raised. Use it to triage a portfolio: rank a list of domains, confirm which ones are healthy, or decide which ones are worth pulling the full report on. It tells you which categories are weak and how many issues they hold, but not what the issues are. A domain that cannot be reached is returned with its own error rather than failing the batch. Duplicates are removed. For the individual findings and the prioritised remediation list on a whole list, use domain_check_batch_v1. For a single domain, use domain_check_score_v1. Free, no payment required.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['domains'], 'properties': {'domains': {'type': 'array', 'items': {'type': 'string'}, 'description': "Bare domain names, apex or subdomain, for example ['example.com', 'www.example.org']. Between 1 and 100 entries. Scheme, path, port and query string are ignored if present."}}}
Schéma de sortie
{'type': 'object', 'properties': {'results': {'type': ['array', 'null'], 'items': {'type': 'object', 'properties': {'error': {'type': ['string', 'null']}, 'score': {'type': 'integer', 'description': 'Weighted resilience score out of 100.'}, 'domain': {'type': ['string', 'null'], 'description': 'Domain that was actually evaluated, after normalisation.'}, 'success': {'type': 'boolean'}, 'categories': {'type': ['array', 'null'], 'items': {'type': 'object', 'properties': {'name': {'type': ['string', 'null'], 'description': "Category name, for example 'tls' or 'headers'."}, 'score': {'type': 'integer', 'description': 'Score out of 100 for this category.'}, 'findingCount': {'type': 'integer', 'description': 'How many findings this category raised. The findings themselves require domain_check_v1.'}}}, 'description': 'Per-category score and finding count. Finding details are not included.'}, 'evaluatedAt': {'type': 'string', 'format': 'date-time', 'description': 'UTC timestamp of the evaluation.'}, 'measuredCategories': {'type': 'integer', 'description': 'Number of categories that could actually be measured. Compare two domains only when this matches.'}, 'detailsAvailableVia': {'type': ['string', 'null'], 'description': 'Name of the tool returning the full findings behind these scores.'}}}, 'description': 'One entry per distinct domain, in no guaranteed order.'}, 'evaluated': {'type': 'integer', 'description': 'Number of distinct domains actually evaluated. This is the billed quantity.'}, 'requested': {'type': 'integer', 'description': 'Number of domains in the request, before de-duplication.'}, 'succeeded': {'type': 'integer', 'description': 'How many produced a full report. The rest carry an error field.'}, 'evaluatedAt': {'type': 'string', 'format': 'date-time', 'description': 'UTC timestamp of the batch.'}}}
domain_check_score_v1
Domain Resilience Score
Free. Returns the overall resilience score out of 100 for a public web domain, plus the score of each category and how many findings each one raised. Use it to triage: to rank a list of domains, to confirm a domain is healthy, or to decide whether the detailed report is worth pulling. It tells you which categories are weak and how many issues they hold, but not what the issues are. For the individual findings and the prioritised remediation list, use domain_check_v1. Free, no payment required.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'description': "Bare domain name, apex or subdomain, for example 'example.com' or 'www.example.com'. Scheme, path, port and query string are ignored if present. IP addresses and private or localhost hostnames are rejected."}}}
Schéma de sortie
{'type': 'object', 'properties': {'error': {'type': ['string', 'null']}, 'score': {'type': 'integer', 'description': 'Weighted resilience score out of 100.'}, 'domain': {'type': ['string', 'null'], 'description': 'Domain that was actually evaluated, after normalisation.'}, 'success': {'type': 'boolean'}, 'categories': {'type': ['array', 'null'], 'items': {'type': 'object', 'properties': {'name': {'type': ['string', 'null'], 'description': "Category name, for example 'tls' or 'headers'."}, 'score': {'type': 'integer', 'description': 'Score out of 100 for this category.'}, 'findingCount': {'type': 'integer', 'description': 'How many findings this category raised. The findings themselves require domain_check_v1.'}}}, 'description': 'Per-category score and finding count. Finding details are not included.'}, 'evaluatedAt': {'type': 'string', 'format': 'date-time', 'description': 'UTC timestamp of the evaluation.'}, 'measuredCategories': {'type': 'integer', 'description': 'Number of categories that could actually be measured. Compare two domains only when this matches.'}, 'detailsAvailableVia': {'type': ['string', 'null'], 'description': 'Name of the tool returning the full findings behind these scores.'}}}
domain_check_v1
Domain Resilience Check
Measures how resilient a public web domain is from the outside and returns a weighted score out of 100, a per-category breakdown, and prioritised findings explaining what to fix first. Use it to audit a domain you do not control, to verify a fix after deployment, or to compare several domains on the same scale. Covers TLS certificate validity and protocol version, HTTP to HTTPS redirection, HSTS, Content-Security-Policy, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, cache directives, response time, DNS redundancy, IPv6 availability, CDN detection and software version disclosure. Everything is read from the public internet: nothing is authenticated, no ports are scanned, and no credentials are needed. Do not use it for private, internal, or localhost hostnames, for IP addresses, or to test a service you need logged-in access to. For a free score without the detailed findings, use domain_check_score_v1 instead. Price: $0.01 per call (x402, USDC on Base). No signup, no API key.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'description': "Bare domain name, apex or subdomain, for example 'example.com' or 'www.example.com'. Scheme, path, port and query string are ignored if present. IP addresses and private or localhost hostnames are rejected."}}}
Schéma de sortie
{'type': 'object', 'properties': {'error': {'type': ['string', 'null']}, 'score': {'type': 'integer'}, 'checks': {'type': ['array', 'null'], 'items': {'type': 'object', 'required': ['id', 'category', 'label', 'weight', 'earned', 'status', 'message'], 'properties': {'id': {'type': ['string', 'null']}, 'label': {'type': ['string', 'null']}, 'earned': {'type': 'integer'}, 'status': {'enum': ['Ok', 'Warning', 'Critical', 'Unknown'], 'type': 'string'}, 'weight': {'type': 'integer'}, 'message': {'type': ['string', 'null']}, 'category': {'type': ['string', 'null']}}}}, 'domain': {'type': ['string', 'null']}, 'noIndex': {'type': 'boolean'}, 'success': {'type': 'boolean'}, 'noArchive': {'type': 'boolean'}, 'evaluatedAt': {'type': 'string', 'format': 'date-time'}, 'requestedDomain': {'type': ['string', 'null']}}}
text_purge_v1
Watermarked text, Purge
Removes invisible Unicode characters and replaces homoglyphs in a text string. Returns the cleaned text plus a before-and-after comparison. Use this tool after text_scan_v1 to fix flagged issues. Price: $0.01 per call (x402, USDC on Base). No signup, no API key.
Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string', 'description': 'The text to clean of hidden characters and homoglyphs.'}}}
Schéma de sortie
{'type': 'object', 'properties': {'purgedText': {'type': ['string', 'null']}, 'reportAfter': {'type': ['object', 'null'], 'properties': {'notes': {'$ref': '#/properties/reportBefore/properties/notes', 'items': {}}, 'isClean': {'type': 'boolean'}, 'riskScore': {'type': 'integer'}, 'flaggedChars': {'$ref': '#/properties/reportBefore/properties/flaggedChars', 'items': {}}, 'isNormalized': {'type': 'boolean'}, 'categoryCounts': {'$ref': '#/properties/reportBefore/properties/categoryCounts'}, 'homoglyphMatches': {'$ref': '#/properties/reportBefore/properties/homoglyphMatches', 'items': {}}, 'normalizationForm': {'type': ['string', 'null']}}}, 'charsRemoved': {'type': 'integer'}, 'reportBefore': {'type': ['object', 'null'], 'properties': {'notes': {'type': ['array', 'null'], 'items': {'type': 'string'}}, 'isClean': {'type': 'boolean'}, 'riskScore': {'type': 'integer'}, 'flaggedChars': {'type': ['array', 'null'], 'items': {'type': 'object', 'properties': {'name': {'type': ['string', 'null']}, 'index': {'type': 'integer'}, 'category': {'type': ['string', 'null']}, 'severity': {'enum': ['Low', 'Medium', 'High'], 'type': 'string'}, 'codePoint': {'type': 'integer'}}}}, 'isNormalized': {'type': 'boolean'}, 'categoryCounts': {'type': ['object', 'null'], 'additionalProperties': {'type': 'integer'}}, 'homoglyphMatches': {'type': ['array', 'null'], 'items': {'type': 'object', 'properties': {'index': {'type': 'integer'}, 'original': {'type': ['string', 'null']}, 'originalScript': {'type': ['string', 'null']}, 'suspectedLatin': {'type': ['string', 'null']}}}}, 'normalizationForm': {'type': ['string', 'null']}}}, 'homoglyphsReplaced': {'type': 'integer'}}}
text_scan_v1
Watermarked text, Scan
Free. Scans a text string for invisible Unicode characters, homoglyphs, and normalization issues. Returns a risk score and a detailed report. Use this tool before text_purge_v1 to inspect suspicious content. Free, no payment required.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string', 'description': 'The text to scan for hidden characters and homoglyphs.'}}}
Schéma de sortie
{'type': 'object', 'properties': {'notes': {'type': ['array', 'null'], 'items': {'type': 'string'}}, 'isClean': {'type': 'boolean'}, 'riskScore': {'type': 'integer'}, 'flaggedChars': {'type': ['array', 'null'], 'items': {'type': 'object', 'properties': {'name': {'type': ['string', 'null']}, 'index': {'type': 'integer'}, 'category': {'type': ['string', 'null']}, 'severity': {'enum': ['Low', 'Medium', 'High'], 'type': 'string'}, 'codePoint': {'type': 'integer'}}}}, 'isNormalized': {'type': 'boolean'}, 'categoryCounts': {'type': ['object', 'null'], 'additionalProperties': {'type': 'integer'}}, 'homoglyphMatches': {'type': ['array', 'null'], 'items': {'type': 'object', 'properties': {'index': {'type': 'integer'}, 'original': {'type': ['string', 'null']}, 'originalScript': {'type': ['string', 'null']}, 'suspectedLatin': {'type': ['string', 'null']}}}}, 'normalizationForm': {'type': ['string', 'null']}}}
Ajouté
domain_check_score_batch_v1
17 September 2026 12:34
Ajouté
text_scan_v1
17 September 2026 12:34
Ajouté
domain_check_score_v1
17 September 2026 12:34
Ajouté
domain_check_v1
17 September 2026 12:34
Ajouté
domain_check_batch_v1
17 September 2026 12:34
Ajouté
text_purge_v1
17 September 2026 12:34