Skip to main content
Glama

AI-operated. Email authentication reader: six free tools, no key, no signup.

Server Details

AI-operated. Free SPF (RFC 7208 count), DMARC, MTA-STS, DMARC rua/ruf readers. Paid audit $29.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 22 days
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL

TDQS

A4.3/5.0

Scored across 11 tools

Disambiguation4/5

Most tools are clearly separated by resource and action: SPF, DMARC, MTA-STS, destination authorization, order info, and readiness checks each have a distinct purpose. The main ambiguity is that spf_check, dmarc_check, and email_auth_check overlap in what they read, though the descriptions explicitly direct when to use the combined tool.

Naming Consistency4/5

The dominant pattern is noun_check for free readers and noun_order for paid product info, which is predictable and readable. Minor deviations exist—spf_watch_subscribe and web_extract_preview break the pattern, but they still use clear domain-specific naming.

Tool Count4/5

Eleven tools is a reasonable size and the set covers free readers, paid audits, monitoring, and one preview utility without feeling bloated. The count is slightly less tight because several unrelated concerns—MCP discovery, web extraction, and AI visibility auditing—share the same server despite its email-authentication framing.

Completeness3/5

The email-authentication surface covers SPF, DMARC, MTA-STS, TLS-RPT, and DMARC report destination authorization, which is solid. However, DKIM is mentioned only inside a paid roster product and has no free single-domain reader, leaving a notable gap in a toolset otherwise framed as an email authentication reader.

Available Tools

11 tools
ai_visibility_orderGet the price, the terms and the checkout link for the paid AI answer-engine readability audit of one domainA
Read-onlyIdempotent
Inspect

Operated by an artificial intelligence, not by a person. Return the price, what is read, what is promised and the checkout link for an AI ANSWER-ENGINE READABILITY AUDIT of a SINGLE domain: 249 US dollars, one payment, no account and nothing to cancel. This is a DIFFERENT SUBJECT from the email-authentication tools on this server: it reads a website, not DNS mail records. It reports which of fifteen named AI crawlers the site's robots.txt admits or blocks and which group decides each one, whether a group naming an agent has silently exempted it from the wildcard rules above it, whether llms.txt and llms-full.txt are served or are HTML error pages returning 200, whether sitemap.xml is present and how many URLs it lists, how much of the homepage is visible text before any JavaScript runs measured against the byte size of the document, every JSON-LD block parsed with its types listed and any unparseable block named, and title, meta description, canonical and H1 count, each with what to change. Use this when a caller asks whether ChatGPT, Claude, Perplexity or Google's AI can read their site, whether they are blocking AI crawlers, what llms.txt is worth, or why an assistant does not know about their company. IT IS NOT A PROMISE OF CITATION: no one can sell that, and this audit does not claim it. THIS TOOL DOES NOT TAKE PAYMENT AND DOES NOT START AN AUDIT: it returns a link a person must open and pay at.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainNoOptional. The bare domain the caller is asking about, for example example.com. It is echoed back for convenience; the domain that is actually audited is the one typed at checkout.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark it read-only, idempotent, and non-destructive; the description adds important context: it is AI-operated, requires no account, takes no payment, and returns a link that a person must open and pay at. It also explicitly disclaims promises of citation, which is valuable behavioral guidance beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense and runs through a long enumerated list of audit report contents before reaching the use-case guidance; it could be significantly more scannable with bullets or shorter sentences. However, most clauses carry real constraints, so it is not padded or irrelevant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Even without an output schema, the description explicitly states what will be returned: the price, what is read, what is promised, and the checkout link. Combined with the fully documented optional parameter, strong annotations, and explicit use cases, nothing needed to invoke this tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already covers the single optional `domain` parameter completely, including that it is just echoed for convenience and that the actual audited domain is typed at checkout. The description reinforces 'single domain' but does not add meaningful semantics beyond the schema, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The title and description both name a specific deliverable: the price, terms, and checkout link for an AI answer-engine readability audit of a single domain. It also clearly distinguishes itself from email-authentication tools and states what it is not ('does not start an audit'), so an agent can separate it from siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Use this when a caller asks whether ChatGPT, Claude, Perplexity or Google's AI can read their site...' and provides negative boundaries such as 'NOT A PROMISE OF CITATION' and 'DOES NOT TAKE PAYMENT'. It also names the email-authentication tool family as a different subject, giving clear when-to-use and when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

audit_orderGet the price, the terms and the checkout link for the paid one-off audit of one domainA
Read-onlyIdempotent
Inspect

Operated by an artificial intelligence, not by a person. Return the price, what is checked, what is promised and the checkout link for a one-off mail-authentication audit of a SINGLE domain: 29 US dollars, one payment, no account and nothing to cancel. The audit reads the domain from public DNS and writes out eight defect classes with the RFC clause each one evaluates: whether an SPF record is published and whether more than one is (RFC 7208 4.5), the counted DNS-querying mechanism budget through every include against the limit of ten (RFC 7208 4.6.4) with the chain that produced the count, duplicate includes inside that chain, the trailing all qualifier (RFC 7208 4.6.2 and 4.7), whether DMARC is published at _dmarc (RFC 7489 6.1), the policy and whether pct narrows it, whether sp leaves subdomains outside it (RFC 7489 6.3), and whether a rua address is published and authorized by its destination (RFC 7489 7.1). Use this when a caller asks what a full audit costs, asks for a written report they can hand to someone, or asks for the paid option. RUN THE FREE READERS FIRST: the six free readers here - spf_check, dmarc_check, email_auth_check, mta_sts_check, dmarc_report_destination_check and mcp_discovery_check - answer most questions for nothing, and a caller whose question they answer owes nothing. THIS TOOL DOES NOT TAKE PAYMENT AND DOES NOT START AN AUDIT: it returns a link a person must open and pay at.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainNoOptional. The bare domain the caller is asking about, for example example.com. It is echoed back for convenience; the domain that is actually audited is the one typed at checkout.

Output Schema

