Skip to main content
Glama

Server Details

External checks of TLS, HTTP, email domain, DNS, ports, blocklists and domain expiry

Ownership verified
Status
Healthy
Uptime
100.0% over 23 days
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL
Repository
WithoutCowards/runstack-mcp
GitHub Stars
0
ChatGPT
–
Claude
–

TDQS

A4.6/5.0

Scored across 8 tools

Disambiguation5/5

Each tool targets a distinct layer or concern — DNS propagation, blocklists, registration expiry, email auth, HTTP, IP/ASN lookup, port reachability, and TLS — with explicit cross-references telling the agent when to prefer one over another (e.g. check_dns vs check_email_domain). No two tools share a purpose.

Naming Consistency5/5

All eight tools follow a uniform check_<noun> convention (check_dns, check_dnsbl, check_domain_expiry, check_email_domain, check_http, check_ip, check_port, check_tls), making the surface fully predictable.

Tool Count5/5

Eight tools is well within the ideal 3–15 band, and each covers a genuinely distinct diagnostic area with no filler or redundancy.

Completeness4/5

The surface covers the main operational checks (DNS, mail auth, blocklists, expiry, HTTP, TLS, IP, ports), which is broad for a network diagnostic toolkit. Minor gaps remain — no latency/ping, traceroute, or end-to-end SMTP delivery test — but agents can work around these.

Available Tools

8 tools
check_dnsDNS lookup across resolversA
Read-onlyIdempotent
Inspect

Resolve a name at several public resolvers (Google, Cloudflare, Quad9, …) and compare their answers. Use after changing DNS records to check propagation, or when some users reach a different IP or get NXDOMAIN. Use check_email_domain instead for SPF/DKIM/DMARC analysis. Returns per-resolver answers, inconsistencies and a verdict.

NameRequiredDescriptionDefault
typeNoRecord type to query. ALL queries the common types at once. Default ALL.ALL
domainYesDomain or hostname to resolve, e.g. www.example.com

Output Schema

NameRequiredDescription
okYesfalse when the check could not run (see error / message)
toolNo
errorNoError code when ok is false
factsNo
noticeNoUsage note, e.g. anonymous-tier limits
targetNoWhat was checked
messageNo
verdictNo
findingsNo
headlineNoOne-line summary
reportUrlNoShareable report link

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so safety is covered; the description adds the meaningful behavioral context that queries fan out to multiple third-party resolvers and the result compares them for inconsistencies with a verdict. It stops short of noting rate limits, resolver timeouts, or caching caveats.

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?

Three sentences, zero waste, and the core behavior is front-loaded ahead of the usage triggers and the sibling exclusion. Every sentence earns its place.

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 an output schema present, return values need not be restated, and the description covers purpose, triggers, alternative tool, and comparison behavior for a simple two-parameter read tool. Nothing an agent needs to invoke it 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?

Schema description coverage is 100%, so both parameters (domain and the record-type enum with ALL default) are already fully documented in the schema. The description adds no syntax or format detail beyond that, which is the expected baseline when the schema does the heavy lifting.

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?

States a specific verb (resolve/compare) and resource (a name across several named public resolvers), and explicitly distinguishes itself from the sibling check_email_domain. An agent can tell what this tool does and what it is not 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?

Gives concrete when-to-use triggers (after DNS record changes to check propagation, when users see a different IP or NXDOMAIN) and names the alternative tool with the condition that selects it (SPF/DKIM/DMARC analysis). Nothing is left to inference.

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

check_dnsblDNSBL / blocklist checkA
Read-onlyIdempotent
Inspect

Check whether an IP address or a domain is on email blocklists (DNSBL/RBL): Spamhaus ZEN and DBL, SpamCop, Barracuda, UCEPROTECT, Mailspike, SURBL, URIBL and others. For a domain, its own name is checked on domain lists and its A/AAAA addresses on IP lists. Use when mail bounces with 'listed'/'blocked' errors or lands in spam, or after a server was compromised. Lists that refuse queries from public resolvers are reported as not tested, never as listed. Returns listed lists with the reason and a delisting link. For SPF/DKIM/DMARC use check_email_domain.

NameRequiredDescriptionDefault
inputYesPublic IPv4/IPv6 address of the sending mail server, or a domain, e.g. 203.0.113.10 or example.com

Output Schema

