Cruisify
Server Details
Search cruises sold to the UK market, with prices in pounds and links to every sailing.
- Status
- Healthy
- Uptime
- 100.0% over 30 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 5 tools
Each tool targets a distinct resource and action: lookup of a single cruise, keyword/filtered cruise search, and three distinct browse facets (lines, departure ports, destinations). The boundary between search_cruises and the list_* tools is spelled out in the descriptions (cruises vs. counts of cruises), so misselection is unlikely.
Uniform snake_case verb_noun pattern throughout (get_cruise, list_cruise_lines, list_departure_ports, list_destinations, search_cruises). The verb choice matches the operation type consistently.
Five tools is a tight, well-scoped set for a cruise discovery/search surface: one detail, one search, three browse facets. No tool looks redundant or like filler.
Read-only discovery coverage is solid: search, single-cruise detail, and browsing by line, port and destination, with pagination and pricing handled. Minor gaps exist for deeper lookups (e.g. a cruise line's own detail page or a ship-level listing), but agents can reach that data through search_cruises or get_cruise.
Available Tools
5 toolsget_cruiseGet one cruiseARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | A Cruisify cruise page URL, as search_cruises returns it | |
| slug | No | A cruise's slug: the last part of its URL |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | The cruise's Cruisify page, which shows every date and the current price |
| kind | Yes | ocean, river or expedition |
| ship | Yes | The ship's name |
| route | Yes | Where it starts and ends: "Round trip from Southampton", "Southampton to New York" |
| title | Yes | The cruise's title |
| nights | Yes | Length in nights |
| sailings | Yes | Every future sailing |
| itinerary | Yes | Day by day, with consecutive days in one place as one row |
| cruise_line | Yes | The cruise line's name |
| description | Yes | A short description, or null |
| destinations | Yes | The destinations it visits, the main one first |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, so the safety profile is covered; the description adds the useful behavioral note that sailings may have no price and the response explains why, signalling a nullable field the agent should not treat as an error. The rest of the return-value summary overlaps with the output schema, so it does not push higher.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the payload summary and closed with the input rule. No filler and nothing repeated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present the description need not document return shape, and annotations carry the safety profile, so the essentials are covered. The only gap is the unspecified behavior when both or neither of url/slug are provided, which matters because zero parameters are marked required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are already described there, so the baseline is 3. The description adds only the 'or' relationship — that either a full URL or a slug suffices — without addressing what happens when both or neither are supplied, even though required is empty.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names the resource ('one cruise') and enumerates exactly what comes back: day-by-day itinerary, every future sailing with price and booking link, and the Cruisify page. That level of specificity makes it immediately distinguishable from search_cruises and the list_* siblings, which are enumeration tools rather than single-entity detail fetches.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly ties invocation to the output of search_cruises ('Give the url ... as search_cruises returns it'), which tells the agent this is the follow-up detail call. It does not state when-not to use it (e.g. versus search_cruises for browsing), but for a detail tool the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_cruise_linesList cruise linesBRead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| cruise_lines | Yes | The cruise lines, by name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds one genuine behavioral nuance — Cruisify pages exist only 'where there are some' — implying the field can be absent, but says nothing about ordering, completeness of the cruise counts, or scope limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. The trailing clause 'and their Cruisify pages where there are some' is grammatically awkward and slightly harder to parse than needed, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value detail is not the description's burden, and there are no parameters or nested objects to document. Annotations cover the safety profile, leaving only the missing routing guidance as a gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter semantics for the description to explain; baseline 4 applies. Schema coverage is 100% and no compensation is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (cruise lines we cover) and enumerates the payload: ships, upcoming cruise counts, and Cruisify page links. It is clearly a catalog-listing tool and distinguishable from get_cruise or search_cruises, though it never explicitly contrasts itself with those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no stated alternative, and no condition under which an agent should prefer this over search_cruises or list_destinations. The catalog nature only implies usage; nothing in the text routes the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_departure_portsList departure portsARead-onlyIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| uk_only | No | true: UK ports only, the departures for no-fly cruises |
Output Schema
| Name | Required | Description |
|---|---|---|
| ports | Yes | The departure ports, by name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this a read-only, idempotent, non-destructive, closed-world listing, so the safety profile is covered. The description adds that entries are annotated with UK flags, cruise counts, and page links, which is useful payload context, but it says nothing about ordering, pagination, or freshness/'we hold' implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence covering resource, enrichment, and the filter, with the parameter instruction placed last. It is slightly run-on with stacked clauses, but nothing is wasted and the core purpose is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and annotations cover the safety profile; the one parameter is documented. What remains thin is routing guidance versus the sibling list tools, but for a simple single-flag listing this is close to complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and there is only one boolean parameter, so the schema already carries the semantics. The description's 'uk_only for UK ports only (no-fly cruises)' largely restates the schema text, adding only the no-fly framing. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (departure ports) and scope (the cruises we hold), and states what accompanies each entry: UK marking, upcoming cruise counts, and a Cruisify page link. That is enough to separate it from list_destinations, list_cruise_lines, and search_cruises, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied via the parameter note 'Set uk_only for UK ports only (no-fly cruises)'. There is no statement of when to prefer this tool over search_cruises or get_cruise, and no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_destinationsList destinationsBRead-onlyIdempotentInspect
Every destination we know, ocean or river, with how many upcoming cruises we hold for each and its Cruisify page where there is one.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| destinations | Yes | Every destination, by name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds genuine non-annotation context about what the payload contains (cruise counts, page links), but says nothing about ordering, pagination, or cost of the call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is front-loaded with the resource and then the returned fields, with no filler. The trailing clause 'where there is one' is slightly awkward but conveys a real conditional about missing page links.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless list tool with a full output schema, the description covers what is needed: the universe of entities returned and the shape of each entry. Nothing essential is missing, though ordering and completeness guarantees are unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters and schema coverage is 100%, so there is nothing for the description to disambiguate. Baseline 4 applies for a no-arg operation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (destinations, both ocean and river) and the payload the agent gets back: upcoming cruise counts per destination plus a Cruisify page link where available. It is clearly distinct from list_cruise_lines and list_departure_ports, though it never explicitly names or contrasts those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of alternatives like search_cruises or list_departure_ports, and no stated context for choosing this enumeration over a filtered search. The agent must infer the trigger entirely from the resource name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_cruisesSearch cruisesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | ocean or river cruises only | |
| sort | No | departure (default), price, price_per_night, nights (shortest first) or newest | |
| query | No | 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. | |
| ships | No | Ship names or slugs | |
| cursor | No | next_cursor from the previous page. It holds only the page number, so send it with that page's applied_filters | |
| months | No | Departure months, YYYY-MM | |
| no_fly | No | true: only cruises leaving from a UK port | |
| date_to | No | Latest departure date, YYYY-MM-DD | |
| date_from | No | Earliest departure date, YYYY-MM-DD | |
| nights_max | No | Longest length, in nights | |
| nights_min | No | Shortest length, in nights | |
| round_trip | No | true: round trips only; false: one-way only | |
| cruise_lines | No | Cruise line names, slugs or short names: "P&O", "fred-olsen" | |
| destinations | No | Destination names or slugs: "Caribbean", "norwegian-fjords" (list_destinations has them all) | |
| max_price_gbp | No | Highest price per person, in pounds | |
| departure_ports | No | Departure port names or slugs: "Southampton" (list_departure_ports has them all) |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | This page's number, 20 cruises to a page |
| total | Yes | How many cruises match |
| results | Yes | This page's cruises |
| by_month | Yes | Matching cruises per departure month (YYYY-MM), counted without any months or dates asked for |
| freshness | Yes | fresh: up to date; stale: some dates or prices may be out of date; cache_only: from the cruises we already held |
| search_url | Yes | This search on Cruisify |
| landing_url | No | The Cruisify page for this search, when there is one |
| next_cursor | No | The cursor for the next page, with applied_filters; absent on the last page we give (page 10 at most) |
| not_understood | Yes | What was asked for but left out of the search, and why |
| applied_filters | Yes | The search as it ran, in search_cruises' own fields. Send it back, with next_cursor as cursor, for the next page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only and idempotent annotations, the description discloses many important behavioral traits: UK-market scope, unmatched terms returned in not_understood, free-text parsing with structured fields taking precedence, 20 results per page, GBP pricing with basis and checked date, and a 10-page cursor limit. These are exactly the operational details an agent needs before calling the tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well structured: it starts with the search scope, then query behavior, then return format, then pagination. Every sentence carries useful information, with no filler or redundant restatement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 16-parameter search tool with no required fields, an output schema, and safety annotations, the description is complete enough to call correctly. It covers filtering, free-text behavior, matching failures, return contents, pricing currency, and pagination mechanics, so the agent is not left guessing on material behaviors.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, but the description adds meaningful cross-parameter semantics: names or slugs are accepted, unmatched values surface in not_understood, query is interpreted into structured fields, and structured fields win. It also explains the cursor paging loop, though some of these details are also repeated from the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: search cruises sold to the UK market, with a clear list of searchable dimensions. It is easy to distinguish from sibling lookup tools such as list_destinations and from get_cruise by its search and pagination scope, though it does not explicitly name those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through the filter list and paging instructions, but the description does not explicitly say when to use this search versus get_cruise or the list_* helpers. The query precedence rule and paging advice are helpful, but alternative-selection guidance is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- Changed
get_cruise2 fields changed- added
Output schema / properties / sailings / items / properties / book_viaAdded value: +{ + "description": "Who book_url sends the visitor to: the cruise line, or Trip.com where it sells this exact sailing", + "enum": [ + "cruise_line", + "trip.com" + ], + "type": "string" +} - changed
Output schema / properties / sailings / items / requiredPrevious value: -[ - "departure_date", - "return_date", - "sold_out", - "price", - "price_note", - "book_url" -]New value: +[ + "departure_date", + "return_date", + "sold_out", + "price", + "price_note", + "book_url", + "book_via" +]
- Changed
search_cruises1 field changed- changed
Output schema / properties / results / items / properties / book_url / descriptionPrevious value: -"Where to book: the priced sailing, or the cruise line when there is no price"New value: +"Where to book: the priced sailing (with the cruise line, or Trip.com where it sells that sailing), or the cruise line when there is no price"
2 tool updates
- Changed
get_cruise1 field changed- changed
Output schema / properties / url / descriptionPrevious value: -"The cruise's Cruisify page: give this link to the user"New value: +"The cruise's Cruisify page, which shows every date and the current price"
- Changed
search_cruises2 fields changed- changed
Output schema / properties / not_understood / descriptionPrevious value: -"What was asked for but left out of the search: tell the user"New value: +"What was asked for but left out of the search, and why" - changed
Output schema / properties / results / items / properties / url / descriptionPrevious value: -"The cruise's Cruisify page: give this link to the user"New value: +"The cruise's Cruisify page, which shows every date and the current price"
5 tool updates
- First observed
get_cruise - First observed
list_cruise_lines - First observed
list_departure_ports - First observed
list_destinations - First observed
search_cruises
Related MCP Connectors
Find bookable sea and river cruises; ports, ships, cruise lines and an advisor opinion.
Find the best-value cruise: 23 lines, ~30k sailings priced nightly, low/high vs usual, book link.
Cruise sailings, itineraries, weekly fare history, port capacity and the Cruise Price Index.
Search premium cruise fares by line, ship, nights, date, and rate.
Related MCP Servers
AlicenseNot gradedqualityCmaintenanceQuery cruise sailings, fares, price drops & ship specsMIT
siloah-travel-mcpofficial
AlicenseNot gradedqualityFmaintenanceSearch 70,000+ cruise voyages, 678 ships, and 62 cruise lines worldwide. No API key needed, no installation required — just paste the URL. Includes RAG-powered knowledge search for ship dining, facilities, cabins, and port guides. 30 languages supported.3MIT- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to search upcoming sailings by ship, line, port, region, date, length and fare, view day-by-day itineraries, track each sailing's weekly fare history, measure monthly ship capacity and berths at a port, and read the weekly Cruise Price Index. All tools are read-only and return structured JSON behind OAuth sign-in or an API key.MIT
- AlicenseNot gradedqualityBmaintenanceProvides read-only access to search cruise sailings, compare fares and price history, and look up cabins, ships, cruise lines, ports, excursions, and drink packages.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.