AstraVerify Domain Trust Check
Email security and AI discoverability scores for any domain, with the exact record or tag to fix.
Sollte ich dies verwenden
Qualität und Sicherheit
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"domain-trust": {
"url": "https://astraverify.com/mcp"
}
}
}Remote-Endpunkte
https://astraverify.com/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (5)
🟢check_email_security(domain, refresh)
Email Security score for a domain with the DNS records found and the exact records to publish for each fix.
Eingabe-Schema
{
"type": "object",
"properties": {
"domain": {
"description": "The domain to check, as the person gave it (no scheme, no path). Reserved names such as example.com are refused.",
"maxLength": 253,
"minLength": 3,
"type": "string"
},
"refresh": {
"default": false,
"description": "Force a fresh scan instead of the cached result (rate limited)",
"type": "boolean"
}
},
"required": [
"domain"
]
}Ausgabe-Schema
{
"type": "object",
"properties": {
"cache_age_seconds": {
"description": "Age of the result; 0 means it was scanned just now",
"type": "integer"
},
"capped": {
"type": "boolean"
},
"components": {
"items": {
"description": "One scored area of the domain",
"properties": {
"enabled": {
"type": "boolean"
},
"key": {
"type": "string"
},
"max": {
"type": "integer"
},
"name": {
"type": "string"
},
"points": {
"type": "integer"
},
"summary": {
"type": "string"
}
},
"required": [
"key",
"name",
"points",
"max"
],
"type": "object"
},
"type": "array"
},
"domain": {
"type": "string"
},
"grade": {
"description": "A+ to F",
"type": "string"
},
"held_back": {
"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",
"type": "integer"
},
"null_mx": {
"description": "The domain declares that it sends and receives no mail",
"type": "boolean"
},
"open_fixes": {
"description": "Findings above info level",
"type": "integer"
},
"provider": {
"description": "Mail provider detected from MX; null when not recognised",
"type": [
"string",
"null"
]
},
"raw": {
"description": "What the components add up to, before the cap",
"type": "integer"
},
"recommendations": {
"items": {
"properties": {
"component": {
"type": "string"
},
"fix": {
"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\".",
"properties": {
"kind": {
"type": [
"string",
"null"
]
},
"label": {
"type": [
"string",
"null"
]
},
"name": {
"type": [
"string",
"null"
]
},
"note": {
"type": [
"string",
"null"
]
},
"type": {
"type": [
"string",
"null"
]
},
"value": {
"type": [
"string",
"null"
]
},
"where": {
"type": [
"string",
"null"
]
}
},
"type": [
"object",
"null"
]
},
"id": {
"type": "string"
},
"scan": {
"enum": [
"email",
"discoverability"
],
"type": "string"
},
"severity": {
"enum": [
"critical",
"important",
"info"
],
"type": "string"
},
"tags": {
"items": {
"type": "string"
},
"type": "array"
},
"title": {
"type": "string"
},
"why": {
"type": "string"
}
},
"required": [
"id",
"severity",
"title"
],
"type": "object"
},
"type": "array"
},
"records": {
"additionalProperties": {
"items": {
"type": "object"
},
"type": "array"
},
"description": "DNS records found, keyed mx, spf, dkim, dmarc",
"type": "object"
},
"report_url": {
"description": "The report page for this domain on astraverify.com",
"type": "string"
},
"request_id": {
"description": "req_... for this call. Quote it when reporting a problem with the result.",
"type": "string"
},
"score": {
"description": "Out of 100, exactly as astraverify.com shows it",
"type": "integer"
}
},
"required": [
"domain",
"score",
"grade"
]
}🟢check_discoverability(domain, refresh)
Discoverability score for a domain: crawl access, site plumbing, page metadata, structured data and answer-engine readiness, with the exact file or tag to fix for each finding.
Eingabe-Schema
{
"type": "object",
"properties": {
"domain": {
"description": "The domain to check, as the person gave it (no scheme, no path). Reserved names such as example.com are refused.",
"maxLength": 253,
"minLength": 3,
"type": "string"
},
"refresh": {
"default": false,
"description": "Force a fresh scan instead of the cached result (rate limited)",
"type": "boolean"
}
},
"required": [
"domain"
]
}Ausgabe-Schema
{
"type": "object",
"properties": {
"cache_age_seconds": {
"description": "Age of the result; 0 means it was scanned just now",
"type": "integer"
},
"canonical_host": {
"type": [
"string",
"null"
]
},
"capped": {
"type": "boolean"
},
"cdn": {
"type": [
"string",
"null"
]
},
"components": {
"items": {
"description": "One scored area of the domain",
"properties": {
"enabled": {
"type": "boolean"
},
"key": {
"type": "string"
},
"max": {
"type": "integer"
},
"name": {
"type": "string"
},
"points": {
"type": "integer"
},
"summary": {
"type": "string"
}
},
"required": [
"key",
"name",
"points",
"max"
],
"type": "object"
},
"type": "array"
},
"domain": {
"type": "string"
},
"grade": {
"description": "A+ to F, or null alongside a null score",
"type": [
"string",
"null"
]
},
"held_back": {
"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",
"type": "integer"
},
"inconclusive": {
"description": "The site could not be fetched, so the scan could not be completed. A failure to measure, not a finding about the site.",
"type": "boolean"
},
"not_applicable": {
"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.",
"type": "boolean"
},
"not_checked": {
"description": "Parts skipped in this scan",
"items": {
"type": "string"
},
"type": "array"
},
"open_fixes": {
"description": "Findings above info level",
"type": "integer"
},
"raw": {
"description": "What the components add up to, before the cap",
"type": "integer"
},
"reason": {
"description": "Why score is null, when it is",
"type": [
"string",
"null"
]
},
"recommendations": {
"items": {
"properties": {
"component": {
"type": "string"
},
"fix": {
"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\".",
"properties": {
"kind": {
"type": [
"string",
"null"
]
},
"label": {
"type": [
"string",
"null"
]
},
"name": {
"type": [
"string",
"null"
]
},
"note": {
"type": [
"string",
"null"
]
},
"type": {
"type": [
"string",
"null"
]
},
"value": {
"type": [
"string",
"null"
]
},
"where": {
"type": [
"string",
"null"
]
}
},
"type": [
"object",
"null"
]
},
"id": {
"type": "string"
},
"scan": {
"enum": [
"email",
"discoverability"
],
"type": "string"
},
"severity": {
"enum": [
"critical",
"important",
"info"
],
"type": "string"
},
"tags": {
"items": {
"type": "string"
},
"type": "array"
},
"title": {
"type": "string"
},
"why": {
"type": "string"
}
},
"required": [
"id",
"severity",
"title"
],
"type": "object"
},
"type": "array"
},
"report_url": {
"description": "The report page for this domain on astraverify.com",
"type": "string"
},
"request_id": {
"description": "req_... for this call. Quote it when reporting a problem with the result.",
"type": "string"
},
"score": {
"description": "Out of 100, exactly as astraverify.com shows it. Null when not_applicable or inconclusive is set.",
"type": [
"integer",
"null"
]
},
"verdict": {
"description": "One sentence on what engines can do with the site",
"type": "string"
},
"verified_component": {
"description": "Set by verify_fix: the component re-checked",
"type": "string"
}
},
"required": [
"domain",
"score",
"grade"
]
}🟢get_report(domain, refresh)
Both scores, the open fixes ranked by severity, and a saved report link (report_url) that opens the same findings without a rescan; share it as-is. Use this first for "is my domain set up right?" questions.
Eingabe-Schema
{
"type": "object",
"properties": {
"domain": {
"description": "The domain to check, as the person gave it (no scheme, no path). Reserved names such as example.com are refused.",
"maxLength": 253,
"minLength": 3,
"type": "string"
},
"refresh": {
"default": false,
"description": "Force a fresh scan instead of the cached result (rate limited)",
"type": "boolean"
}
},
"required": [
"domain"
]
}Ausgabe-Schema
{
"type": "object",
"properties": {
"discoverability": {
"properties": {
"cache_age_seconds": {
"description": "Age of the result; 0 means it was scanned just now",
"type": "integer"
},
"canonical_host": {
"type": [
"string",
"null"
]
},
"capped": {
"type": "boolean"
},
"cdn": {
"type": [
"string",
"null"
]
},
"components": {
"items": {
"description": "One scored area of the domain",
"properties": {
"enabled": {
"type": "boolean"
},
"key": {
"type": "string"
},
"max": {
"type": "integer"
},
"name": {
"type": "string"
},
"points": {
"type": "integer"
},
"summary": {
"type": "string"
}
},
"required": [
"key",
"name",
"points",
"max"
],
"type": "object"
},
"type": "array"
},
"domain": {
"type": "string"
},
"grade": {
"description": "A+ to F, or null alongside a null score",
"type": [
"string",
"null"
]
},
"held_back": {
"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",
"type": "integer"
},
"inconclusive": {
"description": "The site could not be fetched, so the scan could not be completed. A failure to measure, not a finding about the site.",
"type": "boolean"
},
"not_applicable": {
"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.",
"type": "boolean"
},
"not_checked": {
"description": "Parts skipped in this scan",
"items": {
"type": "string"
},
"type": "array"
},
"open_fixes": {
"description": "Findings above info level",
"type": "integer"
},
"raw": {
"description": "What the components add up to, before the cap",
"type": "integer"
},
"reason": {
"description": "Why score is null, when it is",
"type": [
"string",
"null"
]
},
"recommendations": {
"items": {
"properties": {
"component": {
"type": "string"
},
"fix": {
"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\".",
"properties": {
"kind": {
"type": [
"string",
"null"
]
},
"label": {
"type": [
"string",
"null"
]
},
"name": {
"type": [
"string",
"null"
]
},
"note": {
"type": [
"string",
"null"
]
},
"type": {
"type": [
"string",
"null"
]
},
"value": {
"type": [
"string",
"null"
]
},
"where": {
"type": [
"string",
"null"
]
}
},
"type": [
"object",
"null"
]
},
"id": {
"type": "string"
},
"scan": {
"enum": [
"email",
"discoverability"
],
"type": "string"
},
"severity": {
"enum": [
"critical",
"important",
"info"
],
"type": "string"
},
"tags": {
"items": {
"type": "string"
},
"type": "array"
},
"title": {
"type": "string"
},
"why": {
"type": "string"
}
},
"required": [
"id",
"severity",
"title"
],
"type": "object"
},
"type": "array"
},
"report_url": {
"description": "The report page for this domain on astraverify.com",
"type": "string"
},
"request_id": {
"description": "req_... for this call. Quote it when reporting a problem with the result.",
"type": "string"
},
"score": {
"description": "Out of 100, exactly as astraverify.com shows it. Null when not_applicable or inconclusive is set.",
"type": [
"integer",
"null"
]
},
"verdict": {
"description": "One sentence on what engines can do with the site",
"type": "string"
},
"verified_component": {
"description": "Set by verify_fix: the component re-checked",
"type": "string"
}
},
"type": [
"object",
"null"
]
},
"discoverability_cache_age_seconds": {
"type": [
"integer",
"null"
]
},
"discoverability_error": {
"type": [
"string",
"null"
]
},
"domain": {
"type": "string"
},
"email_cache_age_seconds": {
"type": "integer"
},
"email_security": {
"properties": {
"cache_age_seconds": {
"description": "Age of the result; 0 means it was scanned just now",
"type": "integer"
},
"capped": {
"type": "boolean"
},
"components": {
"items": {
"description": "One scored area of the domain",
"properties": {
"enabled": {
"type": "boolean"
},
"key": {
"type": "string"
},
"max": {
"type": "integer"
},
"name": {
"type": "string"
},
"points": {
"type": "integer"
},
"summary": {
"type": "string"
}
},
"required": [
"key",
"name",
"points",
"max"
],
"type": "object"
},
"type": "array"
},
"domain": {
"type": "string"
},
"grade": {
"description": "A+ to F",
"type": "string"
},
"held_back": {
"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",
"type": "integer"
},
"open_fixes": {
"description": "Findings above info level",
"type": "integer"
},
"raw": {
"description": "What the components add up to, before the cap",
"type": "integer"
},
"recommendations": {
"items": {
"properties": {
"component": {
"type": "string"
},
"fix": {
"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\".",
"properties": {
"kind": {
"type": [
"string",
"null"
]
},
"label": {
"type": [
"string",
"null"
]
},
"name": {
"type": [
"string",
"null"
]
},
"note": {
"type": [
"string",
"null"
]
},
"type": {
"type": [
"string",
"null"
]
},
"value": {
"type": [
"string",
"null"
]
},
"where": {
"type": [
"string",
"null"
]
}
},
"type": [
"object",
"null"
]
},
"id": {
"type": "string"
},
"scan": {
"enum": [
"email",
"discoverability"
],
"type": "string"
},
"severity": {
"enum": [
"critical",
"important",
"info"
],
"type": "string"
},
"tags": {
"items": {
"type": "string"
},
"type": "array"
},
"title": {
"type": "string"
},
"why": {
"type": "string"
}
},
"required": [
"id",
"severity",
"title"
],
"type": "object"
},
"type": "array"
},
"report_url": {
"description": "The report page for this domain on astraverify.com",
"type": "string"
},
"score": {
"description": "Out of 100, exactly as astraverify.com shows it",
"type": "integer"
}
},
"type": "object"
},
"live_url": {
"description": "The live page, which rescans when the result is stale",
"type": "string"
},
"recommendations": {
"description": "Both scans, ranked by severity",
"items": {
"properties": {
"component": {
"type": "string"
},
"fix": {
"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\".",
"properties": {
"kind": {
"type": [
"string",
"null"
]
},
"label": {
"type": [
"string",
"null"
]
},
"name": {
"type": [
"string",
"null"
]
},
"note": {
"type": [
"string",
"null"
]
},
"type": {
"type": [
"string",
"null"
]
},
"value": {
"type": [
"string",
"null"
]
},
"where": {
"type": [
"string",
"null"
]
}
},
"type": [
"object",
"null"
]
},
"id": {
"type": "string"
},
"scan": {
"enum": [
"email",
"discoverability"
],
"type": "string"
},
"severity": {
"enum": [
"critical",
"important",
"info"
],
"type": "string"
},
"tags": {
"items": {
"type": "string"
},
"type": "array"
},
"title": {
"type": "string"
},
"why": {
"type": "string"
}
},
"required": [
"id",
"severity",
"title"
],
"type": "object"
},
"type": "array"
},
"report_url": {
"description": "Saved snapshot (/r/<id>) that opens without a rescan; safe to share",
"type": "string"
},
"request_id": {
"description": "req_... for this call. Quote it when reporting a problem with the result.",
"type": "string"
}
},
"required": [
"domain",
"email_security"
]
}🟢fetch_as_crawler(agent, domain)
What Googlebot, Bingbot, OAI-SearchBot, PerplexityBot, ClaudeBot or GPTBot receive from the site: status, redirects, headers and extracted text. Shows CDN or firewall blocks that robots.txt cannot.
Eingabe-Schema
{
"type": "object",
"properties": {
"agent": {
"enum": [
"googlebot",
"bingbot",
"oai-searchbot",
"perplexitybot",
"claudebot",
"gptbot"
],
"type": "string"
},
"domain": {
"description": "The domain to check, as the person gave it (no scheme, no path). Reserved names such as example.com are refused.",
"maxLength": 253,
"minLength": 3,
"type": "string"
}
},
"required": [
"domain",
"agent"
]
}Ausgabe-Schema
{
"type": "object",
"properties": {
"agent": {
"type": "string"
},
"blocked": {
"description": "The response refused the crawler (403, 429 or similar)",
"type": "boolean"
},
"chain": {
"description": "Redirect hops",
"items": {
"properties": {
"status": {
"type": "integer"
},
"url": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"challenge": {
"description": "A bot-challenge page rather than the site",
"type": "boolean"
},
"content_type": {
"type": [
"string",
"null"
]
},
"domain": {
"type": "string"
},
"error": {
"type": [
"string",
"null"
]
},
"extract": {
"description": "The text this crawler would index; null when the fetch failed",
"type": [
"string",
"null"
]
},
"final_url": {
"type": [
"string",
"null"
]
},
"headers": {
"additionalProperties": {
"type": "string"
},
"type": "object"
},
"label": {
"description": "The crawler as its operator names it",
"type": "string"
},
"ms": {
"type": "integer"
},
"request_id": {
"description": "req_... for this call. Quote it when reporting a problem with the result.",
"type": "string"
},
"status": {
"description": "HTTP status the crawler received",
"type": [
"integer",
"null"
]
},
"title": {
"type": [
"string",
"null"
]
}
},
"required": [
"domain",
"agent"
]
}🟢verify_fix(component, domain)
Re-runs only the checks behind one component (crawl, plumbing, metadata, structured, answer) and returns the updated score.
Eingabe-Schema
{
"type": "object",
"properties": {
"component": {
"enum": [
"crawl",
"plumbing",
"metadata",
"structured",
"answer"
],
"type": "string"
},
"domain": {
"description": "The domain to check, as the person gave it (no scheme, no path). Reserved names such as example.com are refused.",
"maxLength": 253,
"minLength": 3,
"type": "string"
}
},
"required": [
"domain",
"component"
]
}Ausgabe-Schema
{
"type": "object",
"properties": {
"cache_age_seconds": {
"description": "Age of the result; 0 means it was scanned just now",
"type": "integer"
},
"canonical_host": {
"type": [
"string",
"null"
]
},
"capped": {
"type": "boolean"
},
"cdn": {
"type": [
"string",
"null"
]
},
"components": {
"items": {
"description": "One scored area of the domain",
"properties": {
"enabled": {
"type": "boolean"
},
"key": {
"type": "string"
},
"max": {
"type": "integer"
},
"name": {
"type": "string"
},
"points": {
"type": "integer"
},
"summary": {
"type": "string"
}
},
"required": [
"key",
"name",
"points",
"max"
],
"type": "object"
},
"type": "array"
},
"domain": {
"type": "string"
},
"grade": {
"description": "A+ to F, or null alongside a null score",
"type": [
"string",
"null"
]
},
"held_back": {
"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",
"type": "integer"
},
"inconclusive": {
"description": "The site could not be fetched, so the scan could not be completed. A failure to measure, not a finding about the site.",
"type": "boolean"
},
"not_applicable": {
"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.",
"type": "boolean"
},
"not_checked": {
"description": "Parts skipped in this scan",
"items": {
"type": "string"
},
"type": "array"
},
"open_fixes": {
"description": "Findings above info level",
"type": "integer"
},
"raw": {
"description": "What the components add up to, before the cap",
"type": "integer"
},
"reason": {
"description": "Why score is null, when it is",
"type": [
"string",
"null"
]
},
"recommendations": {
"items": {
"properties": {
"component": {
"type": "string"
},
"fix": {
"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\".",
"properties": {
"kind": {
"type": [
"string",
"null"
]
},
"label": {
"type": [
"string",
"null"
]
},
"name": {
"type": [
"string",
"null"
]
},
"note": {
"type": [
"string",
"null"
]
},
"type": {
"type": [
"string",
"null"
]
},
"value": {
"type": [
"string",
"null"
]
},
"where": {
"type": [
"string",
"null"
]
}
},
"type": [
"object",
"null"
]
},
"id": {
"type": "string"
},
"scan": {
"enum": [
"email",
"discoverability"
],
"type": "string"
},
"severity": {
"enum": [
"critical",
"important",
"info"
],
"type": "string"
},
"tags": {
"items": {
"type": "string"
},
"type": "array"
},
"title": {
"type": "string"
},
"why": {
"type": "string"
}
},
"required": [
"id",
"severity",
"title"
],
"type": "object"
},
"type": "array"
},
"report_url": {
"description": "The report page for this domain on astraverify.com",
"type": "string"
},
"request_id": {
"description": "req_... for this call. Quote it when reporting a problem with the result.",
"type": "string"
},
"score": {
"description": "Out of 100, exactly as astraverify.com shows it. Null when not_applicable or inconclusive is set.",
"type": [
"integer",
"null"
]
},
"verdict": {
"description": "One sentence on what engines can do with the site",
"type": "string"
},
"verified_component": {
"description": "Set by verify_fix: the component re-checked",
"type": "string"
}
},
"required": [
"domain",
"score",
"grade"
]
}Empfohlene Prompts
get_reportget_reportCommunity
Nachweis