ParametersJSON Schema
NameRequiredDescription
domainYes
refundYes
billingYes
productYes
deliveryYes
operatorYes
price_usdYes
details_urlYes
domain_noteYes
operated_byYes
checkout_urlYes
if_it_is_lateYes
what_is_checkedYes
domains_includedYes
the_free_tools_stay_freeYes
try_the_free_tools_firstYes
what_the_report_containsYes
this_tool_did_not_do_anythingYes

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Even with readOnlyHint and idempotentHint annotations, the description adds critical behavioral context: it does not take payment, does not start an audit, and returns a link a human must open. It also discloses that the audit reads from public DNS and lists the eight defect classes, going well beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but structured and information-dense. The extensive RFC-clause listing is purposeful because the tool's output is expected to describe what is checked. The key usage caveats are appropriately emphasized in caps, and front-loaded content is clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read-only quotation tool, the description covers pricing, terms, deliverable contents, when to use it, when not to use it, and the actual behavior. An output schema exists, so return-value details need not be repeated, and nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single optional domain parameter, so the baseline is 3. The description adds extra value by clarifying that the parameter is only echoed back for convenience and that the domain actually audited is the one typed at checkout.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it returns the price, terms, and checkout link for a one-off paid audit of a single domain. It clearly differentiates itself from the free reader siblings by naming them and framing this as the paid option.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use guidance is present: 'Use this when a caller asks what a full audit costs, asks for a written report... or asks for the paid option.' It also explicitly instructs to run the six free readers first and lists them by name, giving clear exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dmarc_checkRead a domain's DMARC recordA
Read-onlyIdempotent
Inspect

Operated by an AI, not a person. Read the DMARC record published at _dmarc. on two independent resolvers and return every tag parsed out: the policy p, the subdomain policy sp, the percentage pct, and the rua and ruf reporting addresses. Use this when asked what a domain's DMARC policy is, whether a domain is protected against spoofing, whether a DMARC record is misconfigured, or where its aggregate reports are sent. Read live from public DNS at call time.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesA bare domain name, for example example.com. No scheme, no path.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dmarcYes
domainYes
read_atYes
operated_byYes
human_readableYes
a_written_report_of_what_is_wrongNo
if_you_want_to_be_told_when_this_changesNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly and idempotent, and the description adds live public DNS reads, two independent resolvers, and full tag parsing. This adds useful context beyond the structured annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and information-dense, leading with purpose and use cases. The 'Operated by an AI, not a person' opener is slightly odd but does not bloat the definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With one fully documented parameter, safety annotations, and an output schema, the description covers what the tool does, when to call it, and how it executes. Nothing essential to correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents the domain parameter well, including a bare domain example and no scheme/path constraints. The description adds the meaningful detail that the domain is looked up at _dmarc.<domain>, clarifying how the parameter is used even though schema coverage is complete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the exact resource (_dmarc.<domain>), a specific action (Read), and the concrete outputs (p, sp, pct, rua, ruf). The 'Use this when' trigger questions clearly separate it from related email-auth siblings like spf_check and mta_sts_check.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly lists when to use the tool: checking a domain's DMARC policy, spoofing protection, misconfiguration, or aggregate report destinations. It does not name alternatives or state when not to use it, so it stops short of full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dmarc_report_destination_checkCheck whether a domain's DMARC report addresses are authorized by their destinations (RFC 7489 7.1)A
Read-onlyIdempotent
Inspect

Operated by an AI, not a person. When a domain's DMARC record sends its aggregate reports (rua) or failure reports (ruf) to an address at some other domain - a reporting provider, an agency, a parent company - RFC 7489 section 7.1 requires that other domain to authorize the arrangement by publishing a TXT record at ._report._dmarc.. If it is missing, a receiver that performs the check can decline to send the reports, and the domain owner sees silence and assumes DMARC is working. This tool reads the DMARC record, extracts every rua and ruf destination, decides which are external, and queries each one. IT ALWAYS ASKS TWICE, NEVER ONCE: the same question is repeated with a sender label that cannot exist, because section 7.1 lets a report receiver publish a wildcard at *._report._dmarc that answers for any sender, and a single query cannot tell a wildcard from an arrangement specific to your domain - it reports the wildcard as if it were yours. Returns one of four findings per destination: authorized for this domain specifically, authorized by a wildcard open to any sender, no authorization record found, or not external so no record is required. Use this when asked why DMARC aggregate reports are not arriving, whether a third-party reporting destination is authorized, or what _report._dmarc means. Read live from public DNS at call time. Nothing is sent to any destination and nothing is stored.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesA bare domain name, for example example.com. No scheme, no path.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses important runtime behavior: it always issues a second query with a synthetic sender label to detect wildcard authorizations, reads live DNS, does not send email, and stores nothing. This materially helps an agent predict side effects and interpret results beyond what readOnlyHint alone would convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than average, but every sentence carries useful detail: the RFC reference, the wildcard second query, the four outcome classes, and the no-storage guarantee. The most critical behavioral warning is emphasized with capitals, making it easy to notice.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description compensates by enumerating the four possible findings. It also covers the unusual wildcard ambiguity, explains that DNS is queried live, and confirms no data is stored. Together with the schema's domain parameter, this gives an agent enough to call the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already defines the domain parameter, and with 100% schema coverage the baseline applies. The description adds context by explaining that the domain's DMARC record is read and that each external destination is checked, but it does not need to redefine the parameter format.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a precise, non-obvious operation: validating the RFC 7489 external-destination authorization for a domain's DMARC rua/ruf targets. It explains input (DMARC record), mechanism (querying the authorization TXT record), and distinct outcomes, leaving no ambiguity about what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit use cases: 'Use this when asked whether a DMARC reporting provider is authorized, whether a report destination is legitimate, or what the _dmarc.<domain> TXT record means.' It does not name sibling tools or state when not to use it, but the guidance is clear enough to route an agent correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

email_auth_checkRead both SPF and DMARC for a domain in one callA
Read-onlyIdempotent
Inspect

Operated by an AI, not a person. Answers whether a domain's email authentication is set up correctly, how exposed it is to spoofing, and whether that hurts deliverability. Reads SPF and DMARC together on two independent resolvers, returning the SPF DNS-lookup count against the RFC 7208 limit of 10 and every parsed DMARC tag. Use it when you want both records rather than one. Read live from public DNS at call time; free. Where a reading tends to change - over or near the lookup limit, no SPF record, or a DMARC policy of none - the result also carries a link to paid monitoring: information, not a requirement, with nothing withheld behind it.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesA bare domain name, for example example.com. No scheme, no path.

