Skip to main content
Glama

The Charter Desk

Server Details

Live yacht charter inventory: 11,000+ sailboats, catamarans, motorboats, gulets and houseboats.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL

TDQS

A3.9/5.0

Scored across 5 tools

Disambiguation4/5

Each tool has a recognizable role: search_yachts (find free yachts), best_deals (discounted departures only), get_yacht (single yacht + availability), price_range (aggregate statistics), and request_quote (side-effecting desk action). The one soft boundary is best_deals vs search_yachts, which share filters, pagination, row shape, and fallback 'nearest match' behavior, so an agent could misselect for a generic 'show me yachts with prices' request, though the descriptions do clarify the distinction.

Naming Consistency4/5

All names are snake_case and follow a readable verb_noun pattern for the action tools (get_yacht, request_quote, search_yachts). The remaining two (best_deals, price_range) are noun phrases rather than verb-led, which is a minor stylistic deviation but still clear and predictable.

Tool Count5/5

Five tools map cleanly onto five distinct capabilities: search, detail, deals, pricing statistics, and quote request. Nothing appears redundant or missing at the structural level, and the deliberate omission of a booking tool is consistent with the stated design that the desk closes bookings.

Completeness4/5

The browsing lifecycle is fully covered: discover (search_yachts), inspect (get_yacht), price-check (price_range), surface discounts (best_deals), and hand off (request_quote). Gaps are minor and mostly out-of-scope by design: there is no way to look up a quote's status, no place/destination enumeration beyond price_range's fallback, and no booking confirmation tool.

Available Tools

5 tools
best_dealsBest dealsA
Read-only
Inspect

Discounted departures of this site's yachts, read from the live inventory: only a discount the source itself states (a special, or a price under its list price), never a computed gap. By default from tomorrow to 30 days ahead; a departure the yacht's calendar shows taken is left out. One row per yacht: its page link (the id get and request_quote take) and photo (absolute URLs) and its departures, each with its dates, every route it leaves on, nights, price, list price, mandatory extras and saving, in the order asked. Narrow with the same typed filters as search. When none match, the answer is the nearest deals (the window after, the place around, a bound let go) and nearest says what was widened. Paged: total and cursor. Works without a contact (browsing: fewer rows).

