Honee – cruise · honeefy
Server Details
Find bookable sea and river cruises; ports, ships, cruise lines and an advisor opinion.
- Status
- Healthy
- Uptime
- 99.9% over 29 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 7 tools
Each tool targets a clearly distinct purpose: find_cruises searches live offers, show_offers displays recommendations, advise gives an opinion on one offer, and cruise_line_profile, ship_profile, port_info, and booking_facts provide separate informational lookups. The descriptions explicitly state what each tool does NOT do, eliminating overlap.
Names consistently use snake_case and loosely follow a pattern where action tools start with verbs (find_cruises, show_offers, advise) and information tools use noun phrases (cruise_line_profile, port_info, ship_profile, booking_facts). The bare verb 'advise' and the lack of a uniform verb_noun pattern are minor deviations.
With 7 tools, the set is well-scoped for a cruise search and consulting assistant. Each tool earns its place by covering a distinct capability—search, display, advisory opinion, and profiles for lines, ships, ports, and booking facts—without redundancy.
The surface covers the core discovery and advisory workflow: searching cruises, recommending and displaying offers, consulting on lines/ships/ports, and verifying booking safety. Minor gaps include no dedicated tool to list all cruise lines or retrieve cabin-level availability/pricing, though these are partly addressed by find_cruises and the external booking link.
Available Tools
7 toolsadviseAdvisor's opinion on one offerARead-onlyIdempotentInspect
Asks the provider's cruise advisor for a short, honest opinion on ONE offer from find_cruises: overall fit, or which cabin category or fare suits the travellers. Use it ONLY when the user asks about ONE specific offer ('is this right for me', 'which cabin', 'which fare') -- not after every find_cruises and never for a whole list. Quote the opinion as the advisor's. It does NOT search, book or compare several offers; it is limited to a few calls per consultation.
| Name | Required | Description | Default |
|---|---|---|---|
| focus | No | What the opinion should focus on. | |
| handle | No | Consultation handle returned by a previous call (structuredContent.handle). Pass it on every call so wishes are remembered; omit it on the very first call. | |
| language | No | Language of the answer. Defaults to the provider's language. | |
| cruise_id | Yes | cruise_id of an offer returned by find_cruises. | |
| travellers | No | Optional short description of the travel party, e.g. 'couple, first cruise'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and non-destructive, so the safety profile is covered; the description adds genuinely new behavior: a per-consultation call budget ('limited to a few calls') and the requirement to attribute the output as the advisor's. It stops short of describing how the opinion is returned or how the handle drives follow-up state, which keeps it below 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?
Every sentence carries distinct load: purpose, trigger, exclusion, attribution rule, call budget. The scope constraint ('ONE offer') is front-loaded and there is 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?
There is no output schema, and the description covers what matters most: what the tool returns conceptually, that it must be quoted as the advisor's, and its call-frequency limit. It omits how the returned handle should be threaded into subsequent calls, a small gap against a five-parameter tool with stateful follow-up.
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: cruise_id must be an offer produced by find_cruises, focus is implicitly enumerated via 'overall fit, or which cabin category or fare', and the mention of a 'consultation' contextualises the handle parameter's continuity role.
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 ('asks the provider's cruise advisor for a short, honest opinion on ONE offer from find_cruises') and explicitly bounds the subject to a single offer. It is immediately distinguishable from find_cruises (search) and other profile siblings by naming what it is not: a searcher, booker, or comparator.
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 triggers ('is this right for me', 'which cabin', 'which fare') and equally explicit exclusions ('not after every find_cruises', 'never for a whole list'). The agent needs no inference to decide between this and find_cruises.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
booking_factsWho books, who protects the paymentARead-onlyIdempotentInspect
Returns the provider's own statement on booking: who the tour operator is, who acts as agent, how the customer's payment is protected (insolvency cover), how payment and cancellation work -- plus links to the legal pages. Use it when the user asks whether booking here is safe, who they are contracting with, or how payment is protected. It does NOT give legal advice and returns nothing if the provider has not published these facts.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | No | Consultation handle returned by a previous call (structuredContent.handle). Pass it on every call so wishes are remembered; omit it on the very first call. | |
| language | No | Language of the answer. Defaults to the provider's language. |
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 structurally. The description adds real behavioral context beyond that: the tool may return nothing when facts are unpublished, and it disclaims legal advice. It doesn't say how the facts are sourced or aged, 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?
Front-loaded with the return payload, then usage, then caveats — a sensible ordering with no filler sentences. It is a dense run-on sentence, but every clause carries distinct information, so it stays efficient rather than bloated.
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 takes on the burden of describing returns and does so by enumerating the fact categories the tool surfaces. Combined with usage triggers and the empty-result caveat, an agent has everything needed to call it 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%, and both parameters (handle, language) are documented in the schema itself, including the handle's carry-forward semantics. The description adds nothing about either parameter, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (returns) plus specific resource (the provider's own statement on booking), with the returned content enumerated: operator identity, agency role, insolvency cover, payment and cancellation terms, legal page links. An agent can distinguish this from ship_profile, cruise_line_profile, and advise without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use triggers are given ('whether booking here is safe, who they are contracting with, or how payment is protected'), plus an explicit exclusion ('does NOT give legal advice') and an edge-case behavior ('returns nothing if the provider has not published these facts'). That is when, when-not, and empty-result handling in one pass.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cruise_line_profileCruise line profileARead-onlyIdempotentInspect
Returns the consulting profile of a cruise line: who it suits, who it suits less, its style and fleet. Use it when the user asks which cruise line fits them or what a line is like. It does NOT return prices, offers or booking conditions.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | No | Consultation handle returned by a previous call (structuredContent.handle). Pass it on every call so wishes are remembered; omit it on the very first call. | |
| language | No | Language of the answer. Defaults to the provider's language. | |
| cruise_line | Yes | Cruise line name, e.g. 'MSC Cruises'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=true, idempotent=true, destructive=false and closed-world, so the safety profile is covered. The description adds useful scope information about what the response contains and explicitly what it does not return, though it says nothing about the stateful handle/session continuity that a caller must maintain.
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: purpose and return contents first, then usage trigger, then the exclusion. Every clause earns its place and nothing is padded.
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?
There is no output schema, so the description carries the burden of describing return content, and it does so adequately by naming the profile facets. Combined with a fully documented schema and annotation-covered safety, an agent has everything needed to call this 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 handle, language and cruise_line are already fully documented in the schema, including the handle carry-forward rule. The description adds no parameter-level detail beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (returns the consulting profile of a cruise line) and enumerates the payload (who it suits, style, fleet). It is clearly distinct from sibling ship_profile by operating on a line rather than a ship, but it never names siblings to sharpen 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?
Gives an explicit trigger ('when the user asks which cruise line fits them or what a line is like') plus a negative boundary that routes the agent to show_offers/booking_facts by excluding prices, offers and booking conditions. No inference required to pick this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_cruisesFind bookable cruisesARead-onlyIdempotentInspect
Searches the live, bookable sea and river cruise offers of cruise · honeefy (booked through honeepot GmbH) for a destination, a travel period and a travel party. Prices and availability are read from the provider's booking system at the time of the call and change several times a day. It fits questions about this provider's cruise offers, prices, dates and availability, and when the user wants to see, compare or book its cruises. Requires adults, period (or from_date/to_date) and destination — if any is missing, unusable or not a region this provider can search, the result lists a question for it and no search runs; ask the user, then call again with the same handle. For river cruises pass cruise_type='river' (a river name such as 'Danube' is recognised too). Sea cruises are shown WITHOUT a flight package by default; pass flight='with' to get the flight packages instead. Returns a summary plus up to 10 offers with cruise_id, ship, cruise line, dates, nights, price with currency (per person; for families the cabin total for the whole party where the provider computes it) and the booking link. Where the provider supports it, availability is checked LIVE for the top offers and each says whether it is confirmed; sold-out ones are removed. The list is a SAMPLE of the provider's matches: the result says how many exist and which cruise lines have sailings -- never conclude that a line is not offered because it is not listed; pass cruise_line to look for it. It does NOT show anything to the user, book, hold or price cabins, know availability beyond what it returns, or search by price alone. If you are recommending cruises, call show_offers ONCE afterward with the cruise_id values of your recommendation (3-5). Never invent offers that are not in the result.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many offers to return as data (3-10, default 10). The result also carries `total` and `links.all` (every match on the provider's search page). | |
| ports | No | Ports, islands or countries that must ALL be on the route (start, a stop or the end), e.g. ['Barbados', 'St. Lucia'] or the port cities ['Bridgetown', 'Castries'] -- an island/country entry matches any of its ports on the route. Names are matched in English; a translated name may find nothing, try the English or the specific port city instead. | |
| adults | No | Number of adults travelling. | |
| flight | No | 'without' (default): cruise only. 'with': the provider's flight packages. | |
| handle | No | Consultation handle returned by a previous call (structuredContent.handle). Pass it on every call so wishes are remembered; omit it on the very first call. | |
| period | No | Travel period as free text, e.g. 'summer 2027', 'October 2027', '2027-06-01 to 2027-06-30'. | |
| to_date | No | Latest departure, ISO date. Alternative to period. | |
| language | No | Language of the answer. Defaults to the provider's language. | |
| from_date | No | Earliest departure, ISO date. Alternative to period. | |
| nights_max | No | Maximum nights. Only if the user names a trip length; below 4 nights asks for short cruises first. | |
| nights_min | No | Minimum nights. Only if the user names a trip length. | |
| cruise_line | No | Cruise line(s) by name, e.g. 'MSC' or 'MSC, AIDA' (comma-separated). The search is filtered AT THE PROVIDER, so use it to look for a line the default list does not show. | |
| cruise_type | No | 'ocean': sea cruises. 'river': river cruises (Danube, Rhine, Moselle, Nile, ...). Omit it to derive it from the destination. | |
| destination | No | Region, country, sea or river in any language, e.g. 'Mediterranean', 'Norwegian fjords', 'Caribbean', 'Danube'. For a river cruise on any river pass 'river cruise'. | |
| children_ages | No | Age of each child at travel time. A child without an age is not searched for. | |
| departure_port | No | A single port that must be on the route (start, stop or end), e.g. 'Barcelona'. For several required ports use `ports` instead. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/safe, but the description adds substantial behavior the annotations cannot: prices and availability are read live and change several times a day, availability is checked live for top offers with sold-out ones removed, the list is only a sample so absence must not be read as unavailability, and the handle must be echoed to retain wishes. This is exactly the extra context the annotation bar asks for.
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 and prerequisites are front-loaded and nearly every sentence carries operational weight (handle reuse, sample caveat, show_offers sequencing, exclusions). It is still one dense unbroken block of roughly 300 words with no visual structure, which makes the constraints harder to scan than they need to be.
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 16 parameters, no output schema, and no required fields, the description compensates fully: it enumerates the returned fields (cruise_id, ship, cruise line, dates, nights, price with currency, booking link), explains the total/links.all summary, the sample-vs-total distinction, live availability confirmation, and the missing-parameter question flow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3; the description still adds cross-parameter meaning the schema does not, e.g. cruise_type='river' derivation and river-name recognition, flight='with' overriding the no-flight default, and cruise_line being filtered at the provider to find a line the default list omits. It also flags the soft requirement of adults/period/destination despite the empty required array, which resolves a schema ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Searches the live, bookable sea and river cruise offers of cruise · honeefy ... for a destination, a travel period and a travel party.' It explicitly distinguishes itself from siblings by describing what it does not do (book, hold, price, show to user) and by routing to show_offers for recommendations, so an agent can select it without opening another 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 ('fits questions about this provider's cruise offers, prices, dates and availability'), prerequisites (adults, period/from_date-to_date, destination, with the recovery flow when one is missing), and a named alternative with sequencing ('call show_offers ONCE afterward'). Exclusions are also stated ('does NOT ... search by price alone').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
port_infoPort factsARead-onlyIdempotentInspect
Returns facts about a cruise port: country, port code, coordinates and how many routes call there. Use it when the user asks about a port of call or departure port. It does NOT provide excursions, sights, weather or transfer advice, and it knows only ports in the provider's catalogue.
| Name | Required | Description | Default |
|---|---|---|---|
| port | Yes | Port name, e.g. 'Barcelona'. | |
| handle | No | Consultation handle returned by a previous call (structuredContent.handle). Pass it on every call so wishes are remembered; omit it on the very first call. | |
| language | No | Language of the answer. Defaults to the provider's language. |
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, so the safety profile is covered. The description adds genuinely new context by stating it knows only ports in the provider's catalogue, which reinforces the closed-world constraint and tells the agent to expect misses outside that catalogue.
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 high-value routing and exclusion information is front-loaded, and the closed-catalogue caveat is placed at the end where it belongs.
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 naming the returned fields, and annotations cover the safety profile, so an agent knows what it will get. The only omission is behavior when a port is not found in the catalogue or is ambiguous, which is minor for a read-only 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 description coverage is 100%; the port, handle and language parameters are all documented in the schema, including the handle's continuation semantics and the language enum. The description adds no parameter-level detail 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+resource ('Returns facts about a cruise port') and enumerates the exact facts returned: country, port code, coordinates, route count. It also distinguishes itself from adjacent content domains (excursions, sights, weather, transfers), so an agent can separate it from siblings like ship_profile or cruise_line_profile.
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 triggering context ('when the user asks about a port of call or departure port') and a clear when-not list (no excursions, sights, weather, transfer advice). It stops short of naming which sibling tool to use instead for those needs, so it is strong but not fully routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ship_profileShip profileARead-onlyIdempotentInspect
Returns the profile of a cruise ship: cruise line, year built, size, passengers, crew and the consulting description. Use it when the user asks what a ship is like or wants to compare ships. It does NOT return deck plans, cabin numbers, live prices or availability.
| Name | Required | Description | Default |
|---|---|---|---|
| ship | Yes | Ship name, e.g. 'AIDAcosma'. | |
| handle | No | Consultation handle returned by a previous call (structuredContent.handle). Pass it on every call so wishes are remembered; omit it on the very first call. | |
| language | No | Language of the answer. Defaults to the provider's language. | |
| cruise_line | No | Optional cruise line to disambiguate. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds genuine value by disclosing the information boundary (no deck plans, cabins, prices, availability) and the field set a caller can expect.
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: purpose plus returned fields first, then usage trigger and exclusions. No filler, and the most decision-relevant information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by listing the fields returned and the data explicitly out of scope. It omits any note on result size, caching, or handling of ambiguous ship names, but nothing needed to invoke the tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (ship, handle, language, cruise_line) are already documented, including the handle's session-memory role and the language enum. The description adds no parameter-level detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Returns the profile of a cruise ship') and enumerates the returned fields: cruise line, year built, size, passengers, crew, consulting description. The sibling 'cruise_line_profile' is not named, though the ship-vs-line distinction is inferable from the resource noun.
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 triggers ('when the user asks what a ship is like or wants to compare ships') and a clear negative scope ('does NOT return deck plans, cabin numbers, live prices or availability'), which implicitly routes price/availability questions to booking_facts or show_offers. Alternatives are only implied, not named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
show_offersShow recommended cruisesARead-onlyIdempotentInspect
Shows the user the cruises you are recommending, as cards with ship photo, route, dates, price and booking link -- drawn by the host, not by you. Call it ONCE, as the LAST step of your answer, with the cruise_id values of a previous find_cruises result that you recommend (3-5, in your recommended order). Never call it before you have decided what to recommend, and never more than once per answer. It does NOT search; an unknown or expired cruise_id is left out and named in the result -- call find_cruises again if that happens.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | No | Consultation handle returned by a previous call (structuredContent.handle). Pass it on every call so wishes are remembered; omit it on the very first call. | |
| language | No | Language of the answer. Defaults to the provider's language. | |
| cruise_ids | Yes | cruise_id values from a previous find_cruises result, 3-5, in your recommended order. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), yet the description adds genuinely new behavior: rendering is done by the host not the agent, invalid/expired ids are silently dropped and named in the result, and there is a strict once-per-answer invocation constraint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then the invocation rules, then the failure mode. Every sentence carries operational information; 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?
With no output schema, the description still tells the agent what the result contains (rendered cards) and what happens on bad input (id omitted and named in the result). An agent has everything needed to call it correctly and interpret the outcome.
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 handle, language, and cruise_ids. The description restates the cruise_ids constraint (3-5, recommended order) but adds nothing about the handle or language parameters, so it only meets the 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+resource ('Shows the user the cruises you are recommending') plus the rendered form (cards with ship photo, route, dates, price, booking link), and explicitly negates the sibling behavior ('It does NOT search'), separating it cleanly from find_cruises.
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?
Highly explicit: call ONCE, as the LAST step, with 3-5 cruise_id values from a previous find_cruises result in recommended order; never before deciding, never more than once per answer. It also names the recovery path (call find_cruises again) when ids are unknown or expired.
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
- Removed
prepare_callback - Removed
send_callback
2 tool updates
- Added
prepare_callback - Added
send_callback
7 tool updates
- First observed
advise - First observed
booking_facts - First observed
cruise_line_profile - First observed
find_cruises - First observed
port_info - First observed
ship_profile - First observed
show_offers
Related MCP Connectors
Search cruises, check fares and price history, look up cabins, ships, lines and ports.
Search cruises sold to the UK market, with prices in pounds and links to every sailing.
Search Carnival and Royal Caribbean cruises, compare fare history and find Viator port experiences.
Cruise sailings, itineraries, weekly fare history, port capacity and the Cruise Price Index.
Related MCP Servers
AlicenseNot gradedqualityCmaintenanceQuery cruise sailings, fares, price drops & ship specsMIT
siloah-travel-mcpofficial
AlicenseNot gradedqualityFmaintenanceSearch 70,000+ cruise voyages, 678 ships, and 62 cruise lines worldwide. No API key needed, no installation required — just paste the URL. Includes RAG-powered knowledge search for ship dining, facilities, cabins, and port guides. 30 languages supported.3MIT- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to search upcoming sailings by ship, line, port, region, date, length and fare, view day-by-day itineraries, track each sailing's weekly fare history, measure monthly ship capacity and berths at a port, and read the weekly Cruise Price Index. All tools are read-only and return structured JSON behind OAuth sign-in or an API key.MIT
- FlicenseNot gradedqualityBmaintenanceSearch flights, compare prices, check visas, look up airports, get travel advisories through a single endpoint.-
Glama MCP Gateway
Add one secure layer between your agents and this server.