NameRequiredDescription
okYesfalse when the check could not run (see error / message)
toolNo
errorNoError code when ok is false
factsNo
noticeNoUsage note, e.g. anonymous-tier limits
targetNoWhat was checked
messageNo
verdictNo
findingsNo
headlineNoOne-line summary
reportUrlNoShareable report link

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already cover safety (readOnly, idempotent, openWorld, non-destructive), yet the description still adds real behavioral detail: domain names go to domain lists while A/AAAA addresses go to IP lists, and unreachable lists are reported as not tested rather than listed. The return-format sentence is partially redundant with the output schema, keeping this just below a 5.

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?

Front-loaded with the core purpose and list coverage, then usage triggers, then the important caveat and routing to the sibling. Slightly dense but every sentence carries information an agent needs.

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 an output schema present, the description only needs to cover invocation context and edge behavior, and it does: input formatting, domain vs IP handling, false-negative caveat, and tool routing are all present.

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% so the baseline is 3; the description adds that the input must be the public IPv4/IPv6 of the sending mail server or a domain, and explains the divergence in how each input type is evaluated.

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?

States a specific verb (check) and resource (IP/domain against email blocklists), names the concrete lists queried, and explicitly distinguishes itself from the sibling check_email_domain for SPF/DKIM/DMARC needs.

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?

Gives explicit triggers ('when mail bounces with listed/blocked errors or lands in spam, or after a server was compromised') and names the alternative tool for the adjacent-but-different task. Nothing is left to inference.

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

check_domain_expiryDomain registration / expiryA
Read-onlyIdempotent
Inspect

Look up a domain's registration in the registry (RDAP, or WHOIS for .ru/.su/.рф): expiry date and days left, registrar, creation date, EPP status codes (clientHold, redemptionPeriod, transfer locks…) with explanations, nameservers and DNSSEC. Use to check when a domain must be renewed or why it suddenly stopped resolving. Subdomains are reduced to the registered domain. For DNS records use check_dns.

NameRequiredDescriptionDefault
domainYesDomain name, e.g. example.com or пример.рф

Output Schema

NameRequiredDescription
okYesfalse when the check could not run (see error / message)
toolNo
errorNoError code when ok is false
factsNo
noticeNoUsage note, e.g. anonymous-tier limits
targetNoWhat was checked
messageNo
verdictNo
findingsNo
headlineNoOne-line summary
reportUrlNoShareable report link

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare the safe read-only/idempotent profile, so the bar is lower, and the description still adds real behavioral detail: the RDAP-vs-WHOIS backend distinction for .ru/.su/.рф, input normalization (subdomains reduced to the registered domain), and the fact that EPP status codes are returned with explanations. It does not mention rate limits or error behavior, but that is a minor gap against rich annotation coverage and an existing output schema.

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?

Purpose and routing are front-loaded, and every sentence carries information (returned fields, when-to-use, normalization, sibling pointer). The mid-section enumerating EPP status codes and DNSSEC is dense and slightly list-heavy for prose, which keeps it just short of ideal.

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 an output schema present and full annotation coverage, the description only needs to supply scope, routing, and backend quirks — all of which it does. Nothing an agent needs to select or invoke this single-parameter lookup 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% with a single required 'domain' param, so the baseline would be 3. The description goes beyond the schema by explaining that subdomains are accepted and reduced to the registered domain, and it hints at internationalized domains via the registry variants noted.

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?

