Cruisify

Search cruises sold to the UK market, with prices in pounds and links to every sailing.

我該用這個嗎

品質與安全性

A
說明品質
100%
結構描述完整度
66%
命名品質
100%
汙染風險
100%
權限相符程度
100%
協定合規性
100%

根據工具定義與協定合規性的自動化分析。

上下文成本

~5,453Token(工具定義)
~10.2 KB典型回應大小
顯著的注意力影響(128k 上下文的 4.26%)

這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。

安裝

一鍵安裝

將以下內容加入你的 `claude_desktop_config.json` 檔案:

{
  "mcpServers": {
    "cruise-search": {
      "url": "https://www.cruisify.co.uk/mcp"
    }
  }
}

遠端端點

https://www.cruisify.co.uk/mcpstreamable-http

它能做什麼

工具清單

工具(5)

🟢 唯讀🟡 寫入🔴 刪除⚪ 未知
🟢search_cruises(destinations, departure_ports, cruise_lines, ships, months, ...)

Search cruises sold to the UK market by destination, departure port, cruise line, ship, months or dates, length, budget, no-fly (UK departures) and ocean or river. Names or slugs both work, and anything we can't match comes back in not_understood. query takes free text ("a week in the fjords from Southampton next June"); structured fields win where both are given. Returns up to 20 cruises a page, with prices in pounds (each with its basis and the date it was checked), month counts and Cruisify links. The cursor holds only the page number, so for the next page call again with the same fields (applied_filters, without query) and next_cursor as cursor, up to 10 pages.

輸入結構描述

