{
  "serverInfo": {
    "name": "Domduck (public)",
    "version": "1.0.0",
    "description": "Domain reputation over time, read from what Domduck has already collected: Ahrefs Domain Rating, Tranco rank, OpenPageRank, registration date, TLS state, and which of eight named AI crawlers a site admits in its robots.txt. No account and no key.",
    "websiteUrl": "https://domduck.com",
    "documentationUrl": "https://domduck.com/docs/mcp-public"
  },
  "transport": {
    "type": "streamable-http",
    "url": "https://domduck.com/api/mcp/public"
  },
  "authentication": {
    "required": false,
    "schemes": [],
    "description": "None. This endpoint takes no credential. 10 requests a minute per IP."
  },
  "protocolVersions": {
    "modern": [
      "2026-07-28"
    ],
    "legacy": [
      "2025-11-25",
      "2025-06-18",
      "2025-03-26",
      "2024-11-05"
    ]
  },
  "capabilities": {
    "tools": {}
  },
  "instructions": "Domduck tracks domain reputation over time and keeps the history permanently. This public server reads only what Domduck has already collected. It never fetches a domain on demand, so hasReading false means nobody has looked that domain up yet, not that the domain does not exist. One domain per call, 10 requests a minute per IP, and no history. Tranco rank and the blocked-crawler count are better when LOWER. Domain Rating and OpenPageRank are better when higher. A free Domduck account at https://domduck.com adds the dated history, unlimited tracked domains, a daily re-read of every source, and 240 requests a minute.",
  "tools": [
    {
      "name": "lookup_domain",
      "title": "Look up one domain",
      "description": "Public reputation snapshot for one domain from Domduck's store: Domain Rating, Tranco rank, OpenPageRank, registration date, TLS certificate state and AI crawler policy. Returns hasReading false for a domain nobody has looked up yet, which is a real answer and not an error. One domain per call, and no history: the dated series is what a Domduck account is for.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string",
            "description": "A domain name. Scheme, www and trailing dots are stripped."
          }
        },
        "required": [
          "domain"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "title": "Look up one domain",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "get_ai_crawler_policy",
      "title": "Get AI crawler policy",
      "description": "Which of the eight tracked AI crawlers a domain's robots.txt admits, and whether it publishes an llms.txt. Three states per agent: allowed, disallowed, unspecified. Unspecified is NOT allowed, because a catch-all Disallow blocks an agent the file never names, so read `effective` for what is in force. Reads the last stored reading; it does not fetch the file.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string",
            "description": "A domain name. Scheme, www and trailing dots are stripped."
          }
        },
        "required": [
          "domain"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "title": "Get AI crawler policy",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "list_sources",
      "title": "List data sources",
      "description": "What Domduck reads and what each source means, including the eight AI crawlers whose robots.txt policy is tracked. A constant. Read it first: it is what lets a model interpret lookup_domain without guessing at field names or at which direction is better.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "annotations": {
        "title": "List data sources",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    }
  ],
  "resources": [],
  "prompts": [],
  "authenticatedServer": {
    "transport": {
      "type": "streamable-http",
      "url": "https://domduck.com/api/mcp"
    },
    "authentication": {
      "required": true,
      "schemes": [
        "bearer"
      ],
      "description": "Bearer key in the Authorization header. Create one at /settings/api-keys.",
      "instructionsUrl": "https://domduck.com/settings/api-keys"
    },
    "documentationUrl": "https://domduck.com/docs/mcp",
    "toolCount": 10,
    "adds": "Dated history, unlimited tracked domains on a daily sweep, tags, and the write tools."
  }
}