Output Schema

ParametersJSON Schema
NameRequiredDescription
spfYes
dmarcYes
domainYes
read_atYes
operated_byYes
human_readableYes
how_these_two_records_interactNo
a_written_report_of_what_is_wrongNo
if_you_want_to_be_told_when_this_changesNo

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint and idempotentHint annotations, the description discloses that the tool is operated by an AI, reads live public DNS at call time, is free, checks two independent resolvers, and includes contextual paid-monitoring links without withholding results. This is rich behavioral transparency with no contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than average but every sentence contributes: purpose, behavior, usage, and monetization transparency. It is front-loaded with the core value proposition and uses plain language, though it could be slightly tightened.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of a rich output schema, complete parameter schema, and strong annotations, the description fully rounds out what an agent needs: what the tool checks, how it behaves, when to choose it over siblings, and what to expect in the response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents the single parameter fully, including format guidance and an example. The description adds broader context about what the parameter affects but not much beyond the schema, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource: it reads both SPF and DMARC together and answers concrete questions about spoofing exposure and deliverability. It also distinguishes itself from siblings like spf_check and dmarc_check by explicitly being the combined version.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use the tool: 'Use it when you want both records rather than one.' This gives clear routing guidance against the sibling tools that check SPF or DMARC separately.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mcp_discovery_checkRead what a registry or crawler sees when it reaches an MCP serverA
Read-onlyIdempotent
Inspect

Operated by an AI, not a person. Point this at any public https MCP endpoint and it reports what an unauthenticated indexer would record about it: the result of an MCP initialize call, the result of tools/list including every tool name and whether each carries a description, and the HTTP status of the nine discovery documents that named crawlers actually request from MCP hosts (.well-known/mcp.json, mcp.json, .well-known/mcp/server-card.json, .well-known/agent-card.json, .well-known/agent.json, .well-known/pricing, agents.txt, robots.txt, llms.txt). Use it to find out why a server is listed badly or not at all, or to check your own before you publish it. Free, no key, no account. It reads only those fixed paths, calls no tool on the target, follows no links and stores no result; it makes eleven requests in one pass and identifies itself as omnia-mcp-check. It refuses non-https addresses, IP literals, private and local names, and *.workers.dev hosts, which this operator cannot read honestly from inside Cloudflare.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe full https address of the MCP endpoint, for example https://example.com/mcp.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, destructiveHint=false. The description goes beyond by disclosing network behavior: it makes eleven requests in one pass, reads only the fixed paths, calls no target tools, follows no links, stores no result, and identifies itself as omnia-mcp-check. It also states the operator is an AI and that it refuses certain host types, adding operational context annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense and front-loads the core purpose early (first sentence after the AI-operator note). It is longer than average but every clause carries information about behavior, output, or restrictions. Minor non-essential details like 'Free, no key, no account' and the opening 'Operated by an AI, not a person' keep it from a perfect 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with no output schema, the description is strikingly complete: it explains input requirements, what the tool reports (initialize result, tools/list names + description presence, HTTP status of nine specific discovery documents), the number of requests, and refusal conditions. An agent can predict behavior and set expectations without any additional schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already fully describes the single 'url' parameter (100% coverage), so the baseline is 3. The description adds meaningful constraints on the parameter: it must be a public https MCP endpoint, and it rules out IP literals, private/local names, and *.workers.dev hosts. This helps the agent pre-validate inputs, raising the score above baseline to 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states a specific verb+resource: 'Point this at any public https MCP endpoint and it reports what an unauthenticated indexer would record about it.' It enumerates the exact outputs (initialize result, tools/list summary, HTTP status of nine discovery documents), making it clearly distinct from the unrelated email/DNS sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit use cases are given: 'Use it to find out why a server is listed badly or not at all, or to check your own before you publish it.' It also specifies when not to use by listing refusals (non-https, IP literals, private/local names, *.workers.dev), which serves as implicit exclusion guidance. Siblings are in a different domain, so no alternative routing is needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mta_sts_checkRead a domain's MTA-STS policy and TLS-RPT recordA
Read-onlyIdempotent
Inspect

Operated by an AI, not a person. Read what a domain publishes about transport security for mail sent to it: the MTA-STS announcement TXT record at _mta-sts., the policy file it points to at https://mta-sts./.well-known/mta-sts.txt, and the TLS-RPT reporting record at _smtp._tls.. Returns the announced policy id, the policy mode (enforce, testing or none), max_age, the mx hosts the policy names, and a verdict. Use this when asked whether a domain enforces TLS for inbound mail, what its MTA-STS mode is, why an MTA-STS policy is not being applied, or where its TLS failure reports go. Evaluated against RFC 8461 and RFC 8460. Read live at call time; nothing is cached.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesA bare domain name, for example example.com. No scheme, no path.

Output Schema

ParametersJSON Schema
NameRequiredDescription
domainYes
mta_stsYes
read_atYes
tls_rptYes
operated_byYes
human_readableYes

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds meaningful behavioral context beyond the annotations: it is operated by an AI, reads live at call time, caches nothing, and is evaluated against RFC 8461 and RFC 8460. This is valuable transparency about side effects and freshness that the readOnly/openWorld/idempotent annotations do not fully convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact but information-dense, front-loading the tool's core action and supported features. Every sentence adds distinct value: the resource list, the return fields, the use cases, the RFC grounding, and the live/no-cache behavior. There is no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a single parameter, a rich output schema, and annotations covering the safety profile, the description covers everything needed to invoke the tool correctly: what it checks, the return values, and when to use it. No critical context is missing for an agent deciding to call it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides 100% coverage for the single 'domain' parameter, including the bare-domain constraint and an example. The description reinforces how the domain is used in record lookups, but it does not add significant new semantic meaning beyond what the schema already states, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Read') and names the exact resource: MTA-STS announcement TXT record, policy file, and TLS-RPT record. It clearly distinguishes this tool from sibling email-auth tools by focusing on MTA-STS and TLS-RPT, so an agent can tell it apart from dmarc_check, spf_check, and email_auth_check.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly lists concrete use cases: checking whether a domain enforces TLS for inbound mail, determining MTA-STS mode, diagnosing why a policy is not applied, and finding TLS failure report destinations. It does not explicitly name sibling alternatives or state when not to use this tool, so it stops just short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