NameRequiredDescriptionDefault
toNoLatest departure, YYYY-MM-DD.
baseNoThe exact base it leaves from, in words.
fromNoEarliest departure, YYYY-MM-DD.
nameNoOptional: the person's name, as they gave it.
sortNosaving (default, biggest first), departure (soonest first), price (cheapest first), or length (length, biggest first), cabins (cabins, biggest first), berths (berths, biggest first), heads (heads, biggest first), beam (beam, biggest first), draft (draft, biggest first), year (year, biggest first), fuel (fuel tank, biggest first), water (water tank, biggest first).
textNoWords in its name or model, e.g. a builder or a model name.
emailNoOptional: the person's own email, as they gave it, for more rows a call. Leave out to browse; the site keeps it to answer their enquiry.
limitNoRows per page: at most 10 when browsing, 20 with the person's email or phone.
partyNoHow many people.
phoneNoOptional: the person's own phone, international form (+ and country code), as they gave it, for more rows a call. Leave out to browse.
placeNoWhere, in words or as a place id: a region, country or area, and everything in it, e.g. Mediterranean, Worldwide, Caribbean, North America, Greece, Croatia, Italy, France, Turkey, Spain, British Virgin Islands, Netherlands, Germany, Seychelles, Poland, Ireland, Martinique, United Kingdom, Belgium, Portugal, Ecuador, French Polynesia, Sweden, St. Martin, Bahamas, Malta, Montenegro, Thailand, Canada, St. Lucia, Slovenia, Norway, Guadeloupe, Brazil, Hungary, Grenada, St. Vincent, Belize, Cuba, Maldives, Mexico, Panama, Cape Verde, United Arab Emirates, Antigua and Barbuda, India, Tanzania, Egypt, Monaco, Estonia, Mauritius, New Zealand, USA, Switzerland, Fiji. An unknown place is refused; nothing there answers the nearest place around it.
cursorNoThe cursor a previous answer returned, for its next page.
beamMaxNoBeam at most m (on this site 0.9 to 44).
beamMinNoBeam at least m (on this site 0.9 to 44).
fuelMaxNoFuel tank at most l (on this site 1 to 65000).
fuelMinNoFuel tank at least l (on this site 1 to 65000).
sessionNoThe session an earlier answer returned. Pass it instead of email or phone from then on.
yearMaxNoYear at most (on this site 0 to 2028).
yearMinNoYear at least (on this site 0 to 2028).
draftMaxNoDraft at most m (on this site 0.3 to 7985).
draftMinNoDraft at least m (on this site 0.3 to 7985).
headsMaxNoHeads at most (on this site 0 to 23).
headsMinNoHeads at least (on this site 0 to 23).
priceMaxNoThe most to pay, in the site currency: the price plus the mandatory extras.
priceMinNoThe least to pay, in the site currency: the price plus the mandatory extras.
waterMaxNoWater tank at most l (on this site 1 to 60000).
waterMinNoWater tank at least l (on this site 1 to 60000).
berthsMaxNoBerths at most (on this site 0 to 80).
berthsMinNoBerths at least (on this site 0 to 80).
cabinsMaxNoCabins at most (on this site 0 to 20).
cabinsMinNoCabins at least (on this site 0 to 20).
lengthMaxNoLength at most ft (on this site 13.35 to 180.45).
lengthMinNoLength at least ft (on this site 13.35 to 180.45).
yacht_typesNoYacht Types: any of these value ids (one or more): catamarans (Catamarans, 3192); gulets (Gulets, 201); houseboats (Houseboats, 1428); motorboats (Motorboats, 1080); sailboats (Sailboats, 4576).
charter_typesNoCharter Types: any of these value ids (one or more): all-inclusive (All-inclusive, 68); bareboat (Bareboat, 8795); cabin-charter (Cabin charter, 152); crewed (Crewed, 1702); day-charter (Day charter, 374); flotilla (Flotilla, 257); regatta (Regatta, 34); skippered (Skippered, 245).

Output Schema

NameRequiredDescription
fromNoThe window's first day.
nextNoWhen browsing: how to get a quote or more rows.
rowsYesOne page of deals, one row per item with its departures.
totalYesHow many rows match in all.
cursorNoPass as cursor for the next page; null on the last.
nearestNoOnly when nothing matched exactly: these rows are the nearest match.
sessionNoOnly on the call that created the contact: pass it from then on.
throughNoIts last day.
browsingNotrue: answered without a contact, so fewer rows and the first pages only.
checkedAtNoWhen the offers were read, ISO time.
notAppliedNoWhat could not narrow the deals.
sessionExpiresAtNoWhen that session stops working, ISO time.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/non-destructive annotations it discloses the excluded-taken-departure rule, one-row-per-yacht grouping, paging via total and cursor, the nearest-deals relaxation with a 'nearest' field reporting what was widened, and the reduced row count without a contact. That is exactly the kind of behavior an annotations block cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded and dense with no filler sentences; the discount-definition rule and default window come first, which is the right priority. It is written as long comma-chained clauses that take effort to parse, costing a point on structure despite the strong information density.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 35-parameter, zero-required search tool with paging and a relaxation fallback, the description covers the row contents, ordering semantics, cursor paging and what happens on empty results; an output schema exists, so return-shape detail is rightly left out.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and every one of the 35 filters is documented in-schema, so the baseline of 3 applies. The description adds only modest cross-parameter meaning: sort order ('in the order asked'), the parenthetical tying the yacht page id to get_yacht and request_quote, and session reuse — all useful but not compensating for anything missing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

