Cruisify

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

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
66%
Naming quality
100%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~5,453Tokens (tool definitions)
~10.2 KBTypical response size
Significant attention impact (4.26% 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": {
    "cruise-search": {
      "url": "https://www.cruisify.co.uk/mcp"
    }
  }
}

Remote endpoints

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

What it can do

Tool inventory

Tools (5)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢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.

Input Schema

{
  "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
}

Output Schema

{
  "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.

Input Schema

{
  "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
}

Output Schema

{
  "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.

Input Schema

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

Output Schema

{
  "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).

Input Schema

{
  "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
}

Output Schema

{
  "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.

Input Schema

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

Output Schema

{
  "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
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded5 tools