Fantasize cruise finder
Server Details
Find the best-value cruise: 23 lines, ~30k sailings priced nightly, low/high vs usual, book link.
- Status
- Healthy
- Uptime
- 98.5% over 25 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 10 tools
Each tool targets a distinct purpose: price-checking a specific quote (check_price), full sailing detail (get_cruise), broad search (search_cruises), curated deals (last_minute_cruise_deals), line comparison (compare_cruise_lines), and index/port/options reference tools. The only mild overlap is between check_price, get_cruise and search_cruises, all of which surface pricing, but their descriptions clearly delineate the scenarios.
Names are consistently snake_case, with clear verb_noun patterns for the action tools (check_price, get_cruise, search_cruises, report_problem, request_trip_help). A few are noun-only (cruise_options, fare_index, port_guide) and one is adjective-heavy (last_minute_cruise_deals), but the set remains predictable and readable.
Ten tools is well-scoped for a cruise discovery/booking assistant: search, detail, comparison, deals, pricing, references, and two support tools. Each tool has a clear reason to exist and none feels redundant.
The surface covers discovery (search, options, deals), inspection (get_cruise, port_guide, fare_index, check_price), comparison, plus feedback and human-assist paths. Booking itself is delegated to book_url, and there is no availability/inventory check, but the core planning lifecycle is well covered.
Available Tools
10 toolscheck_priceIs this cruise price good?ARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Or a fantasize.net /cruise/ link, or a Cruisebound sailing link | |
| ship | No | Or the ship name ("Celebrity Beyond") with depart_date | |
| cabin | No | Cabin grade to price. Omit to quote balcony where sold, else the next grade. | |
| price | Yes | The quoted or paid fare in USD, per person for the whole cruise, taxes and port fees in | |
| sailing_id | No | A Fantasize sailing id | |
| depart_date | No | Departure date YYYY-MM-DD (with ship) | |
| price_is_for_two | No | true if price is the total for a cabin of two |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the safety profile (readOnlyHint=true, openWorldHint=false); the description goes further by disclosing the actual verdict scale (low/typical/high), the comparison baselines used (cabin's usual price, today's listed fare, 120-day low), and the returned watch_url for fare-drop email. The 120-day lookback window is genuinely useful behavioral context. It does not contradict the read-only annotation, since watch_url is a returned link rather than a mutation this tool performs.
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 purpose is front-loaded in the first clause, which is good, but everything after it is one long comma-chained run-on mixing inputs, outputs, and defaults. A reader has to re-parse the sentence to separate what goes in from what comes back.
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 seven parameters and no output schema, the description carries the return-value burden and does so: verdict, today's fare, 120-day low, a quotable paragraph, and watch_url. The default cabin behavior and price basis are also covered. It is close to complete, though the currency/per-person basis is only in the schema.
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%, so the baseline is 3, but the description adds real value by consolidating the three mutually exclusive ways to name a sailing (sailing_id, a fantasize.net /cruise/ link, or ship plus depart_date) into one sentence, which the per-parameter schema descriptions do not state as alternatives.
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 gives a concrete verb and resource ('Judge a price someone was quoted or already paid for one sailing') and scopes it to a single sailing, which implicitly separates it from aggregate siblings like fare_index. It does not name or contrast any sibling tool explicitly, so it lands at 4 rather than 5.
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: you invoke it when a person has a quoted or paid fare in hand. There is no explicit when-not guidance, no prerequisites, and no routing to alternatives such as fare_index or get_cruise, so the agent must infer the boundary between this and its siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_cruise_linesWhich cruise line is cheapest for this tripARead-onlyInspect
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?".
| Name | Required | Description | Default |
|---|---|---|---|
| line | No | Cruise line, e.g. "Royal Caribbean", "NCL", "Princess", "Viking" | |
| ship | No | Ship name or part of it | |
| tier | No | luxury includes ultra-luxury; ultra-luxury is the top of the market only: Regent, Silversea, Seabourn, Explora Journeys (all-suite, all-inclusive) | |
| cabin | No | Cabin grade to price. Omit to quote balcony where sold, else the next grade. | |
| month | No | Departure month, YYYY-MM | |
| region | No | 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 | No | A port the ship must visit, e.g. "Juneau", "Santorini", "Cozumel" | |
| depart_to | No | Latest departure date, YYYY-MM-DD | |
| from_port | No | Departure port, e.g. "Seattle" or "Barcelona"; several comma-separated: "Miami,Fort Lauderdale" | |
| nights_max | No | ||
| nights_min | No | ||
| depart_from | No | Earliest departure date, YYYY-MM-DD |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover readOnlyHint and openWorldHint; the description adds real value by disclosing the returned aggregates (sailings, ships, median/lowest price per person per night, cheapest sailing with book_url) even though no output schema exists. It does not mention rate limits or auth, but for a read-only query tool that is a minor gap.
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 tightly packed sentences, front-loaded with the core purpose and output shape, then anchored with an example question. No filler and every clause carries information.
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 12-parameter, no-required, no-output-schema tool, the description compensates well by describing the return payload and comparison scope. Minor omissions remain (how many lines it compares, any result cap), but the essentials for correct invocation are present.
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 already high (83%), so the baseline is 3, but the description synthesizes the filter parameters into a meaningful scope definition ('a region, departure port or port visited, plus dates') and notes the comparison runs at 'one cabin grade', adding interpretation beyond the raw field list.
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 verb (side-by-side compare) and resource (cruise lines) and enumerates exactly what it returns per line: sailings, ships, median/lowest price per person per night, cheapest sailing with book_url. It clearly reads as a multi-line comparison rather than a single-lookup tool, though it never names a sibling (e.g. search_cruises) to differentiate 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?
The framing 'Answers "Alaska in July: Princess or NCL?"' gives concrete context for when this tool applies, and the parenthetical '(a region, departure port or port visited, plus dates)' signals the required scope of a comparison. There is no explicit when-not guidance or named alternative, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cruise_optionsWhat can be searchedARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safe, closed-world read profile is covered. The description adds that each facet carries a count of sailings, which is behavioral-ish context, but gives no detail on response shape or size. Adequate given the low annotation burden but not rich.
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 short sentences, zero filler, front-loaded with the returned facet list. Every clause carries information.
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 no output schema and no parameters, the description must carry the return-value burden, and it enumerates the facet categories and the count field clearly. It could say a bit more about how tier or months-on-sale are structured, but it is sufficient for an agent to call the tool correctly.
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 the baseline is 4. The description rightly spends its words on what can be filtered rather than on inputs, and there is no parameter semantics gap to fill.
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 the specific resources returned (regions, cruise lines with tier, ports, months on sale) and their sailing counts, which is concrete and distinguishable from search_cruises. It lacks an explicit verb like 'list' or 'returns', leaving the action implied, but the resource set is unambiguous.
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?
'These are the values the search filters accept' implies the tool should be consulted before invoking search_cruises, which is useful context. However, it never explicitly says when to call it versus siblings, nor does it name an alternative or state prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fare_indexCruise Fare Index: are cruise prices rising or falling?ARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| cut | No | Only this breakdown (default: all) | |
| days | No | How many days of the series | |
| group | No | A series name for its daily points, e.g. "Carnival Corp", "Celebrity", "Caribbean" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only supply readOnlyHint=true and openWorldHint=false, but the description adds real behavioral context: the index is computed from Fantasize's own nightly pricing of every sailing and each sailing is compared only with its own earlier price, so new sailings and sell-outs never distort it. It also discloses that press releases are bundled into the return payload. No rate limits or pagination behavior are mentioned, keeping it out of 5 territory.
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?
Three sentences, front-loaded with the definition, then the return shape, then the drill-down instruction. The middle sentence is long and stacks five breakdown dimensions, but every clause carries information the agent needs.
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 no output schema and only three optional parameters, the description carries the burden of describing returns and does so thoroughly: overall level and change, the same broken out by company (with ticker), line, region and months to departure, plus press releases. Nothing needed to call this tool correctly is missing.
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 already 100%, so the baseline is 3, but the description adds meaning the schema does not: group values map onto the breakdown categories (company, region, lead time) with examples like "Royal Caribbean Group", "Alaska", "3-6 months out", and it notes that the company cut carries a stock ticker. It does not add anything about 'days' or 'cut' beyond the schema.
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 gives a specific verb-adjacent purpose: an index of how the price of the same cruises moves night to night, plus what it returns (overall level and change, plus breakdowns). It is unmistakably an aggregate trend tool rather than a single-cruise lookup, which implicitly separates it from check_price and search_cruises. It never names a sibling explicitly, so it stops short of a 5.
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?
The title frames the use case (are cruise prices rising or falling?) and the last sentence tells the agent how to drill down: name a group to get its daily series. There are no explicit when-not conditions or named alternatives, so it is clear context without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cruiseOne sailing in fullBRead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Or a fantasize.net /cruise/ link, or a Cruisebound sailing link | |
| cabin | No | Cabin grade to price. Omit to quote balcony where sold, else the next grade. | |
| sailing_id | No | A Fantasize sailing id, as returned in search results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and openWorldHint=false, covering the safety profile. The description adds value beyond this by disclosing that prices carry a read date, that some grades may have no listed price, and that port recommendations include verified sellers with booking pages. However, it doesn't clarify the response shape or any rate 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?
The description is a single long, comma-spliced sentence enumerating many return fields. It is front-loaded with 'Everything about one sailing' but the sprawling list of outputs makes it somewhat hard to parse; tightening would improve it.
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 read-only detail tool with no output schema, the description does a good job enumerating what is returned. However, it omits identification requirements (must supply url or sailing_id), what happens if neither is provided, and any pagination or size caveats.
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%, so baseline is 3. The cabin enum and its omission-default behavior ('quote balcony where sold, else the next grade') are documented in the schema itself, not the description, so the description adds little parameter-level meaning.
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 the specific resource (one sailing) and enumerates its contents in detail: itinerary, prices, history, alternatives, ports. It's clearly distinct from search_cruises and compare_cruise_lines, though it doesn't explicitly name a sibling to differentiate.
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?
No when-to-use guidance or alternatives named. The agent must infer that this is for retrieving full details of a single already-identified sailing versus searching. The schema (url/sailing_id) implies identification-first, but the description doesn't say so.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
last_minute_cruise_dealsLast-minute cruise deals (next 3 weeks)ARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| region | No | ||
| from_port | No | Departure port, e.g. "Seattle" or "Barcelona"; several comma-separated: "Miami,Fort Lauderdale" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint=false, but the description adds real behavioral context: data is rebuilt every morning, coverage is limited to North American ports and balcony/suite cabins, and negative percentages mean late fares cost more than booking ahead. It does not mention pagination or result volume, but adds meaningful value beyond the annotations.
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?
Front-loaded with the core scope in the first clause and no filler sentences; each sentence carries distinct information (scope, filters, price-delta semantics). Slightly dense but no waste.
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 no output schema, the description must convey what comes back; it explains that each entry compares the late fare against the book-ahead price for the same ship, grade and length, and that negative values mean a premium. It does not enumerate full return fields, leaving a modest 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?
Schema coverage is only 33% (only from_port is documented). The description mitigates this by explaining that results can be filtered by departure port or region, giving region implicit meaning, but it adds nothing for 'limit' (default 10, max 25) and gives no format hints for region. Baseline 3 given the partial compensation.
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 verb+resource+scope: a daily report of balcony and suite cabins on cruises departing North American ports within ~21 days, benchmarked against book-ahead prices. This distinguishes it from generic siblings like search_cruises or cruise_options by its narrow inventory and price-delta framing.
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?
'Filter by departure port or region' implies how to narrow results, but there is no explicit when-to-use guidance versus search_cruises or cruise_options, and no stated exclusions. Usage context is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
port_guideBest things to do at a cruise portARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| port | Yes | e.g. "Juneau", "Cozumel", "Santorini" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint and openWorldHint=false. The description adds real value beyond them by disclosing the return contents (ranked activities, operator, verified seller and price, booking page, sailing counts), which matters because there is no output schema.
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 that leads with the resource and scope, then lists contents. It is a dense run-on list but every clause describes a distinct part of the response.
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 no output schema, the description usefully enumerates what the guide returns, and the single required parameter is fully documented in the schema. Only the absence of usage routing keeps it from being 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?
Only one parameter, and schema coverage is 100% with a concrete example ('Juneau', 'Cozumel', 'Santorini'). The description adds no format or matching semantics beyond the schema, so 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?
States a specific resource - a ranked guide to one cruise port - and enumerates what it contains (activities, operators, seller/price, booking page, sailings count). This clearly separates it from the cruise-search siblings like get_cruise and search_cruises, though it never names them.
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?
No when-to-use, when-not-to-use, or alternative routing is given. An agent must infer from the siblings alone that this is the port-destination lookup rather than a cruise search.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_problemTell Fantasize something is wrongAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| detail | No | What was wrong, in a sentence or two | |
| search | No | The search arguments that produced the problem | |
| sailing_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the safety profile (not read-only, not idempotent, not destructive, closed-world). The description adds real behavioral context beyond that: reports carry no personal details and a human at Fantasize reads every report, telling the agent the submission is human-reviewed and privacy-safe. It does not describe what response or confirmation comes back.
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 verb and the scope lead, the enum-to-meaning list follows, and the param guidance and privacy note close it out. It is dense but every clause carries information (category definitions, param conditions, human review). Slightly long for a single run-on sentence but no filler.
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?
No output schema exists, and none is strictly needed for a fire-and-forget report, but the description covers submission categories, required context, privacy, and the review pipeline. The only gap is what the agent should expect after calling (confirmation, no return value), which is minor.
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?
With only 50% schema description coverage, the description compensates well: it maps nearly every enum value of 'kind' to a plain-language meaning and explains when to populate sailing_id versus the nested search object. Only the 'other' enum value and the detail field's expected content are left implicit.
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 verb+resource (report a problem found while using these tools) and enumerates the exact problem kinds, which separates it cleanly from the read-only search/inspection siblings. An agent knows immediately this is the feedback channel, not a lookup tool.
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?
The description tells the agent when to use each kind (wrong price vs unbookable sailing vs broken link vs irrelevant results) and gives conditional guidance: include sailing_id when it concerns one sailing, the search arguments when it concerns results. It does not state exclusions or alternatives, but the enumerated categories make the trigger conditions unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_trip_helpAsk a Fantasize cruise specialist to help plan a tripAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| what | Yes | The trip they want help with, e.g. "Alaska in July 2027 from Seattle, balcony, two adults, first cruise" | |
| when | No | Dates or month, e.g. "July 2027" | |
| Yes | The person's own email address, given with their consent | ||
| budget | No | e.g. "about $3,000 for two" | |
| from_city | No | Where they travel from | |
| travelers | No | e.g. "2 adults, 1 child aged 9" | |
| sailing_ids | No | Fantasize sailing ids they looked at (up to 6) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations, which only declare readOnlyHint=false and openWorldHint=true. The description discloses the double opt-in mechanism (an email to the user's own address, their click confirms it), that no account is created and nothing is charged, and that a human specialist replies by email — all material side-effect and privacy context for a non-read-only 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?
Three front-loaded sentences: behavior and confirmation flow first, then cost/consent guarantees, then the accepted inputs. No filler, though the final sentence is a partial restatement of the schema.
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 an 8-parameter, no-output-schema side-effect tool, the description covers the flow, cost, consent, and input expectations well. It is slightly thin on what the caller gets back after the request is sent (e.g. a confirmation response), but nothing critical for correct invocation is missing.
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 88%, so the schema already documents email, what, when, budget, from_city, travelers and sailing_ids. The description adds only a loose summary of the same fields and their optionality, and omits `name` entirely, so it does not meaningfully exceed the schema.
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 action (send a help request email to a Fantasize cruise specialist) and a specific resource (trip planning request), which is clearly distinct from sibling search/info tools like search_cruises and get_cruise. An agent can tell this is a lead-handoff tool, not a data-retrieval one.
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 rather than stated: the description explains the confirmation flow and that it's free, which hints at when a user would want it, but it never says when to pick this over search_cruises, compare_cruise_lines, or cruise_options. No exclusions or prerequisites (e.g. 'use only after the user has looked at sailings') are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_cruisesFind and rank cruises with today's pricesARead-onlyInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | 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 | No | Cruise line, e.g. "Royal Caribbean", "NCL", "Princess", "Viking" | |
| ship | No | Ship name or part of it | |
| sort | No | best_value | |
| tier | No | luxury includes ultra-luxury; ultra-luxury is the top of the market only: Regent, Silversea, Seabourn, Explora Journeys (all-suite, all-inclusive) | |
| cabin | No | Cabin grade to price. Omit to quote balcony where sold, else the next grade. | |
| limit | No | ||
| month | No | Departure month, YYYY-MM | |
| region | No | 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 | No | A port the ship must visit, e.g. "Juneau", "Santorini", "Cozumel" | |
| depart_to | No | Latest departure date, YYYY-MM-DD | |
| from_port | No | Departure port, e.g. "Seattle" or "Barcelona"; several comma-separated: "Miami,Fort Lauderdale" | |
| nights_max | No | ||
| nights_min | No | ||
| depart_from | No | Earliest departure date, YYYY-MM-DD | |
| only_below_usual | No | Only fares measurably below their usual price | |
| max_price_per_night | No | Budget per person per night, USD | |
| max_price_per_person | No | Budget per person for the whole cruise, USD |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover readOnly/openWorld, so the description carries the rest — and it does: data freshness ('priced every night'), result cap ('up to 25 sailings'), exact price semantics (taxes and port fees in, per person, per night, for a cabin of two), the low/typical/high-vs-usual signal, and the default best_value ranking. With no output schema, this return-value disclosure is exactly the missing behavioral context.
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?
Front-loaded with the action and scope, then the return payload and default ranking; the dense pricing sentence is long but every clause describes a distinct output field that no output schema covers. Slightly overlong but no filler sentences.
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 an 18-parameter, zero-required tool with no output schema, the description covers purpose, scope, input modes, default ranking, and return contents well. Gaps are minor: no mention of pagination beyond the 25 cap, no error/empty-result behavior, and no sibling routing.
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 78%, so the schema already documents most filters; the description's list of filterable dimensions largely restates them. It adds marginal value by noting the 'up to 25 sailings' cap (matching limit.maximum), though it doesn't mention the default limit of 10, so it neither compensates for nor extends the schema much.
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 verb and resource ('Searches every sailing Fantasize tracks ... by region, dates, departure port, ports visited, line, length, cabin and budget') and quantifies scope (23 cruise lines, ~30,000 sailings). An agent can tell this apart from get_cruise (single sailing) or compare_cruise_lines without opening any schema.
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?
Explains the two input modes ('the request in plain words (q) or as fields') and the override precedence, which is useful call-time guidance. However it never names an alternative sibling or states when NOT to use this tool (e.g. use check_price for one fare, cruise_options for browsing regions), so routing is left to inference.
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.
1 tool update
- Added
fare_index
2 tool updates
- Changed
compare_cruise_lines1 field changed- changed
Input schema / properties / region / descriptionPrevious value: -"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). cruise_options lists every value with its count."New value: +"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."
- Changed
search_cruises1 field changed- changed
Input schema / properties / region / descriptionPrevious value: -"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). cruise_options lists every value with its count."New value: +"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."
3 tool updates
- Added
check_price - Changed
compare_cruise_lines3 fields changed- changed
Input schema / properties / region / descriptionPrevious value: -"Where the cruise goes: caribbean, bahamas, alaska, mexico, mediterranean, northern-europe, european-rivers, asia, repositioning, hawaii, bermuda, panama-canal, south-america, antarctica, australia, ... (every region with sailings on sale)"New value: +"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). cruise_options lists every value with its count." - added
Input schema / properties / tier / descriptionAdded value: +"luxury includes ultra-luxury; ultra-luxury is the top of the market only: Regent, Silversea, Seabourn, Explora Journeys (all-suite, all-inclusive)" - changed
Input schema / properties / tier / enumPrevious value: -[ - "contemporary", - "premium", - "luxury", - "river" -]New value: +[ + "contemporary", + "premium", + "luxury", + "ultra-luxury", + "river" +]
- Changed
search_cruises3 fields changed- changed
Input schema / properties / region / descriptionPrevious value: -"Where the cruise goes: caribbean, bahamas, alaska, mexico, mediterranean, northern-europe, european-rivers, asia, repositioning, hawaii, bermuda, panama-canal, south-america, antarctica, australia, ... (every region with sailings on sale)"New value: +"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). cruise_options lists every value with its count." - added
Input schema / properties / tier / descriptionAdded value: +"luxury includes ultra-luxury; ultra-luxury is the top of the market only: Regent, Silversea, Seabourn, Explora Journeys (all-suite, all-inclusive)" - changed
Input schema / properties / tier / enumPrevious value: -[ - "contemporary", - "premium", - "luxury", - "river" -]New value: +[ + "contemporary", + "premium", + "luxury", + "ultra-luxury", + "river" +]
1 tool update
- Added
request_trip_help
4 tool updates
- Changed
compare_cruise_lines1 field changed- changed
Input schema / properties / region / descriptionPrevious value: -"Where the cruise goes: caribbean, bahamas, alaska, mexico, mediterranean, northern-europe, european-rivers, asia, repositioning, hawaii, bermuda, panama-canal, south-america, antarctica, australia, ... (cruise_options lists them all with counts)"New value: +"Where the cruise goes: caribbean, bahamas, alaska, mexico, mediterranean, northern-europe, european-rivers, asia, repositioning, hawaii, bermuda, panama-canal, south-america, antarctica, australia, ... (every region with sailings on sale)"
- Changed
get_cruise1 field changed- changed
Input schema / properties / sailing_id / descriptionPrevious value: -"From search_cruises"New value: +"A Fantasize sailing id, as returned in search results"
- Changed
report_problem1 field changed- changed
Input schema / properties / search / descriptionPrevious value: -"The search_cruises arguments that produced the problem"New value: +"The search arguments that produced the problem"
- Changed
search_cruises1 field changed- changed
Input schema / properties / region / descriptionPrevious value: -"Where the cruise goes: caribbean, bahamas, alaska, mexico, mediterranean, northern-europe, european-rivers, asia, repositioning, hawaii, bermuda, panama-canal, south-america, antarctica, australia, ... (cruise_options lists them all with counts)"New value: +"Where the cruise goes: caribbean, bahamas, alaska, mexico, mediterranean, northern-europe, european-rivers, asia, repositioning, hawaii, bermuda, panama-canal, south-america, antarctica, australia, ... (every region with sailings on sale)"
1 tool update
- Changed
search_cruises1 field changed- added
Input schema / properties / qAdded value: +{ + "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.", + "type": "string" +}
1 tool update
- Added
report_problem
6 tool updates
- First observed
compare_cruise_lines - First observed
cruise_options - First observed
get_cruise - First observed
last_minute_cruise_deals - First observed
port_guide - First observed
search_cruises
Related MCP Connectors
Search cruises, check fares and price history, look up cabins, ships, lines and ports.
Search cruises sold to the UK market, with prices in pounds and links to every sailing.
Cruise sailings, itineraries, weekly fare history, port capacity and the Cruise Price Index.
Search Carnival and Royal Caribbean cruises, compare fare history and find Viator port experiences.
Related MCP Servers
AlicenseNot gradedqualityCmaintenanceQuery cruise sailings, fares, price drops & ship specsMIT- 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

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- AlicenseAqualityBmaintenanceTravel award search: compare cash vs points on hotels, flights & cars, cents-per-point, and book319MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.