States a specific verb and resource ('Look up a domain's registration in the registry') and enumerates precisely what it returns (expiry/days left, registrar, creation date, EPP status codes, nameservers, DNSSEC). It also explicitly separates itself from the sibling check_dns ('For DNS records use check_dns'), so an agent can route without opening either 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?

Gives two concrete trigger scenarios ('when a domain must be renewed or why it suddenly stopped resolving') and names the alternative tool for the adjacent use case (check_dns). When-to-use and when-to-use-something-else are both explicit.

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

check_email_domainEmail domain checkA
Read-onlyIdempotent
Inspect

Audit a mail domain as other mail servers see it: MX, SPF (including the 10-DNS-lookup limit), DKIM, DMARC policy, PTR / forward-confirmed reverse DNS, SMTP STARTTLS on the MX hosts, MTA-STS, TLS-RPT, BIMI. Use when mail lands in spam or bounces, after changing mail provider or DNS, or before tightening DMARC. Use this (not check_dns) for any email deliverability or authentication question. Returns a verdict, findings with cause and fix, and a report link.

NameRequiredDescriptionDefault
domainYesMail domain (the part after @), e.g. example.com
dkimSelectorNoDKIM selector to check in addition to common ones, e.g. google, selector1, mail. Optional.

Output Schema

NameRequiredDescription
okYesfalse when the check could not run (see error / message)
toolNo
errorNoError code when ok is false
factsNo
noticeNoUsage note, e.g. anonymous-tier limits
targetNoWhat was checked
messageNo
verdictNo
findingsNo
headlineNoOne-line summary
reportUrlNoShareable report link

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so safety is covered. The description adds real substance beyond that: the breadth of checks performed, the 10-DNS-lookup SPF boundary, and the shape of the result (verdict, findings with cause and fix, report link). It stops short of disclosing rate limits or latency expectations for a live DNS/SMTP probe.

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?

Front-loaded with purpose and the scoping prefix 'as other mail servers see it,' with the record enumeration placed early. The long check list is dense but each item is a distinct capability rather than filler; only slightly heavy for a single audit tool.

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 an output schema present and annotations covering the safety profile, the description's remaining job is routing and scope, both of which are handled. Nothing an agent needs to select or 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?

Schema description coverage is 100%, so both params are already documented with examples (domain, dkimSelector). The description adds no syntax or constraint detail beyond that; the only adjacent hint is the SPF lookup limit, which is not a parameter. Baseline 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?

States a specific verb ('Audit') and resource ('a mail domain') framed by perspective ('as other mail servers see it'), then enumerates the exact record families inspected (MX, SPF, DKIM, DMARC, PTR/FCrDNS, STARTTLS, MTA-STS, TLS-RPT, BIMI). This clearly separates it from the generic sibling check_dns.

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?

Gives concrete triggers (mail lands in spam or bounces, after changing mail provider or DNS, before tightening DMARC) and an explicit routing rule: use this, not check_dns, for any email deliverability or authentication question. Both when-to-use and the alternative are named.

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

check_httpHTTP response inspectionA
Read-onlyIdempotent
Inspect

Request a public URL from outside your network and inspect the HTTP layer: status code, full redirect chain, security headers (HSTS, CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy…), caching and compression headers. Use to debug redirect loops, unexpected status codes or missing headers as real visitors and CDNs see them, or to verify a web server / CDN config change after deploy. Use check_tls instead for certificate or TLS protocol questions. Returns a verdict and findings with fixes.

NameRequiredDescriptionDefault
urlYesFull public http(s) URL, e.g. https://example.com/login
followRedirectsNoFollow redirects and report every hop (default true). Set false to see only the first response.

Output Schema

NameRequiredDescription
okYesfalse when the check could not run (see error / message)
toolNo
errorNoError code when ok is false
factsNo
noticeNoUsage note, e.g. anonymous-tier limits
targetNoWhat was checked
messageNo
verdictNo
findingsNo
headlineNoOne-line summary
reportUrlNoShareable report link

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive, openWorld). The description adds real behavioral context beyond them: the request originates 'from outside your network' so results reflect what 'real visitors and CDNs see', which tells the agent why this vantage point matters. It also notes the return is a verdict plus findings with fixes, though it does not discuss rate limits or failure modes.

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?

Front-loaded with the action and inspection scope, then usage, then the sibling exclusion, then the return shape. Dense but each sentence carries information; the header enumeration is slightly list-heavy but justified by the tool's scope.

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?

Output schema exists and annotations carry the safety profile, so the description need not explain return values; it still summarizes them. With 100% param coverage and clear routing to check_tls, an agent has everything needed 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?

Schema coverage is 100%, so both parameters (url and followRedirects) are already fully documented with defaults and examples. The description adds no additional parameter syntax or format detail beyond what the schema provides, 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?

Specific verb+resource ('Request a public URL ... inspect the HTTP layer') with an explicit enumeration of what is inspected: status code, redirect chain, security headers, caching/compression headers. It also names the sibling it is not (check_tls), so an agent can separate it from the other check_* tools without opening schemas.

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?

Gives concrete trigger scenarios (debug redirect loops, unexpected status codes, missing headers, verify a CDN/server config change after deploy) and an explicit alternative with its selecting condition ('Use check_tls instead for certificate or TLS protocol questions').

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

