Gangwaze
Server Details
Explore cruises with Gangwaze. Search upcoming sailings by destination, dates, cruise line, ship, cabin type and budget; compare selected sailings; and review available fare history and price drops. Look up ships, cabin categories and specific cabins, cruise-line profiles, dress codes, beverage packages, port guides, shore excursions and monthly climate averages. Results include source links and cruise information cards. Prices and coverage depend on available data. Booking, payment, cancellation and reservation changes are not exposed by the current tools.
- Status
- Healthy
- Uptime
- 100.0% over 42 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- Gangwaze
TDQS
Scored across 17 tools
Each tool targets a clearly distinct cruise-research object or action, and the descriptions explicitly resolve the likely overlaps: getSailingExcursions vs getPortExcursions, getShipProfile vs getDeckPlan/getShipPosition/getCruiseDirector, and compareSailings vs getPriceHistory. An agent should be able to select the right tool without guessing.
The set is consistently camelCase and mostly uses predictable get-prefixed names. compareSailings and searchCruises are minor deviations from the get_ pattern, but the convention remains readable and predictable.
Seventeen tools are slightly above the ideal compact range but justified by the broad cruise domain: search, pricing, ships, cabins, ports, excursions, cruise-line policies, and live position. Each tool maps to a distinct planning question and does not feel redundant.
The surface covers the core cruise-research lifecycle well: finding and comparing sailings, judging fares, inspecting ships/cabins/lines, checking ports and excursions, and live ship position. Minor gaps remain, such as no browse/list tools for destinations, lines, or ships, and no booking or full day-by-day itinerary tool, but agents can largely work around these via searchCruises and external links.
Available Tools
17 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.
getCruiseDirectorCruise directorARead-onlyIdempotentInspect
Who is the cruise director on a Carnival or Royal Caribbean ship today, on a date or on one sailing, with who is next; or which ship a named director is on and where next. With a sailing (sailingId, or ship plus sail date) it also links that sailing's roll call page, where cruisers booked on it meet. From Gangwaze's own schedule, which can change.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | A date or sail date, YYYY-MM-DD; omit for today | |
| ship | No | Ship name, e.g. "Carnival Mardi Gras" | |
| director | No | Cruise director name, e.g. "Cory Rogers"; when no ship is asked about | |
| 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 declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds genuinely new context beyond them: the data provenance ('From Gangwaze's own schedule, which can change') warns the agent results are volatile, and it discloses a secondary output (the sailing's roll call page link).
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 primary question, and each sentence carries distinct information (lookups, roll call side effect, data source caveat). The middle clause 'with who is next' and the semicolon-joined alternatives are dense enough to slow parsing, so it stops short of 5.
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 zero required parameters, the description carries the return-value burden, and it does describe what comes back: a director name, the next director, a ship, the next ship, and a roll call link. It does not say whether multiple matches can be returned (e.g. several ships for one director), which leaves a small gap for a 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 explaining the combination semantics — that 'ship plus sail date' is an alternative way to identify a sailing — and by implying the director parameter is for the case where no ship is being asked about, which the schema does not spell out as an exclusivity rule.
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 exact resource (cruise director) and the two lookup directions: director-by-ship/date/sailing and ship-by-director-name. It also scopes the lines covered (Carnival, Royal Caribbean), which no sibling tool touches. The phrasing is a question rather than a verb+resource statement and the clause 'with who is next' is slightly opaque, keeping it below 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?
It clearly delineates the input modes: a date or one sailing for the forward lookup, and the director name for the reverse lookup ('when no ship is asked about' appears in the schema). It also states the extra condition that a sailingId or ship+sail date unlocks the roll call link. No explicit exclusions or sibling routing are given, so not a 5.
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.
getDeckPlanDeck planARead-onlyIdempotentInspect
Where things are on a ship, from its deck plans: whether a ship has a venue or facility and which deck it is on (pass venue, e.g. "pizza", "theater", "Windjammer"), with forward/midship/aft and port/starboard; what is on one deck (pass deck, e.g. "10"); or, with neither, the ship's decks with a few venues each. Every answer links the deck plan pages. Venue records are not complete: a venue that isn't listed is not recorded, not missing.
| Name | Required | Description | Default |
|---|---|---|---|
| deck | No | A deck, e.g. "10" or "6A" | |
| ship | Yes | Ship name, e.g. "Allure of the Seas" | |
| venue | No | A venue or kind of venue, e.g. "pizza", "main dining room", "bars" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, closed-world behavior, so the bar is lower. The description still adds real value by disclosing that every answer links deck plan pages and, importantly, that venue records are incomplete — an unlisted venue means unrecorded, not missing.
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?
Purpose is front-loaded and every clause carries information: the modes, example values, the link guarantee, and the completeness caveat. The opening sentence is long and heavily parenthetical, which slightly hurts scanability but avoids 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?
Given only three flat parameters and no output schema, the description covers the mode selection, the kind of answer returned, and the key data-quality caveat. The remaining gap is the combined-parameter case (venue plus deck), which an agent may reasonably need 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 coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema: venue accepts a kind of venue ("bars"), and the response adds forward/midship/aft and port/starboard positioning. The one gap is not stating what happens when both ship, deck, and venue are supplied together.
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 (deck plans) and verb-like behavior (locate venues/facilities and their deck positions) with three explicit query modes. An agent can immediately distinguish this from getShipCabins or getShipProfile 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?
Explicitly describes the three invocation modes: pass venue, pass deck, or pass neither, each with an example value ("pizza", "theater", "10"). It does not name a sibling tool to prefer for cabin-specific questions, so the routing to alternatives is left implicit.
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.
getShipPositionShip positionARead-onlyIdempotentInspect
Where a ship is right now: in port (and when it leaves), at sea between two ports (how far across, next arrival), or between sailings, with the stops coming up, approximate coordinates, and links to its tracker map and sailing. Estimated from the sailing's schedule and charted route, not a live GPS or AIS feed: exact at each port call, estimated between ports. Times are port local time.
| Name | Required | Description | Default |
|---|---|---|---|
| ship | Yes | Ship name, e.g. "Icon of the Seas" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already declaring readOnly/idempotent, the description still adds substantial context: data is derived from schedule and charted route rather than live GPS/AIS, it is exact at port calls and estimated in transit, and times are port-local. This is precisely the kind of accuracy caveat an agent needs before presenting the result to a user.
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?
Content is front-loaded with the core answer and the accuracy caveat follows immediately. The first sentence is dense with three parenthetical cases but every clause carries information; nothing is redundant.
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, yet the description still tells the agent what comes back (upcoming stops, approximate coordinates, tracker and sailing links) and how reliable it is. That is complete for a single-parameter lookup.
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 ('ship') and the schema documents it fully at 100% coverage, including an example. The description adds no additional parameter meaning, so it sits at the baseline for well-covered schemas.
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 opens with a specific verb-phrase and resource ('Where a ship is right now') and then enumerates the three distinct states the tool resolves: in port, at sea, between sailings. This is unmistakably different from siblings like getShipProfile or searchCruises, so an agent can route to it without inspecting 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?
The scenario is clear — use this when you need the ship's current location and upcoming stops. There is no explicit when-not or named alternative, but for a single-purpose lookup tool the implied context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getShipProfileShip profileARead-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. For whether a ship has a venue and which deck it is on, use getDeckPlan; for where it is right now, getShipPosition; for its cruise director, getCruiseDirector.
| 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?
The annotations already declare readOnlyHint, idempotentHint, non-destructive behavior, and closed-world scope, so the safety profile is covered. The description adds useful behavioral scope by listing the profile fields returned, including editorial content and CDC inspection data, though it does not discuss permissions or response formatting.
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 two sentences: the first front-loads the tool purpose and data scope, and the second routes the agent to the right alternatives. Every sentence earns its place with no redundant restatement of the name or title.
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 profile tool with no output schema, the description is complete: it enumerates the returned data categories and points to sibling tools for related questions. The annotations cover safety behavior, and no critical invocation detail 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?
The schema has 100% description coverage and already documents the single 'ship' parameter with an example, so the schema does the heavy lifting. The description adds no additional syntax or naming guidance beyond what the schema 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 opens with 'One ship:' and then enumerates the exact profile data returned, making the verb+resource purpose unmistakable. It also explicitly distinguishes this tool from getDeckPlan, getShipPosition, and getCruiseDirector, so an agent can select 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?
It names three alternative sibling tools and gives the precise condition for each: venue/deck questions go to getDeckPlan, current location goes to getShipPosition, and cruise director goes to getCruiseDirector. This is explicit when-to-use and when-not-to-use guidance.
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.
1 tool update
- Added
getCruiseDirector
1 tool update
- Added
getShipPosition
1 tool update
- Added
getDeckPlan
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
Publisher details
- Operator
- Gangwaze Inc. · Publisher source
- Operator website
- https://gangwaze.com
- Vendor relationship
- First-party · Publisher source
- Documentation
- https://gangwaze.com/ai-agents
- Trust center
- https://gangwaze.com/privacy-policy
- Restrictions
- Without a key: 100 tool calls per hour per IP address. With a key: 2,000 per hour by default. Building something that needs more? Email hello@gangwaze.com with what you're building and your expected volume, and we'll issue a key. · Publisher source
Related MCP Connectors
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.
Find bookable sea and river cruises; ports, ships, cruise lines and an advisor opinion.
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
- AlicenseNot gradedqualityBmaintenanceProvides read-only access to search cruise sailings, compare fares and price history, and look up cabins, ships, cruise lines, ports, excursions, and drink packages.MIT

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
Glama MCP Gateway
Add one secure layer between your agents and this server.