{
  "authentication": {
    "required": false,
    "schemes": []
  },
  "capabilities": {
    "resources": {},
    "tools": {}
  },
  "description": "Live domain and network diagnostics: dns, tls, mail, rdap, addressing and routing. Every call is a fresh lookup and nothing is stored between calls.",
  "documentationUrl": "https://dug.sh/developers",
  "instructions": "Live domain and network diagnostics. Every call is a fresh lookup; nothing is stored between calls. Read the verdict line first, then the evidence. If a result mentions a degraded upstream, part of the answer is missing and the rest still stands.",
  "protocolVersion": "2025-11-25",
  "serverInfo": {
    "name": "dug",
    "title": "dug",
    "version": "1"
  },
  "tools": [
    {
      "annotations": {
        "destructiveHint": false,
        "openWorldHint": true,
        "readOnlyHint": true,
        "untrustedContentHint": true
      },
      "description": "every record type, or a single one. Runs live and returns the answer as a sentence followed by the evidence. Example: DIG example.com MX",
      "inputSchema": {
        "properties": {
          "target": {
            "description": "a domain name",
            "type": "string"
          },
          "type": {
            "description": "a single record type to ask for, such as MX",
            "type": "string"
          }
        },
        "required": [
          "target"
        ],
        "type": "object"
      },
      "name": "dug_dig",
      "title": "DIG"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "openWorldHint": true,
        "readOnlyHint": true,
        "untrustedContentHint": true
      },
      "description": "agreement across the fixed resolver list. Runs live and returns the answer as a sentence followed by the evidence. Example: PROP example.com",
      "inputSchema": {
        "properties": {
          "target": {
            "description": "a domain name",
            "type": "string"
          }
        },
        "required": [
          "target"
        ],
        "type": "object"
      },
      "name": "dug_prop",
      "title": "PROP"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "openWorldHint": true,
        "readOnlyHint": true,
        "untrustedContentHint": true
      },
      "description": "remaining lifetime per record. Runs live and returns the answer as a sentence followed by the evidence. Example: TTL example.com",
      "inputSchema": {
        "properties": {
          "target": {
            "description": "a domain name",
            "type": "string"
          }
        },
        "required": [
          "target"
        ],
        "type": "object"
      },
      "name": "dug_ttl",
      "title": "TTL"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "openWorldHint": true,
        "readOnlyHint": true,
        "untrustedContentHint": true
      },
      "description": "root to tld to authoritative walk. Runs live and returns the answer as a sentence followed by the evidence. Example: NS example.com",
      "inputSchema": {
        "properties": {
          "target": {
            "description": "a domain name",
            "type": "string"
          }
        },
        "required": [
          "target"
        ],
        "type": "object"
      },
      "name": "dug_ns",
      "title": "NS"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "openWorldHint": true,
        "readOnlyHint": true,
        "untrustedContentHint": true
      },
      "description": "chain of trust, ds and dnskey. Runs live and returns the answer as a sentence followed by the evidence. Example: DNSSEC cloudflare.com",
      "inputSchema": {
        "properties": {
          "target": {
            "description": "a domain name",
            "type": "string"
          }
        },
        "required": [
          "target"
        ],
        "type": "object"
      },
      "name": "dug_dnssec",
      "title": "DNSSEC"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "openWorldHint": true,
        "readOnlyHint": true,
        "untrustedContentHint": true
      },
      "description": "registration data with status codes decoded. Runs live and returns the answer as a sentence followed by the evidence. Example: RDAP example.com",
      "inputSchema": {
        "properties": {
          "target": {
            "description": "a domain name",
            "type": "string"
          }
        },
        "required": [
          "target"
        ],
        "type": "object"
      },
      "name": "dug_rdap",
      "title": "RDAP"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "openWorldHint": true,
        "readOnlyHint": true,
        "untrustedContentHint": true
      },
      "description": "domain and certificate expiry, computed now. Runs live and returns the answer as a sentence followed by the evidence. Example: WATCH example.com",
      "inputSchema": {
        "properties": {
          "target": {
            "description": "a domain name",
            "type": "string"
          }
        },
        "required": [
          "target"
        ],
        "type": "object"
      },
      "name": "dug_watch",
      "title": "WATCH"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "openWorldHint": true,
        "readOnlyHint": true,
        "untrustedContentHint": true
      },
      "description": "chain, validity spans, protocols. Runs live and returns the answer as a sentence followed by the evidence. Example: TLS example.com",
      "inputSchema": {
        "properties": {
          "target": {
            "description": "a hostname",
            "type": "string"
          }
        },
        "required": [
          "target"
        ],
        "type": "object"
      },
      "name": "dug_tls",
      "title": "TLS"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "openWorldHint": true,
        "readOnlyHint": true,
        "untrustedContentHint": true
      },
      "description": "headers, redirect chain, security headers. Runs live and returns the answer as a sentence followed by the evidence. Example: HTTP example.com",
      "inputSchema": {
        "properties": {
          "target": {
            "description": "a hostname",
            "type": "string"
          }
        },
        "required": [
          "target"
        ],
        "type": "object"
      },
      "name": "dug_http",
      "title": "HTTP"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "openWorldHint": true,
        "readOnlyHint": true,
        "untrustedContentHint": true
      },
      "description": "dns, tcp, tls and ttfb timing. Runs live and returns the answer as a sentence followed by the evidence. Example: TRACE example.com",
      "inputSchema": {
        "properties": {
          "target": {
            "description": "a hostname",
            "type": "string"
          }
        },
        "required": [
          "target"
        ],
        "type": "object"
      },
      "name": "dug_trace",
      "title": "TRACE"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "openWorldHint": true,
        "readOnlyHint": true,
        "untrustedContentHint": true
      },
      "description": "mx, spf, dkim, dmarc and alignment policy. Runs live and returns the answer as a sentence followed by the evidence. Example: MAIL example.com",
      "inputSchema": {
        "properties": {
          "target": {
            "description": "a domain name",
            "type": "string"
          }
        },
        "required": [
          "target"
        ],
        "type": "object"
      },
      "name": "dug_mail",
      "title": "MAIL"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "openWorldHint": true,
        "readOnlyHint": true,
        "untrustedContentHint": true
      },
      "description": "include tree, against the ten lookup limit. Runs live and returns the answer as a sentence followed by the evidence. Example: SPF example.com",
      "inputSchema": {
        "properties": {
          "target": {
            "description": "a domain name",
            "type": "string"
          }
        },
        "required": [
          "target"
        ],
        "type": "object"
      },
      "name": "dug_spf",
      "title": "SPF"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "openWorldHint": true,
        "readOnlyHint": true,
        "untrustedContentHint": true
      },
      "description": "reverse dns, asn, prefix, neighbours. Runs live and returns the answer as a sentence followed by the evidence. Example: IP 8.8.8.8",
      "inputSchema": {
        "properties": {
          "target": {
            "description": "an ip address",
            "type": "string"
          }
        },
        "required": [
          "target"
        ],
        "type": "object"
      },
      "name": "dug_ip",
      "title": "IP"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "openWorldHint": true,
        "readOnlyHint": true,
        "untrustedContentHint": true
      },
      "description": "prefixes and address space. Runs live and returns the answer as a sentence followed by the evidence. Example: ASN 13335",
      "inputSchema": {
        "properties": {
          "target": {
            "description": "an as number, with or without the AS prefix",
            "type": "string"
          }
        },
        "required": [
          "target"
        ],
        "type": "object"
      },
      "name": "dug_asn",
      "title": "ASN"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "openWorldHint": true,
        "readOnlyHint": true,
        "untrustedContentHint": true
      },
      "description": "address space grid, a /24 or smaller. Runs live and returns the answer as a sentence followed by the evidence. Example: NET 8.8.8.0/24",
      "inputSchema": {
        "properties": {
          "target": {
            "description": "a network in cidr form, a /24 or smaller",
            "type": "string"
          }
        },
        "required": [
          "target"
        ],
        "type": "object"
      },
      "name": "dug_net",
      "title": "NET"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "openWorldHint": true,
        "readOnlyHint": true,
        "untrustedContentHint": true
      },
      "description": "icmp echo, round trip time and packet loss. Runs live and returns the answer as a sentence followed by the evidence. Example: PING 1.1.1.1",
      "inputSchema": {
        "properties": {
          "count": {
            "description": "how many echoes to send, 1 to 10",
            "type": "string"
          },
          "target": {
            "description": "a hostname or an ip address",
            "type": "string"
          }
        },
        "required": [
          "target"
        ],
        "type": "object"
      },
      "name": "dug_ping",
      "title": "PING"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "openWorldHint": true,
        "readOnlyHint": true,
        "untrustedContentHint": true
      },
      "description": "the hops between here and there, with reverse dns. Runs live and returns the answer as a sentence followed by the evidence. Example: ROUTE example.com",
      "inputSchema": {
        "properties": {
          "target": {
            "description": "a hostname or an ip address",
            "type": "string"
          }
        },
        "required": [
          "target"
        ],
        "type": "object"
      },
      "name": "dug_route",
      "title": "ROUTE"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "openWorldHint": true,
        "readOnlyHint": true,
        "untrustedContentHint": true
      },
      "description": "which tcp ports are open, closed or filtered. Runs live and returns the answer as a sentence followed by the evidence. Example: PORTS scanme.nmap.org 22,80,443",
      "inputSchema": {
        "properties": {
          "ports": {
            "description": "ports to try, comma separated, ranges allowed",
            "type": "string"
          },
          "target": {
            "description": "a hostname or an ip address",
            "type": "string"
          }
        },
        "required": [
          "target"
        ],
        "type": "object"
      },
      "name": "dug_ports",
      "title": "PORTS"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "openWorldHint": true,
        "readOnlyHint": true,
        "untrustedContentHint": true
      },
      "description": "two domains side by side. Runs live and returns the answer as a sentence followed by the evidence. Example: VS example.com github.com",
      "inputSchema": {
        "properties": {
          "other": {
            "description": "the second domain name",
            "type": "string"
          },
          "target": {
            "description": "a domain name, compared against `other`",
            "type": "string"
          }
        },
        "required": [
          "target",
          "other"
        ],
        "type": "object"
      },
      "name": "dug_vs",
      "title": "VS"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "openWorldHint": true,
        "readOnlyHint": true,
        "untrustedContentHint": true
      },
      "description": "resolver list, cache ceilings, upstream health. Runs live and returns the answer as a sentence followed by the evidence. Example: SRC",
      "inputSchema": {
        "properties": {},
        "required": [],
        "type": "object"
      },
      "name": "dug_src",
      "title": "SRC"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "openWorldHint": true,
        "readOnlyHint": true,
        "untrustedContentHint": true
      },
      "description": "the address this request came from. Runs live and returns the answer as a sentence followed by the evidence. Example: ME",
      "inputSchema": {
        "properties": {},
        "required": [],
        "type": "object"
      },
      "name": "dug_me",
      "title": "ME"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "openWorldHint": true,
        "readOnlyHint": true,
        "untrustedContentHint": true
      },
      "description": "what a crawler reads: title, canonical, robots, structured data. Runs live and returns the answer as a sentence followed by the evidence. Example: SEO example.com",
      "inputSchema": {
        "properties": {
          "target": {
            "description": "a domain name",
            "type": "string"
          }
        },
        "required": [
          "target"
        ],
        "type": "object"
      },
      "name": "dug_seo",
      "title": "SEO"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "openWorldHint": true,
        "readOnlyHint": true,
        "untrustedContentHint": true
      },
      "description": "what an answer engine reads: llms.txt, markdown, content without js. Runs live and returns the answer as a sentence followed by the evidence. Example: AEO example.com",
      "inputSchema": {
        "properties": {
          "target": {
            "description": "a domain name",
            "type": "string"
          }
        },
        "required": [
          "target"
        ],
        "type": "object"
      },
      "name": "dug_aeo",
      "title": "AEO"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "openWorldHint": true,
        "readOnlyHint": true,
        "untrustedContentHint": true
      },
      "description": "the share card, with the image fetched and measured. Runs live and returns the answer as a sentence followed by the evidence. Example: OG example.com",
      "inputSchema": {
        "properties": {
          "target": {
            "description": "a domain name",
            "type": "string"
          }
        },
        "required": [
          "target"
        ],
        "type": "object"
      },
      "name": "dug_og",
      "title": "OG"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "openWorldHint": true,
        "readOnlyHint": true,
        "untrustedContentHint": true
      },
      "description": "tools for an agent in the page, and the mcp surface for one that isn’t. Runs live and returns the answer as a sentence followed by the evidence. Example: WEBMCP example.com",
      "inputSchema": {
        "properties": {
          "target": {
            "description": "a domain name",
            "type": "string"
          }
        },
        "required": [
          "target"
        ],
        "type": "object"
      },
      "name": "dug_webmcp",
      "title": "WEBMCP"
    }
  ],
  "transport": {
    "endpoint": "/mcp",
    "type": "streamable-http"
  },
  "version": "1.0"
}