It opens with a specific verb and resource — 'Discounted departures of this site's yachts, read from the live inventory' — and immediately bounds what counts as a deal ('only a discount the source itself states ... never a computed gap'). That distinguishes it cleanly from search_yachts, which returns general inventory rather than source-stated discounts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives the default window ('tomorrow to 30 days ahead'), the fallback policy when nothing matches, and the contact/no-contact tradeoff ('browsing: fewer rows'). What it doesn't do is state explicitly when to call this instead of search_yachts; it only says 'Narrow with the same typed filters as search', which implies lineage rather than a selection rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_yachtGet one yachtA
Read-only
Inspect

One yacht: its facts and terms as the source states them (packages, included, required and optional extras, deposit, check-in days and times, stay limits, equipment, the operator's descriptions), and its availability: with from / to, that stay's status and price and, when it is not free, the nearest free stays; without dates, its free stays, soonest first. A field that is absent is one the source does not state. Works without a contact.

NameRequiredDescriptionDefault
idYesThe yacht's page link (an absolute URL on this site), exactly as a search or best_deals returned it.
toNoCheck-out day, YYYY-MM-DD.
fromNoCheck-in day, YYYY-MM-DD.
nameNoOptional: the person's name, as they gave it.
emailNoOptional: the person's own email, as they gave it, for more rows a call. Leave out to browse; the site keeps it to answer their enquiry.
limitNoRows per page: at most 10 when browsing, 20 with the person's email or phone.
partyNoHow many people.
phoneNoOptional: the person's own phone, international form (+ and country code), as they gave it, for more rows a call. Leave out to browse.
cursorNoThe cursor a previous answer returned, for its next page.
sessionNoThe session an earlier answer returned. Pass it instead of email or phone from then on.

Output Schema

NameRequiredDescription
hrefYesIts page on this site, absolute URL.
itemYesIts name.
kindNoIts type.
nextNoWhen browsing: how to get a quote or more rows.
factsNoThe facts its page shows, labelled.
placeNoWhere it is.
termsNoDeposit, licence, stay limits, check-in days and times, as stated.
sessionNoOnly on the call that created the contact: pass it from then on.
browsingNotrue: answered without a contact, so fewer rows and the first pages only.
packagesNoThe ways it is sold, the default first, each with its included, required and optional extras.
checkedAtNoWhen the source was read, ISO time.
equipmentNoNamed equipment in groups.
descriptionNoIts description.
availabilityNoWith dates: that stay and, when not free, the nearest free stays; without: its free stays, soonest first.
sessionExpiresAtNoWhen that session stops working, ISO time.
operatorDescriptionsNoThe operator's own texts and documents.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/non-destructive/closed-world, and the description adds genuinely useful context beyond them: absent fields mean the source does not state them, unavailable stays return the nearest free alternatives, and the call works without a contact. It stops short of describing response shape or pagination, but the output schema covers that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core content is front-loaded and every clause carries information, but the main sentence is a single long run-on stuffed with parenthetical enumerations that is slow to parse. The final two sentences ('A field that is absent...', 'Works without a contact') are tight and well-placed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter tool with an output schema and full schema coverage, the description supplies the pieces structured fields cannot: absence semantics, availability fallback behavior, and no-contact operation. Sibling routing is the one gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description earns above that by explaining what from/to actually change (stay status and price, or nearest free stays) and that omitting dates yields free stays soonest-first. It does not add detail on cursor, limit, or session beyond the schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific resource and enumerates exactly what is returned: facts, terms (packages, extras, deposit, check-in, stay limits, equipment), and availability. It is clearly a single-yacht detail fetch rather than a list, though it never names search_yachts or best_deals to make the split explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The with-dates vs without-dates branching is spelled out, but that is parameter behavior, not tool selection. Nothing tells the agent when to call get_yacht instead of search_yachts or best_deals; the routing hint ('as a search or best_deals returned it') lives in the schema, not the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

price_rangePrice rangeB
Read-only
Inspect

What a stay typically costs: the range (p25, median, p75 in minor units of the currency) of open departures for a place, month and party, optionally one type, with how many items it is from, the cheapest published one that fits and when the figures were built; seasonNote says in words how another month compares. An unknown place answers with the places that have figures. Works without a contact.

NameRequiredDescriptionDefault
nameNoOptional: the person's name, as they gave it.
typeNoOptional: one type, as the types list names it.
emailNoOptional: the person's own email, as they gave it, for more rows a call. Leave out to browse; the site keeps it to answer their enquiry.
monthYesYYYY-MM.
partyYesHow many people.
phoneNoOptional: the person's own phone, international form (+ and country code), as they gave it, for more rows a call. Leave out to browse.
placeYesA country or region in words (e.g. Croatia), or a place value as the places list names it.
sessionNoThe session an earlier answer returned. Pass it instead of email or phone from then on.

Output Schema

NameRequiredDescription
nextNoWhen browsing: how to get a quote or more rows.
thinNotrue: few items, a rough figure.
itemsYesHow many items the figures are from.
placeNoThe place value answered (a place given in words, resolved).
rangeNop25, p50 (median), p75 in MINOR units; null when too few items.
sessionNoOnly on the call that created the contact: pass it from then on.
browsingNotrue: answered without a contact, so fewer rows and the first pages only.
cheapestNoThe cheapest published item that fits.
currencyYesISO 4217.
seasonHintNoAnother month against this one: pct cheaper there (negative: dearer).
seasonNoteNoThe season hint in words, to tell the person.
noneFitPartyNotrue: no item there takes the party.
sessionExpiresAtNoWhen that session stops working, ISO time.
extrasMedianMinorNoThe usual mandatory extras, minor units.
lastMinuteSharePctNoShare of soon departures discounted.

TDQS

B3.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/non-destructive annotations, the description discloses what is returned (p25/median/p75 in minor units, item count, cheapest published fitting option, build timestamp, seasonNote) and two useful behaviors: unknown places degrade to a list of places that do have figures, and no contact is required. It doesn't explain pagination or the session/email escalation flow, so not 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is front-loaded, but the opening sentence is a heavily stacked clause chain strung together with semicolons and commas that is hard to parse on first read. Every element roughly earns its place, but the structure could be broken into shorter, scannable statements.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present the description needn't explain return values, yet it does, and it also covers the unknown-place fallback and contactless operation. However, for an 8-parameter tool it never mentions session, email, or phone escalation ('more rows'), leaving that mechanism to the schema alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all eight parameters including the optional type filter, session, and contact fields. The description restates the place/month/party/type relationship and adds the units context (minor units of the currency), but does not clarify session, email, phone, or name usage beyond what the schema says. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource and what it returns: the p25/median/p75 range of open departures for a place, month and party, plus counts and a cheapest-published figure. An agent can tell this is a price-statistics lookup rather than a booking or listing tool. It doesn't name or differentiate itself from siblings like best_deals, keeping it below 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 guidance, and no sibling is named as an alternative even though best_deals and search_yachts sit alongside it. The only conditional statements ('An unknown place answers with the places that have figures', 'Works without a contact') describe fallback behavior, not tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

request_quoteRequest a formal quoteA
Idempotent
Inspect

Ask this site's desk for a formal quote on one or more yachts, for the person. Pass the page links a search, best_deals or get returned, the days and the party, and anything the person wants the desk to know. The desk answers with a written quote to the person's own email or phone, with every cost on it; this answer only says it was received and where the quote goes. Nothing is booked or paid: the person confirms the booking with the desk. Ask the person before calling it.

NameRequiredDescriptionDefault
toNoCheck-out day, YYYY-MM-DD.
fromNoCheck-in day, YYYY-MM-DD.
nameNoOptional: the person's name, as they gave it.
emailNoThe person's own email, as they gave it: the quote is sent there. This, phone or session is needed.
itemsYesThe yacht page links to quote (absolute URLs on this site), exactly as a search, best_deals or get returned them. At most 20.
notesNoWhat the person wants the desk to know, in their words (at most 2000 characters).
partyNoHow many people.
phoneNoThe person's own phone, international form (+ and country code), as they gave it. This, email or session is needed.
sessionNoThe session an earlier answer returned. Pass it instead of email or phone.

Output Schema

NameRequiredDescription
statusYesreceived: the desk has the request; already_received: this session asked the same in the last day.
sessionNoOnly on the call that created the contact: pass it from then on.
nextStepYesWhere the written quote goes, in words to tell the person.
enquiryRefNoThe request's reference, returned once.
sessionExpiresAtNoWhen that session stops working, ISO time.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: it discloses that the desk replies out-of-band to the person's own email or phone, that this tool's own answer only confirms receipt and the destination, and that nothing is booked or paid until the person confirms with the desk. Those are exactly the side-effect facts an agent needs and none are derivable from readOnlyHint=false / destructiveHint=false alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose, then inputs, then outcome, then the safety constraint — a sensible ordering with no filler. The sentences are long and comma-heavy, which costs a little scannability, but every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and full schema coverage, the description only needs to supply the semantics the structured fields cannot: the out-of-band delivery, the non-booking nature, and the consent requirement. It supplies all three, leaving no material gap for a 9-parameter tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already explains every parameter including the email/phone/session fallback and the 20-item cap. The description restates the same groupings ('the page links... the days and the party... anything the person wants the desk to know') without adding format or constraint detail, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Ask this site's desk for a formal quote on one or more yachts') and makes clear it is a downstream step from the search tools, not a search itself. An agent can distinguish it from search_yachts, best_deals, get_yacht and price_range 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says to pass the page links that 'a search, best_deals or get returned', which establishes the correct call ordering relative to siblings, and adds the consent rule 'Ask the person before calling it.' It stops short of naming an explicit when-not or a named alternative for a different outcome, but the usage context is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_yachtsSearch yachtsA
Read-only
Inspect

