TPC Hosting network checks for AI: traceroute, DNS trace, HTTP/3, TTFB, SSL, SMTP, DNS, email. Free.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Looks up an AS number (like AS13335) in Team Cymru and RDAP: the network's name, organisation, country, registry and registration dates. An IP address is mapped to the AS that announces it first.
An AS number such as AS13335 or 13335, or a public IP address.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http free-tools https://mcp-tools.tpc-hosting.com/mcp
Tool list last changed Nov 11, 2026.
Looks up an AS number (like AS13335) in Team Cymru and RDAP: the network's name, organisation, country, registry and registration dates. An IP address is mapped to the AS that announces it first.
| Argument | Type | Description |
|---|---|---|
| query* | string | An AS number such as AS13335 or 13335, or a public IP address. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"maxLength": 64,
"description": "An AS number such as AS13335 or 13335, or a public IP address."
}
}
}Two calculations: monthly data transfer and average speed for a website (visitors, pages per visit, page size), or how long a file takes to move at a given connection speed. Decimal units unless MiB, GiB or TiB are given.
| Argument | Type | Description |
|---|---|---|
| mode* | string | website: monthly bandwidth of a site. transfer: time to download or upload a file. |
| speed | number | transfer: connection speed, in speed_unit. |
| file_size | number | transfer: file size, in file_size_unit. |
| page_size | number | website: average page size, in page_size_unit. |
| redundancy | number | website: safety factor for spikes and bots, 1 or more. Defaults to 1.5. |
| speed_unit | string | transfer: unit of speed. Defaults to Mbps. |
| file_size_unit | string | transfer: unit of file_size. Defaults to GB. |
| page_size_unit | string | website: unit of page_size. Defaults to MB. |
| pages_per_visit | number | website: pages viewed per visit. |
| visitors_per_month | number | website: visitors per month. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"mode"
],
"properties": {
"mode": {
"enum": [
"website",
"transfer"
],
"type": "string",
"description": "website: monthly bandwidth of a site. transfer: time to download or upload a file."
},
"speed": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0,
"description": "transfer: connection speed, in speed_unit."
},
"file_size": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0,
"description": "transfer: file size, in file_size_unit."
},
"page_size": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0,
"description": "website: average page size, in page_size_unit."
},
"redundancy": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0,
"description": "website: safety factor for spikes and bots, 1 or more. Defaults to 1.5."
},
"speed_unit": {
"enum": [
"Kbps",
"Mbps",
"Gbps"
],
"type": "string",
"description": "transfer: unit of speed. Defaults to Mbps."
},
"file_size_unit": {
"enum": [
"MB",
"GB",
"TB",
"MiB",
"GiB",
"TiB"
],
"type": "string",
"description": "transfer: unit of file_size. Defaults to GB."
},
"page_size_unit": {
"enum": [
"KB",
"MB",
"KiB",
"MiB"
],
"type": "string",
"description": "website: unit of page_size. Defaults to MB."
},
"pages_per_visit": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0,
"description": "website: pages viewed per visit."
},
"visitors_per_month": {
"type": "number",
"maximum": 1000000000000000,
"minimum": 0,
"description": "website: visitors per month."
}
}
}Checks a domain's BIMI record and logo (SVG) for brand indicators in email clients.
| Argument | Type | Description |
|---|---|---|
| domain* | string | A domain name such as example.com. A full URL or an email address is reduced to its domain. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"maxLength": 300,
"description": "A domain name such as example.com. A full URL or an email address is reduced to its domain."
}
}
}Converts Unix file permissions between octal (755, 4755) and symbolic (rwxr-xr-x) form, shows the chmod command, explains who can read, write and run, and flags risky modes such as 777.
| Argument | Type | Description |
|---|---|---|
| mode* | string | Octal mode such as 644 or 4755, or symbolic mode such as rwxr-xr-x (a leading file-type character, as in -rwxr-xr-x, is accepted). |
| path | string | A file name to put in the chmod command. Defaults to filename. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"mode"
],
"properties": {
"mode": {
"type": "string",
"maxLength": 12,
"description": "Octal mode such as 644 or 4755, or symbolic mode such as rwxr-xr-x (a leading file-type character, as in -rwxr-xr-x, is accepted)."
},
"path": {
"type": "string",
"pattern": "^[A-Za-z0-9_./@+-]+$",
"maxLength": 200,
"description": "A file name to put in the chmod command. Defaults to filename."
}
}
}Reads a classic 5-field cron expression (or @daily, @hourly, @reboot) and returns a plain-English description, the expanded form and the next run times in UTC.
| Argument | Type | Description |
|---|---|---|
| from | string | ISO 8601 date and time to count from. Defaults to now. |
| count | integer | How many upcoming runs to list. Defaults to 5. |
| expression* | string | Five fields: minute hour day-of-month month day-of-week, such as 15 3 * * 1, or a macro such as @daily. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"expression"
],
"properties": {
"from": {
"type": "string",
"maxLength": 40,
"description": "ISO 8601 date and time to count from. Defaults to now."
},
"count": {
"type": "integer",
"maximum": 10,
"minimum": 1,
"description": "How many upcoming runs to list. Defaults to 5."
},
"expression": {
"type": "string",
"maxLength": 100,
"description": "Five fields: minute hour day-of-month month day-of-week, such as 15 3 * * 1, or a macro such as @daily."
}
}
}Decodes a pasted PEM certificate signing request (CSR): subject, names, key type and size, signature algorithm, whether the signature verifies, and findings. Private keys are refused.
| Argument | Type | Description |
|---|---|---|
| csr* | string | One PEM certificate signing request, from -----BEGIN CERTIFICATE REQUEST----- to -----END CERTIFICATE REQUEST-----. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"csr"
],
"properties": {
"csr": {
"type": "string",
"maxLength": 20000,
"description": "One PEM certificate signing request, from -----BEGIN CERTIFICATE REQUEST----- to -----END CERTIFICATE REQUEST-----."
}
}
}Sends a DNS query like the dig command, to Cloudflare, Google, Quad9 or a nameserver you name, and returns the full answer with flags and sections. Supports many record types, DNSSEC data and TCP.
| Argument | Type | Description |
|---|---|---|
| ns | string | Nameserver name or IP, only with server=custom. |
| tcp | boolean | Use TCP instead of UDP. |
| name* | string | The name to look up, such as example.com, or an IP address for a PTR lookup. |
| type | string | Record type. Defaults to A. |
| norec | boolean | Turn recursion off (the +norec option), to ask an authoritative nameserver directly. |
| dnssec | boolean | Ask for DNSSEC records (the DO flag). |
| family | string | IP family to use. Defaults to auto. |
| server | string | Resolver to ask. Defaults to cloudflare. Use custom with ns for a specific nameserver. |
Looks up and validates a DKIM public key. Give the selector if you know it; otherwise the common selectors are tried.
| Argument | Type | Description |
|---|---|---|
| domain* | string | A domain name such as example.com. A full URL or an email address is reduced to its domain. |
| selector | string | DKIM selector (for example google or selector1). Leave out to try the common ones. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"maxLength": 300,
"description": "A domain name such as example.com. A full URL or an email address is reduced to its domain."
},
"selector": {
"type": "string",
"maxLength": 63,
"description": "DKIM selector (for example google or selector1). Leave out to try the common ones."
}
}
}Reads and validates a domain's DMARC record: policy, reporting addresses, alignment and percentage.
| Argument | Type | Description |
|---|---|---|
| domain* | string | A domain name such as example.com. A full URL or an email address is reduced to its domain. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"maxLength": 300,
"description": "A domain name such as example.com. A full URL or an email address is reduced to its domain."
}
}
}Builds a DMARC TXT record for _dmarc.<domain>: policy, subdomain policy, percentage, report addresses and SPF and DKIM alignment. Returns the record and findings about reporting and policy strength.
| Argument | Type | Description |
|---|---|---|
| domain | string | The domain the record is for, such as example.com. Optional. |
| policy | string | The p tag. Defaults to none. |
| percent | integer | Share of mail the policy applies to. Defaults to 100. |
| spf_alignment | string | r for relaxed (default) or s for strict. |
| dkim_alignment | string | r for relaxed (default) or s for strict. |
| failure_options | array | The fo tag values: 0, 1, d or s. |
| failure_reports | array | Email addresses for failure (ruf) reports. |
| subdomain_policy | string | The sp tag. Defaults to the same as policy. |
| aggregate_reports |
Looks up DNS records (A, AAAA, CNAME, MX, NS, TXT, SOA or CAA) for a domain through a public resolver. Other record types and specific nameservers are handled by the dig tool.
| Argument | Type | Description |
|---|---|---|
| type | string | DNS record type. Defaults to A. |
| domain* | string | A domain name such as example.com. A full URL or an email address is reduced to its domain. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"domain"
],
"properties": {
"type": {
"enum": [
"A",
"AAAA",
"CNAME",
"MX",
"NS",
"TXT",
"SOA",
"CAA"
],
"type": "string",
"description": "DNS record type. Defaults to A."
},
"domain": {
"type": "string",
"maxLength": 300,
"description": "A domain name such as example.com. A full URL or an email address is reduced to its domain."
}
}
}Asks several public resolvers around the world for the same record and reports whether they agree, which shows whether a DNS change has propagated.
| Argument | Type | Description |
|---|---|---|
| type | string | DNS record type. Defaults to A. |
| domain* | string | A domain name such as example.com. A full URL or an email address is reduced to its domain. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"domain"
],
"properties": {
"type": {
"enum": [
"A",
"AAAA",
"CNAME",
"MX",
"NS",
"TXT",
"SOA",
"CAA"
],
"type": "string",
"description": "DNS record type. Defaults to A."
},
"domain": {
"type": "string",
"maxLength": 300,
"description": "A domain name such as example.com. A full URL or an email address is reduced to its domain."
}
}
}Follows a name from the root servers down through the TLD to its authoritative nameservers, like dig +trace, and shows each delegation step.
| Argument | Type | Description |
|---|---|---|
| name* | string | The name to trace, such as www.example.com. |
| type | string | Record type. Defaults to A. |
| family | string | IP family to use. Defaults to auto. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 253,
"description": "The name to trace, such as www.example.com."
},
"type": {
"enum": [
"A",
"AAAA",
"CNAME",
"MX",
"NS",
"TXT",
"SOA",
"CAA",
"SRV",
"PTR",
"DS",
"DNSKEY",
"HTTPS",
"TLSA"
],
"type": "string",
"description": "Record type. Defaults to A."
},
"family": {
"enum": [
"4",
"6",
"auto"
],
"type": "string",
"description": "IP family to use. Defaults to auto."
}
}
}Checks whether a domain is signed with DNSSEC and whether its chain of trust (DS and DNSKEY records) is consistent.
| Argument | Type | Description |
|---|---|---|
| domain* | string | A domain name such as example.com. A full URL or an email address is reduced to its domain. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"maxLength": 300,
"description": "A domain name such as example.com. A full URL or an email address is reduced to its domain."
}
}
}Turns one to three keywords into about 60 domain name ideas (prefixes, suffixes, blends) plus common endings. Ideas only: availability is not checked.
| Argument | Type | Description |
|---|---|---|
| keywords* | string | One to three words describing the idea, such as coffee shop berlin. Only the first three distinct words are used. |
| include_hyphenated | boolean | Also list hyphenated names (listed last, flagged). Defaults to false. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"keywords"
],
"properties": {
"keywords": {
"type": "string",
"maxLength": 80,
"description": "One to three words describing the idea, such as coffee shop berlin. Only the first three distinct words are used."
},
"include_hyphenated": {
"type": "boolean",
"description": "Also list hyphenated names (listed last, flagged). Defaults to false."
}
}
}Checks whether a mail server IP address or a domain is listed on public DNS blocklists. Give exactly one of ip or domain.
| Argument | Type | Description |
|---|---|---|
| ip | string | An IPv4 address of a mail server. |
| domain | string | A domain name to check on domain blocklists. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"ip": {
"type": "string",
"maxLength": 64,
"description": "An IPv4 address of a mail server."
},
"domain": {
"type": "string",
"maxLength": 300,
"description": "A domain name to check on domain blocklists."
}
}
}Scores a domain's email setup (MX, SPF, DKIM, DMARC, MTA-STS, TLS-RPT, BIMI, blocklists) and lists what to fix. Covers the whole email setup in one call, for a general email health question.
| Argument | Type | Description |
|---|---|---|
| domain* | string | A domain name such as example.com. A full URL or an email address is reduced to its domain. |
| selector | string | DKIM selector (for example google or selector1). Leave out to try the common ones. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"maxLength": 300,
"description": "A domain name such as example.com. A full URL or an email address is reduced to its domain."
},
"selector": {
"type": "string",
"maxLength": 63,
"description": "DKIM selector (for example google or selector1). Leave out to try the common ones."
}
}
}Reads the raw headers of an email: the delivery path hop by hop with delays, SPF, DKIM and DMARC results, spam headers and findings. The headers are analysed in memory and are not stored.
| Argument | Type | Description |
|---|---|---|
| headers* | string | The raw message headers, as shown by Show original or View message source in a mail app. The message body is ignored. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"headers"
],
"properties": {
"headers": {
"type": "string",
"maxLength": 100000,
"description": "The raw message headers, as shown by Show original or View message source in a mail app. The message body is ignored."
}
}
}Finds out who hosts a website: the IP addresses, the network and organisation behind them, the nameservers and any CDN in front.
| Argument | Type | Description |
|---|---|---|
| domain* | string | A domain name such as example.com. A full URL or an email address is reduced to its domain. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"maxLength": 300,
"description": "A domain name such as example.com. A full URL or an email address is reduced to its domain."
}
}
}Builds a commented .htaccess file for Apache and LiteSpeed: force HTTPS, www or non-www, 301 redirects, error pages, security headers, caching, compression and IP blocks. Returns the file text and findings.
| Argument | Type | Description |
|---|---|---|
| www | string | Redirect to the www or the non-www host. Defaults to none. |
| hsts | boolean | Send the Strict-Transport-Security header. |
| https | boolean | Redirect HTTP to HTTPS. |
| domain | string | The domain the record is for, such as example.com. Optional. |
| caching | boolean | Add browser caching rules. |
| nosniff | boolean | Send X-Content-Type-Options: nosniff. |
| block_ips | array | IPv4 or IPv6 addresses or CIDR ranges to block. |
| error_403 | string | Path of the 403 page, such as /403.html. |
| error_404 | string | Path of the 404 page, such as /404.html. |
Checks whether a site supports HTTP/2 and HTTP/3 (QUIC): ALPN negotiation, the Alt-Svc header and a live QUIC handshake probe.
| Argument | Type | Description |
|---|---|---|
| host* | string | A public host name such as example.com. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"host"
],
"properties": {
"host": {
"type": "string",
"maxLength": 253,
"description": "A public host name such as example.com."
}
}
}Fetches a page and reports its response headers, with a review of the security headers (HSTS, CSP, X-Frame-Options and others) and cookie flags.
| Argument | Type | Description |
|---|---|---|
| url* | string | A website address such as https://example.com or just example.com. Only public sites on the standard ports can be checked. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"maxLength": 2048,
"description": "A website address such as https://example.com or just example.com. Only public sites on the standard ports can be checked."
}
}
}Describes a public IP address: the announced prefix and AS number, the network's name, country, registry and the reverse DNS name.
| Argument | Type | Description |
|---|---|---|
| ip* | string | A public IPv4 or IPv6 address. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"ip"
],
"properties": {
"ip": {
"type": "string",
"maxLength": 64,
"description": "A public IPv4 or IPv6 address."
}
}
}Builds an llms.txt file in the llmstxt.org format from a site name, a summary, details and sections of links. Returns the file text and findings such as duplicate URLs or invalid links.
| Argument | Type | Description |
|---|---|---|
| name* | string | Site or project name, used as the file's title. |
| details | string | Optional extra text under the summary. |
| summary | string | One or two sentences about the site. |
| sections | array | Sections of links. Each link needs an absolute http or https URL. |
| optional_links | array | Links for the Optional section. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Site or project name, used as the file's title."
},
"details": {
"type": "string",
"maxLength": 5000,
"description": "Optional extra text under the summary."
},
"summary": {
"type": "string",
"maxLength": 2000,
"description": "One or two sentences about the site."
},
"sections": {
"type": "array",
"items": {
"type": "object",
"required": [
"title",
"links"
],
"properties": {
"links": {
"type": "array",
"items": {
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"maxLength": 2000
},
"note": {
"type": "string",
"maxLength": 500
},
"title": {
"type": "string",
"maxLength": 300
}
}
},
"maxItems": 200
},
"title": {
"type": "string",
"maxLength": 200
}
}
},
"maxItems": 20,
"description": "Sections of links. Each link needs an absolute http or https URL."
},
"optional_links": {
"type": "array",
"items": {
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"maxLength": 2000
},
"note": {
"type": "string",
"maxLength": 500
},
"title": {
"type": "string",
"maxLength": 300
}
}
},
"maxItems": 200,
"description": "Links for the Optional section."
}
}
}Lists the mail servers (MX records) of a domain with their priorities and checks that they resolve.
| Argument | Type | Description |
|---|---|---|
| domain* | string | A domain name such as example.com. A full URL or an email address is reduced to its domain. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"maxLength": 300,
"description": "A domain name such as example.com. A full URL or an email address is reduced to its domain."
}
}
}Converts international domain names between Unicode and Punycode (xn--) one name at a time, up to 20 names, and warns about mixed-script look-alike names.
| Argument | Type | Description |
|---|---|---|
| domains* | array | Domain names to convert, such as münchen.de or xn--mnchen-3ya.de. |
| direction | string | auto picks the direction from the input. ascii encodes to Punycode, unicode decodes. Defaults to auto. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"domains"
],
"properties": {
"domains": {
"type": "array",
"items": {
"type": "string",
"maxLength": 300
},
"maxItems": 20,
"minItems": 1,
"description": "Domain names to convert, such as münchen.de or xn--mnchen-3ya.de."
},
"direction": {
"enum": [
"auto",
"ascii",
"unicode"
],
"type": "string",
"description": "auto picks the direction from the input. ascii encodes to Punycode, unicode decodes. Defaults to auto."
}
}
}Follows a URL's redirects hop by hop and reports each status code, the final address and problems such as loops, long chains or http-to-https gaps.
| Argument | Type | Description |
|---|---|---|
| url* | string | A website address such as https://example.com or just example.com. Only public sites on the standard ports can be checked. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"maxLength": 2048,
"description": "A website address such as https://example.com or just example.com. Only public sites on the standard ports can be checked."
}
}
}Finds the PTR (reverse DNS) name of an IP address and checks that the name resolves back to the same address (forward-confirmed reverse DNS), which mail servers look for.
| Argument | Type | Description |
|---|---|---|
| ip* | string | A public IPv4 or IPv6 address. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"ip"
],
"properties": {
"ip": {
"type": "string",
"maxLength": 64,
"description": "A public IPv4 or IPv6 address."
}
}
}Builds a robots.txt file: allow everything, block everything or custom Allow and Disallow paths, with sitemap URLs, a crawl delay and switches that block AI crawlers such as GPTBot and ClaudeBot. Returns the file and findings.
| Argument | Type | Description |
|---|---|---|
| mode | string | allow lets every crawler in (default), block shuts them all out, custom uses disallow and allow paths. |
| allow | array | Paths to allow in custom mode, each starting with /. |
| disallow | array | Paths to block in custom mode, each starting with /. |
| sitemaps | array | Full sitemap URLs. |
| crawl_delay | number | Crawl-delay in seconds. |
| block_ai_bots | array | AI crawlers to block completely. One of: GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-User, PerplexityBot, Google-Extended, CCBot, Applebot-Extended, Bytespider. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"mode": {
"enum": [
"allow",
"block",
"custom"
],
"type": "string",
"description": "allow lets every crawler in (default), block shuts them all out, custom uses disallow and allow paths."
},
"allow": {
"type": "array",
"items": {
"type": "string",
"maxLength": 300
},
"maxItems": 100,
"description": "Paths to allow in custom mode, each starting with /."
},
"disallow": {
"type": "array",
"items": {
"type": "string",
"maxLength": 300
},
"maxItems": 100,
"description": "Paths to block in custom mode, each starting with /."
},
"sitemaps": {
"type": "array",
"items": {
"type": "string",
"maxLength": 500
},
"maxItems": 20,
"description": "Full sitemap URLs."
},
"crawl_delay": {
"type": "number",
"maximum": 9999,
"description": "Crawl-delay in seconds.",
"exclusiveMinimum": 0
},
"block_ai_bots": {
"type": "array",
"items": {
"enum": [
"GPTBot",
"OAI-SearchBot",
"ChatGPT-User",
"ClaudeBot",
"Claude-User",
"PerplexityBot",
"Google-Extended",
"CCBot",
"Applebot-Extended",
"Bytespider"
],
"type": "string"
},
"maxItems": 10,
"description": "AI crawlers to block completely. One of: GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-User, PerplexityBot, Google-Extended, CCBot, Applebot-Extended, Bytespider."
}
}
}Fetches a site's robots.txt and tests whether a given crawler may fetch a given path, following RFC 9309. Also lists the Sitemap lines and parser warnings.
| Argument | Type | Description |
|---|---|---|
| url* | string | A website address such as https://example.com or just example.com. Only public sites on the standard ports can be checked. |
| path | string | Path (and query) to test, starting with /. Defaults to /. |
| user_agent | string | Crawler token such as Googlebot, Bingbot, GPTBot or ClaudeBot. Defaults to Googlebot. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"maxLength": 2048,
"description": "A website address such as https://example.com or just example.com. Only public sites on the standard ports can be checked."
},
"path": {
"type": "string",
"maxLength": 2000,
"description": "Path (and query) to test, starting with /. Defaults to /."
},
"user_agent": {
"type": "string",
"maxLength": 100,
"description": "Crawler token such as Googlebot, Bingbot, GPTBot or ClaudeBot. Defaults to Googlebot."
}
}
}Finds a site's XML sitemap (from robots.txt or the usual addresses), then validates it against the sitemaps.org protocol and Google's rules. Reads at most 5 MB; a sitemap index is validated as an index, its child sitemaps are listed but not fetched.
| Argument | Type | Description |
|---|---|---|
| url* | string | A website address such as https://example.com or just example.com. Only public sites on the standard ports can be checked. |
| sitemap_url | string | A specific sitemap address to validate. Leave out to find it automatically. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"maxLength": 2048,
"description": "A website address such as https://example.com or just example.com. Only public sites on the standard ports can be checked."
},
"sitemap_url": {
"type": "string",
"maxLength": 2048,
"description": "A specific sitemap address to validate. Leave out to find it automatically."
}
}
}Connects to a domain's mail servers (MX) on port 25, says EHLO, tries STARTTLS and reports banners, TLS and reverse DNS. It never sends mail.
| Argument | Type | Description |
|---|---|---|
| domain* | string | The mail domain, such as example.com (not a mail server name). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"maxLength": 253,
"description": "The mail domain, such as example.com (not a mail server name)."
}
}
}Reads and validates a domain's SPF record: syntax, the 10-lookup limit, includes and the final policy.
| Argument | Type | Description |
|---|---|---|
| domain* | string | A domain name such as example.com. A full URL or an email address is reduced to its domain. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"maxLength": 300,
"description": "A domain name such as example.com. A full URL or an email address is reduced to its domain."
}
}
}Builds an SPF TXT record from a mail setup: sending IPs, mail providers such as Google or Microsoft, the a and mx mechanisms and soft or hard fail. Returns the record, a DNS lookup estimate and findings.
| Argument | Type | Description |
|---|---|---|
| a | boolean | Allow the domain's own A record to send mail. |
| mx | boolean | Allow the domain's MX hosts to send mail. |
| all | string | ~ for soft fail (default) or - for hard fail. |
| ip4 | array | IPv4 addresses or CIDR ranges that send mail, such as 203.0.113.5 or 198.51.100.0/24. |
| ip6 | array | IPv6 addresses or CIDR ranges that send mail. |
| domain | string | The domain the record is for, such as example.com. Optional. |
| includes | array | Other domains to include, such as spf.mailjet.com. |
| providers | array | Mail providers to include. One of: google, microsoft, mailjet, sendgrid, mailgun, ses, zoho, brevo, mailchimp. |
Decodes a pasted PEM certificate or chain: subject, issuer, validity dates, names, key, signature algorithm, fingerprints, extensions and findings, plus a chain order check. Private keys are refused.
| Argument | Type | Description |
|---|---|---|
| certificate* | string | One PEM certificate or a whole chain, from -----BEGIN CERTIFICATE----- to -----END CERTIFICATE-----. At most 10 certificates are read. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"certificate"
],
"properties": {
"certificate": {
"type": "string",
"maxLength": 50000,
"description": "One PEM certificate or a whole chain, from -----BEGIN CERTIFICATE----- to -----END CERTIFICATE-----. At most 10 certificates are read."
}
}
}Makes live TLS connections to a host and reports the certificate chain, expiry, protocol versions, cipher strength and common misconfigurations. Ports 443, 8443, 465, 993 and 995.
| Argument | Type | Description |
|---|---|---|
| host* | string | A public host name such as example.com. |
| port | any | Port to check, one of 443, 8443, 465, 993, 995. Defaults to 443. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"host"
],
"properties": {
"host": {
"type": "string",
"maxLength": 253,
"description": "A public host name such as example.com."
},
"port": {
"anyOf": [
{
"type": "number",
"const": 443
},
{
"type": "number",
"const": 8443
},
{
"type": "number",
"const": 465
},
{
"type": "number",
"const": 993
},
{
"type": "number",
"const": 995
}
],
"description": "Port to check, one of 443, 8443, 465, 993, 995. Defaults to 443."
}
}
}Works out the network, broadcast, host range, netmask and wildcard for an IPv4 or IPv6 address with a prefix, and can split an IPv4 network into equal smaller subnets.
| Argument | Type | Description |
|---|---|---|
| mask | string | IPv4 only: prefix length (24 or /24) or dotted mask, when the address has none. |
| split | integer | IPv4 only: split the network into at least this many equal subnets (rounded up to a power of two; the first 256 are listed). |
| address* | string | IPv4 or IPv6 address with a prefix or mask, such as 192.168.1.10/24, 192.168.1.10 255.255.255.0 or 2001:db8::/48. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"address"
],
"properties": {
"mask": {
"type": "string",
"maxLength": 20,
"description": "IPv4 only: prefix length (24 or /24) or dotted mask, when the address has none."
},
"split": {
"type": "integer",
"maximum": 4096,
"minimum": 2,
"description": "IPv4 only: split the network into at least this many equal subnets (rounded up to a power of two; the first 256 are listed)."
},
"address": {
"type": "string",
"maxLength": 100,
"description": "IPv4 or IPv6 address with a prefix or mask, such as 192.168.1.10/24, 192.168.1.10 255.255.255.0 or 2001:db8::/48."
}
}
}Traces the network path from the probe server in Germany to a host, showing each hop's address and round-trip times.
| Argument | Type | Description |
|---|---|---|
| host* | string | A public host name or IP address. |
| family | string | IP family to use. Defaults to auto. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"host"
],
"properties": {
"host": {
"type": "string",
"maxLength": 253,
"description": "A public host name or IP address."
},
"family": {
"enum": [
"4",
"6",
"auto"
],
"type": "string",
"description": "IP family to use. Defaults to auto."
}
}
}Times three requests to a web address from the probe server in Germany: DNS, connect, TLS, time to first byte and download. Results are never cached.
| Argument | Type | Description |
|---|---|---|
| url* | string | A web address such as https://example.com/. Public sites on standard ports only. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"maxLength": 2048,
"description": "A web address such as https://example.com/. Public sites on standard ports only."
}
}
}Turns an uptime percentage such as 99.9 into the downtime it allows per day, week, month, quarter and year, or turns a length of downtime in a period into the uptime percentage.
| Argument | Type | Description |
|---|---|---|
| period | string | Period the downtime falls in. Defaults to month. |
| sla_percent | string | Uptime percentage above 0 and up to 100, at most 5 decimals, such as 99.9 or 99.95%. |
| downtime_hours | number | Hours of downtime, to get the uptime percentage. |
| downtime_minutes | number | Minutes of downtime, added to downtime_hours. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"period": {
"enum": [
"day",
"week",
"month",
"quarter",
"year"
],
"type": "string",
"description": "Period the downtime falls in. Defaults to month."
},
"sla_percent": {
"type": "string",
"maxLength": 12,
"description": "Uptime percentage above 0 and up to 100, at most 5 decimals, such as 99.9 or 99.95%."
},
"downtime_hours": {
"type": "number",
"maximum": 100000,
"minimum": 0,
"description": "Hours of downtime, to get the uptime percentage."
},
"downtime_minutes": {
"type": "number",
"maximum": 6000000,
"minimum": 0,
"description": "Minutes of downtime, added to downtime_hours."
}
}
}Fetches up to 10 URLs from one site and reports each one's final status code, redirects, content type and X-Robots-Tag. Useful for spot-checking pages listed in a sitemap.
| Argument | Type | Description |
|---|---|---|
| urls* | array | 1 to 10 addresses, all on the same site. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"urls"
],
"properties": {
"urls": {
"type": "array",
"items": {
"type": "string",
"maxLength": 2048
},
"maxItems": 10,
"minItems": 1,
"description": "1 to 10 addresses, all on the same site."
}
}
}Checks whether a website is reachable from Cloudflare's network: DNS first, then one request. Separates 'does not resolve' from 'will not connect' and 'answers with an error'.
| Argument | Type | Description |
|---|---|---|
| url* | string | A website address such as https://example.com or just example.com. Only public sites on the standard ports can be checked. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"maxLength": 2048,
"description": "A website address such as https://example.com or just example.com. Only public sites on the standard ports can be checked."
}
}
}Returns the IP address this request reached the server from, and whether it is IPv4 or IPv6. For desktop clients such as Claude Code or Cursor that is the user's own address; hosted chat apps connect from the provider's servers.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Looks up a domain's registration data over RDAP: registrar, creation, expiry and update dates, status and nameservers. Not every country code TLD publishes RDAP.
| Argument | Type | Description |
|---|---|---|
| domain* | string | A domain name such as example.com. A full URL or an email address is reduced to its domain. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"maxLength": 300,
"description": "A domain name such as example.com. A full URL or an email address is reduced to its domain."
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 11, 2026.
What changed in this server's tools since we started watching, newest first. Each change is scanned again.
Decodes a pasted PEM certificate signing request (CSR): subject, names, key type and size, signature algorithm, whether the signature verifies, and findings. Private keys are refused.
Decodes a pasted PEM certificate or chain: subject, issuer, validity dates, names, key, signature algorithm, fingerprints, extensions and findings, plus a chain order check. Private keys are refused.
Reads the raw headers of an email: the delivery path hop by hop with delays, SPF, DKIM and DMARC results, spam headers and findings. The headers are analysed in memory and are not stored.
Builds an llms.txt file in the llmstxt.org format from a site name, a summary, details and sections of links. Returns the file text and findings such as duplicate URLs or invalid links.
Builds a commented .htaccess file for Apache and LiteSpeed: force HTTPS, www or non-www, 301 redirects, error pages, security headers, caching, compression and IP blocks. Returns the file text and findings.
Builds a robots.txt file: allow everything, block everything or custom Allow and Disallow paths, with sitemap URLs, a crawl delay and switches that block AI crawlers such as GPTBot and ClaudeBot. Returns the file and findings.
Builds a DMARC TXT record for _dmarc.<domain>: policy, subdomain policy, percentage, report addresses and SPF and DKIM alignment. Returns the record and findings about reporting and policy strength.
Builds an SPF TXT record from a mail setup: sending IPs, mail providers such as Google or Microsoft, the a and mx mechanisms and soft or hard fail. Returns the record, a DNS lookup estimate and findings.
Turns one to three keywords into about 60 domain name ideas (prefixes, suffixes, blends) plus common endings. Ideas only: availability is not checked.
Converts international domain names between Unicode and Punycode (xn--) one name at a time, up to 20 names, and warns about mixed-script look-alike names.
Reads a classic 5-field cron expression (or @daily, @hourly, @reboot) and returns a plain-English description, the expanded form and the next run times in UTC.
Turns an uptime percentage such as 99.9 into the downtime it allows per day, week, month, quarter and year, or turns a length of downtime in a period into the uptime percentage.
Converts Unix file permissions between octal (755, 4755) and symbolic (rwxr-xr-x) form, shows the chmod command, explains who can read, write and run, and flags risky modes such as 777.
Two calculations: monthly data transfer and average speed for a website (visitors, pages per visit, page size), or how long a file takes to move at a given connection speed. Decimal units unless MiB, GiB or TiB are given.
Works out the network, broadcast, host range, netmask and wildcard for an IPv4 or IPv6 address with a prefix, and can split an IPv4 network into equal smaller subnets.
Returns the IP address this request reached the server from, and whether it is IPv4 or IPv6. For desktop clients such as Claude Code or Cursor that is the user's own address; hosted chat apps connect from the provider's servers.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"name"
],
"properties": {
"ns": {
"type": "string",
"maxLength": 253,
"description": "Nameserver name or IP, only with server=custom."
},
"tcp": {
"type": "boolean",
"description": "Use TCP instead of UDP."
},
"name": {
"type": "string",
"maxLength": 253,
"description": "The name to look up, such as example.com, or an IP address for a PTR lookup."
},
"type": {
"enum": [
"A",
"AAAA",
"CNAME",
"MX",
"NS",
"TXT",
"SOA",
"CAA",
"SRV",
"PTR",
"DS",
"DNSKEY",
"HTTPS",
"TLSA"
],
"type": "string",
"description": "Record type. Defaults to A."
},
"norec": {
"type": "boolean",
"description": "Turn recursion off (the +norec option), to ask an authoritative nameserver directly."
},
"dnssec": {
"type": "boolean",
"description": "Ask for DNSSEC records (the DO flag)."
},
"family": {
"enum": [
"4",
"6",
"auto"
],
"type": "string",
"description": "IP family to use. Defaults to auto."
},
"server": {
"enum": [
"cloudflare",
"google",
"quad9",
"custom"
],
"type": "string",
"description": "Resolver to ask. Defaults to cloudflare. Use custom with ns for a specific nameserver."
}
}
}| array |
| Email addresses for aggregate (rua) reports. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"domain": {
"type": "string",
"maxLength": 253,
"description": "The domain the record is for, such as example.com. Optional."
},
"policy": {
"enum": [
"none",
"quarantine",
"reject"
],
"type": "string",
"description": "The p tag. Defaults to none."
},
"percent": {
"type": "integer",
"maximum": 100,
"minimum": 0,
"description": "Share of mail the policy applies to. Defaults to 100."
},
"spf_alignment": {
"enum": [
"r",
"s"
],
"type": "string",
"description": "r for relaxed (default) or s for strict."
},
"dkim_alignment": {
"enum": [
"r",
"s"
],
"type": "string",
"description": "r for relaxed (default) or s for strict."
},
"failure_options": {
"type": "array",
"items": {
"enum": [
"0",
"1",
"d",
"s"
],
"type": "string"
},
"maxItems": 4,
"description": "The fo tag values: 0, 1, d or s."
},
"failure_reports": {
"type": "array",
"items": {
"type": "string",
"maxLength": 254
},
"maxItems": 10,
"description": "Email addresses for failure (ruf) reports."
},
"subdomain_policy": {
"enum": [
"none",
"quarantine",
"reject"
],
"type": "string",
"description": "The sp tag. Defaults to the same as policy."
},
"aggregate_reports": {
"type": "array",
"items": {
"type": "string",
"maxLength": 254
},
"maxItems": 10,
"description": "Email addresses for aggregate (rua) reports."
}
}
}| error_500 | string | Path of the 500 page, such as /500.html. |
| redirects | array | 301 redirects from an old path to a new path or URL. |
| no_indexes | boolean | Turn off directory listings. |
| compression | boolean | Compress text responses. |
| protect_files | boolean | Block access to sensitive files such as .env and .git. |
| hsts_subdomains | boolean | Add includeSubDomains to HSTS. |
| referrer_policy | boolean | Send a Referrer-Policy header. |
| frame_protection | boolean | Send X-Frame-Options. |
| hotlink_protection | boolean | Block other sites from embedding images. Needs domain. |
| permissions_policy | boolean | Send a Permissions-Policy header. |
| redirects_are_regex | boolean | Treat the from values as regular expressions. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"www": {
"enum": [
"none",
"www",
"non-www"
],
"type": "string",
"description": "Redirect to the www or the non-www host. Defaults to none."
},
"hsts": {
"type": "boolean",
"description": "Send the Strict-Transport-Security header."
},
"https": {
"type": "boolean",
"description": "Redirect HTTP to HTTPS."
},
"domain": {
"type": "string",
"maxLength": 253,
"description": "The domain the record is for, such as example.com. Optional."
},
"caching": {
"type": "boolean",
"description": "Add browser caching rules."
},
"nosniff": {
"type": "boolean",
"description": "Send X-Content-Type-Options: nosniff."
},
"block_ips": {
"type": "array",
"items": {
"type": "string",
"maxLength": 60
},
"maxItems": 200,
"description": "IPv4 or IPv6 addresses or CIDR ranges to block."
},
"error_403": {
"type": "string",
"maxLength": 500,
"description": "Path of the 403 page, such as /403.html."
},
"error_404": {
"type": "string",
"maxLength": 500,
"description": "Path of the 404 page, such as /404.html."
},
"error_500": {
"type": "string",
"maxLength": 500,
"description": "Path of the 500 page, such as /500.html."
},
"redirects": {
"type": "array",
"items": {
"type": "object",
"required": [
"from",
"to"
],
"properties": {
"to": {
"type": "string",
"maxLength": 1000
},
"from": {
"type": "string",
"maxLength": 500
}
}
},
"maxItems": 200,
"description": "301 redirects from an old path to a new path or URL."
},
"no_indexes": {
"type": "boolean",
"description": "Turn off directory listings."
},
"compression": {
"type": "boolean",
"description": "Compress text responses."
},
"protect_files": {
"type": "boolean",
"description": "Block access to sensitive files such as .env and .git."
},
"hsts_subdomains": {
"type": "boolean",
"description": "Add includeSubDomains to HSTS."
},
"referrer_policy": {
"type": "boolean",
"description": "Send a Referrer-Policy header."
},
"frame_protection": {
"type": "boolean",
"description": "Send X-Frame-Options."
},
"hotlink_protection": {
"type": "boolean",
"description": "Block other sites from embedding images. Needs domain."
},
"permissions_policy": {
"type": "boolean",
"description": "Send a Permissions-Policy header."
},
"redirects_are_regex": {
"type": "boolean",
"description": "Treat the from values as regular expressions."
}
}
}{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"a": {
"type": "boolean",
"description": "Allow the domain's own A record to send mail."
},
"mx": {
"type": "boolean",
"description": "Allow the domain's MX hosts to send mail."
},
"all": {
"enum": [
"~",
"-"
],
"type": "string",
"description": "~ for soft fail (default) or - for hard fail."
},
"ip4": {
"type": "array",
"items": {
"type": "string",
"maxLength": 50
},
"maxItems": 50,
"description": "IPv4 addresses or CIDR ranges that send mail, such as 203.0.113.5 or 198.51.100.0/24."
},
"ip6": {
"type": "array",
"items": {
"type": "string",
"maxLength": 60
},
"maxItems": 50,
"description": "IPv6 addresses or CIDR ranges that send mail."
},
"domain": {
"type": "string",
"maxLength": 253,
"description": "The domain the record is for, such as example.com. Optional."
},
"includes": {
"type": "array",
"items": {
"type": "string",
"maxLength": 253
},
"maxItems": 20,
"description": "Other domains to include, such as spf.mailjet.com."
},
"providers": {
"type": "array",
"items": {
"enum": [
"google",
"microsoft",
"mailjet",
"sendgrid",
"mailgun",
"ses",
"zoho",
"brevo",
"mailchimp"
],
"type": "string"
},
"maxItems": 20,
"description": "Mail providers to include. One of: google, microsoft, mailjet, sendgrid, mailgun, ses, zoho, brevo, mailchimp."
}
}
}