check_ipIP / ASN lookupA
Read-onlyIdempotent
Inspect

Look up an IP address or ASN: owner organization, announced prefix, PTR (reverse DNS), RPKI validity and geolocation. Use to identify who is behind an address seen in logs or headers, or to check PTR / RPKI for a mail or BGP issue. Does not test reachability (use check_port).

NameRequiredDescriptionDefault
inputYesIPv4 or IPv6 address, or an ASN, e.g. 1.1.1.1, 2606:4700::1111 or AS13335

Output Schema

NameRequiredDescription
okYesfalse when the check could not run (see error / message)
toolNo
errorNoError code when ok is false
factsNo
noticeNoUsage note, e.g. anonymous-tier limits
targetNoWhat was checked
messageNo
verdictNo
findingsNo
headlineNoOne-line summary
reportUrlNoShareable report link

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds real value by enumerating the lookup result facets and clarifying the negative boundary (no reachability testing), which no annotation expresses. It stops short of noting rate limits or lookup latency, keeping it below a 5.

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?

Three short sentences, front-loaded with the verb and resource, then use cases, then the exclusion. Every clause carries information; nothing is padding.

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?

An output schema exists, so return-value documentation is not required, yet the description still sketches the result fields usefully. Combined with the explicit sibling routing and the confirmed read-only profile, an agent has everything needed to select and invoke it 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?

Schema description coverage is 100%, so the format examples for 'input' are already documented in the schema. The description adds only the dual nature (IP or ASN) at a high level, which the schema also conveys. Baseline 3 is appropriate given the schema does the heavy lifting.

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?

Specific verb 'Look up' with dual resource 'IP address or ASN', and it enumerates exactly what comes back (owner org, announced prefix, PTR, RPKI validity, geolocation). The closing clause distinguishes it from check_port, so an agent can separate it from siblings without opening any 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?

Gives concrete triggering situations ('identify who is behind an address seen in logs or headers, or to check PTR / RPKI for a mail or BGP issue') and an explicit exclusion with the alternative named: 'Does not test reachability (use check_port).' When-to-use, when-not, and the sibling to use instead are all present.

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

check_portPort reachability from the internetA
Read-onlyIdempotent
Inspect

Check from the internet whether TCP ports of a public host are open, closed or filtered. Use to verify firewall / security group rules, or to find out why a service works locally but is unreachable from outside. Only public addresses are accepted; this does not test the application behind the port (use check_http or check_tls for that).

NameRequiredDescriptionDefault
hostYesPublic hostname or IP address, e.g. example.com or 203.0.113.10
portsYesComma-separated TCP ports, e.g. 22,80,443

Output Schema

NameRequiredDescription
okYesfalse when the check could not run (see error / message)
toolNo
errorNoError code when ok is false
factsNo
noticeNoUsage note, e.g. anonymous-tier limits
targetNoWhat was checked
messageNo
verdictNo
findingsNo
headlineNoOne-line summary
reportUrlNoShareable report link

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds genuinely new context: the check originates from the internet (external vantage point) and only public addresses are accepted, a real constraint not expressed in the schema. It stops short of noting rate limits or timeout behavior.

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?

Three sentences, each earning its place: capability, use cases, and constraints/alternatives. The core capability is front-loaded with zero filler.

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 an output schema present and annotations covering safety, the description supplies everything else an agent needs — scope, vantage point, address restrictions, and sibling routing. Nothing material 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?

Schema description coverage is 100% and both parameters are documented with examples in the schema itself, so the description adds no syntax or format detail beyond it. Baseline 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?

States a specific verb and resource ('Check from the internet whether TCP ports of a public host are open, closed or filtered') and immediately names the outcome taxonomy. An agent can distinguish this from check_ip or check_dns 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?

Gives explicit use cases (verify firewall/security group rules, diagnose local-vs-external reachability) and explicit exclusions, directing application-layer checks to check_http or check_tls. Both when-to-use and when-not-to-use are covered.

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

check_tlsTLS / certificate checkA
Read-onlyIdempotent
Inspect

Scan a public host's TLS from the internet: certificate validity, chain completeness, expiry date, hostname match, enabled protocols (TLS 1.0–1.3), cipher suites, HSTS. Use when browsers show certificate errors, before/after renewing or rotating a certificate, or to confirm old TLS versions are disabled. Use this (not check_http) for anything about the certificate or TLS configuration itself; works on any TLS port, not only 443. Returns a verdict, findings with cause and fix, and a shareable report link. Takes up to ~60 s.