Find this site's yachts, read from the live inventory. Pass what the person wants as the typed filters, and from / to whenever they gave exact days. With dates it returns ONLY the yachts free for that stay, each with its stay: status, price, list price, discount and when the source was checked (checkedAt). Without dates each has its from-price. Every row carries its page link and one photo, absolute URLs on this site; send the person there. Narrow with the typed filters (each list is any of its values; every filter must hold); priceMin / priceMax count the mandatory extras a quote states. notApplied lists what could not narrow the search. When nothing matches exactly the answer is the nearest match, and nearest says what was widened (another week, the place around, a bound let go): tell the person. Paged: total and cursor. Works without a contact (browsing: fewer rows).

NameRequiredDescriptionDefault
toNoCheck-out day, YYYY-MM-DD.
baseNoThe exact base it leaves from, in words.
fromNoCheck-in day, YYYY-MM-DD.
nameNoOptional: the person's name, as they gave it.
sortNoprice (default, cheapest first), discount (biggest first), or length (length, biggest first), cabins (cabins, biggest first), berths (berths, biggest first), heads (heads, biggest first), beam (beam, biggest first), draft (draft, biggest first), year (year, biggest first), fuel (fuel tank, biggest first), water (water tank, biggest first).
textNoWords in its name or model, e.g. a builder or a model name.
emailNoOptional: the person's own email, as they gave it, for more rows a call. Leave out to browse; the site keeps it to answer their enquiry.
limitNoRows per page: at most 10 when browsing, 20 with the person's email or phone.
partyNoHow many people.
phoneNoOptional: the person's own phone, international form (+ and country code), as they gave it, for more rows a call. Leave out to browse.
placeNoWhere, in words or as a place id: a region, country or area, and everything in it, e.g. Mediterranean, Worldwide, Caribbean, North America, Greece, Croatia, Italy, France, Turkey, Spain, British Virgin Islands, Netherlands, Germany, Seychelles, Poland, Ireland, Martinique, United Kingdom, Belgium, Portugal, Ecuador, French Polynesia, Sweden, St. Martin, Bahamas, Malta, Montenegro, Thailand, Canada, St. Lucia, Slovenia, Norway, Guadeloupe, Brazil, Hungary, Grenada, St. Vincent, Belize, Cuba, Maldives, Mexico, Panama, Cape Verde, United Arab Emirates, Antigua and Barbuda, India, Tanzania, Egypt, Monaco, Estonia, Mauritius, New Zealand, USA, Switzerland, Fiji. An unknown place is refused; nothing there answers the nearest place around it.
cursorNoThe cursor a previous answer returned, for its next page.
beamMaxNoBeam at most m (on this site 0.9 to 44).
beamMinNoBeam at least m (on this site 0.9 to 44).
fuelMaxNoFuel tank at most l (on this site 1 to 65000).
fuelMinNoFuel tank at least l (on this site 1 to 65000).
sessionNoThe session an earlier answer returned. Pass it instead of email or phone from then on.
yearMaxNoYear at most (on this site 0 to 2028).
yearMinNoYear at least (on this site 0 to 2028).
draftMaxNoDraft at most m (on this site 0.3 to 7985).
draftMinNoDraft at least m (on this site 0.3 to 7985).
headsMaxNoHeads at most (on this site 0 to 23).
headsMinNoHeads at least (on this site 0 to 23).
priceMaxNoThe most to pay, in the site currency: the price plus the mandatory extras.
priceMinNoThe least to pay, in the site currency: the price plus the mandatory extras.
waterMaxNoWater tank at most l (on this site 1 to 60000).
waterMinNoWater tank at least l (on this site 1 to 60000).
berthsMaxNoBerths at most (on this site 0 to 80).
berthsMinNoBerths at least (on this site 0 to 80).
cabinsMaxNoCabins at most (on this site 0 to 20).
cabinsMinNoCabins at least (on this site 0 to 20).
lengthMaxNoLength at most ft (on this site 13.35 to 180.45).
lengthMinNoLength at least ft (on this site 13.35 to 180.45).
yacht_typesNoYacht Types: any of these value ids (one or more): catamarans (Catamarans, 3192); gulets (Gulets, 201); houseboats (Houseboats, 1428); motorboats (Motorboats, 1080); sailboats (Sailboats, 4576).
discountOnlyNotrue: only those with a discount the source states.
charter_typesNoCharter Types: any of these value ids (one or more): all-inclusive (All-inclusive, 68); bareboat (Bareboat, 8795); cabin-charter (Cabin charter, 152); crewed (Crewed, 1702); day-charter (Day charter, 374); flotilla (Flotilla, 257); regatta (Regatta, 34); skippered (Skippered, 245).