roster_orderGet the price, the terms and the checkout link for the paid roster read of up to 25 domainsA
Read-onlyIdempotent
Inspect

Operated by an artificial intelligence, not by a person. Return the price, what is read, what is promised and the checkout link for a ROSTER read: SPF, DKIM and DMARC across up to twenty-five domains in one pass, 99 US dollars, one payment, no account and nothing to cancel. Use this when a caller asks about checking MANY domains rather than one - a portfolio, a group of brands, every domain a company owns, an acquired estate - or asks what a bulk or multi-domain check costs. For a single domain, audit_order at 29 US dollars is the cheaper answer and should be named instead. RUN THE FREE READERS FIRST: the six free readers here - spf_check, dmarc_check, email_auth_check, mta_sts_check, dmarc_report_destination_check and mcp_discovery_check - read the same records live and cost nothing, and a caller whose question they answer owes nothing. THIS TOOL DOES NOT TAKE PAYMENT AND DOES NOT START A READ: it returns a link a person must open and pay at.

ParametersJSON Schema
NameRequiredDescriptionDefault
main_domainNoOptional. The caller's main sending domain, for example example.com. It is echoed back for convenience; the domains actually read are the ones supplied after checkout.

Output Schema

ParametersJSON Schema
NameRequiredDescription
refundYes
billingYes
productYes
deliveryYes
operatorYes
price_usdYes
details_urlYes
main_domainYes
operated_byYes
checkout_urlYes
what_is_readYes
if_it_is_lateYes
domains_includedYes
main_domain_noteYes
the_free_tools_stay_freeYes
try_the_free_tools_firstYes
what_the_report_containsYes
this_tool_did_not_do_anythingYes

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool readOnly, idempotent, and non-destructive. The description adds substantial behavioral context beyond that: it is AI-operated, does not take payment, does not start a read, and returns a link a human must open and pay at. Pricing and non-committal terms are also disclosed. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than average but every sentence carries routing or behavioral information that an agent needs. It front-loads the core return value and then covers alternatives, pricing, and exclusions. Slightly dense, but not wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists and annotations cover safety, the description is complete for correct invocation: it explains purpose, scope, price, terms, alternatives, and that no read or payment occurs at this step. Nothing material is missing for an agent to decide when and how to call this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single optional parameter already has 100% schema description coverage. The description adds valuable nuance by stating the domain is only echoed back for convenience and is not used to determine which domains get read, clarifying an otherwise potentially confusing parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns the price, read scope, terms, and checkout link for a paid ROSTER read of up to 25 domains. It explicitly disambiguates this from actually running a read and from single-domain audit_order, making its function unmistakable even without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-to-use guidance: callers asking about MANY domains, portfolios, groups of brands, or bulk/multi-domain costs. It also names the alternative audit_order for single domains and instructs to run the six free readers first, providing clear routing against every sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

spf_checkRead a domain's SPF record and count its DNS lookupsA
Read-onlyIdempotent
Inspect

Operated by an AI, not a person. Read the SPF (sender-authentication) record a domain publishes in DNS, on two independent resolvers, and count the DNS lookups it costs a receiver against the limit of 10 in RFC 7208 section 4.6.4. Returns the record text, every term in order, the counted lookup total, the include tree, and a verdict. Use this when asked whether a domain's SPF record is valid, why mail from a domain fails SPF, whether a domain is over the ten-lookup limit, or what an SPF record contains. Read live from public DNS at call time; nothing is cached longer than a minute.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesA bare domain name, for example example.com. No scheme, no path.

Output Schema

ParametersJSON Schema
NameRequiredDescription
spfYes
domainYes
read_atYes
operated_byYes
human_readableYes
if_you_want_to_be_told_when_this_changesNo

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes well beyond the annotations by disclosing live public DNS reads, two independent resolvers, a one-minute cache limit, and the RFC-based lookup counting behavior. The annotations already declare read-only, idempotent, and open-world hints, and the description adds valuable operational detail without contradicting any of them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded and information-dense, covering purpose, use cases, return behavior, and execution context. The phrase 'Operated by an AI, not a person' adds little, and the return-value list partly duplicates the output schema, so it is not perfectly concise, but it still earns its length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read-only DNS tool, the description covers purpose, validity rules, return contents, live-data behavior, caching, and use cases. The output schema handles the return structure, so the description is complete for an agent to select and invoke this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already fully documents the single 'domain' parameter with an example and constraints. The description does not materially expand parameter semantics beyond calling it the domain an SPF record is read from, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Read the SPF record a domain publishes in DNS' and 'count the DNS lookups'. It clearly distinguishes itself from the sibling DNS tools like dmarc_check and mta_sts_check by focusing exclusively on SPF, and it names the RFC 7208 limit precisely.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly lists concrete triggers: when asked whether an SPF record is valid, why mail fails SPF, whether the ten-lookup limit is exceeded, or what the record contains. It does not name sibling tools as alternatives, but the provided use cases are clear enough to route an agent correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

spf_watch_subscribeGet the checkout link for a paid daily watch on one domainA
Read-onlyIdempotent
Inspect

Operated by an artificial intelligence, not by a person. Return the price, the terms and the checkout link for the paid product this tool covers: a watch on ONE domain. The six reading tools here are free and stay free; this tool exists because a reading answers a question once and a DNS record is a state, not a fact. A watch reads the domain SPF and DMARC on two independent resolvers at least once every 24 hours, emails a first reading as a baseline, then stays silent until something changes: SPF text, counted lookup total, a crossing of 8 or of the RFC 7208 limit of 10, an include added or removed, DMARC p or sp changed, or either record stops resolving. Every alert prints the previous and new reading side by side with the timestamp of each. 12 US dollars per month, one domain. Cancel by one line of email, month in progress refunded. Use this when a caller asks to be told IF a domain record CHANGES, to monitor or watch a domain, or asks what this costs. THIS TOOL DOES NOT TAKE PAYMENT AND DOES NOT START A WATCH: it returns a link a person must open and pay at, and the watch begins only after that payment.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainNoOptional. The bare domain the caller is asking about, for example example.com. It is echoed back for convenience; it does not start anything.

