{
  "serverInfo": {
    "name": "petdocket-lookup",
    "version": "1.0.0"
  },
  "description": "Read-only lookup of the Pet Docket public product dataset. Every record carries a source URL and the date it was observed.",
  "protocolVersion": "2025-06-18",
  "transport": {
    "type": "streamable-http",
    "endpoint": "https://thepetdocket.com/mcp"
  },
  "capabilities": {
    "tools": {
      "listChanged": false
    }
  },
  "hostRequirement": "The streamable-http transport at /mcp is served by a Pages Function. On a host that only serves files, use the staticLookup endpoints. The dataset, the OpenAPI description and every Markdown twin work on any host.",
  "staticLookup": [
    {
      "tool": "find_products",
      "method": "GET",
      "url": "https://thepetdocket.com/api/cluster/{cluster}.json",
      "parameters": {
        "cluster": "one cluster identifier"
      },
      "note": "The same records the query string returns on a function host, written as a file so the filter cannot be silently ignored."
    },
    {
      "tool": "find_products",
      "method": "GET",
      "url": "https://thepetdocket.com/api/species/{species}.json",
      "parameters": {
        "species": "cat or dog"
      }
    },
    {
      "tool": "get_product",
      "method": "GET",
      "url": "https://thepetdocket.com/api/items/{id}.json",
      "parameters": {
        "id": "one record identifier"
      }
    },
    {
      "tool": "compare_capacity",
      "method": "GET",
      "url": "https://thepetdocket.com/api/cluster/{cluster}.json",
      "parameters": {
        "cluster": "one cluster identifier"
      }
    },
    {
      "tool": "list_everything",
      "method": "GET",
      "url": "https://thepetdocket.com/api/catalog.json",
      "parameters": {}
    }
  ],
  "tools": [
    {
      "name": "find_products",
      "title": "Find products in the dataset",
      "description": "Filter the Pet Docket dataset by cluster, species, cat count, maximum price, Wi-Fi band and minimum warranty. Returns matching product records with their source URLs.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "cluster": {
            "type": "string",
            "enum": [
              "smart-litter-box",
              "automatic-feeder",
              "water-fountain",
              "indoor-potty"
            ],
            "description": "Which category to search."
          },
          "species": {
            "type": "string",
            "enum": [
              "cat",
              "dog"
            ],
            "description": "Only the records the maker sells for this animal. A record can be sold for both."
          },
          "maxPriceUsd": {
            "type": "number",
            "description": "Upper bound on the observed price. A record with no published price is excluded."
          },
          "minWarrantyMonths": {
            "type": "number",
            "description": "Lower bound on the warranty length in months."
          },
          "wifiBand": {
            "type": "string",
            "enum": [
              "2.4",
              "5"
            ],
            "description": "Require this Wi-Fi band to be supported."
          },
          "minCats": {
            "type": "number",
            "description": "Require support for at least this many cats."
          }
        },
        "required": [
          "cluster"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_product",
      "title": "Look up one product record",
      "description": "Return one product record by its stable identifier, with its source URL and observation date. Returns not_found for an unknown identifier.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The stable record identifier, for example petkit-puramax-2."
          }
        },
        "required": [
          "id"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "compare_capacity",
      "title": "Compare the capacity of a cluster",
      "description": "Return every product in a cluster with its capacity, entry height and warranty, ordered by capacity. Capacity is the waste bin volume for litter boxes and the hopper volume for feeders.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "cluster": {
            "type": "string",
            "enum": [
              "smart-litter-box",
              "automatic-feeder",
              "water-fountain",
              "indoor-potty"
            ]
          }
        },
        "required": [
          "cluster"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    }
  ]
}