Output Schema

NameRequiredDescription
nextNoWhen browsing: how to get a quote or more rows.
itemsYesOne page of matches.
totalYesHow many rows match in all.
cursorNoPass as cursor for the next page; null on the last.
checkedNotrue: dates were given, so every row is free for them.
nearestNoOnly when nothing matched exactly: these rows are the nearest match.
sessionNoOnly on the call that created the contact: pass it from then on.
browsingNotrue: answered without a contact, so fewer rows and the first pages only.
checkedAtNoWhen the source was read, ISO time.
uncheckedNoWhat was said but could not be checked.
notAppliedNoWhat the person asked for that could not narrow the search.
leftOutUnpricedNoMatches left out under priceMin / priceMax because no price is known.
sessionExpiresAtNoWhen that session stops working, ISO time.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well past the readOnly/destructive annotations: with dates it returns ONLY yachts free for that stay with stay status, price, list price, discount and checkedAt; without dates each row has a from-price. It discloses the nearest-match widening behavior with a nearest explanation to relay, notApplied for unsatisfiable filters, cursor/total pagination, and the lower row cap when no contact is supplied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, and every clause carries substance given 36 parameters and a non-obvious fallback model. The single dense paragraph with sentence fragments ("Paged: total and cursor") reads as a wall of text, which makes the fallback and pagination rules easy to skim past.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, yet the description still covers result shape, fallback behavior, pagination and contact-gated row limits, plus the instruction to send the person to the absolute page link. For a 36-parameter, zero-required search tool this leaves nothing an agent needs to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real semantics the schema lacks: within a list any value matches, across filters every filter must hold, priceMin/priceMax count mandatory extras, and session should replace email/phone on later calls. It does not explain the interplay of place and base or how party affects date-based results.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource plus scope: "Find this site's yachts, read from the live inventory." An agent knows exactly what the tool retrieves and that results are live rather than cached. It never names a sibling, though, so nothing explicitly separates it from best_deals or price_range for an agent comparing candidates.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete calling conditions: pass typed filters for what the person wants, pass from/to only when exact days were given, and omit email/phone to browse (fewer rows). It also states the fallback contract when nothing matches exactly. It stops short of naming when to prefer a sibling such as get_yacht or best_deals.

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. 2 tool updates
    • Changedbest_deals3 fields changed
      • changedInput schema / properties / charter_types / description
        Previous value: -"Charter Types: any of these value ids (one or more): all-inclusive (All-inclusive, 68); bareboat (Bareboat, 8803); cabin-charter (Cabin charter, 152); crewed (Crewed, 1703); day-charter (Day charter, 374); flotilla (Flotilla, 264); regatta (Regatta, 34); skippered (Skippered, 245)."New value: +"Charter Types: any of these value ids (one or more): all-inclusive (All-inclusive, 68); bareboat (Bareboat, 8795); cabin-charter (Cabin charter, 152); crewed (Crewed, 1702); day-charter (Day charter, 374); flotilla (Flotilla, 257); regatta (Regatta, 34); skippered (Skippered, 245)."
      • changedInput schema / properties / place / description
        Previous value: -"Where, in words or as a place id: a region, country or area, and everything in it, e.g. Mediterranean, Worldwide, Caribbean, North America, Greece, Croatia, Italy, France, Turkey, Spain, British Virgin Islands, Netherlands, Germany, Seychelles, Poland, Ireland, Martinique, United Kingdom, Belgium, Portugal, Ecuador, French Polynesia, Sweden, St. Martin, Bahamas, Malta, Montenegro, Thailand, St. Lucia, Canada, Slovenia, Norway, Guadeloupe, Brazil, Grenada, Hungary, St. Vincent, Belize, Cuba, Maldives, Mexico, Panama, Cape Verde, United Arab Emirates, Antigua and Barbuda, India, Tanzania, Egypt, Monaco, Estonia, Mauritius, New Zealand, USA, Switzerland, Fiji. An unknown place is refused; nothing there answers the nearest place around it."New value: +"Where, in words or as a place id: a region, country or area, and everything in it, e.g. Mediterranean, Worldwide, Caribbean, North America, Greece, Croatia, Italy, France, Turkey, Spain, British Virgin Islands, Netherlands, Germany, Seychelles, Poland, Ireland, Martinique, United Kingdom, Belgium, Portugal, Ecuador, French Polynesia, Sweden, St. Martin, Bahamas, Malta, Montenegro, Thailand, Canada, St. Lucia, Slovenia, Norway, Guadeloupe, Brazil, Hungary, Grenada, St. Vincent, Belize, Cuba, Maldives, Mexico, Panama, Cape Verde, United Arab Emirates, Antigua and Barbuda, India, Tanzania, Egypt, Monaco, Estonia, Mauritius, New Zealand, USA, Switzerland, Fiji. An unknown place is refused; nothing there answers the nearest place around it."
      • changedInput schema / properties / yacht_types / description
        Previous value: -"Yacht Types: any of these value ids (one or more): catamarans (Catamarans, 3191); gulets (Gulets, 201); houseboats (Houseboats, 277); motorboats (Motorboats, 2231); sailboats (Sailboats, 4585)."New value: +"Yacht Types: any of these value ids (one or more): catamarans (Catamarans, 3192); gulets (Gulets, 201); houseboats (Houseboats, 1428); motorboats (Motorboats, 1080); sailboats (Sailboats, 4576)."
    • Changedsearch_yachts3 fields changed
      • changedInput schema / properties / charter_types / description
        Previous value: -"Charter Types: any of these value ids (one or more): all-inclusive (All-inclusive, 68); bareboat (Bareboat, 8803); cabin-charter (Cabin charter, 152); crewed (Crewed, 1703); day-charter (Day charter, 374); flotilla (Flotilla, 264); regatta (Regatta, 34); skippered (Skippered, 245)."New value: +"Charter Types: any of these value ids (one or more): all-inclusive (All-inclusive, 68); bareboat (Bareboat, 8795); cabin-charter (Cabin charter, 152); crewed (Crewed, 1702); day-charter (Day charter, 374); flotilla (Flotilla, 257); regatta (Regatta, 34); skippered (Skippered, 245)."
      • changedInput schema / properties / place / description
        Previous value: -"Where, in words or as a place id: a region, country or area, and everything in it, e.g. Mediterranean, Worldwide, Caribbean, North America, Greece, Croatia, Italy, France, Turkey, Spain, British Virgin Islands, Netherlands, Germany, Seychelles, Poland, Ireland, Martinique, United Kingdom, Belgium, Portugal, Ecuador, French Polynesia, Sweden, St. Martin, Bahamas, Malta, Montenegro, Thailand, St. Lucia, Canada, Slovenia, Norway, Guadeloupe, Brazil, Grenada, Hungary, St. Vincent, Belize, Cuba, Maldives, Mexico, Panama, Cape Verde, United Arab Emirates, Antigua and Barbuda, India, Tanzania, Egypt, Monaco, Estonia, Mauritius, New Zealand, USA, Switzerland, Fiji. An unknown place is refused; nothing there answers the nearest place around it."New value: +"Where, in words or as a place id: a region, country or area, and everything in it, e.g. Mediterranean, Worldwide, Caribbean, North America, Greece, Croatia, Italy, France, Turkey, Spain, British Virgin Islands, Netherlands, Germany, Seychelles, Poland, Ireland, Martinique, United Kingdom, Belgium, Portugal, Ecuador, French Polynesia, Sweden, St. Martin, Bahamas, Malta, Montenegro, Thailand, Canada, St. Lucia, Slovenia, Norway, Guadeloupe, Brazil, Hungary, Grenada, St. Vincent, Belize, Cuba, Maldives, Mexico, Panama, Cape Verde, United Arab Emirates, Antigua and Barbuda, India, Tanzania, Egypt, Monaco, Estonia, Mauritius, New Zealand, USA, Switzerland, Fiji. An unknown place is refused; nothing there answers the nearest place around it."
      • changedInput schema / properties / yacht_types / description
        Previous value: -"Yacht Types: any of these value ids (one or more): catamarans (Catamarans, 3191); gulets (Gulets, 201); houseboats (Houseboats, 277); motorboats (Motorboats, 2231); sailboats (Sailboats, 4585)."New value: +"Yacht Types: any of these value ids (one or more): catamarans (Catamarans, 3192); gulets (Gulets, 201); houseboats (Houseboats, 1428); motorboats (Motorboats, 1080); sailboats (Sailboats, 4576)."
  2. 5 tool updates
    • First observedbest_deals
    • First observedget_yacht
    • First observedprice_range
    • First observedrequest_quote
    • First observedsearch_yachts

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Vacation rental software. A signed stay offer on the host’s own domain. Use this when a vacation rental host wants booking software on the host’s own domain, or when a stay offer must be verified against that domain. Returns an Ed25519-signed offer (VRP) and the host’s direct booking URL. The guest books and pays the host. Do not use to compare hosts or prices.
    6
    999 npm
    4
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    Lets an AI assistant search live empty-leg private jet flights, estimate whole-aircraft charter prices in the departure market's local currency, and browse routes, aircraft sizes and licensed operators. It also sends quote requests to the charter desk, with no API key or payment needed.
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI clients to search discounted private-jet empty-leg flights, retrieve flight details, obtain booking links, estimate charter prices, and submit charter enquiries.
    23 npm
    2
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Give AI agents the ability to search private jets, compare aircraft, get quotes, and submit charter requests through natural language.
    7
    5 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources