Feranor Resilience
Scan/purge hidden text & score web domains: TLS, DNS, headers, speed. Free scans, $0.01 actions.
使うべきか
品質と安全性
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"resilience": {
"url": "https://www.feranor.com/mcp"
}
}
}リモートエンドポイント
https://www.feranor.com/mcpstreamable-httpできること
ツール一覧
ツール(6)
🔴text_purge_v1(text)
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.
入力スキーマ
{
"type": "object",
"properties": {
"text": {
"description": "The text to clean of hidden characters and homoglyphs.",
"type": "string"
}
},
"required": [
"text"
]
}出力スキーマ
{
"type": "object",
"properties": {
"purgedText": {
"type": [
"string",
"null"
]
},
"charsRemoved": {
"type": "integer"
},
"homoglyphsReplaced": {
"type": "integer"
},
"reportBefore": {
"type": [
"object",
"null"
],
"properties": {
"isClean": {
"type": "boolean"
},
"riskScore": {
"type": "integer"
},
"normalizationForm": {
"type": [
"string",
"null"
]
},
"isNormalized": {
"type": "boolean"
},
"flaggedChars": {
"type": [
"array",
"null"
],
"items": {
"type": "object",
"properties": {
"index": {
"type": "integer"
},
"codePoint": {
"type": "integer"
},
"name": {
"type": [
"string",
"null"
]
},
"category": {
"type": [
"string",
"null"
]
},
"severity": {
"type": "string",
"enum": [
"Low",
"Medium",
"High"
]
}
}
}
},
"homoglyphMatches": {
"type": [
"array",
"null"
],
"items": {
"type": "object",
"properties": {
"index": {
"type": "integer"
},
"original": {
"type": [
"string",
"null"
]
},
"originalScript": {
"type": [
"string",
"null"
]
},
"suspectedLatin": {
"type": [
"string",
"null"
]
}
}
}
},
"categoryCounts": {
"type": [
"object",
"null"
],
"additionalProperties": {
"type": "integer"
}
},
"notes": {
"type": [
"array",
"null"
],
"items": {
"type": "string"
}
}
}
},
"reportAfter": {
"type": [
"object",
"null"
],
"properties": {
"isClean": {
"type": "boolean"
},
"riskScore": {
"type": "integer"
},
"normalizationForm": {
"type": [
"string",
"null"
]
},
"isNormalized": {
"type": "boolean"
},
"flaggedChars": {
"$ref": "#/properties/reportBefore/properties/flaggedChars",
"items": {}
},
"homoglyphMatches": {
"$ref": "#/properties/reportBefore/properties/homoglyphMatches",
"items": {}
},
"categoryCounts": {
"$ref": "#/properties/reportBefore/properties/categoryCounts"
},
"notes": {
"$ref": "#/properties/reportBefore/properties/notes",
"items": {}
}
}
}
}
}🟢domain_check_batch_v1(domains)
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.
入力スキーマ
{
"type": "object",
"properties": {
"domains": {
"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.",
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"domains"
]
}出力スキーマ
{
"type": "object",
"properties": {
"requested": {
"description": "Number of domains in the request, before de-duplication.",
"type": "integer"
},
"evaluated": {
"description": "Number of distinct domains actually evaluated. This is the billed quantity.",
"type": "integer"
},
"succeeded": {
"description": "How many produced a full report. The rest carry an error field.",
"type": "integer"
},
"evaluatedAt": {
"description": "UTC timestamp of the batch.",
"type": "string",
"format": "date-time"
},
"results": {
"description": "One entry per distinct domain, in no guaranteed order.",
"type": [
"array",
"null"
],
"items": {
"type": "object",
"properties": {
"domain": {
"description": "Domain as it was requested.",
"type": [
"string",
"null"
]
},
"report": {
"description": "Full report, or null when the check could not complete.",
"type": [
"object",
"null"
],
"properties": {
"domain": {
"type": [
"string",
"null"
]
},
"requestedDomain": {
"type": [
"string",
"null"
]
},
"evaluatedAt": {
"type": "string",
"format": "date-time"
},
"checks": {
"type": [
"array",
"null"
],
"items": {
"type": "object",
"properties": {
"id": {
"type": [
"string",
"null"
]
},
"category": {
"type": [
"string",
"null"
]
},
"label": {
"type": [
"string",
"null"
]
},
"weight": {
"type": "integer"
},
"earned": {
"type": "integer"
},
"status": {
"type": "string",
"enum": [
"Ok",
"Warning",
"Critical",
"Unknown"
]
},
"message": {
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"category",
"label",
"weight",
"earned",
"status",
"message"
]
}
},
"noArchive": {
"type": "boolean"
},
"noIndex": {
"type": "boolean"
},
"error": {
"type": [
"string",
"null"
]
},
"success": {
"type": "boolean"
},
"score": {
"type": "integer"
}
}
},
"error": {
"description": "Why this domain could not be evaluated. Null on success.",
"type": [
"string",
"null"
]
}
}
}
}
}
}🟢domain_check_v1(domain)
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.
入力スキーマ
{
"type": "object",
"properties": {
"domain": {
"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.",
"type": "string"
}
},
"required": [
"domain"
]
}出力スキーマ
{
"type": "object",
"properties": {
"domain": {
"type": [
"string",
"null"
]
},
"requestedDomain": {
"type": [
"string",
"null"
]
},
"evaluatedAt": {
"type": "string",
"format": "date-time"
},
"checks": {
"type": [
"array",
"null"
],
"items": {
"type": "object",
"properties": {
"id": {
"type": [
"string",
"null"
]
},
"category": {
"type": [
"string",
"null"
]
},
"label": {
"type": [
"string",
"null"
]
},
"weight": {
"type": "integer"
},
"earned": {
"type": "integer"
},
"status": {
"type": "string",
"enum": [
"Ok",
"Warning",
"Critical",
"Unknown"
]
},
"message": {
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"category",
"label",
"weight",
"earned",
"status",
"message"
]
}
},
"noArchive": {
"type": "boolean"
},
"noIndex": {
"type": "boolean"
},
"error": {
"type": [
"string",
"null"
]
},
"success": {
"type": "boolean"
},
"score": {
"type": "integer"
}
}
}🟢domain_check_score_v1(domain)
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.
入力スキーマ
{
"type": "object",
"properties": {
"domain": {
"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.",
"type": "string"
}
},
"required": [
"domain"
]
}出力スキーマ
{
"type": "object",
"properties": {
"domain": {
"description": "Domain that was actually evaluated, after normalisation.",
"type": [
"string",
"null"
]
},
"score": {
"description": "Weighted resilience score out of 100.",
"type": "integer"
},
"measuredCategories": {
"description": "Number of categories that could actually be measured. Compare two domains only when this matches.",
"type": "integer"
},
"categories": {
"description": "Per-category score and finding count. Finding details are not included.",
"type": [
"array",
"null"
],
"items": {
"type": "object",
"properties": {
"name": {
"description": "Category name, for example 'tls' or 'headers'.",
"type": [
"string",
"null"
]
},
"score": {
"description": "Score out of 100 for this category.",
"type": "integer"
},
"findingCount": {
"description": "How many findings this category raised. The findings themselves require domain_check_v1.",
"type": "integer"
}
}
}
},
"evaluatedAt": {
"description": "UTC timestamp of the evaluation.",
"type": "string",
"format": "date-time"
},
"detailsAvailableVia": {
"description": "Name of the tool returning the full findings behind these scores.",
"type": [
"string",
"null"
]
},
"error": {
"type": [
"string",
"null"
]
},
"success": {
"type": "boolean"
}
}
}🟢text_scan_v1(text)
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.
入力スキーマ
{
"type": "object",
"properties": {
"text": {
"description": "The text to scan for hidden characters and homoglyphs.",
"type": "string"
}
},
"required": [
"text"
]
}出力スキーマ
{
"type": "object",
"properties": {
"isClean": {
"type": "boolean"
},
"riskScore": {
"type": "integer"
},
"normalizationForm": {
"type": [
"string",
"null"
]
},
"isNormalized": {
"type": "boolean"
},
"flaggedChars": {
"type": [
"array",
"null"
],
"items": {
"type": "object",
"properties": {
"index": {
"type": "integer"
},
"codePoint": {
"type": "integer"
},
"name": {
"type": [
"string",
"null"
]
},
"category": {
"type": [
"string",
"null"
]
},
"severity": {
"type": "string",
"enum": [
"Low",
"Medium",
"High"
]
}
}
}
},
"homoglyphMatches": {
"type": [
"array",
"null"
],
"items": {
"type": "object",
"properties": {
"index": {
"type": "integer"
},
"original": {
"type": [
"string",
"null"
]
},
"originalScript": {
"type": [
"string",
"null"
]
},
"suspectedLatin": {
"type": [
"string",
"null"
]
}
}
}
},
"categoryCounts": {
"type": [
"object",
"null"
],
"additionalProperties": {
"type": "integer"
}
},
"notes": {
"type": [
"array",
"null"
],
"items": {
"type": "string"
}
}
}
}🟢domain_check_score_batch_v1(domains)
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.
入力スキーマ
{
"type": "object",
"properties": {
"domains": {
"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.",
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"domains"
]
}出力スキーマ
{
"type": "object",
"properties": {
"requested": {
"description": "Number of domains in the request, before de-duplication.",
"type": "integer"
},
"evaluated": {
"description": "Number of distinct domains actually evaluated. This is the billed quantity.",
"type": "integer"
},
"succeeded": {
"description": "How many produced a full report. The rest carry an error field.",
"type": "integer"
},
"evaluatedAt": {
"description": "UTC timestamp of the batch.",
"type": "string",
"format": "date-time"
},
"results": {
"description": "One entry per distinct domain, in no guaranteed order.",
"type": [
"array",
"null"
],
"items": {
"type": "object",
"properties": {
"domain": {
"description": "Domain that was actually evaluated, after normalisation.",
"type": [
"string",
"null"
]
},
"score": {
"description": "Weighted resilience score out of 100.",
"type": "integer"
},
"measuredCategories": {
"description": "Number of categories that could actually be measured. Compare two domains only when this matches.",
"type": "integer"
},
"categories": {
"description": "Per-category score and finding count. Finding details are not included.",
"type": [
"array",
"null"
],
"items": {
"type": "object",
"properties": {
"name": {
"description": "Category name, for example 'tls' or 'headers'.",
"type": [
"string",
"null"
]
},
"score": {
"description": "Score out of 100 for this category.",
"type": "integer"
},
"findingCount": {
"description": "How many findings this category raised. The findings themselves require domain_check_v1.",
"type": "integer"
}
}
}
},
"evaluatedAt": {
"description": "UTC timestamp of the evaluation.",
"type": "string",
"format": "date-time"
},
"detailsAvailableVia": {
"description": "Name of the tool returning the full findings behind these scores.",
"type": [
"string",
"null"
]
},
"error": {
"type": [
"string",
"null"
]
},
"success": {
"type": "boolean"
}
}
}
}
}
}コミュニティ
エビデンス