dotmoose-tools

Public DNS, mail, TLS, and web diagnostics plus Looking Glass probes via remote MCP.

Should I use this

Quality & Safety

A
Description quality
92%
Schema completeness
79%
Naming quality
96%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (6)

  • LOWTool 'trace_cname_chain' description lacks action verbin trace_cname_chain
  • LOWTool 'check_tls_certificate' description lacks action verbin check_tls_certificate
  • LOWTool 'check_favicon' description lacks action verbin check_favicon
  • LOWTool 'check_page_metadata' description lacks action verbin check_page_metadata
  • LOWTool 'estimate_storage_growth' description lacks action verbin estimate_storage_growth
  • LOWTool 'estimate_backup_retention' description lacks action verbin estimate_backup_retention

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~4,880Tokens (tool definitions)
~750 BTypical response size
Significant attention impact (3.81% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "dotmoose-tools": {
      "url": "https://mcp.dotmoose.com/tools/mcp"
    }
  }
}

Remote endpoints

https://mcp.dotmoose.com/tools/mcpstreamable-http

What it can do

Tool inventory

Tools (40)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢check_dns_propagation(domain)

Check A, AAAA, MX, NS, and TXT answers for a hostname at the Cloudflare, Google, and Quad9 resolvers.

Input Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "minLength": 1,
      "maxLength": 253
    }
  },
  "required": [
    "domain"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢check_domain_delegation(domain)

List the delegation nameservers for a domain and the A and AAAA glue addresses for each one.

Input Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "minLength": 1,
      "maxLength": 253
    }
  },
  "required": [
    "domain"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢check_dnssec(domain)

Check the DS and DNSKEY records for a domain and whether a validating resolver sets the AD flag on its answers.

Input Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "minLength": 1,
      "maxLength": 253
    }
  },
  "required": [
    "domain"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢trace_cname_chain(domain)

Follow the CNAME chain for a hostname, up to 12 aliases, and report loops.

Input Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "minLength": 1,
      "maxLength": 253
    }
  },
  "required": [
    "domain"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢lookup_domain_rdap(domain)

Return the public RDAP registration summary for a domain. Registrant contact fields are not returned.

Input Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "minLength": 1,
      "maxLength": 253
    }
  },
  "required": [
    "domain"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢lookup_ip_info(target)

Resolve a hostname, or take an IP address directly, and return RDAP network data and the ASN for each public address.

Input Schema

{
  "type": "object",
  "properties": {
    "target": {
      "type": "string",
      "minLength": 1,
      "maxLength": 253
    }
  },
  "required": [
    "target"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢check_forward_confirmed_rdns(ip)

Check the PTR record for an IP address and whether the name it returns resolves back to the same address.

Input Schema

{
  "type": "object",
  "properties": {
    "ip": {
      "type": "string",
      "minLength": 1,
      "maxLength": 253
    }
  },
  "required": [
    "ip"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢check_tls_certificate(target)

Connect to a host on port 443 and return the TLS version, cipher, and certificate details including expiry and subject alternative names.

Input Schema

{
  "type": "object",
  "properties": {
    "target": {
      "type": "string",
      "minLength": 1,
      "maxLength": 253
    }
  },
  "required": [
    "target"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢check_tls_configuration(target)

Observe which TLS protocol versions a host accepts and summarize its TLS configuration.

Input Schema

{
  "type": "object",
  "properties": {
    "target": {
      "type": "string",
      "minLength": 1,
      "maxLength": 253
    }
  },
  "required": [
    "target"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢check_http_chain(target)

Fetch a URL and return each redirect hop with status codes and response headers.

Input Schema

{
  "type": "object",
  "properties": {
    "target": {
      "type": "string",
      "minLength": 1,
      "maxLength": 1024
    }
  },
  "required": [
    "target"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢check_http_status(target)

Fetch a URL and return the final status after following redirects.

Input Schema

{
  "type": "object",
  "properties": {
    "target": {
      "type": "string",
      "minLength": 1,
      "maxLength": 1024
    }
  },
  "required": [
    "target"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢measure_web_performance(target)

Measure DNS, connect, TLS, and time to first byte for a URL from the DotMoose diagnostic node. This is a network timing sample. It is not a browser rendering benchmark.

Input Schema

{
  "type": "object",
  "properties": {
    "target": {
      "type": "string",
      "minLength": 1,
      "maxLength": 1024
    }
  },
  "required": [
    "target"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢check_website_security(target)

Review the security controls a site exposes in its public responses, including security headers, cookie attributes, and CORS policy.

Input Schema

{
  "type": "object",
  "properties": {
    "target": {
      "type": "string",
      "minLength": 1,
      "maxLength": 1024
    }
  },
  "required": [
    "target"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢check_security_txt(target)

Fetch and parse the security.txt file for a site.

Input Schema

{
  "type": "object",
  "properties": {
    "target": {
      "type": "string",
      "minLength": 1,
      "maxLength": 1024
    }
  },
  "required": [
    "target"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢check_compression(target)

Check whether a URL is served with gzip or Brotli compression and report the sizes with and without compression.

Input Schema

{
  "type": "object",
  "properties": {
    "target": {
      "type": "string",
      "minLength": 1,
      "maxLength": 1024
    }
  },
  "required": [
    "target"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢check_ipv6_website(target)

Check whether a site answers over IPv6 and compare the result with IPv4.

Input Schema

{
  "type": "object",
  "properties": {
    "target": {
      "type": "string",
      "minLength": 1,
      "maxLength": 1024
    }
  },
  "required": [
    "target"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢check_favicon(target)

Locate the favicon a site declares and report its URL, type, and size.

Input Schema

{
  "type": "object",
  "properties": {
    "target": {
      "type": "string",
      "minLength": 1,
      "maxLength": 1024
    }
  },
  "required": [
    "target"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢audit_page_links(target)

Check up to 20 same-origin links found on one page and report the status of each. This is a single page check, not a site crawl.

Input Schema

{
  "type": "object",
  "properties": {
    "target": {
      "type": "string",
      "minLength": 1,
      "maxLength": 1024
    }
  },
  "required": [
    "target"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢check_page_metadata(target)

Return the title, meta description, canonical URL, headings, hreflang entries, and JSON-LD types found on a page.

Input Schema

{
  "type": "object",
  "properties": {
    "target": {
      "type": "string",
      "minLength": 1,
      "maxLength": 1024
    }
  },
  "required": [
    "target"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢test_robots_txt(target, path, userAgent)

Fetch the robots.txt for a site and test whether a user agent may fetch a given path.

Input Schema

{
  "type": "object",
  "properties": {
    "target": {
      "type": "string",
      "minLength": 1,
      "maxLength": 1024
    },
    "path": {
      "default": "/",
      "type": "string",
      "minLength": 1,
      "maxLength": 1024
    },
    "userAgent": {
      "default": "Googlebot",
      "type": "string",
      "minLength": 1,
      "maxLength": 128
    }
  },
  "required": [
    "target"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢validate_sitemap(target)

Fetch the sitemap for a site and report its structure, URL count, and fetch errors.

Input Schema

{
  "type": "object",
  "properties": {
    "target": {
      "type": "string",
      "minLength": 1,
      "maxLength": 1024
    }
  },
  "required": [
    "target"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢check_spf(domain)

Read the SPF record for a domain and count the DNS lookup terms in the full include chain against the limit of 10.

Input Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "minLength": 1,
      "maxLength": 253
    }
  },
  "required": [
    "domain"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢check_dmarc(domain)

Read the DMARC record published at _dmarc for a domain.

Input Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "minLength": 1,
      "maxLength": 253
    }
  },
  "required": [
    "domain"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢check_dkim(domain, selector)

Read the DKIM public key record for a domain and selector.

Input Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "minLength": 1,
      "maxLength": 253
    },
    "selector": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,63}$"
    }
  },
  "required": [
    "domain",
    "selector"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢check_mx_records(domain)

List the MX records for a domain with the A and AAAA addresses of each mail server.

Input Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "minLength": 1,
      "maxLength": 253
    }
  },
  "required": [
    "domain"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢check_smtp_starttls(domain)

Connect to the mail servers for a domain on port 25 and report the banner, EHLO response, and STARTTLS support. No mail is sent and no recipient is tested.

Input Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "minLength": 1,
      "maxLength": 253
    }
  },
  "required": [
    "domain"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢check_mta_sts(domain)

Read the MTA-STS DNS record and the published policy file for a domain.

Input Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "minLength": 1,
      "maxLength": 253
    }
  },
  "required": [
    "domain"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢check_tls_rpt(domain)

Read the TLS-RPT record published at _smtp._tls for a domain.

Input Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "minLength": 1,
      "maxLength": 253
    }
  },
  "required": [
    "domain"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢check_bimi(domain, selector)

Read the BIMI record for a domain and selector. The selector defaults to default.

Input Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "minLength": 1,
      "maxLength": 253
    },
    "selector": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,63}$"
    }
  },
  "required": [
    "domain"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢check_ip_blacklists(target)

Check an IP address, or the public addresses a hostname resolves to, against the reviewed DNS blacklist providers.

Input Schema

{
  "type": "object",
  "properties": {
    "target": {
      "type": "string",
      "minLength": 1,
      "maxLength": 253
    }
  },
  "required": [
    "target"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢looking_glass_ping(target, family)

Send four ICMP echo probes from the DotMoose network in Canada to a public host or IP address.

Input Schema

{
  "type": "object",
  "properties": {
    "target": {
      "type": "string",
      "minLength": 1,
      "maxLength": 253
    },
    "family": {
      "anyOf": [
        {
          "type": "number",
          "const": 4
        },
        {
          "type": "number",
          "const": 6
        }
      ]
    }
  },
  "required": [
    "target"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢looking_glass_traceroute(target, family)

Trace the route from the DotMoose network in Canada to a public host or IP address, up to 20 hops with one probe per hop.

Input Schema

{
  "type": "object",
  "properties": {
    "target": {
      "type": "string",
      "minLength": 1,
      "maxLength": 253
    },
    "family": {
      "anyOf": [
        {
          "type": "number",
          "const": 4
        },
        {
          "type": "number",
          "const": 6
        }
      ]
    }
  },
  "required": [
    "target"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢looking_glass_path(target, family)

Sample the route from the DotMoose network in Canada to a public host or IP address, up to 20 hops with three probes per hop.

Input Schema

{
  "type": "object",
  "properties": {
    "target": {
      "type": "string",
      "minLength": 1,
      "maxLength": 253
    },
    "family": {
      "anyOf": [
        {
          "type": "number",
          "const": 4
        },
        {
          "type": "number",
          "const": 6
        }
      ]
    }
  },
  "required": [
    "target"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢calculate_subnet(cidr)

Compute the network address, broadcast or last address, and address counts for an IPv4 or IPv6 CIDR block.

Input Schema

{
  "type": "object",
  "properties": {
    "cidr": {
      "type": "string",
      "minLength": 3,
      "maxLength": 60
    }
  },
  "required": [
    "cidr"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢ip_range_to_cidr(start, end)

Convert an IPv4 or IPv6 address range into the smallest set of CIDR blocks that covers it exactly.

Input Schema

{
  "type": "object",
  "properties": {
    "start": {
      "type": "string",
      "minLength": 1,
      "maxLength": 45
    },
    "end": {
      "type": "string",
      "minLength": 1,
      "maxLength": 45
    }
  },
  "required": [
    "start",
    "end"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢calculate_bandwidth(linkMbps, monthlyTransferGb, fileSizeGb)

Convert a link speed into maximum daily and monthly transfer, convert monthly transfer into an average rate, and estimate how long a file transfer takes at a given rate.

Input Schema

{
  "type": "object",
  "properties": {
    "linkMbps": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 1000000
    },
    "monthlyTransferGb": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 1000000000
    },
    "fileSizeGb": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 1000000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢estimate_storage_growth(currentGb, monthlyGrowthPercent, months)

Project storage size over up to 120 months at a constant monthly growth rate.

Input Schema

{
  "type": "object",
  "properties": {
    "currentGb": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 1000000000
    },
    "monthlyGrowthPercent": {
      "type": "number",
      "minimum": 0,
      "maximum": 100
    },
    "months": {
      "type": "integer",
      "minimum": 1,
      "maximum": 120
    }
  },
  "required": [
    "currentGb",
    "monthlyGrowthPercent",
    "months"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢estimate_backup_retention(fullBackupGb, dailyIncrementGb, dailyCopies, weeklyCopies, monthlyCopies)

Estimate backup storage for a grandfather-father-son retention plan where weekly and monthly copies are full backups and daily copies are increments.

Input Schema

{
  "type": "object",
  "properties": {
    "fullBackupGb": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 1000000000
    },
    "dailyIncrementGb": {
      "type": "number",
      "minimum": 0,
      "maximum": 1000000000
    },
    "dailyCopies": {
      "type": "integer",
      "minimum": 0,
      "maximum": 365
    },
    "weeklyCopies": {
      "type": "integer",
      "minimum": 0,
      "maximum": 365
    },
    "monthlyCopies": {
      "type": "integer",
      "minimum": 0,
      "maximum": 365
    }
  },
  "required": [
    "fullBackupGb",
    "dailyIncrementGb",
    "dailyCopies",
    "weeklyCopies",
    "monthlyCopies"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢build_spf_record(ipv4, ipv6, includes, useA, useMx, ...)

Assemble an SPF record from IP ranges, includes, and the a and mx mechanisms, and count its DNS lookup terms against the limit of 10.

Input Schema

{
  "type": "object",
  "properties": {
    "ipv4": {
      "default": [],
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 60
      }
    },
    "ipv6": {
      "default": [],
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 60
      }
    },
    "includes": {
      "default": [],
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 253
      }
    },
    "useA": {
      "default": false,
      "type": "boolean"
    },
    "useMx": {
      "default": false,
      "type": "boolean"
    },
    "redirectDomain": {
      "type": "string",
      "minLength": 1,
      "maxLength": 253
    },
    "allQualifier": {
      "default": "-all",
      "type": "string",
      "enum": [
        "~all",
        "-all",
        "?all",
        "+all"
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢build_dmarc_record(policy, subdomainPolicy, rua, ruf, percent, ...)

Assemble a DMARC record from a policy, optional subdomain policy, report addresses, and enforcement percentage.

Input Schema

{
  "type": "object",
  "properties": {
    "policy": {
      "type": "string",
      "enum": [
        "none",
        "quarantine",
        "reject"
      ]
    },
    "subdomainPolicy": {
      "type": "string",
      "enum": [
        "none",
        "quarantine",
        "reject"
      ]
    },
    "rua": {
      "maxItems": 5,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 3,
        "maxLength": 254
      }
    },
    "ruf": {
      "maxItems": 5,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 3,
        "maxLength": 254
      }
    },
    "percent": {
      "default": 100,
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "failureReporting": {
      "default": "1",
      "type": "string",
      "enum": [
        "0",
        "1",
        "d",
        "s"
      ]
    }
  },
  "required": [
    "policy"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded40 tools