Gangwaze Cruise Tools
Server Details
Search cruises, check fares and price history, look up cabins, ships, lines and ports.
- Status
- Healthy
- Uptime
- 100.0% over 23 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 14 tools
Each tool targets a distinct resource and action; the two excursion tools (getPortExcursions vs getSailingExcursions) and cabin tools (getShipCabins vs getCabinDetail) are explicitly scoped to single-port vs whole-itinerary and grouped vs specific cabin, making misselection unlikely.
All 14 tools use camelCase with a predictable verb_noun or verb_noun phrase pattern (get..., compare..., search...). There are no mixed conventions or ambiguous name styles.
14 tools cover search, comparison, pricing, line/ship/cabin profiles, ports, excursions, weather, dress code, and drinks without obvious redundancy. The count is well-scoped for a cruise research server.
The surface broadly covers cruise research, but lacks dedicated tools for onboard dining, entertainment/activities, loyalty programs, or general gratuities. These are minor gaps that the ship and line editorial fields may partially address.
Available Tools
14 toolscompareSailingsCompare sailingsARead-onlyIdempotentInspect
Compare 2–3 specific sailings side by side: dates, ports, price and price per night, price verdict against the six-month average, ship age and size, family suitability, rating with review count and CDC inspection score. Takes sailing ids from searchCruises.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | ||
| cabin | No | Cabin types to price: inside, oceanview, balcony, suite. Omit for all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and non-openWorld, so the safety profile is covered. The description adds the valuable behavioral detail of what data the comparison surfaces, which is the main thing an agent needs to judge usefulness.
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 verb and scope, then a dense but purposeful enumeration of compared attributes. The second sentence on id provenance is short and earns its place; the field list is long but each item is 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, the description correctly takes on the burden of describing return content, and it does so thoroughly. The only gap is the cabin parameter's effect on pricing and the 2–3 id limit, which remain schema-only.
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 50% and both parameters already carry inline descriptions in the schema. The description only reinforces that ids come from searchCruises and says nothing about the cabin filter or the 2–3 id cardinality constraint, so it adds little beyond the schema baseline.
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 (compare) plus the exact resource (2–3 specific sailings) and enumerates the compared dimensions: dates, ports, price, price per night, verdict vs six-month average, ship age/size, family suitability, rating, CDC score. It is clearly distinct from the sibling searchCruises, which it identifies as the source of ids.
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?
"Takes sailing ids from searchCruises" establishes the prerequisite workflow step and implies this is the follow-up to a search. It gives no explicit when-not-to-use or alternative comparison tool, but the context is clear and no competing sibling exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getBestTimeToVisitBest time to visitARead-onlyIdempotentInspect
Month-by-month average temperature and rainfall for a cruise port, region or destination, with the warmest and driest months. A place with very different sub-regions returns a list to choose from.
| Name | Required | Description | Default |
|---|---|---|---|
| place | Yes | A port, region or destination, e.g. "Alaska" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and a closed-world scope, so the safety profile is covered. The description adds real behavioral value beyond them: it warns that a place with very different sub-regions returns a list instead of a single answer, which changes how an agent must handle the response. It does not mention rate limits or data freshness, 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?
Two sentences, no filler. The core output content is front-loaded and the edge-case caveat follows it, so an agent gets the essential meaning first.
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 one parameter, full schema coverage, and a complete annotation set, the description covers what the tool returns and the one non-obvious response shape. It lacks any note on result limits or data recency, 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 coverage is 100% and the schema already defines 'place' with an example, so the baseline would be 3. The description goes further by classifying what counts as a place ('port, region or destination') and by explaining that ambiguous place names resolve to a list of candidates, which adds interpretive meaning for the one required parameter.
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 states exactly what the tool returns: month-by-month average temperature and rainfall for a cruise port, region, or destination, plus warmest/driest months. That is specific enough for an agent to separate it from data-oriented siblings like getPortGuide or searchCruises. It stops short of naming any sibling, so it does not earn 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?
Usage is implied rather than stated: an agent can infer this is the tool for climate/seasonality questions, but there is no explicit 'use this when... instead of...' routing against getPortGuide or searchCruises. The note about sub-region lists is edge-case behavior, not guidance on when to choose this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getCabinDetailCabin detailARead-onlyIdempotentInspect
One specific cabin by ship and room number: deck, side and position, category with size and how many it sleeps, connecting cabin, known issues (obstructed view, noise, long walk) and what cruisers who stayed there said. "No issues recorded" is not a guarantee of none.
| Name | Required | Description | Default |
|---|---|---|---|
| ship | Yes | Ship name, e.g. "Allure of the Seas" | |
| cabin | Yes | Cabin number, e.g. "9318" or "D126" |
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 still adds real value by enumerating the returned attributes and by warning that '"No issues recorded" is not a guarantee of none' — an interpretive caveat an agent scoping a recommendation genuinely needs.
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, zero filler. The scope statement leads, the returned fields follow, and the caveat is deliberately placed last rather than buried mid-sentence.
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 correctly carries the burden of describing the response and does so thoroughly, plus a useful caveat. The only gap is behavior when the ship or cabin does not exist (error vs empty result), which an agent might want to know.
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 both parameters carry examples ('Allure of the Seas', '9318' or 'D126'). The description restates that lookup is by ship and room number but adds no new constraint or format detail, so the baseline of 3 is correct.
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 ('One specific cabin by ship and room number') and then enumerates exactly what is returned (deck, side/position, category, size, sleeps, connecting cabin, known issues, cruiser reports). The emphasis on 'one specific cabin' implicitly separates it from the list-style sibling getShipCabins.
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 makes the use case clear (look up a single cabin identified by ship and cabin number), so usage is implied, but it never names an alternative or an explicit when-not condition. An agent must infer that getShipCabins is the list-level counterpart rather than being told.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getCruiseLineProfileCruise line profileBRead-onlyIdempotentInspect
One cruise line: who it is best and not for, descriptions by traveler type, ratings with review counts, attribute ratings, tier (mainstream, premium, luxury, river) and fleet size.
| Name | Required | Description | Default |
|---|---|---|---|
| line | Yes | Cruise line name, e.g. "Carnival" or "Seabourn" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and a closed-world lookup, so the safety profile is covered. The description usefully adds the scope of returned data (ratings with review counts, tier taxonomy, fleet size), but says nothing about name-matching behavior, miss handling, or freshness of ratings.
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 with the resource stated first and the return contents listed after the colon. Every clause carries information, though the comma-separated inventory is slightly list-heavy.
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 does the right thing by summarizing what comes back, which is adequate for a simple one-parameter lookup. It still omits what happens when the name does not resolve and whether partial names are accepted, which an agent would need for reliable invocation.
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 the single 'line' parameter is documented with examples ("Carnival", "Seabourn"). The description contributes only the phrase 'one cruise line', adding no format, matching, or normalization detail beyond the schema — baseline 3.
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 implied (fetch) and resource (one cruise line), and enumerates the payload contents: traveler-type descriptions, ratings, tier, fleet size. It is implicitly distinguishable from the sibling getShipProfile because it scopes to the line rather than a ship, but it never names or contrasts with that sibling 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?
There is no when-to-use guidance, no statement of prerequisites, and no mention of alternatives such as getShipProfile for vessel-level data. Usage is only inferable from the description of returned content.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getDressCodeDress codeARead-onlyIdempotentInspect
A cruise line's dress code: overall style, daytime and evening rules, formal nights and how often, jeans/shorts/swimwear rules, venue rules and theme nights.
| Name | Required | Description | Default |
|---|---|---|---|
| line | Yes | Cruise line name, e.g. "Royal Caribbean" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false and destructiveHint=false, so safety is covered. Because there is no output schema, the description carries the burden of describing what the response contains, and it does so concretely (overall style, daytime/evening rules, formal-night frequency, jeans/shorts/swimwear and venue rules).
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 compact sentence, front-loaded with the resource and followed by the content list. It is a noun fragment rather than a sentence, but every clause maps to actual returned content, so little 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?
For a read-only, single-parameter lookup with no output schema, the main risk is the agent not knowing what comes back — the enumeration of returned content addresses that. An explicit statement that only a cruise line name is needed to call it would close the remaining 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 100% for the single 'line' parameter, including an example ("Royal Caribbean"), so the baseline is 3. The description adds no syntax or format detail beyond what the schema already provides.
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 (a cruise line's dress code) and enumerates its sub-topics — daytime/evening rules, formal nights, venue rules, theme nights — which clearly separates it from getCruiseLineProfile or getShipProfile. It is a content inventory rather than a verb+resource statement, but the resource and scope are 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?
There is no guidance on when to call this versus siblings such as getCruiseLineProfile (which likely also carries line-level policy). No prerequisites, no exclusions, no indication that the caller should already know the cruise line.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getDrinkPackagesDrink packagesARead-onlyIdempotentInspect
Beverage-package details by cruise line: package names, maximum drink value, daily limits and gratuity.
| Name | Required | Description | Default |
|---|---|---|---|
| cruiseline | No | Cruise line name; omit for all lines |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description still adds real value by disclosing the shape of the returned data (drink value caps, daily limits, gratuity), which matters because no output schema exists.
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?
One sentence, no filler, with the resource and the returned-content list front-loaded. Every clause earns its place by telling the agent what it gets 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?
For a no-required-param read-only lookup with no output schema, the description covers both scope and the fields returned, and annotations handle the safety semantics. The only gap is the absence of any routing guidance among the twelve sibling lookup tools.
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 single parameter has 100% schema description coverage ('Cruise line name; omit for all lines'), so the schema fully carries parameter meaning. The description's 'by cruise line' phrasing is consistent with it but adds nothing beyond the schema; a baseline 3 is appropriate.
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 a specific resource (beverage/drink packages) and enumerates the returned fields (package names, max drink value, daily limits, gratuity), which clearly separates it from siblings like getDressCode or getCabinDetail. It lacks an explicit verb, but the scope 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?
There is no explicit when-to-use or when-not-to-use statement, and no alternative sibling is named. Usage is only implied by the 'by cruise line' framing plus the schema's 'omit for all lines' note, which is enough to infer a filtered lookup but not documented guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getPortExcursionsShore excursionsARead-onlyIdempotentInspect
Bookable shore excursions and resort day passes in a cruise port, with price, duration, rating and a link. Pass activity (e.g. "scuba", "ATV tours") to narrow to that kind of excursion, with its total, and minPrice/maxPrice to narrow by price. To narrow an earlier answer by price, call again with the same port and activity plus the price. For every port of one sailing, use getSailingExcursions.
| Name | Required | Description | Default |
|---|---|---|---|
| port | Yes | Port name or slug, e.g. "Cozumel" | |
| activity | No | A kind of activity, e.g. "scuba", "ATV tours", "snorkeling"; omit for everything | |
| maxPrice | No | Highest "from" price per person in US dollars, e.g. 145 for "under $145"; omit for no limit | |
| minPrice | No | Lowest "from" price per person in US dollars, e.g. 100 for "over $100"; omit for no limit |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered; the description adds value by disclosing the result payload shape (price, duration, rating, link) despite there being no output schema, plus the refinement workflow of re-issuing the same query with added price bounds. It does not mention result counts, ranking, or rate limits, which keeps it short of a 5.
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?
Four tight sentences, front-loaded with what the tool returns, then filtering parameters, then the refinement pattern, then the sibling alternative. Each sentence carries distinct information and nothing is repeated from the schema or annotations.
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 carries the payload description job and does it (price, duration, rating, link), and it covers the port/activity/price workflow plus the sibling alternative. Minor gaps remain: no indication of result volume, ordering, or truncation behavior for a broad port query.
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% with per-parameter descriptions (units, examples, omit-behavior), so the baseline is 3. The description adds interaction semantics the schema cannot express: that narrowing by price requires repeating the same port and activity parameters, clarifying cross-call parameter coupling.
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 (bookable shore excursions and resort day passes in a cruise port) and enumerates the returned attributes (price, duration, rating, link). It explicitly draws the boundary against the closest sibling by naming getSailingExcursions for the multi-port case, so an agent can route without opening either 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?
Gives explicit when-to-use conditions: pass activity to narrow by kind, minPrice/maxPrice to narrow by price, and re-call with the same port+activity to refine an earlier answer by price. It also names the alternative (getSailingExcursions) and the exact condition that selects it, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getPortGuidePort guideARead-onlyIdempotentInspect
Guide to a cruise port: what it is like, where it is, things to do, beaches, shopping, terminals, safety score, wifi and car rental.
| Name | Required | Description | Default |
|---|---|---|---|
| port | Yes | Port name, e.g. "Cozumel" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description adds useful context about what the guide contains, but it does not disclose return format, response size, or any behavioral constraints beyond what annotations provide.
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 listing the guide's contents. Every item earns its place by telling the agent what information is returned, with 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?
For a simple one-parameter read-only lookup with no output schema, the description adequately enumerates the returned guide's coverage areas, which compensates for the missing output schema. It could be slightly more complete by noting the return format, but no critical calling information 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?
There is only one parameter, and the schema describes it fully ('Port name, e.g. "Cozumel"') at 100% coverage. The description adds no parameter-level detail such as naming conventions or common aliases, so the baseline score of 3 applies when the schema carries the full burden.
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 ('cruise port') and enumerates the guide's coverage areas, which implicitly distinguishes it from siblings like getPortExcursions by focusing on general port information rather than bookable tours. It is clear what the tool returns, though it does not explicitly name an alternative.
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 by the content list (use it to learn about a port's amenities, safety, and logistics), but there is no explicit when-to-use guidance or mention of when another sibling tool would be better. No prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getPriceDropsCurrent price dropsCRead-onlyIdempotentInspect
The biggest current cruise price drops: cabin type, current and average price, percent dropped, sail date and a booking link.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered by structured data. The description adds nothing behavioral beyond that: no default limit, no sort order for 'biggest', no refresh/pagination behavior, and no statement of what makes a drop qualify as 'biggest'.
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?
One compact sentence with the resource front-loaded and no filler, which is efficient. However, the bulk of the sentence is a return-field list rather than purpose or usage, so the space is not optimally spent.
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 the returned fields (cabin type, prices, percent dropped, sail date, booking link), which covers the return shape. It still omits sorting, default limit, and any caveats needed to call a ranked-list 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 single 'limit' parameter has 0% schema description coverage, and the description never mentions it, its bounds (1-10), or its default when omitted. The word 'biggest' hints at sorting but does not connect it to the limit parameter, so the description fails to compensate for the schema gap.
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 (current cruise price drops) with a clear intent of surfacing the biggest drops. It distinguishes itself implicitly from getPriceHistory by the 'current' framing, but never names a sibling or contrast explicitly, so an agent must infer the boundary itself.
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 prerequisites, and no mention of alternatives such as getPriceHistory or searchCruises. An agent gets a topic but no routing logic for choosing this tool over the price-related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getPriceHistoryIs this a good price?ARead-onlyIdempotentInspect
Judge one sailing's current fare: six-month price history, average, percent above or below it, a verdict, and whether it is on today's price-drop list. Takes a sailing id from searchCruises.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | A sailing id from searchCruises results, e.g. "carnival-breeze:2026-09-21:5" | |
| cabin | No | Cabin types to price: inside, oceanview, balcony, suite. Omit for all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds real value beyond that by disclosing the analytic outputs (six-month history, average, percent deviation, verdict, price-drop membership), which matters since no output schema exists.
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 tight sentences with the payload front-loaded and zero filler; the prerequisite sentence follows the outcome sentence logically.
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 carries the return-value burden and does so by enumerating the five things the agent gets back. Combined with annotations covering safety and 100% schema coverage on inputs, nothing material is missing for correct invocation.
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 both parameters (id and cabin) are already documented, including the cabin enum and the id format example. The description only adds provenance for the id ("from searchCruises") and says nothing about the cabin filter, so baseline 3 is appropriate.
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?
Specific verb (judge) and resource (one sailing's current fare), with an enumeration of exactly what the tool returns. It explicitly scopes to a single sailing, which cleanly separates it from sibling getPriceDrops (a list) and compareSailings (multi-sailing comparison).
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 names the source of the required id ("from searchCruises"), which establishes the intended call order and prerequisites. It gives clear context but stops short of naming an explicit alternative or a when-not-to-use condition, e.g. against compareSailings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getSailingExcursionsExcursions for a sailingARead-onlyIdempotentInspect
Shore excursions for every port of one sailing in one call, in itinerary order: hours ashore at each port, up to three picks that fit the time ashore (with an hour to spare before all aboard) and each port's total. Pass a sailing id from searchCruises, or ship plus sail date. activity and minPrice/maxPrice narrow every port. Use this instead of calling getPortExcursions once per port.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Sail (departure) date, YYYY-MM-DD; with ship, when there is no sailing id | |
| ship | No | Ship name, e.g. "Allure of the Seas"; with date, when there is no sailing id | |
| activity | No | A kind of activity, e.g. "scuba", "ATV tours", "snorkeling"; omit for everything | |
| maxPrice | No | Highest "from" price per person in US dollars, e.g. 145 for "under $145"; omit for no limit | |
| minPrice | No | Lowest "from" price per person in US dollars, e.g. 100 for "over $100"; omit for no limit | |
| sailingId | No | A sailing id from searchCruises results, e.g. "carnival-breeze:2026-09-21:5" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower; the description still adds real substance by disclosing the selection logic (up to three picks per port that fit the time ashore with an hour to spare before all aboard) and the per-port outputs (hours ashore, totals). It stops short of describing pagination or failure modes.
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?
Dense but front-loaded: what it returns, then the selection guarantee, then how to supply a sailing, then filters, then the sibling alternative. Every clause carries information, though the description packs several ideas into three long 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?
With no output schema, the description does the work of explaining the return shape (hours ashore, up to three picks, per-port totals) and the cross-port filter behavior. Remaining gaps are minor for a read-only, idempotent lookup tool.
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 description goes further by clarifying that activity and minPrice/maxPrice narrow EVERY port rather than a single port, which is a cross-parameter behavior the schema does not express. The sailing-id-vs-ship/date relationship is also restated usefully.
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 (shore excursions), the scope (every port of one sailing, one call, itinerary order) and explicitly distinguishes itself from getPortExcursions. An agent can identify it without opening the 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?
Gives both routing ('Use this instead of calling getPortExcursions once per port') and input alternatives (a sailing id from searchCruises, or ship plus sail date). When-to-use and which sibling to avoid are both explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getShipCabinsA ship's cabinsARead-onlyIdempotentInspect
A ship's cabins grouped by type (inside, ocean view, balcony, suite): categories, cabin counts, size range, how many they sleep, and the line's guarantee categories.
| Name | Required | Description | Default |
|---|---|---|---|
| ship | Yes | Ship name, e.g. "Voyager of the Seas" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), but with no output schema the description usefully discloses the returned payload: cabin categories, counts, size range, occupancy, and guarantee categories. It omits pagination/ordering behavior, keeping it from a 5.
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 naming the resource and grouping before enumerating fields; no filler or repetition of annotations. The field list is dense but each item is informative.
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, single-parameter lookup with full annotation coverage, the definition gives the agent enough: what is queried and what is returned. Only the missing sibling differentiation and any result ordering limits keep it below 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 a single required 'ship' parameter fully documented with an example in the schema. The description adds no parameter-level meaning beyond that, so the baseline of 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 verb (get) and resource (a ship's cabins) plus the grouping dimension and returned fields, so the agent knows exactly what comes back. It does not differentiate itself from the sibling getCabinDetail, which is the closest candidate for confusion, 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?
There is no when-to-use or when-not-to-use guidance. Nothing tells the agent to prefer this over getCabinDetail for per-cabin information, and no prerequisites (e.g., a valid ship identifier source) are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getShipProfileShip profileBRead-onlyIdempotentInspect
One ship: year built and refurbished, size, guests and crew, cabin counts, rating and attribute scores, family suitability, CDC inspection score, venues and editorial.
| Name | Required | Description | Default |
|---|---|---|---|
| ship | Yes | Ship name, e.g. "Carnival Breeze" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world false, and non-destructive behavior. The description adds scope ('One ship') and enumerates returned fields, but does not add auth, error, or rate-limit context beyond the safety profile already covered.
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 compact sentence that enumerates fields without waste. It is not front-loaded with a verb, but remains efficient for a simple lookup tool.
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 simple one-ship read with strong annotations and a fully documented parameter, the field enumeration usefully compensates for the absence of an output schema. Missing usage routing and sibling differentiation keep it from a 5.
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% for the single ship parameter, including an example. The description does not add any parameter syntax or format details, so the baseline score of 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?
It states the resource and scope ('One ship') and enumerates the profile fields returned, distinguishing it from line-wide or sailing tools. However, it lacks an explicit verb and does not name a sibling alternative to reinforce the distinction.
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 explicit guidance on when to use this tool versus siblings like getCruiseLineProfile or getShipCabins. Usage is only implied by the resource name and field list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchCruisesSearch cruisesARead-onlyIdempotentInspect
Search upcoming cruise sailings by destination, region, dates, length (nights "lo:hi"), cruise line, ship, departure port, ports of call, cabin type, budget, family fit and more. Pass the full filter set; omitted fields are unfiltered. Returns the match count, cheapest fare, top lines, the 10 soonest-departing sailings (results are always soonest first; each has an id for compareSailings/getPriceHistory) and a link to the full results on gangwaze.com.
| Name | Required | Description | Default |
|---|---|---|---|
| cabin | No | Cabin-type keys, lowercase, from exactly: "inside", "oceanview", "balcony", "suite". Multiple values are OR-ed. Do not use any other spelling or capitalization (e.g. not "Suite") — unrecognised values are rejected. | |
| ports | No | Ports of call, exact catalogue names. OR-ed together. The tool resolves each against the real catalogue and returns suggestions for any name it does not recognise. | |
| price | No | INSIDE-CABIN TOTAL price for the whole cruise, per person, in whole US dollars, as a colon-delimited INCLUSIVE range "lo:hi", e.g. "100:900" for $100 to $900. Open-ended ranges are allowed: "500:" or ":1500". Use this for a total budget ("under $1,500"); for a budget stated per day / per night use `pricePerNight` instead. Always the inside-cabin price, never other cabin types. Do NOT pass a bare number or a hyphenated range. null means no constraint. | |
| ships | No | Ship names, exact catalogue values. OR-ed together. The tool resolves each against the real catalogue and returns suggestions for any name it does not recognise. | |
| vibes | No | Itinerary character, from exactly: "relaxing", "adventure", "nature", "shopping". OR-ed together. Map only what the user says ("a relaxing beach week" -> ["relaxing"]; "scenery and wildlife" -> ["nature"]); never infer a vibe from a destination. Empty array means no constraint. | |
| family | No | Family-suitability of the SHIP as a colon-delimited INCLUSIVE range "lo:hi" over a 0-100 score. "Family", "with the kids", "teens", "multi-generational" -> "60:"; "adults only", "couples retreat", "no kids", "quiet ship" -> ":40". Never quote the score to the user. Do NOT pass a bare number or a hyphenated range. null means no constraint. | |
| nights | No | Cruise length as a colon-delimited INCLUSIVE range "lo:hi", e.g. "7:7" for exactly 7 nights, "5:9" for 5 to 9 nights. Open-ended ranges are allowed: "5:" (5+ nights) or ":9" (up to 9 nights). Do NOT pass a bare number like "7" and do NOT use a hyphen like "5-9" — both are invalid and the filter will be rejected. null means no constraint. | |
| safety | No | Safety score as a colon-delimited INCLUSIVE range "lo:hi" over a 0-100 scale, e.g. "80:100" for safety score 80 and up. Open-ended ranges are allowed: "80:" or ":50". Do NOT pass a bare number or a hyphenated range. null means no constraint. | |
| endDate | No | Latest sail date, as "YYYY-MM-DD" (e.g. "2027-06-30"). null means no upper bound. | |
| regions | No | Sub-region names, exact catalogue values (e.g. "Eastern Caribbean", "Western Mediterranean"). OR-ed together. The tool resolves each against the real catalogue and returns suggestions for any name it does not recognise — it is not case-sensitive but must be a real region. | |
| lineType | No | Cruise-line tier, from exactly: "mainstream", "premium", "luxury", "river". OR-ed together. Use for "luxury cruise", "something upscale", "the big mainstream lines". A NAMED line ("Seabourn") goes in `cruiselines`, never here — this field is for when no line is named. Empty array means no constraint. | |
| shipSize | No | Ship size as PASSENGER CAPACITY (number of guests), as a colon-delimited INCLUSIVE range "lo:hi". Map words to these bands: "small ship" / "intimate" / "boutique" / "not a floating city" -> ":1500"; "mid-size" -> "1500:3000"; "big ship" / "mega-ship" / "lots to do on board" -> "3000:". A stated number works too: "under 1,000 passengers" -> ":1000". The fleet runs 100 to 7,600 guests. Open-ended ranges are allowed. Do NOT pass a bare number or a hyphenated range. null means no constraint. | |
| shipYear | No | Year the ship was BUILT, as a colon-delimited INCLUSIVE range "lo:hi", e.g. "2015:" for ships built in 2015 or later — this is how to answer "a newer ship". The catalogue spans 1998-2024. Open-ended ranges are allowed: "2015:" or ":2005". Note this is the build year, NOT the sail year — for when the cruise departs use startDate/endDate. Do NOT pass a bare number or a hyphenated range. null means no constraint. | |
| startDate | No | Earliest sail date, as "YYYY-MM-DD" (e.g. "2027-03-01"). null means no lower bound. | |
| tripShape | No | Whether the cruise returns to where it started. "round_trip" for sailings that end at their departure port — use this when someone does not want to book two flights. "one_way" for sailings that end somewhere else, which includes repositioning cruises. Exactly those two strings; null means no constraint. About one in five sailings is one-way. | |
| cruiselines | No | Cruise line names, exact catalogue values (e.g. "Carnival Cruise Line", not "Carnival"). OR-ed together. The tool resolves each against the real catalogue and returns suggestions for any name it does not recognise. | |
| destination | No | A single top-level region name, exact catalogue value (e.g. "Caribbean", "Europe", "Alaska") — NOT a sub-region like "Mediterranean" or "Eastern Caribbean" (those go in `regions`). Must be a real catalogue value; the tool returns suggestions if it is not recognised. null means no constraint. | |
| departureDays | No | Weekday the cruise departs, from exactly: "mon", "tue", "wed", "thu", "fri", "sat", "sun". OR-ed together. "Weekend getaway" / "leave on the weekend" -> ["fri","sat"], and set `nights` to ":4" unless the user gave a length. A named day ("sails on a Saturday") -> that day. A short cruise on its own never implies a weekend. Empty array means no constraint. | |
| pricePerNight | No | INSIDE-CABIN price PER NIGHT, per person, in whole US dollars, as a colon-delimited INCLUSIVE range "lo:hi" — e.g. ":100" for "under $100 a day", "80:120" for $80 to $120 a night. Use this whenever the user states a budget per day, per night or per person per day; use `price` for a total. Divide nothing yourself — pass the per-night figure the user said. Do NOT pass a bare number or a hyphenated range. null means no constraint. | |
| departurePorts | No | Departure/embarkation port names, exact catalogue values. OR-ed together. The tool resolves each against the real catalogue and returns suggestions for any name it does not recognise. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false. The description adds valuable behavioral detail beyond that: omitted filters remain unfiltered, results are always soonest first, and the response contains the match count, cheapest fare, top lines, 10 soonest sailings with IDs, and a gangwaze.com link. It does not cover rate limits or auth prerequisites, but the annotations carry the safety profile.
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 three tight sentences with no wasted wording. It front-loads the search purpose and filter breadth, then immediately explains filtering semantics and return behavior. Dense but appropriate for a 20-parameter search tool.
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, so the description must explain return values, and it does: match count, cheapest fare, top lines, 10 soonest sailings, ordering, IDs for follow-up tools, and a full-results link. Combined with the fully documented input schema and read-only annotations, an agent has everything needed 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?
Schema description coverage is 100%, so the schema already documents every parameter in detail. The description mentions broad filter categories and the nights "lo:hi" format, but it does not add meaning beyond the schema's per-field documentation. A baseline score of 3 is appropriate when the schema does the heavy lifting.
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 states a specific verb and resource: "Search upcoming cruise sailings". It enumerates the scope of filters and the return shape, and names compareSailings/getPriceHistory as follow-up tools for the returned IDs. An agent can distinguish this search tool from the sibling detail/profile tools without opening their schemas.
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 gives clear usage context: pass the full filter set, omitted fields are unfiltered, and results are always soonest first. It does not explicitly state when not to use this tool or name an alternative search tool, so it falls short of a full when/when-not/alternatives statement.
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
getPortExcursions3 fields changed- added
Input schema / properties / activityAdded value: +{ + "description": "A kind of activity, e.g. \"scuba\", \"ATV tours\", \"snorkeling\"; omit for everything", + "maxLength": 80, + "type": "string" +} - added
Input schema / properties / maxPriceAdded value: +{ + "description": "Highest \"from\" price per person in US dollars, e.g. 145 for \"under $145\"; omit for no limit", + "maximum": 100000, + "minimum": 0, + "type": "number" +} - added
Input schema / properties / minPriceAdded value: +{ + "description": "Lowest \"from\" price per person in US dollars, e.g. 100 for \"over $100\"; omit for no limit", + "maximum": 100000, + "minimum": 0, + "type": "number" +}
- Added
getSailingExcursions
13 tool updates
- First observed
compareSailings - First observed
getBestTimeToVisit - First observed
getCabinDetail - First observed
getCruiseLineProfile - First observed
getDressCode - First observed
getDrinkPackages - First observed
getPortExcursions - First observed
getPortGuide - First observed
getPriceDrops - First observed
getPriceHistory - First observed
getShipCabins - First observed
getShipProfile - First observed
searchCruises
Related MCP Connectors
Cruise sailings, itineraries, weekly fare history, port capacity and the Cruise Price Index.
Find bookable sea and river cruises; ports, ships, cruise lines and an advisor opinion.
Search premium cruise fares by line, ship, nights, date, and rate.
Search cruises sold to the UK market, with prices in pounds and links to every sailing.
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.