NameRequiredDescriptionDefault
hostYesPublic hostname to scan, without scheme or path, e.g. example.com
portNoTLS port, e.g. 443 (HTTPS), 465 (SMTPS), 993 (IMAPS). Default 443.

Output Schema

NameRequiredDescription
okYesfalse when the check could not run (see error / message)
toolNo
errorNoError code when ok is false
factsNo
noticeNoUsage note, e.g. anonymous-tier limits
targetNoWhat was checked
messageNo
verdictNo
findingsNo
headlineNoOne-line summary
reportUrlNoShareable report link

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, openWorld, non-destructive), but the description adds genuine operational context: the scan takes up to ~60 s and works on any TLS port, not just 443. The return summary is partially redundant with the output schema, which keeps this from a 5.

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?

Front-loaded with the scan scope, then usage, then routing exclusion, then output and timing. Every sentence carries distinct information with no filler.

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 an output schema and rich annotations present, the description only needs to add scope, routing, timing and port flexibility, all of which it provides. An agent has everything needed to select and call this correctly.

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%, so the schema already documents host and port, giving a baseline of 3. The description adds meaning beyond the schema by noting it works on any TLS port rather than only 443, reinforcing the port parameter's intended flexibility.

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?

States a specific verb (scan) and resource (public host's TLS) and enumerates exactly what is inspected: certificate validity, chain completeness, expiry, hostname match, protocols, cipher suites, HSTS. It explicitly names the sibling it is not (check_http), so an agent can route without opening either 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?

Gives three concrete trigger scenarios (browser certificate errors, before/after renew or rotation, confirming old TLS versions are disabled) and an explicit exclusion routing certificate/TLS-config questions away from check_http. Nothing is left to inference.

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. 2 tool updates
    • Addedcheck_dnsbl
    • Addedcheck_domain_expiry
  2. 6 tool updates
    • Changedcheck_dns1 field changed
      • addedOutput schema / properties / notice
        Added value: +{
        +  "description": "Usage note, e.g. anonymous-tier limits",
        +  "type": "string"
        +}
    • Changedcheck_email_domain1 field changed
      • addedOutput schema / properties / notice
        Added value: +{
        +  "description": "Usage note, e.g. anonymous-tier limits",
        +  "type": "string"
        +}
    • Changedcheck_http1 field changed
      • addedOutput schema / properties / notice
        Added value: +{
        +  "description": "Usage note, e.g. anonymous-tier limits",
        +  "type": "string"
        +}
    • Changedcheck_ip1 field changed
      • addedOutput schema / properties / notice
        Added value: +{
        +  "description": "Usage note, e.g. anonymous-tier limits",
        +  "type": "string"
        +}
    • Changedcheck_port1 field changed
      • addedOutput schema / properties / notice
        Added value: +{
        +  "description": "Usage note, e.g. anonymous-tier limits",
        +  "type": "string"
        +}
    • Changedcheck_tls1 field changed
      • addedOutput schema / properties / notice
        Added value: +{
        +  "description": "Usage note, e.g. anonymous-tier limits",
        +  "type": "string"
        +}
  3. 7 tool updates
    • Changedcheck_dns5 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / domain / description
        Previous value: -"Domain name"New value: +"Domain or hostname to resolve, e.g. www.example.com"
      • addedInput schema / properties / type / default
        Added value: +"ALL"
      • changedInput schema / properties / type / description
        Previous value: -"Record type"New value: +"Record type to query. ALL queries the common types at once. Default ALL."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "error": {
        +      "description": "Error code when ok is false",
        +      "type": "string"
        +    },
        +    "facts": {
        +      "items": {
        +        "properties": {
        +          "label": {
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "findings": {
        +      "items": {
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "detail": {
        +            "description": "Why it matters / cause",
        +            "type": "string"
        +          },
        +          "docs": {
        +            "description": "How-to article URL",
        +            "type": "string"
        +          },
        +          "fix": {
        +            "description": "How to fix",
        +            "type": "string"
        +          },
        +          "severity": {
        +            "enum": [
        +              "error",
        +              "warning",
        +              "info",
        +              "ok"
        +            ],
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "severity",
        +          "title"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "headline": {
        +      "description": "One-line summary",
        +      "type": "string"
        +    },
        +    "message": {
        +      "type": "string"
        +    },
        +    "ok": {
        +      "description": "false when the check could not run (see error / message)",
        +      "type": "boolean"
        +    },
        +    "reportUrl": {
        +      "description": "Shareable report link",
        +      "type": "string"
        +    },
        +    "target": {
        +      "description": "What was checked",
        +      "type": "string"
        +    },
        +    "tool": {
        +      "type": "string"
        +    },
        +    "verdict": {
        +      "enum": [
        +        "ok",
        +        "warn",
        +        "fail"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "ok"
        +  ],
        +  "type": "object"
        +}
    • Changedcheck_email_domain4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / dkimSelector / description
        Previous value: -"DKIM selector to check (optional)"New value: +"DKIM selector to check in addition to common ones, e.g. google, selector1, mail. Optional."
      • changedInput schema / properties / domain / description
        Previous value: -"Mail domain, e.g. example.com"New value: +"Mail domain (the part after @), e.g. example.com"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "error": {
        +      "description": "Error code when ok is false",
        +      "type": "string"
        +    },
        +    "facts": {
        +      "items": {
        +        "properties": {
        +          "label": {
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "findings": {
        +      "items": {
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "detail": {
        +            "description": "Why it matters / cause",
        +            "type": "string"
        +          },
        +          "docs": {
        +            "description": "How-to article URL",
        +            "type": "string"
        +          },
        +          "fix": {
        +            "description": "How to fix",
        +            "type": "string"
        +          },
        +          "severity": {
        +            "enum": [
        +              "error",
        +              "warning",
        +              "info",
        +              "ok"
        +            ],
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "severity",
        +          "title"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "headline": {
        +      "description": "One-line summary",
        +      "type": "string"
        +    },
        +    "message": {
        +      "type": "string"
        +    },
        +    "ok": {
        +      "description": "false when the check could not run (see error / message)",
        +      "type": "boolean"
        +    },
        +    "reportUrl": {
        +      "description": "Shareable report link",
        +      "type": "string"
        +    },
        +    "target": {
        +      "description": "What was checked",
        +      "type": "string"
        +    },
        +    "tool": {
        +      "type": "string"
        +    },
        +    "verdict": {
        +      "enum": [
        +        "ok",
        +        "warn",
        +        "fail"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "ok"
        +  ],
        +  "type": "object"
        +}
    • Changedcheck_http5 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / followRedirects / default
        Added value: +true
      • changedInput schema / properties / followRedirects / description
        Previous value: -"Follow redirects (default true)"New value: +"Follow redirects and report every hop (default true). Set false to see only the first response."
      • changedInput schema / properties / url / description
        Previous value: -"Public http(s) URL"New value: +"Full public http(s) URL, e.g. https://example.com/login"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "error": {
        +      "description": "Error code when ok is false",
        +      "type": "string"
        +    },
        +    "facts": {
        +      "items": {
        +        "properties": {
        +          "label": {
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "findings": {
        +      "items": {
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "detail": {
        +            "description": "Why it matters / cause",
        +            "type": "string"
        +          },
        +          "docs": {
        +            "description": "How-to article URL",
        +            "type": "string"
        +          },
        +          "fix": {
        +            "description": "How to fix",
        +            "type": "string"
        +          },
        +          "severity": {
        +            "enum": [
        +              "error",
        +              "warning",
        +              "info",
        +              "ok"
        +            ],
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "severity",
        +          "title"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "headline": {
        +      "description": "One-line summary",
        +      "type": "string"
        +    },
        +    "message": {
        +      "type": "string"
        +    },
        +    "ok": {
        +      "description": "false when the check could not run (see error / message)",
        +      "type": "boolean"
        +    },
        +    "reportUrl": {
        +      "description": "Shareable report link",
        +      "type": "string"
        +    },
        +    "target": {
        +      "description": "What was checked",
        +      "type": "string"
        +    },
        +    "tool": {
        +      "type": "string"
        +    },
        +    "verdict": {
        +      "enum": [
        +        "ok",
        +        "warn",
        +        "fail"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "ok"
        +  ],
        +  "type": "object"
        +}
    • Addedcheck_ip
    • Changedcheck_port4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / host / description
        Previous value: -"Public hostname or IP"New value: +"Public hostname or IP address, e.g. example.com or 203.0.113.10"
      • changedInput schema / properties / ports / description
        Previous value: -"Comma-separated ports, e.g. 22,443"New value: +"Comma-separated TCP ports, e.g. 22,80,443"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "error": {
        +      "description": "Error code when ok is false",
        +      "type": "string"
        +    },
        +    "facts": {
        +      "items": {
        +        "properties": {
        +          "label": {
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "findings": {
        +      "items": {
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "detail": {
        +            "description": "Why it matters / cause",
        +            "type": "string"
        +          },
        +          "docs": {
        +            "description": "How-to article URL",
        +            "type": "string"
        +          },
        +          "fix": {
        +            "description": "How to fix",
        +            "type": "string"
        +          },
        +          "severity": {
        +            "enum": [
        +              "error",
        +              "warning",
        +              "info",
        +              "ok"
        +            ],
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "severity",
        +          "title"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "headline": {
        +      "description": "One-line summary",
        +      "type": "string"
        +    },
        +    "message": {
        +      "type": "string"
        +    },
        +    "ok": {
        +      "description": "false when the check could not run (see error / message)",
        +      "type": "boolean"
        +    },
        +    "reportUrl": {
        +      "description": "Shareable report link",
        +      "type": "string"
        +    },
        +    "target": {
        +      "description": "What was checked",
        +      "type": "string"
        +    },
        +    "tool": {
        +      "type": "string"
        +    },
        +    "verdict": {
        +      "enum": [
        +        "ok",
        +        "warn",
        +        "fail"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "ok"
        +  ],
        +  "type": "object"
        +}
    • Changedcheck_tls7 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / host / description
        Previous value: -"Public hostname, e.g. example.com"New value: +"Public hostname to scan, without scheme or path, e.g. example.com"
      • addedInput schema / properties / port / default
        Added value: +443
      • changedInput schema / properties / port / description
        Previous value: -"TLS port (default 443)"New value: +"TLS port, e.g. 443 (HTTPS), 465 (SMTPS), 993 (IMAPS). Default 443."
      • addedInput schema / properties / port / maximum
        Added value: +65535
      • addedInput schema / properties / port / minimum
        Added value: +1
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "error": {
        +      "description": "Error code when ok is false",
        +      "type": "string"
        +    },
        +    "facts": {
        +      "items": {
        +        "properties": {
        +          "label": {
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "findings": {
        +      "items": {
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "detail": {
        +            "description": "Why it matters / cause",
        +            "type": "string"
        +          },
        +          "docs": {
        +            "description": "How-to article URL",
        +            "type": "string"
        +          },
        +          "fix": {
        +            "description": "How to fix",
        +            "type": "string"
        +          },
        +          "severity": {
        +            "enum": [
        +              "error",
        +              "warning",
        +              "info",
        +              "ok"
        +            ],
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "severity",
        +          "title"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "headline": {
        +      "description": "One-line summary",
        +      "type": "string"
        +    },
        +    "message": {
        +      "type": "string"
        +    },
        +    "ok": {
        +      "description": "false when the check could not run (see error / message)",
        +      "type": "boolean"
        +    },
        +    "reportUrl": {
        +      "description": "Shareable report link",
        +      "type": "string"
        +    },
        +    "target": {
        +      "description": "What was checked",
        +      "type": "string"
        +    },
        +    "tool": {
        +      "type": "string"
        +    },
        +    "verdict": {
        +      "enum": [
        +        "ok",
        +        "warn",
        +        "fail"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "ok"
        +  ],
        +  "type": "object"
        +}
    • Removedip_lookup
  4. 6 tool updates
    • First observedcheck_dns
    • First observedcheck_email_domain
    • First observedcheck_http
    • First observedcheck_port
    • First observedcheck_tls
    • First observedip_lookup

Publisher details

Operator
RunStack · Publisher source
Operator website
https://runstack.pro
Vendor relationship
Not applicable
Trust center
Not applicable
Restrictions
Not applicable

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Performs domain, email, and web audits in a single tool call, checking DNS, RDAP, TLS, SPF, DMARC, DKIM, MTA-STS, BIMI, security headers, and cookies, and returning reproducible findings with an A–F score. Also captures PNG screenshots of public URLs, working read-only against public records with no caching between calls.
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Passive website security and trust auditor that checks for security, SEO, AI surface, email, and other exposures, producing a score and remediation plan.
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.