# The Charter Desk

> Live prices, free weeks and deals on 9,000+ charter yachts from 800+ operators in 50 countries.

- name: com.thecharterdesk/yacht-charter
- version: 1.0.2
- connection class: R0 (autonomous)
- trust: 82/100 flags: no-repository
- quality: 85/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/com.thecharterdesk%2Fyacht-charter
- tools: https://api.protogrid.dev/v1/servers/com.thecharterdesk%2Fyacht-charter/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "yacht-charter": {
      "type": "http",
      "url": "https://thecharterdesk.com/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 99
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-96% +updated-12d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 85/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-06-18; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 94 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 5 of 5 tools declare readOnlyHint or destructiveHint
- warn `tools.directory_hints`: 1 of 5 tools declare all four hints; missing: search_yachts (idempotentHint); get_yacht (idempotentHint); price_range (idempotentHint); …
- pass `tools.token_cost`: about 3,375 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump
- pass `tools.hidden_text`: no hidden text in tool names, descriptions, schemas or annotations

### stability: 83 (weight 15)

- warn `stability.changes`: 89 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name
- pass `stability.new_links`: no tool change named a new site

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 5, about 3,375 tokens to load them all
- tool set hash: 77a27ec15b8bedf67765b96bfff8b55d
- tools last changed: 2026-11-14T04:17:39.490Z
- badge: [![protogrid quality](https://protogrid.dev/badge/com.thecharterdesk/yacht-charter.svg)](https://protogrid.dev/servers/com.thecharterdesk/yacht-charter)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-11-14 `best_deals` changed (inputSchema)
- 2026-11-14 `search_yachts` changed (inputSchema)
- 2026-11-13 `best_deals` changed (inputSchema)
- 2026-11-13 `search_yachts` changed (inputSchema)
- 2026-11-13 `best_deals` changed (inputSchema)
- 2026-11-13 `search_yachts` changed (inputSchema)
- 2026-11-13 `best_deals` changed (inputSchema)
- 2026-11-13 `search_yachts` changed (inputSchema)
- 2026-11-13 `best_deals` changed (inputSchema)
- 2026-11-13 `search_yachts` changed (inputSchema)

Full history: https://api.protogrid.dev/v1/servers/com.thecharterdesk%2Fyacht-charter/changes

## Remotes

- https://thecharterdesk.com/mcp (streamable-http, auth none, reachable true, uptime30d 0.962963)

## Packages

_none_

## Tools (5)

- `best_deals`: Use it when the person asks for deals, specials, discounts or last-minute offers. It answers 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, leaving out a departure the yacht's calendar shows taken. One row per yacht: its page link (the id get_yacht and request_quote take), a photo 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_yachts. When none match, the rows are the nearest deals and nearest says what was widened. Paged: total and cursor. For given days whatever the price, call search_yachts.
- `get_yacht`: Use it once the person names or picks one yacht from a search_yachts or best_deals answer: pass its page link, exactly as that answer returned it, as id. It answers the yacht's 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 left out is one the source does not state. To compare several, call search_yachts.
- `price_range`: Use it when the person asks what a stay costs and has no exact days or yacht yet. Pass the place they named (in words, or a place value an invalid_place answer listed), the month and the party, and one type if they gave it. It answers the range of open departures there (p25, median and p75, in minor units of the currency), 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. For yachts free on their days, call search_yachts.
- `request_quote`: Use it only after the person chose one or more yachts from a search_yachts, best_deals or get_yacht answer, gave their days and party, and said yes to a written quote: ask them before you call it. Pass the page links exactly as those answers returned them, the days, the party and anything they want the desk to know, in their words. The desk sends a formal quote in writing, with every cost on it, to the person's own email or phone; 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.
- `search_yachts`: Use it when the person describes the yachts they want: where, when, how many people, a size, a type or a budget. Pass each wish as its typed filter (a list is any of its values; every filter must hold), and from / to whenever they gave exact days. With dates every row is free for that stay and carries its price, list price, discount and when the source was checked (checkedAt); without dates each row has its from-price. priceMin / priceMax count the mandatory extras. Every row links to its page on this site, with a photo: send the person there. notApplied lists the wishes that could not narrow the search. When nothing matches exactly, the rows are the nearest match and nearest says what was widened: tell the person. Paged: total and cursor. For deals or last-minute offers call best_deals; for what a stay costs before any dates, price_range; once they name or pick one, get_yacht.