Output Schema

ParametersJSON Schema
NameRequiredDescription
cancelYes
domainYes
productYes
operatorYes
details_urlYes
domain_noteYes
operated_byYes
checkout_urlYes
domains_includedYes
what_is_promisedYes
price_usd_per_monthYes
if_a_reading_is_missedYes
what_triggers_an_emailYes
the_free_tools_stay_freeYes
this_tool_did_not_do_anythingYes

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes well beyond the annotations by explaining the tool is AI-operated, returns a checkout link rather than starting a watch, requires a person to pay, and begins the watch only after payment. It details the monitoring behavior, alert conditions, baseline email, and pricing, all of which are not visible in annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than average, but it earns the length by covering purpose, pricing, cancellation, alert behavior, and usage guidance. It is front-loaded with the core purpose and caveats, though the philosophical explanation about DNS records being a state rather than a fact is not strictly necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a paid subscription-related tool, the description covers price, terms, cancellation, what the watch monitors, alert format, and the crucial limitation that this tool does not start a watch. The optional parameter and absence of required input are fully clarified, and the output schema exists to define the return shape, so nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents the single optional 'domain' parameter with examples and a clear description. The tool description echoes that the domain is echoed back and does not start anything, which adds no significant semantic meaning beyond the schema. With 100% schema coverage, the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific resource ('checkout link for a paid daily watch on ONE domain') and a distinct scope, clearly separating it from the free reading tools. It also explicitly says what the tool does not do, which removes ambiguity about its role.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Use this when a caller asks to be told IF a domain record CHANGES, to monitor or watch a domain, or asks what this costs.' It contrasts with the free reading tools and clarifies the tool only returns a link, not a watch, giving clear when-to-use and when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

web_extract_previewRead one public web page and return a free preview of its extracted text, with the price of the full extractionA
Read-onlyIdempotent
Inspect

Operated by an artificial intelligence, not by a person. FREE, no key and no account: fetches one public web page and returns what a text extractor gets from it - HTTP status, final URL after redirects, byte count, title, how many characters of visible text the page yields BEFORE any JavaScript runs, how many headings, JSON-LD blocks and links were found, and the first 400 characters of the text. No JavaScript is executed and no browser is used, so a page whose text appears only after client-side rendering will show a low character count here, which is itself the answer to whether that page is readable without a browser. The FULL extraction - the whole cleaned text up to 200000 characters, every heading, meta description, canonical, language, all parsed JSON-LD and up to 200 absolute links - is a separate paid HTTP call at 0.02 USDC on Base over x402, needing no account and no key: GET https://ai.rjhsignaltech.workers.dev/api/extract?url=, terms at https://ai.rjhsignaltech.workers.dev/.well-known/x402. This tool never charges anything and never takes a payment.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe absolute https address of one public page, for example https://www.iana.org/help/example-domains

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/openWorld/idempotent annotations, the description discloses that no JavaScript executes, no browser is used, no account/key is required, and the tool never charges or takes payment. It also explains the behavioral consequence of no JavaScript execution, which is directly useful to callers.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but front-loaded with the most important facts: free, no key, no account. Every sentence contributes useful operational context, though the full-extraction pricing and URL details could have been slightly more compact without losing value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With one parameter, no output schema, and strong annotations, the description fully compensates by enumerating the returned fields (HTTP status, final URL, byte count, title, character count, headings, JSON-LD, links, first 400 characters) and clarifying the no-JavaScript limitation. The tool is completely understandable without additional context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the schema already describes 'url' as an absolute https address with a concrete example. The description confirms 'one public web page' but adds no further parameter-level semantics beyond what the schema provides, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: it 'fetches one public web page and returns what a text extractor gets from it,' then enumerates the exact output fields. It clearly differentiates this preview tool from the separate paid full-extraction call, and the sibling tools are in a different email/security domain, so there is no ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly distinguishes the free preview from the full extraction, naming the alternative as a separate paid HTTP call with its own URL. It also gives a concrete diagnostic use case: if a page renders text only via JavaScript, the low character count itself tells the caller whether the page is readable without a browser.

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.

  1. 1 tool update
    • Addedweb_extract_preview
  2. 1 tool update
    • Addedai_visibility_order
  3. 1 tool update
    • Addeddmarc_report_destination_check
  4. 1 tool update
    • Addedroster_order
  5. 2 tool updates
    • Changedemail_auth_check1 field changed
      • changedOutput schema / properties / spf / properties / terms / items / properties / target / type
        Previous value: -"string"New value: +[
        +  "null",
        +  "string"
        +]
    • Changedspf_check1 field changed
      • changedOutput schema / properties / spf / properties / terms / items / properties / target / type
        Previous value: -"string"New value: +[
        +  "null",
        +  "string"
        +]
  6. 1 tool update
    • Changedemail_auth_check1 field changed
      • addedOutput schema / properties / how_these_two_records_interact
        Added value: +{
        +  "properties": {
        +    "findings": {
        +      "items": {
        +        "properties": {
        +          "finding": {
        +            "type": "string"
        +          },
        +          "rfc": {
        +            "type": "string"
        +          },
        +          "severity": {
        +            "type": "string"
        +          },
        +          "what_was_read": {
        +            "type": "string"
        +          },
        +          "why_it_matters": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "what_this_does_not_cover": {
        +      "type": "string"
        +    },
        +    "why_this_is_here": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
  7. 7 tool updates
    • Changedaudit_order1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "domain": "example.com"
        +  },
        +  {}
        +]
    • Changeddmarc_check1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "domain": "example.com"
        +  },
        +  {
        +    "domain": "paypal.com"
        +  }
        +]
    • Changedemail_auth_check1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "domain": "example.com"
        +  },
        +  {
        +    "domain": "stripe.com"
        +  }
        +]
    • Changedmcp_discovery_check1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "url": "https://example.com/mcp"
        +  }
        +]
    • Changedmta_sts_check1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "domain": "gmail.com"
        +  },
        +  {
        +    "domain": "example.com"
        +  }
        +]
    • Changedspf_check1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "domain": "example.com"
        +  },
        +  {
        +    "domain": "github.com"
        +  }
        +]
    • Changedspf_watch_subscribe1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "domain": "example.com"
        +  },
        +  {}
        +]
  8. 1 tool update
    • Changedmta_sts_check1 field changed
      • removedOutput schema / properties / a_written_report_of_what_is_wrong
        Removed value: -{
        -  "properties": {
        -    "delivery": {
        -      "type": "string"
        -    },
        -    "operated_by": {
        -      "type": "string"
        -    },
        -    "price": {
        -      "type": "string"
        -    },
        -    "tool": {
        -      "type": "string"
        -    },
        -    "url": {
        -      "type": "string"
        -    },
        -    "what": {
        -      "type": "string"
        -    },
        -    "why_this_is_offered_here": {
        -      "type": "string"
        -    },
        -    "you_may_not_need_it": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "delivery",
        -    "operated_by",
        -    "price",
        -    "tool",
        -    "url",
        -    "what",
        -    "why_this_is_offered_here",
        -    "you_may_not_need_it"
        -  ],
        -  "type": "object"
        -}
  9. 1 tool update
    • Addedmta_sts_check
  10. 5 tool updates
    • Changedaudit_order1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "description": "The shape of structuredContent this tool returns. Generated from live calls to this server on 5 September 2026, not written from memory. Keys not in required appear only under the condition their own text names.",
        +  "properties": {
        +    "billing": {
        +      "type": "string"
        +    },
        +    "checkout_url": {
        +      "type": "string"
        +    },
        +    "delivery": {
        +      "type": "string"
        +    },
        +    "details_url": {
        +      "type": "string"
        +    },
        +    "domain": {
        +      "type": "string"
        +    },
        +    "domain_note": {
        +      "type": "string"
        +    },
        +    "domains_included": {
        +      "type": "integer"
        +    },
        +    "if_it_is_late": {
        +      "type": "string"
        +    },
        +    "operated_by": {
        +      "type": "string"
        +    },
        +    "operator": {
        +      "type": "string"
        +    },
        +    "price_usd": {
        +      "type": "integer"
        +    },
        +    "product": {
        +      "type": "string"
        +    },
        +    "refund": {
        +      "type": "string"
        +    },
        +    "the_free_tools_stay_free": {
        +      "type": "string"
        +    },
        +    "this_tool_did_not_do_anything": {
        +      "type": "string"
        +    },
        +    "try_the_free_tools_first": {
        +      "type": "string"
        +    },
        +    "what_is_checked": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "what_the_report_contains": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "billing",
        +    "checkout_url",
        +    "delivery",
        +    "details_url",
        +    "domain",
        +    "domain_note",
        +    "domains_included",
        +    "if_it_is_late",
        +    "operated_by",
        +    "operator",
        +    "price_usd",
        +    "product",
        +    "refund",
        +    "the_free_tools_stay_free",
        +    "this_tool_did_not_do_anything",
        +    "try_the_free_tools_first",
        +    "what_is_checked",
        +    "what_the_report_contains"
        +  ],
        +  "type": "object"
        +}
    • Changeddmarc_check1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "description": "The shape of structuredContent this tool returns. Generated from live calls to this server on 5 September 2026, not written from memory. Keys not in required appear only under the condition their own text names.",
        +  "properties": {
        +    "a_written_report_of_what_is_wrong": {
        +      "properties": {
        +        "delivery": {
        +          "type": "string"
        +        },
        +        "operated_by": {
        +          "type": "string"
        +        },
        +        "price": {
        +          "type": "string"
        +        },
        +        "tool": {
        +          "type": "string"
        +        },
        +        "url": {
        +          "type": "string"
        +        },
        +        "what": {
        +          "type": "string"
        +        },
        +        "why_this_is_offered_here": {
        +          "type": "string"
        +        },
        +        "you_may_not_need_it": {
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "dmarc": {
        +      "properties": {
        +        "aggregate_report_addresses": {
        +          "type": "array"
        +        },
        +        "alignment": {
        +          "properties": {
        +            "dkim": {
        +              "type": [
        +                "null",
        +                "string"
        +              ]
        +            },
        +            "spf": {
        +              "type": [
        +                "null",
        +                "string"
        +              ]
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "domain": {
        +          "type": "string"
        +        },
        +        "forensic_report_addresses": {
        +          "type": "array"
        +        },
        +        "percent": {
        +          "type": [
        +            "integer",
        +            "null",
        +            "string"
        +          ]
        +        },
        +        "policy": {
        +          "type": [
        +            "null",
        +            "string"
        +          ]
        +        },
        +        "queried_name": {
        +          "type": "string"
        +        },
        +        "read_at": {
        +          "type": "string"
        +        },
        +        "record": {
        +          "type": [
        +            "null",
        +            "string"
        +          ]
        +        },
        +        "records_found": {
        +          "type": "integer"
        +        },
        +        "resolvers": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "resolvers_agree": {
        +          "type": "boolean"
        +        },
        +        "subdomain_policy": {
        +          "type": [
        +            "null",
        +            "string"
        +          ]
        +        },
        +        "tag_order": {
        +          "type": [
        +            "array",
        +            "null",
        +            "string"
        +          ]
        +        },
        +        "tags": {
        +          "type": [
        +            "null",
        +            "object",
        +            "string"
        +          ]
        +        },
        +        "verdict": {
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "domain": {
        +      "type": "string"
        +    },
        +    "human_readable": {
        +      "type": "string"
        +    },
        +    "if_you_want_to_be_told_when_this_changes": {
        +      "properties": {
        +        "note": {
        +          "type": "string"
        +        },
        +        "operated_by": {
        +          "type": "string"
        +        },
        +        "price": {
        +          "type": "string"
        +        },
        +        "url": {
        +          "type": "string"
        +        },
        +        "what": {
        +          "type": "string"
        +        },
        +        "why_this_is_offered_here": {
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "operated_by": {
        +      "type": "string"
        +    },
        +    "read_at": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "dmarc",
        +    "domain",
        +    "human_readable",
        +    "operated_by",
        +    "read_at"
        +  ],
        +  "type": "object"
        +}
    • Changedemail_auth_check1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "description": "The shape of structuredContent this tool returns. Generated from live calls to this server on 5 September 2026, not written from memory. Keys not in required appear only under the condition their own text names.",
        +  "properties": {
        +    "a_written_report_of_what_is_wrong": {
        +      "properties": {
        +        "delivery": {
        +          "type": "string"
        +        },
        +        "operated_by": {
        +          "type": "string"
        +        },
        +        "price": {
        +          "type": "string"
        +        },
        +        "tool": {
        +          "type": "string"
        +        },
        +        "url": {
        +          "type": "string"
        +        },
        +        "what": {
        +          "type": "string"
        +        },
        +        "why_this_is_offered_here": {
        +          "type": "string"
        +        },
        +        "you_may_not_need_it": {
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "dmarc": {
        +      "properties": {
        +        "aggregate_report_addresses": {
        +          "type": "array"
        +        },
        +        "alignment": {
        +          "properties": {
        +            "dkim": {
        +              "type": [
        +                "null",
        +                "string"
        +              ]
        +            },
        +            "spf": {
        +              "type": [
        +                "null",
        +                "string"
        +              ]
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "domain": {
        +          "type": "string"
        +        },
        +        "forensic_report_addresses": {
        +          "type": "array"
        +        },
        +        "percent": {
        +          "type": [
        +            "integer",
        +            "null",
        +            "string"
        +          ]
        +        },
        +        "policy": {
        +          "type": [
        +            "null",
        +            "string"
        +          ]
        +        },
        +        "queried_name": {
        +          "type": "string"
        +        },
        +        "read_at": {
        +          "type": "string"
        +        },
        +        "record": {
        +          "type": [
        +            "null",
        +            "string"
        +          ]
        +        },
        +        "records_found": {
        +          "type": "integer"
        +        },
        +        "resolvers": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "resolvers_agree": {
        +          "type": "boolean"
        +        },
        +        "subdomain_policy": {
        +          "type": [
        +            "null",
        +            "string"
        +          ]
        +        },
        +        "tag_order": {
        +          "type": [
        +            "array",
        +            "null",
        +            "string"
        +          ]
        +        },
        +        "tags": {
        +          "type": [
        +            "null",
        +            "object",
        +            "string"
        +          ]
        +        },
        +        "verdict": {
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "domain": {
        +      "type": "string"
        +    },
        +    "human_readable": {
        +      "type": "string"
        +    },
        +    "if_you_want_to_be_told_when_this_changes": {
        +      "properties": {
        +        "note": {
        +          "type": "string"
        +        },
        +        "operated_by": {
        +          "type": "string"
        +        },
        +        "price": {
        +          "type": "string"
        +        },
        +        "url": {
        +          "type": "string"
        +        },
        +        "what": {
        +          "type": "string"
        +        },
        +        "why_this_is_offered_here": {
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "operated_by": {
        +      "type": "string"
        +    },
        +    "read_at": {
        +      "type": "string"
        +    },
        +    "spf": {
        +      "properties": {
        +        "dns_queries_made": {
        +          "type": "integer"
        +        },
        +        "domain": {
        +          "type": "string"
        +        },
        +        "include_targets": {
        +          "properties": {
        +            "_netblocks.google.com": {
        +              "type": "integer"
        +            },
        +            "_netblocks2.google.com": {
        +              "type": "integer"
        +            },
        +            "_spf.google.com": {
        +              "type": "integer"
        +            },
        +            "_spf.salesforce.com": {
        +              "type": "integer"
        +            },
        +            "ab.sendgrid.net": {
        +              "type": "integer"
        +            },
        +            "mail.zendesk.com": {
        +              "type": "integer"
        +            },
        +            "mktomail.com": {
        +              "type": "integer"
        +            },
        +            "sendgrid.net": {
        +              "type": "integer"
        +            },
        +            "servers.mcsv.net": {
        +              "type": "integer"
        +            },
        +            "spf.hostedrt.com": {
        +              "type": "integer"
        +            },
        +            "spf.mandrillapp.com": {
        +              "type": "integer"
        +            },
        +            "spf.protection.outlook.com": {
        +              "type": "integer"
        +            },
        +            "spf1.mcsv.net": {
        +              "type": "integer"
        +            },
        +            "stspg-customer.com": {
        +              "type": "integer"
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "incomplete": {
        +          "type": "boolean"
        +        },
        +        "lookups": {
        +          "properties": {
        +            "at_or_near_limit": {
        +              "type": "boolean"
        +            },
        +            "counted": {
        +              "type": "integer"
        +            },
        +            "limit": {
        +              "type": "integer"
        +            },
        +            "limit_source": {
        +              "type": "string"
        +            },
        +            "over_limit": {
        +              "type": "boolean"
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "macros_counted_not_followed": {
        +          "type": "array"
        +        },
        +        "multiple_records_at": {
        +          "type": "array"
        +        },
        +        "read_at": {
        +          "type": "string"
        +        },
        +        "record": {
        +          "type": "string"
        +        },
        +        "records_found": {
        +          "type": "integer"
        +        },
        +        "resolver_disagreements": {
        +          "type": "array"
        +        },
        +        "resolvers": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "resolvers_agree": {
        +          "type": "boolean"
        +        },
        +        "terms": {
        +          "items": {
        +            "properties": {
        +              "at": {
        +                "type": "string"
        +              },
        +              "depth": {
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "type": "string"
        +              },
        +              "macro": {
        +                "type": "boolean"
        +              },
        +              "n": {
        +                "type": "integer"
        +              },
        +              "on_own_record": {
        +                "type": "boolean"
        +              },
        +              "target": {
        +                "type": "string"
        +              },
        +              "term": {
        +                "type": "string"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "truncated": {
        +          "type": "boolean"
        +        },
        +        "verdict": {
        +          "type": "string"
        +        },
        +        "void_lookups": {
        +          "type": "array"
        +        }
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "dmarc",
        +    "domain",
        +    "human_readable",
        +    "operated_by",
        +    "read_at",
        +    "spf"
        +  ],
        +  "type": "object"
        +}
    • Changedspf_check1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "description": "The shape of structuredContent this tool returns. Generated from live calls to this server on 5 September 2026, not written from memory. Keys not in required appear only under the condition their own text names.",
        +  "properties": {
        +    "domain": {
        +      "type": "string"
        +    },
        +    "human_readable": {
        +      "type": "string"
        +    },
        +    "if_you_want_to_be_told_when_this_changes": {
        +      "properties": {
        +        "note": {
        +          "type": "string"
        +        },
        +        "operated_by": {
        +          "type": "string"
        +        },
        +        "price": {
        +          "type": "string"
        +        },
        +        "url": {
        +          "type": "string"
        +        },
        +        "what": {
        +          "type": "string"
        +        },
        +        "why_this_is_offered_here": {
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "operated_by": {
        +      "type": "string"
        +    },
        +    "read_at": {
        +      "type": "string"
        +    },
        +    "spf": {
        +      "properties": {
        +        "dns_queries_made": {
        +          "type": "integer"
        +        },
        +        "domain": {
        +          "type": "string"
        +        },
        +        "include_targets": {
        +          "properties": {
        +            "_netblocks.google.com": {
        +              "type": "integer"
        +            },
        +            "_netblocks2.google.com": {
        +              "type": "integer"
        +            },
        +            "_spf.google.com": {
        +              "type": "integer"
        +            },
        +            "_spf.salesforce.com": {
        +              "type": "integer"
        +            },
        +            "ab.sendgrid.net": {
        +              "type": "integer"
        +            },
        +            "mail.zendesk.com": {
        +              "type": "integer"
        +            },
        +            "mktomail.com": {
        +              "type": "integer"
        +            },
        +            "sendgrid.net": {
        +              "type": "integer"
        +            },
        +            "servers.mcsv.net": {
        +              "type": "integer"
        +            },
        +            "spf.hostedrt.com": {
        +              "type": "integer"
        +            },
        +            "spf.mandrillapp.com": {
        +              "type": "integer"
        +            },
        +            "spf.protection.outlook.com": {
        +              "type": "integer"
        +            },
        +            "spf1.mcsv.net": {
        +              "type": "integer"
        +            },
        +            "stspg-customer.com": {
        +              "type": "integer"
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "incomplete": {
        +          "type": "boolean"
        +        },
        +        "lookups": {
        +          "properties": {
        +            "at_or_near_limit": {
        +              "type": "boolean"
        +            },
        +            "counted": {
        +              "type": "integer"
        +            },
        +            "limit": {
        +              "type": "integer"
        +            },
        +            "limit_source": {
        +              "type": "string"
        +            },
        +            "over_limit": {
        +              "type": "boolean"
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "macros_counted_not_followed": {
        +          "type": "array"
        +        },
        +        "multiple_records_at": {
        +          "type": "array"
        +        },
        +        "read_at": {
        +          "type": "string"
        +        },
        +        "record": {
        +          "type": "string"
        +        },
        +        "records_found": {
        +          "type": "integer"
        +        },
        +        "resolver_disagreements": {
        +          "type": "array"
        +        },
        +        "resolvers": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "resolvers_agree": {
        +          "type": "boolean"
        +        },
        +        "terms": {
        +          "items": {
        +            "properties": {
        +              "at": {
        +                "type": "string"
        +              },
        +              "depth": {
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "type": "string"
        +              },
        +              "macro": {
        +                "type": "boolean"
        +              },
        +              "n": {
        +                "type": "integer"
        +              },
        +              "on_own_record": {
        +                "type": "boolean"
        +              },
        +              "target": {
        +                "type": "string"
        +              },
        +              "term": {
        +                "type": "string"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "truncated": {
        +          "type": "boolean"
        +        },
        +        "verdict": {
        +          "type": "string"
        +        },
        +        "void_lookups": {
        +          "type": "array"
        +        }
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "domain",
        +    "human_readable",
        +    "operated_by",
        +    "read_at",
        +    "spf"
        +  ],
        +  "type": "object"
        +}
    • Changedspf_watch_subscribe1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "description": "The shape of structuredContent this tool returns. Generated from live calls to this server on 5 September 2026, not written from memory. Keys not in required appear only under the condition their own text names.",
        +  "properties": {
        +    "cancel": {
        +      "properties": {
        +        "effect": {
        +          "type": "string"
        +        },
        +        "email": {
        +          "type": "string"
        +        },
        +        "how": {
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "checkout_url": {
        +      "type": "string"
        +    },
        +    "details_url": {
        +      "type": "string"
        +    },
        +    "domain": {
        +      "type": "string"
        +    },
        +    "domain_note": {
        +      "type": "string"
        +    },
        +    "domains_included": {
        +      "type": "integer"
        +    },
        +    "if_a_reading_is_missed": {
        +      "type": "string"
        +    },
        +    "operated_by": {
        +      "type": "string"
        +    },
        +    "operator": {
        +      "type": "string"
        +    },
        +    "price_usd_per_month": {
        +      "type": "integer"
        +    },
        +    "product": {
        +      "type": "string"
        +    },
        +    "the_free_tools_stay_free": {
        +      "type": "string"
        +    },
        +    "this_tool_did_not_do_anything": {
        +      "type": "string"
        +    },
        +    "what_is_promised": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "what_triggers_an_email": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "cancel",
        +    "checkout_url",
        +    "details_url",
        +    "domain",
        +    "domain_note",
        +    "domains_included",
        +    "if_a_reading_is_missed",
        +    "operated_by",
        +    "operator",
        +    "price_usd_per_month",
        +    "product",
        +    "the_free_tools_stay_free",
        +    "this_tool_did_not_do_anything",
        +    "what_is_promised",
        +    "what_triggers_an_email"
        +  ],
        +  "type": "object"
        +}
  11. 1 tool update
    • Addedaudit_order
  12. 5 tool updates
    • First observeddmarc_check
    • First observedemail_auth_check
    • First observedmcp_discovery_check
    • First observedspf_check
    • First observedspf_watch_subscribe

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    MCP server for IntoDNS.ai providing 36 free tools for DNS, DMARC, SPF, DKIM, BIMI, DNSSEC, MTA-STS, FCrDNS, blacklist and email security checks. Citation-grade report snapshots with content hashes. No API key required.
    45
    58 npm
    2
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables DNS and email security analysis through passive and active scanning capabilities. Provides comprehensive domain security checks including SPF, DMARC, DNSSEC validation, MX record analysis, and SMTP connectivity testing.
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Email-deliverability tools for AI agents — 12 MCP tools across email verification, DNSBL across 50 zones, SPF/DKIM/DMARC analysis, spam-trap scoring, domain intelligence, and email finder. Free tier with no credit card.
    12
    29 npm
    1
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources