AstraVerify Domain Trust Check
このMCPでできること
Checks domain email security and search/AI discoverability, identifies configuration fixes, and verifies remediation.
ツール
入力スキーマ
{'type': 'object', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'maxLength': 253, 'minLength': 3, 'description': 'The domain to check, as the person gave it (no scheme, no path). Reserved names such as example.com are refused.'}, 'refresh': {'type': 'boolean', 'default': False, 'description': 'Force a fresh scan instead of the cached result (rate limited)'}}}
出力スキーマ
{'type': 'object', 'required': ['domain', 'score', 'grade'], 'properties': {'cdn': {'type': ['string', 'null']}, 'raw': {'type': 'integer', 'description': 'What the components add up to, before the cap'}, 'grade': {'type': ['string', 'null'], 'description': 'A+ to F, or null alongside a null score'}, 'score': {'type': ['integer', 'null'], 'description': 'Out of 100, exactly as astraverify.com shows it. Null when not_applicable or inconclusive is set.'}, 'capped': {'type': 'boolean'}, 'domain': {'type': 'string'}, 'reason': {'type': ['string', 'null'], 'description': 'Why score is null, when it is'}, 'verdict': {'type': 'string', 'description': 'One sentence on what engines can do with the site'}, 'held_back': {'type': 'integer', 'description': 'Points the cap holds back while a fix is open (89 cap) or a critical one is (69). Not taken from any component: sum(components.points) - held_back = score'}, 'components': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'name', 'points', 'max'], 'properties': {'key': {'type': 'string'}, 'max': {'type': 'integer'}, 'name': {'type': 'string'}, 'points': {'type': 'integer'}, 'enabled': {'type': 'boolean'}, 'summary': {'type': 'string'}}, 'description': 'One scored area of the domain'}}, 'open_fixes': {'type': 'integer', 'description': 'Findings above info level'}, 'report_url': {'type': 'string', 'description': 'The report page for this domain on astraverify.com'}, 'request_id': {'type': 'string', 'description': 'req_... for this call. Quote it when reporting a problem with the result.'}, 'not_checked': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Parts skipped in this scan'}, 'inconclusive': {'type': 'boolean', 'description': 'The site could not be fetched, so the scan could not be completed. A failure to measure, not a finding about the site.'}, 'canonical_host': {'type': ['string', 'null']}, 'not_applicable': {'type': 'boolean', 'description': 'The domain publishes no web address, so there is no website to assess. Not a low score: score and grade are null and there are no recommendations. verdict names the domain to scan instead.'}, 'recommendations': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'severity', 'title'], 'properties': {'id': {'type': 'string'}, 'fix': {'type': ['object', 'null'], 'properties': {'kind': {'type': ['string', 'null']}, 'name': {'type': ['string', 'null']}, 'note': {'type': ['string', 'null']}, 'type': {'type': ['string', 'null']}, 'label': {'type': ['string', 'null']}, 'value': {'type': ['string', 'null']}, 'where': {'type': ['string', 'null']}}, 'description': 'The exact change to publish: a DNS record (name, type, value) or a file or tag (kind, label, value, where). Null when there is nothing to publish, for example "turn on DKIM in your provider".'}, 'why': {'type': 'string'}, 'scan': {'enum': ['email', 'discoverability'], 'type': 'string'}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'title': {'type': 'string'}, 'severity': {'enum': ['critical', 'important', 'info'], 'type': 'string'}, 'component': {'type': 'string'}}}}, 'cache_age_seconds': {'type': 'integer', 'description': 'Age of the result; 0 means it was scanned just now'}, 'verified_component': {'type': 'string', 'description': 'Set by verify_fix: the component re-checked'}}}
入力スキーマ
{'type': 'object', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'maxLength': 253, 'minLength': 3, 'description': 'The domain to check, as the person gave it (no scheme, no path). Reserved names such as example.com are refused.'}, 'refresh': {'type': 'boolean', 'default': False, 'description': 'Force a fresh scan instead of the cached result (rate limited)'}}}
出力スキーマ
{'type': 'object', 'required': ['domain', 'score', 'grade'], 'properties': {'raw': {'type': 'integer', 'description': 'What the components add up to, before the cap'}, 'grade': {'type': 'string', 'description': 'A+ to F'}, 'score': {'type': 'integer', 'description': 'Out of 100, exactly as astraverify.com shows it'}, 'capped': {'type': 'boolean'}, 'domain': {'type': 'string'}, 'null_mx': {'type': 'boolean', 'description': 'The domain declares that it sends and receives no mail'}, 'records': {'type': 'object', 'description': 'DNS records found, keyed mx, spf, dkim, dmarc', 'additionalProperties': {'type': 'array', 'items': {'type': 'object'}}}, 'provider': {'type': ['string', 'null'], 'description': 'Mail provider detected from MX; null when not recognised'}, 'held_back': {'type': 'integer', 'description': 'Points the cap holds back while a fix is open (89 cap) or a critical one is (69). Not taken from any component: sum(components.points) - held_back = score'}, 'components': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'name', 'points', 'max'], 'properties': {'key': {'type': 'string'}, 'max': {'type': 'integer'}, 'name': {'type': 'string'}, 'points': {'type': 'integer'}, 'enabled': {'type': 'boolean'}, 'summary': {'type': 'string'}}, 'description': 'One scored area of the domain'}}, 'open_fixes': {'type': 'integer', 'description': 'Findings above info level'}, 'report_url': {'type': 'string', 'description': 'The report page for this domain on astraverify.com'}, 'request_id': {'type': 'string', 'description': 'req_... for this call. Quote it when reporting a problem with the result.'}, 'recommendations': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'severity', 'title'], 'properties': {'id': {'type': 'string'}, 'fix': {'type': ['object', 'null'], 'properties': {'kind': {'type': ['string', 'null']}, 'name': {'type': ['string', 'null']}, 'note': {'type': ['string', 'null']}, 'type': {'type': ['string', 'null']}, 'label': {'type': ['string', 'null']}, 'value': {'type': ['string', 'null']}, 'where': {'type': ['string', 'null']}}, 'description': 'The exact change to publish: a DNS record (name, type, value) or a file or tag (kind, label, value, where). Null when there is nothing to publish, for example "turn on DKIM in your provider".'}, 'why': {'type': 'string'}, 'scan': {'enum': ['email', 'discoverability'], 'type': 'string'}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'title': {'type': 'string'}, 'severity': {'enum': ['critical', 'important', 'info'], 'type': 'string'}, 'component': {'type': 'string'}}}}, 'cache_age_seconds': {'type': 'integer', 'description': 'Age of the result; 0 means it was scanned just now'}}}
入力スキーマ
{'type': 'object', 'required': ['domain', 'agent'], 'properties': {'agent': {'enum': ['googlebot', 'bingbot', 'oai-searchbot', 'perplexitybot', 'claudebot', 'gptbot'], 'type': 'string'}, 'domain': {'type': 'string', 'maxLength': 253, 'minLength': 3, 'description': 'The domain to check, as the person gave it (no scheme, no path). Reserved names such as example.com are refused.'}}}
出力スキーマ
{'type': 'object', 'required': ['domain', 'agent'], 'properties': {'ms': {'type': 'integer'}, 'agent': {'type': 'string'}, 'chain': {'type': 'array', 'items': {'type': 'object', 'properties': {'url': {'type': 'string'}, 'status': {'type': 'integer'}}}, 'description': 'Redirect hops'}, 'error': {'type': ['string', 'null']}, 'label': {'type': 'string', 'description': 'The crawler as its operator names it'}, 'title': {'type': ['string', 'null']}, 'domain': {'type': 'string'}, 'status': {'type': ['integer', 'null'], 'description': 'HTTP status the crawler received'}, 'blocked': {'type': 'boolean', 'description': 'The response refused the crawler (403, 429 or similar)'}, 'extract': {'type': ['string', 'null'], 'description': 'The text this crawler would index; null when the fetch failed'}, 'headers': {'type': 'object', 'additionalProperties': {'type': 'string'}}, 'challenge': {'type': 'boolean', 'description': 'A bot-challenge page rather than the site'}, 'final_url': {'type': ['string', 'null']}, 'request_id': {'type': 'string', 'description': 'req_... for this call. Quote it when reporting a problem with the result.'}, 'content_type': {'type': ['string', 'null']}}}
入力スキーマ
{'type': 'object', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'maxLength': 253, 'minLength': 3, 'description': 'The domain to check, as the person gave it (no scheme, no path). Reserved names such as example.com are refused.'}, 'refresh': {'type': 'boolean', 'default': False, 'description': 'Force a fresh scan instead of the cached result (rate limited)'}}}
出力スキーマ
{'type': 'object', 'required': ['domain', 'email_security'], 'properties': {'domain': {'type': 'string'}, 'live_url': {'type': 'string', 'description': 'The live page, which rescans when the result is stale'}, 'report_url': {'type': 'string', 'description': 'Saved snapshot (/r/<id>) that opens without a rescan; safe to share'}, 'request_id': {'type': 'string', 'description': 'req_... for this call. Quote it when reporting a problem with the result.'}, 'email_security': {'type': 'object', 'properties': {'raw': {'type': 'integer', 'description': 'What the components add up to, before the cap'}, 'grade': {'type': 'string', 'description': 'A+ to F'}, 'score': {'type': 'integer', 'description': 'Out of 100, exactly as astraverify.com shows it'}, 'capped': {'type': 'boolean'}, 'domain': {'type': 'string'}, 'held_back': {'type': 'integer', 'description': 'Points the cap holds back while a fix is open (89 cap) or a critical one is (69). Not taken from any component: sum(components.points) - held_back = score'}, 'components': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'name', 'points', 'max'], 'properties': {'key': {'type': 'string'}, 'max': {'type': 'integer'}, 'name': {'type': 'string'}, 'points': {'type': 'integer'}, 'enabled': {'type': 'boolean'}, 'summary': {'type': 'string'}}, 'description': 'One scored area of the domain'}}, 'open_fixes': {'type': 'integer', 'description': 'Findings above info level'}, 'report_url': {'type': 'string', 'description': 'The report page for this domain on astraverify.com'}, 'recommendations': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'severity', 'title'], 'properties': {'id': {'type': 'string'}, 'fix': {'type': ['object', 'null'], 'properties': {'kind': {'type': ['string', 'null']}, 'name': {'type': ['string', 'null']}, 'note': {'type': ['string', 'null']}, 'type': {'type': ['string', 'null']}, 'label': {'type': ['string', 'null']}, 'value': {'type': ['string', 'null']}, 'where': {'type': ['string', 'null']}}, 'description': 'The exact change to publish: a DNS record (name, type, value) or a file or tag (kind, label, value, where). Null when there is nothing to publish, for example "turn on DKIM in your provider".'}, 'why': {'type': 'string'}, 'scan': {'enum': ['email', 'discoverability'], 'type': 'string'}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'title': {'type': 'string'}, 'severity': {'enum': ['critical', 'important', 'info'], 'type': 'string'}, 'component': {'type': 'string'}}}}, 'cache_age_seconds': {'type': 'integer', 'description': 'Age of the result; 0 means it was scanned just now'}}}, 'discoverability': {'type': ['object', 'null'], 'properties': {'cdn': {'type': ['string', 'null']}, 'raw': {'type': 'integer', 'description': 'What the components add up to, before the cap'}, 'grade': {'type': ['string', 'null'], 'description': 'A+ to F, or null alongside a null score'}, 'score': {'type': ['integer', 'null'], 'description': 'Out of 100, exactly as astraverify.com shows it. Null when not_applicable or inconclusive is set.'}, 'capped': {'type': 'boolean'}, 'domain': {'type': 'string'}, 'reason': {'type': ['string', 'null'], 'description': 'Why score is null, when it is'}, 'verdict': {'type': 'string', 'description': 'One sentence on what engines can do with the site'}, 'held_back': {'type': 'integer', 'description': 'Points the cap holds back while a fix is open (89 cap) or a critical one is (69). Not taken from any component: sum(components.points) - held_back = score'}, 'components': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'name', 'points', 'max'], 'properties': {'key': {'type': 'string'}, 'max': {'type': 'integer'}, 'name': {'type': 'string'}, 'points': {'type': 'integer'}, 'enabled': {'type': 'boolean'}, 'summary': {'type': 'string'}}, 'description': 'One scored area of the domain'}}, 'open_fixes': {'type': 'integer', 'description': 'Findings above info level'}, 'report_url': {'type': 'string', 'description': 'The report page for this domain on astraverify.com'}, 'request_id': {'type': 'string', 'description': 'req_... for this call. Quote it when reporting a problem with the result.'}, 'not_checked': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Parts skipped in this scan'}, 'inconclusive': {'type': 'boolean', 'description': 'The site could not be fetched, so the scan could not be completed. A failure to measure, not a finding about the site.'}, 'canonical_host': {'type': ['string', 'null']}, 'not_applicable': {'type': 'boolean', 'description': 'The domain publishes no web address, so there is no website to assess. Not a low score: score and grade are null and there are no recommendations. verdict names the domain to scan instead.'}, 'recommendations': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'severity', 'title'], 'properties': {'id': {'type': 'string'}, 'fix': {'type': ['object', 'null'], 'properties': {'kind': {'type': ['string', 'null']}, 'name': {'type': ['string', 'null']}, 'note': {'type': ['string', 'null']}, 'type': {'type': ['string', 'null']}, 'label': {'type': ['string', 'null']}, 'value': {'type': ['string', 'null']}, 'where': {'type': ['string', 'null']}}, 'description': 'The exact change to publish: a DNS record (name, type, value) or a file or tag (kind, label, value, where). Null when there is nothing to publish, for example "turn on DKIM in your provider".'}, 'why': {'type': 'string'}, 'scan': {'enum': ['email', 'discoverability'], 'type': 'string'}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'title': {'type': 'string'}, 'severity': {'enum': ['critical', 'important', 'info'], 'type': 'string'}, 'component': {'type': 'string'}}}}, 'cache_age_seconds': {'type': 'integer', 'description': 'Age of the result; 0 means it was scanned just now'}, 'verified_component': {'type': 'string', 'description': 'Set by verify_fix: the component re-checked'}}}, 'recommendations': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'severity', 'title'], 'properties': {'id': {'type': 'string'}, 'fix': {'type': ['object', 'null'], 'properties': {'kind': {'type': ['string', 'null']}, 'name': {'type': ['string', 'null']}, 'note': {'type': ['string', 'null']}, 'type': {'type': ['string', 'null']}, 'label': {'type': ['string', 'null']}, 'value': {'type': ['string', 'null']}, 'where': {'type': ['string', 'null']}}, 'description': 'The exact change to publish: a DNS record (name, type, value) or a file or tag (kind, label, value, where). Null when there is nothing to publish, for example "turn on DKIM in your provider".'}, 'why': {'type': 'string'}, 'scan': {'enum': ['email', 'discoverability'], 'type': 'string'}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'title': {'type': 'string'}, 'severity': {'enum': ['critical', 'important', 'info'], 'type': 'string'}, 'component': {'type': 'string'}}}, 'description': 'Both scans, ranked by severity'}, 'discoverability_error': {'type': ['string', 'null']}, 'email_cache_age_seconds': {'type': 'integer'}, 'discoverability_cache_age_seconds': {'type': ['integer', 'null']}}}
入力スキーマ
{'type': 'object', 'required': ['domain', 'component'], 'properties': {'domain': {'type': 'string', 'maxLength': 253, 'minLength': 3, 'description': 'The domain to check, as the person gave it (no scheme, no path). Reserved names such as example.com are refused.'}, 'component': {'enum': ['crawl', 'plumbing', 'metadata', 'structured', 'answer'], 'type': 'string'}}}
出力スキーマ
{'type': 'object', 'required': ['domain', 'score', 'grade'], 'properties': {'cdn': {'type': ['string', 'null']}, 'raw': {'type': 'integer', 'description': 'What the components add up to, before the cap'}, 'grade': {'type': ['string', 'null'], 'description': 'A+ to F, or null alongside a null score'}, 'score': {'type': ['integer', 'null'], 'description': 'Out of 100, exactly as astraverify.com shows it. Null when not_applicable or inconclusive is set.'}, 'capped': {'type': 'boolean'}, 'domain': {'type': 'string'}, 'reason': {'type': ['string', 'null'], 'description': 'Why score is null, when it is'}, 'verdict': {'type': 'string', 'description': 'One sentence on what engines can do with the site'}, 'held_back': {'type': 'integer', 'description': 'Points the cap holds back while a fix is open (89 cap) or a critical one is (69). Not taken from any component: sum(components.points) - held_back = score'}, 'components': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'name', 'points', 'max'], 'properties': {'key': {'type': 'string'}, 'max': {'type': 'integer'}, 'name': {'type': 'string'}, 'points': {'type': 'integer'}, 'enabled': {'type': 'boolean'}, 'summary': {'type': 'string'}}, 'description': 'One scored area of the domain'}}, 'open_fixes': {'type': 'integer', 'description': 'Findings above info level'}, 'report_url': {'type': 'string', 'description': 'The report page for this domain on astraverify.com'}, 'request_id': {'type': 'string', 'description': 'req_... for this call. Quote it when reporting a problem with the result.'}, 'not_checked': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Parts skipped in this scan'}, 'inconclusive': {'type': 'boolean', 'description': 'The site could not be fetched, so the scan could not be completed. A failure to measure, not a finding about the site.'}, 'canonical_host': {'type': ['string', 'null']}, 'not_applicable': {'type': 'boolean', 'description': 'The domain publishes no web address, so there is no website to assess. Not a low score: score and grade are null and there are no recommendations. verdict names the domain to scan instead.'}, 'recommendations': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'severity', 'title'], 'properties': {'id': {'type': 'string'}, 'fix': {'type': ['object', 'null'], 'properties': {'kind': {'type': ['string', 'null']}, 'name': {'type': ['string', 'null']}, 'note': {'type': ['string', 'null']}, 'type': {'type': ['string', 'null']}, 'label': {'type': ['string', 'null']}, 'value': {'type': ['string', 'null']}, 'where': {'type': ['string', 'null']}}, 'description': 'The exact change to publish: a DNS record (name, type, value) or a file or tag (kind, label, value, where). Null when there is nothing to publish, for example "turn on DKIM in your provider".'}, 'why': {'type': 'string'}, 'scan': {'enum': ['email', 'discoverability'], 'type': 'string'}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'title': {'type': 'string'}, 'severity': {'enum': ['critical', 'important', 'info'], 'type': 'string'}, 'component': {'type': 'string'}}}}, 'cache_age_seconds': {'type': 'integer', 'description': 'Age of the result; 0 means it was scanned just now'}, 'verified_component': {'type': 'string', 'description': 'Set by verify_fix: the component re-checked'}}}
最近のツール変更
類似のMCPサーバー
validoria-mcp
Runs continuous website, API, and webshop tests covering security, SEO, performance, accessibility, browser journeys, and inciden…
DomainKits
Searches and monitors domains and DNS, checks availability and pricing, analyzes backlinks and keywords, and supports domain safe…
mcp-toolbelt
Runs website and infrastructure checks covering DNS, SSL, security headers, ports, vulnerabilities, performance, SEO, email deliv…
email-deliverability
Scans and monitors domain email deliverability, including SPF, DKIM, DMARC, DNS blocklists, inbox placement, reputation, alerts, …
mcp
Provides web search, rendered content extraction, SEO and local visibility audits, lead discovery, domain intelligence, and URL t…
Zambo
Routes natural-language requests across Zambo tools, including website and code audits, lead generation, cryptocurrency prices, p…
Qualisend Email Verification
Verifies individual and bulk email addresses, checks domain authentication and blacklist status, analyzes headers, detects dispos…
SMS Vert Pro
Sends and schedules bulk SMS, generates and verifies OTPs, reports delivery and replies, and manages STOP blacklists and SMS cred…