Find the best-value cruise: 23 lines, ~30k sailings priced nightly, low/high vs usual, book link.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Judge a price someone was quoted or already paid for one sailing: whether it is low, typical or high against that sailing's usual price for the cabin, today's listed fare beside it, the lowest fare read in 120 days, a plain one-paragraph answer to quote, and watch_url where the person can be emailed if the fare drops below their price. Name the sailing by sailing_id, a fantasize.net /cruise/ link, or ship plus depart_date.
The quoted or paid fare in USD, per person for the whole cruise, taxes and port fees in
Or a fantasize.net /cruise/ link, or a Cruisebound sailing link
Or the ship name ("Celebrity Beyond") with depart_date
Cabin grade to price. Omit to quote balcony where sold, else the next grade.
A Fantasize sailing id
Departure date YYYY-MM-DD (with ship)
true if price is the total for a cabin of two
Judge a price someone was quoted or already paid for one sailing: whether it is low, typical or high against that sailing's usual price for the cabin, today's listed fare beside it, the lowest fare read in 120 days, a plain one-paragraph answer to quote, and watch_url where the person can be emailed if the fare drops below their price. Name the sailing by sailing_id, a fantasize.net /cruise/ link, or ship plus depart_date.
| Argument | Type | Description |
|---|---|---|
| url | string | Or a fantasize.net /cruise/ link, or a Cruisebound sailing link |
| ship | string | Or the ship name ("Celebrity Beyond") with depart_date |
| cabin | string | Cabin grade to price. Omit to quote balcony where sold, else the next grade. |
| price* | number | The quoted or paid fare in USD, per person for the whole cruise, taxes and port fees in |
| sailing_id | string | A Fantasize sailing id |
| depart_date | string | Departure date YYYY-MM-DD (with ship) |
| price_is_for_two | boolean | true if price is the total for a cabin of two |
{
"type": "object",
"required": [
"price"
],
"properties": {
"url": {
"type": "string",
"description": "Or a fantasize.net /cruise/ link, or a Cruisebound sailing link"
},
"ship": {
"type": "string",
"description": "Or the ship name (\"Celebrity Beyond\") with depart_date"
},
"cabin": {
"enum": [
"inside",
"oceanview",
"balcony",
"suite"
],
"type": "string",
"description": "Cabin grade to price. Omit to quote balcony where sold, else the next grade."
},
"price": {
"type": "number",
"description": "The quoted or paid fare in USD, per person for the whole cruise, taxes and port fees in"
},
"sailing_id": {
"type": "string",
"description": "A Fantasize sailing id"
},
"depart_date": {
"type": "string",
"description": "Departure date YYYY-MM-DD (with ship)"
},
"price_is_for_two": {
"type": "boolean",
"description": "true if price is the total for a cabin of two"
}
}
}Side-by-side cruise lines for the same kind of cruise (a region, departure port or port visited, plus dates): each line's number of sailings, ships, median and lowest price per person per night in one cabin grade, and its cheapest sailing with book_url. Answers "Alaska in July: Princess or NCL?".
| Argument | Type | Description |
|---|---|---|
| line | string | Cruise line, e.g. "Royal Caribbean", "NCL", "Princess", "Viking" |
| ship | string | Ship name or part of it |
| tier | string | luxury includes ultra-luxury; ultra-luxury is the top of the market only: Regent, Silversea, Seabourn, Explora Journeys (all-suite, all-inclusive) |
| cabin | string | Cabin grade to price. Omit to quote balcony where sold, else the next grade. |
| month | string | Departure month, YYYY-MM |
| region | string | Where the cruise goes: a region (caribbean, bahamas, alaska, mexico, mediterranean, northern-europe, european-rivers, asia, repositioning, more) or a named place it calls at (greek-islands, norwegian-fjords, canada-new-england, canary-islands, british-isles, baltic, iceland, adriatic, japan, hawaii, panama-canal, bermuda, galapagos, tahiti, arctic, antarctica, danube, rhine, douro), or any port, island, country or state we sail to ("Santorini", "Maui", "Greece", "Juneau"). cruise_options lists the regions and named places with counts. |
The regions, cruise lines (with tier), departure ports and months on sale, each with its count of sailings. These are the values the search filters accept.
No arguments.
{
"type": "object",
"properties": {}
}Fantasize's Cruise Fare Index: how the price of the same cruises moves night to night, from our own nightly pricing of every sailing (each sailing compared only with its own earlier price, so new sailings and sell-outs never move it). Returns the overall level and its change, and the same by cruise company (with stock ticker), cruise line, region and months to departure, plus the cruise companies' latest press releases. Name a group (e.g. "Royal Caribbean Group", "Alaska", "3-6 months out") for its daily series.
| Argument | Type | Description |
|---|---|---|
| cut | string | Only this breakdown (default: all) |
| days | integer | How many days of the series |
| group | string | A series name for its daily points, e.g. "Carnival Corp", "Celebrity", "Caribbean" |
{
"type": "object",
"properties": {
"cut": {
"enum": [
"overall",
"company",
"line",
"region",
"lead"
],
"type": "string",
"description": "Only this breakdown (default: all)"
},
"days": {
"type": "integer",
"default": 30,
"maximum": 400,
"minimum": 1,
"description": "How many days of the series"
},
"group": {
"type": "string",
"description": "A series name for its daily points, e.g. \"Carnival Corp\", \"Celebrity\", \"Caribbean\""
}
}
}Everything about one sailing: day-by-day itinerary, current price of each cabin grade with the date it was read (and which have no price listed),each grade against its usual price, the fare's own price history, the same itinerary on other dates with prices, the best thing to do at each port (verified seller and price where we have one, and its booking page), and book_url.
| Argument | Type | Description |
|---|---|---|
| url | string | Or a fantasize.net /cruise/ link, or a Cruisebound sailing link |
| cabin | string | Cabin grade to price. Omit to quote balcony where sold, else the next grade. |
| sailing_id | string | A Fantasize sailing id, as returned in search results |
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Or a fantasize.net /cruise/ link, or a Cruisebound sailing link"
},
"cabin": {
"enum": [
"inside",
"oceanview",
"balcony",
"suite"
],
"type": "string",
"description": "Cabin grade to price. Omit to quote balcony where sold, else the next grade."
},
"sailing_id": {
"type": "string",
"description": "A Fantasize sailing id, as returned in search results"
}
}
}Today's report of balcony and suite cabins on cruises leaving North American ports within about 21 days, each measured against the book-ahead price for the same ship, grade and length (rebuilt every morning). Filter by departure port or region. Some late fares are dearer than booking ahead; those show a negative percent.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| region | string | |
| from_port | string | Departure port, e.g. "Seattle" or "Barcelona"; several comma-separated: "Miami,Fort Lauderdale" |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"default": 10,
"maximum": 25,
"minimum": 1
},
"region": {
"type": "string"
},
"from_port": {
"type": "string",
"description": "Departure port, e.g. \"Seattle\" or \"Barcelona\"; several comma-separated: \"Miami,Fort Lauderdale\""
}
}
}Fantasize's ranked guide to one cruise port: the most extraordinary things to do, the operator who runs each, the verified seller and price where we have one, a booking page for each, and how many sailings call there.
| Argument | Type | Description |
|---|---|---|
| port* | string | e.g. "Juneau", "Cozumel", "Santorini" |
{
"type": "object",
"required": [
"port"
],
"properties": {
"port": {
"type": "string",
"description": "e.g. \"Juneau\", \"Cozumel\", \"Santorini\""
}
}
}Report a problem you found while using these tools: a price that does not match the booking page (wrong_price), a sailing that cannot be bought (not_for_sale), a wrong route or ports (wrong_itinerary), a book_url that does not open the sailing (broken_link), results that miss or do not fit the request (irrelevant_results, missing_sailings), or duplicates. Include sailing_id when it is about one sailing, and the search you ran when it is about results. Reports carry no personal details; a person at Fantasize reads every report.
| Argument | Type | Description |
|---|---|---|
| kind* | string | |
| detail | string | What was wrong, in a sentence or two |
| search | object | The search arguments that produced the problem |
| sailing_id | string |
{
"type": "object",
"required": [
"kind"
],
"properties": {
"kind": {
"enum": [
"wrong_price",
"not_for_sale",
"wrong_itinerary",
"broken_link",
"irrelevant_results",
"missing_sailings",
"duplicate",
"other"
],
"type": "string"
},
"detail": {
"type": "string",
"description": "What was wrong, in a sentence or two"
},
"search": {
"type": "object",
"description": "The search arguments that produced the problem"
},
"sailing_id": {
"type": "string"
}
}
}Sends one email to the person's own address. Their click in that email confirms the request; only then does it reach a Fantasize cruise specialist, who replies to them by email to help plan and book the trip. Free; no account is created and nothing is charged. Takes the trip they want in a sentence or two, and optionally dates, travellers, budget, home city and the sailing ids they looked at.
| Argument | Type | Description |
|---|---|---|
| name | string | |
| what* | string | The trip they want help with, e.g. "Alaska in July 2027 from Seattle, balcony, two adults, first cruise" |
| when | string | Dates or month, e.g. "July 2027" |
| email* | string | The person's own email address, given with their consent |
| budget | string | e.g. "about $3,000 for two" |
| from_city | string | Where they travel from |
| travelers | string | e.g. "2 adults, 1 child aged 9" |
| sailing_ids | array | Fantasize sailing ids they looked at (up to 6) |
Accepts the request in plain words (q) or as fields. Searches every sailing Fantasize tracks (23 cruise lines, ~30,000 sailings, priced every night) by region, dates, departure port, ports visited, line, length, cabin and budget. Returns up to 25 sailings with the price per person (taxes and port fees in), per night and for a cabin of two, every cabin grade's price, whether the fare is low, typical or high against that sailing's usual price, the ports of call, and book_url - a link the person opens to book that exact sailing. Default ranking is best_value (furthest below its usual price).
| Argument | Type | Description |
|---|---|---|
| q | string | The person's request in plain words, e.g. "alaska in july from seattle, balcony, under $3000 for two". Read by fixed rules; the answer says how it was understood and which words were not. Any other argument given overrides what q says. |
| line | string | Cruise line, e.g. "Royal Caribbean", "NCL", "Princess", "Viking" |
| ship | string | Ship name or part of it |
| sort | string | |
| tier | string | luxury includes ultra-luxury; ultra-luxury is the top of the market only: Regent, Silversea, Seabourn, Explora Journeys (all-suite, all-inclusive) |
| cabin | string | Cabin grade to price. Omit to quote balcony where sold, else the next grade. |
| calls_at | string | A port the ship must visit, e.g. "Juneau", "Santorini", "Cozumel" |
| depart_to | string | Latest departure date, YYYY-MM-DD |
| from_port | string | Departure port, e.g. "Seattle" or "Barcelona"; several comma-separated: "Miami,Fort Lauderdale" |
| nights_max | integer |
| nights_min | integer |
| depart_from | string | Earliest departure date, YYYY-MM-DD |
{
"type": "object",
"properties": {
"line": {
"type": "string",
"description": "Cruise line, e.g. \"Royal Caribbean\", \"NCL\", \"Princess\", \"Viking\""
},
"ship": {
"type": "string",
"description": "Ship name or part of it"
},
"tier": {
"enum": [
"contemporary",
"premium",
"luxury",
"ultra-luxury",
"river"
],
"type": "string",
"description": "luxury includes ultra-luxury; ultra-luxury is the top of the market only: Regent, Silversea, Seabourn, Explora Journeys (all-suite, all-inclusive)"
},
"cabin": {
"enum": [
"inside",
"oceanview",
"balcony",
"suite"
],
"type": "string",
"description": "Cabin grade to price. Omit to quote balcony where sold, else the next grade."
},
"month": {
"type": "string",
"description": "Departure month, YYYY-MM"
},
"region": {
"type": "string",
"description": "Where the cruise goes: a region (caribbean, bahamas, alaska, mexico, mediterranean, northern-europe, european-rivers, asia, repositioning, more) or a named place it calls at (greek-islands, norwegian-fjords, canada-new-england, canary-islands, british-isles, baltic, iceland, adriatic, japan, hawaii, panama-canal, bermuda, galapagos, tahiti, arctic, antarctica, danube, rhine, douro), or any port, island, country or state we sail to (\"Santorini\", \"Maui\", \"Greece\", \"Juneau\"). cruise_options lists the regions and named places with counts."
},
"calls_at": {
"type": "string",
"description": "A port the ship must visit, e.g. \"Juneau\", \"Santorini\", \"Cozumel\""
},
"depart_to": {
"type": "string",
"description": "Latest departure date, YYYY-MM-DD"
},
"from_port": {
"type": "string",
"description": "Departure port, e.g. \"Seattle\" or \"Barcelona\"; several comma-separated: \"Miami,Fort Lauderdale\""
},
"nights_max": {
"type": "integer"
},
"nights_min": {
"type": "integer"
},
"depart_from": {
"type": "string",
"description": "Earliest departure date, YYYY-MM-DD"
}
}
}{
"type": "object",
"required": [
"email",
"what"
],
"properties": {
"name": {
"type": "string"
},
"what": {
"type": "string",
"description": "The trip they want help with, e.g. \"Alaska in July 2027 from Seattle, balcony, two adults, first cruise\""
},
"when": {
"type": "string",
"description": "Dates or month, e.g. \"July 2027\""
},
"email": {
"type": "string",
"description": "The person's own email address, given with their consent"
},
"budget": {
"type": "string",
"description": "e.g. \"about $3,000 for two\""
},
"from_city": {
"type": "string",
"description": "Where they travel from"
},
"travelers": {
"type": "string",
"description": "e.g. \"2 adults, 1 child aged 9\""
},
"sailing_ids": {
"type": "array",
"items": {
"type": "string"
},
"description": "Fantasize sailing ids they looked at (up to 6)"
}
}
}| limit |
| integer |
| month | string | Departure month, YYYY-MM |
| region | string | Where the cruise goes: a region (caribbean, bahamas, alaska, mexico, mediterranean, northern-europe, european-rivers, asia, repositioning, more) or a named place it calls at (greek-islands, norwegian-fjords, canada-new-england, canary-islands, british-isles, baltic, iceland, adriatic, japan, hawaii, panama-canal, bermuda, galapagos, tahiti, arctic, antarctica, danube, rhine, douro), or any port, island, country or state we sail to ("Santorini", "Maui", "Greece", "Juneau"). cruise_options lists the regions and named places with counts. |
| calls_at | string | A port the ship must visit, e.g. "Juneau", "Santorini", "Cozumel" |
| depart_to | string | Latest departure date, YYYY-MM-DD |
| from_port | string | Departure port, e.g. "Seattle" or "Barcelona"; several comma-separated: "Miami,Fort Lauderdale" |
| nights_max | integer |
| nights_min | integer |
| depart_from | string | Earliest departure date, YYYY-MM-DD |
| only_below_usual | boolean | Only fares measurably below their usual price |
| max_price_per_night | number | Budget per person per night, USD |
| max_price_per_person | number | Budget per person for the whole cruise, USD |
{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "The person's request in plain words, e.g. \"alaska in july from seattle, balcony, under $3000 for two\". Read by fixed rules; the answer says how it was understood and which words were not. Any other argument given overrides what q says."
},
"line": {
"type": "string",
"description": "Cruise line, e.g. \"Royal Caribbean\", \"NCL\", \"Princess\", \"Viking\""
},
"ship": {
"type": "string",
"description": "Ship name or part of it"
},
"sort": {
"enum": [
"best_value",
"lowest_price",
"lowest_per_night",
"soonest"
],
"type": "string",
"default": "best_value"
},
"tier": {
"enum": [
"contemporary",
"premium",
"luxury",
"ultra-luxury",
"river"
],
"type": "string",
"description": "luxury includes ultra-luxury; ultra-luxury is the top of the market only: Regent, Silversea, Seabourn, Explora Journeys (all-suite, all-inclusive)"
},
"cabin": {
"enum": [
"inside",
"oceanview",
"balcony",
"suite"
],
"type": "string",
"description": "Cabin grade to price. Omit to quote balcony where sold, else the next grade."
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 25,
"minimum": 1
},
"month": {
"type": "string",
"description": "Departure month, YYYY-MM"
},
"region": {
"type": "string",
"description": "Where the cruise goes: a region (caribbean, bahamas, alaska, mexico, mediterranean, northern-europe, european-rivers, asia, repositioning, more) or a named place it calls at (greek-islands, norwegian-fjords, canada-new-england, canary-islands, british-isles, baltic, iceland, adriatic, japan, hawaii, panama-canal, bermuda, galapagos, tahiti, arctic, antarctica, danube, rhine, douro), or any port, island, country or state we sail to (\"Santorini\", \"Maui\", \"Greece\", \"Juneau\"). cruise_options lists the regions and named places with counts."
},
"calls_at": {
"type": "string",
"description": "A port the ship must visit, e.g. \"Juneau\", \"Santorini\", \"Cozumel\""
},
"depart_to": {
"type": "string",
"description": "Latest departure date, YYYY-MM-DD"
},
"from_port": {
"type": "string",
"description": "Departure port, e.g. \"Seattle\" or \"Barcelona\"; several comma-separated: \"Miami,Fort Lauderdale\""
},
"nights_max": {
"type": "integer"
},
"nights_min": {
"type": "integer"
},
"depart_from": {
"type": "string",
"description": "Earliest departure date, YYYY-MM-DD"
},
"only_below_usual": {
"type": "boolean",
"description": "Only fares measurably below their usual price"
},
"max_price_per_night": {
"type": "number",
"description": "Budget per person per night, USD"
},
"max_price_per_person": {
"type": "number",
"description": "Budget per person for the whole cruise, USD"
}
}
}