{
  "type": "object",
  "properties": {
    "destinations": {
      "description": "Destination names or slugs: \"Caribbean\", \"norwegian-fjords\" (list_destinations has them all)",
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 100
      }
    },
    "departure_ports": {
      "description": "Departure port names or slugs: \"Southampton\" (list_departure_ports has them all)",
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 100
      }
    },
    "cruise_lines": {
      "description": "Cruise line names, slugs or short names: \"P&O\", \"fred-olsen\"",
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 100
      }
    },
    "ships": {
      "description": "Ship names or slugs",
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 100
      }
    },
    "months": {
      "description": "Departure months, YYYY-MM",
      "maxItems": 24,
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^\\d{4}-(?:0[1-9]|1[0-2])$"
      }
    },
    "date_from": {
      "description": "Earliest departure date, YYYY-MM-DD",
      "type": "string",
      "format": "date",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
    },
    "date_to": {
      "description": "Latest departure date, YYYY-MM-DD",
      "type": "string",
      "format": "date",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
    },
    "nights_min": {
      "description": "Shortest length, in nights",
      "type": "integer",
      "minimum": 1,
      "maximum": 365
    },
    "nights_max": {
      "description": "Longest length, in nights",
      "type": "integer",
      "minimum": 1,
      "maximum": 365
    },
    "max_price_gbp": {
      "description": "Highest price per person, in pounds",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000000
    },
    "no_fly": {
      "description": "true: only cruises leaving from a UK port",
      "type": "boolean"
    },
    "round_trip": {
      "description": "true: round trips only; false: one-way only",
      "type": "boolean"
    },
    "kind": {
      "description": "ocean or river cruises only",
      "type": "string",
      "enum": [
        "ocean",
        "river"
      ]
    },
    "sort": {
      "description": "departure (default), price, price_per_night, nights (shortest first) or newest",
      "type": "string",
      "enum": [
        "departure",
        "price",
        "price_per_night",
        "nights",
        "newest"
      ]
    },
    "query": {
      "description": "Free text, read into the fields above: \"a week in the fjords from Southampton next June\". Structured fields win where both are given. Leave it out when paging.",
      "type": "string",
      "maxLength": 200
    },
    "cursor": {
      "description": "next_cursor from the previous page. It holds only the page number, so send it with that page's applied_filters",
      "type": "string",
      "maxLength": 64
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "total": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "How many cruises match"
    },
    "page": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "This page's number, 20 cruises to a page"
    },
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "description": "The cruise's title"
          },
          "cruise_line": {
            "type": "string",
            "description": "The cruise line's name"
          },
          "ship": {
            "type": "string",
            "description": "The ship's name"
          },
          "kind": {
            "type": "string",
            "enum": [
              "ocean",
              "river",
              "expedition"
            ],
            "description": "ocean, river or expedition"
          },
          "nights": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991,
            "description": "Length in nights"
          },
          "route": {
            "type": "string",
            "description": "Where it starts and ends: \"Round trip from Southampton\", \"Southampton to New York\""
          },
          "next_departure": {
            "type": "string",
            "format": "date",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
            "description": "The first matching departure date"
          },
          "dates_available": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991,
            "description": "How many matching departure dates it has"
          },
          "price": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "from_gbp": {
                    "type": "number",
                    "description": "The lowest price per person, in pounds"
                  },
                  "basis": {
                    "type": "string",
                    "description": "What the price covers, in the cruise line's own words"
                  },
                  "checked_at": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "The UK date the price was checked, YYYY-MM-DD"
                  },
                  "converted_from": {
                    "description": "The currency we converted the price from, so it is our estimate; null for a price set in pounds",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "for_departure": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "The departure date this price is for"
                  }
                },
                "required": [
                  "from_gbp",
                  "basis",
                  "checked_at",
                  "converted_from",
                  "for_departure"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ],
            "description": "The lowest price we hold among the matching dates, or null (price_note says why)"
          },
          "price_note": {
            "description": "Why there is no price, or null when there is one",
            "type": [
              "string",
              "null"
            ]
          },
          "sold_out": {
            "type": "boolean",
            "description": "true when every matching date is sold out"
          },
          "url": {
            "type": "string",
            "format": "uri",
            "description": "The cruise's Cruisify page, which shows every date and the current price"
          },
          "book_url": {
            "type": "string",
            "format": "uri",
            "description": "Where to book: the priced sailing, or the cruise line when there is no price"
          }
        },
        "required": [
          "title",
          "cruise_line",
          "ship",
          "kind",
          "nights",
          "route",
          "next_departure",
          "dates_available",
          "price",
          "price_note",
          "sold_out",
          "url",
          "book_url"
        ],
        "additionalProperties": false
      },
      "description": "This page's cruises"
    },
    "next_cursor": {
      "description": "The cursor for the next page, with applied_filters; absent on the last page we give (page 10 at most)",
      "type": "string"
    },
    "by_month": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {
        "type": "integer",
        "minimum": -9007199254740991,
        "maximum": 9007199254740991
      },
      "description": "Matching cruises per departure month (YYYY-MM), counted without any months or dates asked for"
    },
    "applied_filters": {
      "type": "object",
      "properties": {
        "destinations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Destination slugs"
        },
        "departure_ports": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Departure port slugs"
        },
        "cruise_lines": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Cruise line slugs"
        },
        "ships": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Ship slugs"
        },
        "months": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Departure months, YYYY-MM"
        },
        "date_from": {
          "description": "Earliest departure date",
          "type": "string",
          "format": "date",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
        },
        "date_to": {
          "description": "Latest departure date",
          "type": "string",
          "format": "date",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
        },
        "nights_min": {
          "description": "Shortest length, in nights",
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "nights_max": {
          "description": "Longest length, in nights",
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "max_price_gbp": {
          "description": "Highest price per person, in pounds",
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "no_fly": {
          "type": "boolean",
          "description": "Only cruises leaving from a UK port"
        },
        "round_trip": {
          "description": "true: round trips only; false: one-way only",
          "type": "boolean"
        },
        "kind": {
          "description": "ocean or river",
          "type": "string",
          "enum": [
            "ocean",
            "river"
          ]
        },
        "sort": {
          "type": "string",
          "enum": [
            "departure",
            "price",
            "price_per_night",
            "nights",
            "newest"
          ],
          "description": "The order of the results"
        }
      },
      "required": [
        "destinations",
        "departure_ports",
        "cruise_lines",
        "ships",
        "months",
        "no_fly",
        "sort"
      ],
      "additionalProperties": false,
      "description": "The search as it ran, in search_cruises' own fields. Send it back, with next_cursor as cursor, for the next page"
    },
    "not_understood": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "description": "What was asked for"
          },
          "reason": {
            "type": "string",
            "description": "Why it was left out of the search"
          }
        },
        "required": [
          "text",
          "reason"
        ],
        "additionalProperties": false
      },
      "description": "What was asked for but left out of the search, and why"
    },
    "landing_url": {
      "description": "The Cruisify page for this search, when there is one",
      "type": "string",
      "format": "uri"
    },
    "search_url": {
      "type": "string",
      "format": "uri",
      "description": "This search on Cruisify"
    },
    "freshness": {
      "type": "string",
      "enum": [
        "fresh",
        "stale",
        "cache_only"
      ],
      "description": "fresh: up to date; stale: some dates or prices may be out of date; cache_only: from the cruises we already held"
    }
  },
  "required": [
    "total",
    "page",
    "results",
    "by_month",
    "applied_filters",
    "not_understood",
    "search_url",
    "freshness"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢get_cruise(url, slug)

One cruise in full: the day-by-day itinerary, every future sailing with its price (or why there isn't one) and a booking link, and its Cruisify page. Give the url of a Cruisify cruise page, as search_cruises returns it, or the cruise's slug.

輸入結構描述

{
  "type": "object",
  "properties": {
    "url": {
      "description": "A Cruisify cruise page URL, as search_cruises returns it",
      "type": "string",
      "maxLength": 500
    },
    "slug": {
      "description": "A cruise's slug: the last part of its URL",
      "type": "string",
      "maxLength": 200
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "title": {
      "type": "string",
      "description": "The cruise's title"
    },
    "cruise_line": {
      "type": "string",
      "description": "The cruise line's name"
    },
    "ship": {
      "type": "string",
      "description": "The ship's name"
    },
    "kind": {
      "type": "string",
      "enum": [
        "ocean",
        "river",
        "expedition"
      ],
      "description": "ocean, river or expedition"
    },
    "nights": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Length in nights"
    },
    "route": {
      "type": "string",
      "description": "Where it starts and ends: \"Round trip from Southampton\", \"Southampton to New York\""
    },
    "destinations": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "The destinations it visits, the main one first"
    },
    "description": {
      "description": "A short description, or null",
      "type": [
        "string",
        "null"
      ]
    },
    "itinerary": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "day": {
            "description": "\"Day 3\" or \"Days 3–4\", or null when the day isn't known",
            "type": [
              "string",
              "null"
            ]
          },
          "place": {
            "type": "string",
            "description": "The port, \"At sea\", or \"Port to be confirmed\""
          },
          "country": {
            "description": "The port's country, or null",
            "type": [
              "string",
              "null"
            ]
          },
          "duration": {
            "description": "\"Overnight in port\", \"3 days at sea\" and so on for a row of several days, else null",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "day",
          "place",
          "country",
          "duration"
        ],
        "additionalProperties": false
      },
      "description": "Day by day, with consecutive days in one place as one row"
    },
    "sailings": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "departure_date": {
            "type": "string",
            "format": "date",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
            "description": "Departure date"
          },
          "return_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
              },
              {
                "type": "null"
              }
            ],
            "description": "Return date, or null when we don't have it"
          },
          "sold_out": {
            "type": "boolean",
            "description": "true when this sailing is sold out"
          },
          "price": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "from_gbp": {
                    "type": "number",
                    "description": "The lowest price per person, in pounds"
                  },
                  "basis": {
                    "type": "string",
                    "description": "What the price covers, in the cruise line's own words"
                  },
                  "checked_at": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "The UK date the price was checked, YYYY-MM-DD"
                  },
                  "converted_from": {
                    "description": "The currency we converted the price from, so it is our estimate; null for a price set in pounds",
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                },
                "required": [
                  "from_gbp",
                  "basis",
                  "checked_at",
                  "converted_from"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ],
            "description": "The lowest price we hold for this sailing, or null (price_note says why)"
          },
          "price_note": {
            "description": "Why there is no price, or null when there is one",
            "type": [
              "string",
              "null"
            ]
          },
          "book_url": {
            "type": "string",
            "format": "uri",
            "description": "Where to book this sailing"
          }
        },
        "required": [
          "departure_date",
          "return_date",
          "sold_out",
          "price",
          "price_note",
          "book_url"
        ],
        "additionalProperties": false
      },
      "description": "Every future sailing"
    },
    "url": {
      "type": "string",
      "format": "uri",
      "description": "The cruise's Cruisify page, which shows every date and the current price"
    }
  },
  "required": [
    "title",
    "cruise_line",
    "ship",
    "kind",
    "nights",
    "route",
    "destinations",
    "description",
    "itinerary",
    "sailings",
    "url"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢list_destinations

Every destination we know, ocean or river, with how many upcoming cruises we hold for each and its Cruisify page where there is one.

輸入結構描述

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "destinations": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Its name"
          },
          "slug": {
            "type": "string",
            "description": "Its slug, which search_cruises takes as well as the name"
          },
          "cruises_held": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991,
            "description": "How many upcoming cruises we hold"
          },
          "landing_url": {
            "description": "Its Cruisify page, when it holds enough cruises to have one",
            "type": "string",
            "format": "uri"
          },
          "kind": {
            "type": "string",
            "enum": [
              "ocean",
              "river"
            ],
            "description": "An ocean region or a river"
          }
        },
        "required": [
          "name",
          "slug",
          "cruises_held",
          "kind"
        ],
        "additionalProperties": false
      },
      "description": "Every destination, by name"
    }
  },
  "required": [
    "destinations"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢list_departure_ports(uk_only)

The ports the cruises we hold leave from, with UK ports marked, how many upcoming cruises leave from each and its Cruisify page where there is one. Set uk_only for UK ports only (no-fly cruises).

輸入結構描述

{
  "type": "object",
  "properties": {
    "uk_only": {
      "description": "true: UK ports only, the departures for no-fly cruises",
      "type": "boolean"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "ports": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Its name"
          },
          "slug": {
            "type": "string",
            "description": "Its slug, which search_cruises takes as well as the name"
          },
          "cruises_held": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991,
            "description": "How many upcoming cruises we hold"
          },
          "landing_url": {
            "description": "Its Cruisify page, when it holds enough cruises to have one",
            "type": "string",
            "format": "uri"
          },
          "is_uk": {
            "type": "boolean",
            "description": "A UK port: cruises from it need no flight"
          },
          "country": {
            "description": "The port's country, or null",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "name",
          "slug",
          "cruises_held",
          "is_uk",
          "country"
        ],
        "additionalProperties": false
      },
      "description": "The departure ports, by name"
    }
  },
  "required": [
    "ports"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢list_cruise_lines

The cruise lines we cover and their ships, with how many upcoming cruises we hold for each and their Cruisify pages where there are some.

輸入結構描述

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "cruise_lines": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Its name"
          },
          "slug": {
            "type": "string",
            "description": "Its slug, which search_cruises takes as well as the name"
          },
          "cruises_held": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991,
            "description": "How many upcoming cruises we hold"
          },
          "landing_url": {
            "description": "Its Cruisify page, when it holds enough cruises to have one",
            "type": "string",
            "format": "uri"
          },
          "ships": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string",
                  "description": "Its name"
                },
                "slug": {
                  "type": "string",
                  "description": "Its slug, which search_cruises takes as well as the name"
                },
                "cruises_held": {
                  "type": "integer",
                  "minimum": -9007199254740991,
                  "maximum": 9007199254740991,
                  "description": "How many upcoming cruises we hold"
                },
                "landing_url": {
                  "description": "Its Cruisify page, when it holds enough cruises to have one",
                  "type": "string",
                  "format": "uri"
                }
              },
              "required": [
                "name",
                "slug",
                "cruises_held"
              ],
              "additionalProperties": false
            },
            "description": "Its ships, by name"
          }
        },
        "required": [
          "name",
          "slug",
          "cruises_held",
          "ships"
        ],
        "additionalProperties": false
      },
      "description": "The cruise lines, by name"
    }
  },
  "required": [
    "cruise_lines"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

社群

為此伺服器評分

證據

近期觀測

已驗證未記錄版本5 個工具