Charter Boats
REMOTE · CHARTER.BOATS
Search 14,000+ charter boats with live prices, plus marinas, anchorages, routes and itineraries.
Available components
Last scanned (14 hours ago)
Scores higher than 45% of remote servers
Reachable. Last reached 18 Oct 2026.
Category E-commerce
Recent critical change
Authorization (16 Oct 2026). See the changelog before you install this server.
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security46
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (delete_boat_image). See how to fix → View diagnostics → Fail
- HTTPS check failed: the endpoint is reachable over plaintext HTTP. See how to fix → View diagnostics → Fail
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability59
- 60% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Partial
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 9500 tokens (~202/item across 47 items; 45 tools + 2 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management20
- Stability observed for 6 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage91
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 72% of tool parameters carry a description.Partial
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 6 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 46 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
- Supports UI / widget rendering.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 17 Oct 26 +1
- New tool “compare_boat” functional
- 16 Oct 26 −6
- Authorization: partial → fail ▼ critical
- New tool “delete_boat_image”, which the server declares destructive security
- New tool “delete_discount”, which the server declares destructive security
- New tool “delete_fee”, which the server declares destructive security
- New tool “delete_price”, which the server declares destructive security
- New tool “remove_block”, which the server declares destructive security
- New tool “remove_calendar”, which the server declares destructive security
- Schema quality: 359 → 192 ▲ functional
- Destructive annotations: pass → 100 functional
- New tool “add_block” functional
- New tool “add_calendar” functional
- New tool “add_fee” functional
- New tool “add_price” functional
- New tool “create_discount” functional
- New tool “get_availability” functional
- New tool “get_boat” functional
- New tool “get_booking” functional
- New tool “get_cancellation_limits” functional
- New tool “get_company” functional
- New tool “get_earnings” functional
- New tool “get_pricing” functional
- New tool “list_boat_fees” functional
- New tool “list_boats” functional
- New tool “list_bookings” functional
- New tool “list_calendars” functional
- New tool “list_discounts” functional
- New tool “set_cancellation_policy” functional
- New tool “set_cross_lock” functional
- New tool “set_equipment_visibility” functional
- New tool “sync_calendar” functional
- New tool “update_boat” functional
- New tool “update_boat_images” functional
- New tool “update_company” functional
- New tool “update_discount” functional
- New tool “update_fee” functional
- New tool “update_price” functional
- 15 Oct 26 +1
- Tool “get_boat_standouts” rewrote its description, which is the text the model reads security
- 13 Oct 26 +1
- Stability: unverified → 0.03 ▲ functional
- 12 Oct 26 62
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 18 Oct 2026 · Probed https://charter.boats/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=charter.boats | CN=WE1,O=Google Trust Services,C=US | 12 Oct 2026 | 11 Jan 2027 | ECDSA 256 | ECDSA-SHA256 | 8627977466eb433e0e7109de9f399a4a |
| SANs: charter.boats, wind.charter.boats | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of charter.boats. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| boats. | present | 35419, 59980 | 8, 8 | Verified |
| charter.boats. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://charter.boats/mcp | Verified | 200 | |
| http (plaintext) | http://charter.boats/mcp | Served over HTTP | 200 |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
add_block ~118
Block dates on one of the operator's boats so they cannot be booked. On a partner-synced boat the hold is placed on that partner too, and with X-Lock on also on the other partner. Returns the stored block and how each hold went.
| Name | Type | Req | Description |
|---|---|---|---|
| boat_id | string | yes | Boat id, from list_boats. |
| end_at | string | yes | Last day, YYYY-MM-DD. |
| notes | string | – | – |
| reason | string | – | – |
| start_at | string | yes | First day, YYYY-MM-DD. |
No output schema declared.
No examples provided.
add_calendar ~89
Connect an external calendar to a boat: its events block those dates on charter.boats. Returns the stored source; sync_calendar pulls it at once.
| Name | Type | Req | Description |
|---|---|---|---|
| boat_id | string | yes | Boat id, from list_boats. |
| source_name | string | yes | A name for it. |
| source_type | string | – | Default `ical`. |
| source_url | string | yes | The https iCal address. |
No output schema declared.
No examples provided.
add_fee ~226
Add an extra or fee to a boat the operator prices directly. Returns the stored row and `warnings`, other rows it overlaps.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | number | yes | EUR, or a percent when amount_is_percentage. |
| amount_is_percentage | boolean | – | – |
| calculation_type | string | – | How it is collected: `separate_payment` paid at the base (default), `advance_payment` charged at booking, `included_in_price`. |
| category | string | – | – |
| description | string | yes | The fee as guests read it. |
| id | string | yes | Boat id, from list_boats. |
| on_request | boolean | – | – |
| percentage_base | string | – | What the percentage is taken on; empty is the charter price. |
| period | string | yes | How it is counted, per booking, day, night, person or week; the answer to a wrong value lists the allowed ones. |
| required | boolean | – | true when every guest pays it. |
| valid_from | string | – | YYYY-MM-DD |
| valid_to | string | – | YYYY-MM-DD |
No output schema declared.
No examples provided.
add_price ~114
Add a season price to a boat the operator prices directly (pricing source direct). Returns the stored row.
| Name | Type | Req | Description |
|---|---|---|---|
| end_day | integer | yes | – |
| end_month | integer | yes | – |
| id | string | yes | Boat id, from list_boats. |
| name | string | yes | Season name. |
| price_per_day | number | yes | EUR per day for the boat. |
| priority | integer | – | The higher one wins where two seasons overlap. |
| start_day | integer | yes | – |
| start_month | integer | yes | – |
No output schema declared.
No examples provided.
compare_boat Compare a Boat With Similar Boats ~643
One boat against the 10 closest published boats of the same type in the same country: specs and the all-in weekly price (EUR, at max guests, the figure search compares) for each of the next 52 weeks. Pass `id` (a boat), or `boat_type` and `country` (optionally `region`, `city`) to describe one. The specs take search_boats' names: without `id` they describe the boat to compare; with `id` they filter its peers as search_boats would. Only boats open at least one week are compared. `similar_pct` is how alike a peer is: the specs it shares, averaged with `overlap_pct` (the share of the boat's open weeks the peer is open too) when there is a boat. With `id`, `anchor.price` is the boat's weekly figures, a peer's `price` is its figure minus the boat's (its own in the weeks listed in `absolute_weeks`), and a peer carries its `region`, `city`, `same` (the fields it shares with the boat) and only the specs that differ, as signed deltas; without `id` every peer carries its own specs and figures. null = not sellable that week; `weeks` gives each check-in date. Use when someone asks how a boat compares with others nearby on price, size or age — an operator benchmarking their own boat included. For what is better or worse about one boat, use get_boat_standouts.
| Name | Type | Req | Description |
|---|---|---|---|
| berths | number | – | Berths: without id the number to match, with id the minimum. |
| boat_type | string | – | Without id: the boat type (required with country). |
| cabins | number | – | Cabins: without id the number to match; with id the minimum guest cabins, crew cabins not counted (as search_boats). |
| city | string | – | Without id, optional: city or town, e.g. Split. |
| country | string | – | Without id: ISO country code, e.g. HR (required with boat_type). |
| guests | number | – | Guests: without id the number to match, with id the minimum. |
| id | string | – | Boat id from search_boats or get_boat_details — copy it verbatim. Omit to describe a boat by its specs. |
| length_max | integer | – | Maximum length in feet. |
| length_min | integer | – | Minimum length in feet. |
| lock | array | – | With id: keep only peers the same as the boat in these fields — the fields a peer's `same` lists. |
| makemodel | string | – | Make and/or model as the guest said it, e.g. "Lagoon 42", "Bali". |
| region | string | – | Without id, optional: sailing region, e.g. Dalmatia. |
| toilets | number | – | Toilets: without id the number to match, with id the minimum. |
| year_max | integer | – | Maximum build year. |
| year_min | integer | – | Minimum build year. |
No output schema declared.
No examples provided.
create_discount ~289
Create a discount; it comes out of the operator's payout, never out of the platform commission. Returns the stored discount.
| Name | Type | Req | Description |
|---|---|---|---|
| all_boats | boolean | – | false limits it to `boat_ids`. |
| auto_apply | boolean | – | true applies it without a code. |
| boat_ids | array | – | – |
| code | string | – | The code guests type; required unless trigger is pay_in_full. |
| company_id | string | yes | Company id, from list_boats (`company_id`) or get_company. |
| currency | string | – | EUR or USD: the currency a fixed amount is in. |
| description | string | – | Shown to the guest. |
| discount_type | string | yes | `percentage` or `fixed`. |
| discount_value | number | yes | The percent, or for fixed the amount in `currency` (EUR when omitted). |
| end_date | string | – | Last day it can be booked, YYYY-MM-DD. |
| max_uses | integer | – | – |
| start_date | string | – | First day it can be booked, YYYY-MM-DD. |
| stay_from | string | – | Earliest check-in it covers, YYYY-MM-DD. |
| stay_to | string | – | Latest check-in it covers, YYYY-MM-DD. |
| trigger | string | – | `code` (default) or `pay_in_full`, a percentage taken when the guest pays everything at once. |
No output schema declared.
No examples provided.
delete_boat_image ~61
Delete one photo of the boat for good. To take a photo off the listing and keep it, use update_boat_images with disable_id.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Boat id, from list_boats. |
| image_id | string | yes | – |
No output schema declared.
No examples provided.
delete_discount ~39
End a discount: guests can no longer use it; bookings already made keep it.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Discount id, from list_discounts. |
No output schema declared.
No examples provided.
delete_fee ~45
Delete a direct fee row.
| Name | Type | Req | Description |
|---|---|---|---|
| fee_id | string | yes | Row id, from list_boat_fees. |
| id | string | yes | Boat id, from list_boats. |
No output schema declared.
No examples provided.
delete_price ~56
Delete a direct season price; the dates it covered have no price until another row covers them.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Boat id, from list_boats. |
| price_id | string | yes | Row id, from get_pricing. |
No output schema declared.
No examples provided.
get_availability ~81
The company's fleet calendar: every boat with its partner links, and every event that takes dates — bookings, options, blocks and synced partner or iCal events — each with its source. Read it before add_block to see what a range already holds.
| Name | Type | Req | Description |
|---|---|---|---|
| company_id | string | yes | Company id, from list_boats (`company_id`) or get_company. |
No output schema declared.
No examples provided.
get_boat ~74
One of the operator's boats in full, as its edit page shows it: every editable field, photos with their ids, videos, equipment (hidden items included) and `locked_fields`, the fields MMK or Nausys rewrite on every sync.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Boat id, from list_boats. |
No output schema declared.
No examples provided.
get_boat_details Get Boat Details ~253
Get full details of a specific boat: security deposit, cancellation policy, amenities, fees, seasonal prices, check-in/out times, location details — and the dates it is actually free (priced date ranges plus bookable slots for the year ahead). Use when the user asks about a specific boat, and whenever a boat came back in `named_matches` and they want to know when it IS available. With dates, `stay_price` states Due now, Paid at pickup and Total first, then the charter, its discounts and the deposits.
| Name | Type | Req | Description |
|---|---|---|---|
| date_from | string | – | Optional check-in date YYYY-MM-DD of the stay you are quoting. With date_to, `fees` are the ones that apply to that stay, and `url` opens the boat on those dates when they are one of `bookable_slots`… |
| date_to | string | – | Optional check-out date YYYY-MM-DD — see date_from. |
| guests | number | – | Optional: the party the stay is priced for; without it, the boat's capacity. |
| id | string | yes | Boat id from search_boats results (including named_matches) — copy it verbatim. |
No output schema declared.
No examples provided.
get_boat_standouts What Stands Out About a Boat ~567
What stands out about ONE boat for one week, measured against similar boats: its pros and its cons, each with how it compares ("47.9 ft (better than 99%)", "€2000 security deposit (typical €1700)", "Rare kit: [0.8%] Cool Box" — n% of those boats have it). Use when the guest asks what is special about a boat, what the catch is, why it is cheap or dear, or how it compares with others. It measures build year, length, cabins, bathrooms, guests, the security deposit and kit — and, with date_from, check-in and check-out times, the changeover day and the open weeks left; any of those it does not list is ordinary among the boats in `compared_with`, so do not sell it as an edge or a catch. Other fees are not compared. Kit is measured two ways and both hold: get_boat_details gives each item its [n%] across the whole fleet, this tool what is rare among boats like it. `rare_kit` lists that rare kit as data, most useful first, each with `useful_score` (1-5: how much it changes a charter week for the people aboard). `note` says whether an absence means "ordinary" or that nothing could be compared.
| Name | Type | Req | Description |
|---|---|---|---|
| compare_by | string | – | Which boats count as similar. price (default): the same type priced within ±5% — what else the same money buys. guests: the same type taking the same number of guests — use when the question is value… |
| cutoff_pct | number | – | Optional, default 10, at most 50: a pro beats all but this share of the similar boats, a con trails all but it, rare kit is on fewer than it. Raise it for more, weaker lines. |
| date_from | string | – | Optional check-in date YYYY-MM-DD of the week the guest is looking at: the boats are then compared on that week's prices, and its schedule and open weeks are judged. Pass it whenever the guest has da… |
| fallback | boolean | – | Optional, default true: with nothing past the cut-off on a side, name the one thing that beats (or trails) most of them. false returns only what clears the cut-off. |
| id | string | yes | Boat id from search_boats or get_boat_details — copy it verbatim. |
No output schema declared.
No examples provided.
get_booking ~73
One booking in full: stage (as in list_bookings), dates, guest, price lines, the operator's payout and `payout_schedule`, the payments coming to the operator with their due dates (empty until the booking is paid). Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Booking id, from list_bookings. |
No output schema declared.
No examples provided.
get_cancellation_limits ~111
What the company's payment schedule means for its cancellation policy: per boat source, the share paid in advance and how many days before the charter the rest is due, with the largest refund each notice period covers from money already collected. Read beside get_company's `cancel_refund_percent` and `cancel_refund_days`. `policy_applies` false: the company has no MMK or Nausys boat, so its policy governs nothing and cannot be changed.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Company id. |
No output schema declared.
No examples provided.
get_company ~97
The company profile as its settings page holds it: public profile, contact, bank, tax and invoicing details, the cancellation policy (`cancel_refund_percent` refunded when the guest cancels at least `cancel_refund_days` before the charter), the X-Lock switch (in `settings`) and the member and boat counts.
| Name | Type | Req | Description |
|---|---|---|---|
| company_id | string | yes | Company id, from list_boats (`company_id`) or get_company. |
No output schema declared.
No examples provided.
get_earnings ~62
The company's earnings: total and monthly payouts, payouts still pending on accepted bookings, and the latest bookings, in the currency the operator is paid in.
| Name | Type | Req | Description |
|---|---|---|---|
| company_id | string | yes | Company id, from list_boats (`company_id`) or get_company. |
No output schema declared.
No examples provided.
get_location_details Get Marina/Location Details ~193
Get full details of a marina, anchorage or bay by ID: description, amenities, contact, boat count and cheapest day rate, PLUS what only we know from tracked AIS traffic — how busy it is in each month of the year, how boats use it (share of overnight visits, typical day-stop length, what time it fills up), whether it is a hidden gem, the places boats actually sail to from there, most-travelled first with the share of the tracked trips each one takes and an estimated passage time, and the nearest bookable base for a spot with no fleet of its own. Use when the user is viewing or asks about a specific place, asks when it is quiet, or asks where to go next from one. Busyness compares a place to its own peak month, never to another place.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Location id from search_locations results — copy it verbatim. |
No output schema declared.
No examples provided.
get_poi_details Get Point of Interest Details ~91
Get full details of a point of interest by ID: description, opening hours, address, contact, nearby marinas, special offers. Use when user is viewing or asks about a specific POI. POIs carry NO rating or review count — do not claim one or ask the guest to check it.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | POI id from search_pois results — copy it verbatim. |
No output schema declared.
No examples provided.
get_pricing ~100
The season prices of the fleet: per boat, every week-price row with its id, date span (month/day, repeating every year), `price_per_day` and `source`. Rows with `source` mmk or nausys come from the partner and change there; rows with `source` direct are the operator's to edit with add_price, update_price and delete_price.
| Name | Type | Req | Description |
|---|---|---|---|
| company_id | string | – | Optional: one company only. |
No output schema declared.
No examples provided.
get_trip_details Get Trip/Itinerary Details ~65
Get full details of a sailing itinerary/trip by ID: day-by-day stops, distances, activities, highlights, notes. Use when user is viewing or asks about a specific trip.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Trip id from search_trips results — copy it verbatim. |
No output schema declared.
No examples provided.
list_boat_fees ~73
Every extra and fee row of a boat, as its edit page lists them: amount, period, whether it is required, how it is collected, and its `source`. Rows with `source` direct are the operator's to edit.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Boat id, from list_boats. |
No output schema declared.
No examples provided.
list_boats ~97
The operator's own fleet: every boat of each company the key holder belongs to, published or not, with its company's name, specs, pricing source, changeover settings and photos. Start here: it gives the boat ids and company ids every other operator tool takes. An empty list means the account belongs to no company.
| Name | Type | Req | Description |
|---|---|---|---|
| company_id | string | – | Optional: one company only. Without it, every company the account belongs to. |
No output schema declared.
No examples provided.
list_bookings ~135
Every booking on the operator's boats, newest charter first. `status` and `payment_status` give the stage: `waitlist` is On waitlist (queued behind another hold), unpaid `pending` or `accepted` is an Option that lapses at `hold_expires_at`, and a booking with money in is booked. Each row states the price the guest pays, the discounts and the operator's own payout, in the currency of `payout_money`. Read-only: bookings are handled on the dashboard. An empty list means no bookings yet.
| Name | Type | Req | Description |
|---|---|---|---|
| boat_id | string | – | Optional: one boat only. |
No output schema declared.
No examples provided.
list_calendars ~79
The external calendars (iCal feeds, a Google Calendar by its secret iCal address) connected to one boat, with their sync state. MMK and Nausys are linked automatically and are not listed here. An empty list means none is connected to that boat.
| Name | Type | Req | Description |
|---|---|---|---|
| boat_id | string | yes | Boat id, from list_boats. |
No output schema declared.
No examples provided.
list_discounts ~105
The company's active discounts: codes guests type at checkout, automatic ones, and the pay-in-full discount, each with its value, booking window (`start_date`..`end_date`), stay window (`stay_from`..`stay_to`) and the boats it covers (`all_boats`, else `boat_ids`). An empty list means the company runs no discount.
| Name | Type | Req | Description |
|---|---|---|---|
| company_id | string | yes | Company id, from list_boats (`company_id`) or get_company. |
No output schema declared.
No examples provided.
remove_block ~55
Remove a block the operator placed, freeing its dates and releasing the partner holds it placed.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Block id: `block_id` on the event in get_availability, or `id` from add_block. |
No output schema declared.
No examples provided.
remove_calendar ~50
Disconnect an external calendar: its blocked dates are freed, and the holds X-Lock placed for them on the partner calendars are released.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Source id, from list_calendars. |
No output schema declared.
No examples provided.
search_boats Search Charter Boats ~2,548
Search charter boats by location, name, type, dates, capacity, budget. The response `total_matching` is the FULL count of matching boats — results are the top `limit` of those, so phrase counts from it ("8 of 48 available") and re-call with a higher limit when the guest wants more. Pass the guest's dates as they gave them. Each boat sets its own changeover day (`checkinout_days`) and its own minimum stay (`min_charter_days`), so the week a boat can actually be sold may not start on the day asked for — `price_summary` always names the real week, and it is the one sentence to quote, as it stands: the boat page's own Total for the stay it names, for the `guests` given (else the boat's max guests), all in (charter, every required fee charged now or at pickup, the 45 EUR platform fee; refundable deposits never), and the discount applied (the percent the site's card shows); a stay other than a week names its dates and length ("for Jun 19–22 (3 nights), 4 guests"); with no dates it is the boat's lowest week ("From", at max guests, precomputed). `list_price` holds the same figures — `total` (the stay's), `per_day` (that total per day for the boat; `from` when no dates were given), `party` (the guests it is priced for), `original_per_day` and `discount_pct` when a discount applies. For Due now, Paid at pickup and each deposit by name call get_boat_details with the dates. No total here includes an optional extra — `price_summary`, `list_price` and the `total_max` screen all leave out a skipper where `skippered` is 'optional', a hostess, a cook — so for a total with one, call get_boat_details with the dates before you answer and add the fee it lists under `fees.optional`, or say the boat lists none — never a typical or estimated rate, and call no budget met or exceeded on one. When `boats` is short, `alternatives` holds the closest boats, and each one's `relaxed` names what it loosened: `dates` (the week either side), `place` (a nearby base), `model` (another model of the sa…
| Name | Type | Req | Description |
|---|---|---|---|
| boat_type | string | – | – |
| cabins | integer | – | Minimum number of guest cabins (crew cabins are not counted) |
| date_from | string | – | Start date YYYY-MM-DD |
| date_to | string | – | End date YYYY-MM-DD |
| features | array | – | Equipment/amenity filters — boats must have ALL listed. Namespaced slugs ("dinghy:hypalon") are subtypes that already imply the parent — do not also list the parent. Map user phrasing to slugs: "ac"/… |
| guests | integer | – | Number of guests |
| length_min | integer | – | Minimum boat length in feet |
| limit | integer | – | – |
| location | string | – | Destination name (fuzzy matched) |
| makemodel | string | – | Make and/or model, plain text, exactly as the guest said it: "Bali 4.2", "Fountaine Pajot", "FP 41", "Lagoon", "Oceanis 46". Make alone is fine and so is a MODEL alone. Do not split it, do not add pu… |
| price_max | number | – | Max price per day for the boat in EUR, all fees in — a boat's WEEKLY list figure: a week's grand total (charter, every required fee now or at pickup, the 45 EUR platform fee, our discounts; deposits… |
| price_min | number | – | Min price per day for the boat in EUR, all fees in — a boat's WEEKLY list figure: a week's grand total (charter, every required fee now or at pickup, the 45 EUR platform fee, our discounts; deposits… |
| search | string | – | Boat NAME only ("Papillon", "Ziphius") — the name an operator gave one hull, matched as a WHOLE WORD, so send the name the guest said and not a shortening of it. NEVER a make or a model: both go in `… |
| sort | string | – | Sort order. Default: best_value (best value, available boats first). Use deals for biggest discounts first. |
| total_max | number | – | Max grand total for the stay in EUR (the charter, every required fee now or at pickup and the flat 45 EUR platform fee; deposits never included): screened on the total `price_summary` states (`list_p… |
| year_min | integer | – | Minimum build year |
No output schema declared.
No examples provided.
search_content Search Sailing Knowledge Base ~99
Search articles and Q&A on charter.boats. Use for questions about booking process, costs, licenses, cancellation, deposits, check-in, packing, etc. For developer questions about our API (endpoints, keys, params), use type=api to search the API docs at docs.charter.boats.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
| q | string | yes | Short keyword query (2-4 words) |
| type | string | – | – |
No output schema declared.
No examples provided.
search_locations Search Sailing Destinations ~476
Find marinas, harbours and anchorages three ways: by NAME (q), by POPULARITY within an area (region/country/city — ranked on observed AIS vessel traffic for a month), or by REACH from a place you already have (`from` + `within_nm`) — where boats are actually recorded sailing to from there, with measured passage times. Use `from` for "where can I sail from X", "what is a day sail from X", "somewhere quieter nearby". Provide q, or an area, or from.
| Name | Type | Req | Description |
|---|---|---|---|
| city | string | – | – |
| country | string | – | Country name or 2-letter code |
| from | string | – | Origin location id (or slug) to sail FROM — take it from an earlier search_locations or get_location_details result. Returns places boats were tracked sailing to from there. |
| limit | integer | – | – |
| month | integer | – | Month to rank popularity for (default: current month) |
| q | string | – | Name search (min 2 chars). Optional when an area filter is given. |
| region | string | – | Sailing region as the guest says it: Dalmatia, Istria, Kvarner, the Ionian, the Saronic, the Cyclades, the Dodecanese, the Sporades |
| sort | string | – | Default popularity = real vessel traffic for the month; boats = charter fleet size; rating = Google rating |
| type | string | – | Kind of place — e.g. anchorage for "quiet bays"; spot = an unclassified stop (beach, spit, headland) |
| within_nm | integer | – | How far, in nautical miles, for a "from" search. Default 35. Pick the ring by time — a charter boat makes about 6 knots, plus 30 minutes to leave and arrive, so: 10nm ≈ 2.2h, 20nm ≈ 3.8h, 35nm ≈ 6.3h… |
No output schema declared.
No examples provided.
search_pois Find Nearby Points of Interest ~100
Find restaurants, fuel, groceries, attractions near a location, or search by POI name. POIs carry no ratings — rank and describe them by what they are and how close they are.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | – | – |
| limit | integer | – | – |
| location | string | – | Location name (fuzzy). Required unless q is provided. |
| location_id | string | – | – |
| q | string | – | Search POI by name |
No output schema declared.
No examples provided.
search_routes Find Sailing Routes ~115
Find sailing passages between destinations with distance and difficulty.
| Name | Type | Req | Description |
|---|---|---|---|
| difficulty | string | – | – |
| from | string | – | Place the passage starts or ends at, as the guest says it ("Sivota", "Nydri, Greece", "Dalmatia"). Resolved to a real place; if it resolves to nothing you get `from_unresolved` and no passages, never… |
| limit | integer | – | – |
| location_id | string | – | – |
| q | string | – | Search route by title |
No output schema declared.
No examples provided.
search_trips Find Sailing Itineraries ~151
Find existing curated sailing itineraries by location, name, duration, activities.
| Name | Type | Req | Description |
|---|---|---|---|
| activities | string | – | Comma-separated activities |
| boat_type | string | – | – |
| limit | integer | – | – |
| location | string | – | Place the itinerary passes through, as the guest says it ("Split", "Nydri, Greece", "Dalmatia", "Croatia"). Resolved to a real place; if it resolves to nothing you get `location_unresolved` and no it… |
| location_id | string | – | – |
| max_days | integer | – | – |
| min_days | integer | – | – |
| q | string | – | Search itinerary by title |
No output schema declared.
No examples provided.
set_cancellation_policy ~168
Set the company's cancellation policy, company owners only: a guest who cancels at least `cancel_refund_days` before the charter gets `cancel_refund_percent` of the charter price back. The policy applies to the company's MMK and Nausys bookings only; its direct boats follow charter.boats terms, so a company whose boats are all direct is refused. Read get_cancellation_limits first. Returns the company as it now stands.
| Name | Type | Req | Description |
|---|---|---|---|
| cancel_refund_days | integer | yes | Days before the charter the guest must cancel by, 1 to 90. |
| cancel_refund_percent | integer | yes | Share of the charter price refunded, 0 to 100. |
| company_id | string | yes | Company id, from list_boats (`company_id`) or get_company. |
No output schema declared.
No examples provided.
set_cross_lock ~144
Switch X-Lock for a company, company admins and owners only. With X-Lock on, every block, option or booking placed on one partner calendar (MMK or Nausys) also places a hold on the boat's other partner calendar. `sync_existing` true also places or releases those holds for the bookings and blocks already there. Returns the company as it now stands. Read the current value with its read tool first; this call returns the value as it now stands.
| Name | Type | Req | Description |
|---|---|---|---|
| company_id | string | yes | Company id, from list_boats (`company_id`) or get_company. |
| enabled | boolean | yes | – |
| sync_existing | boolean | – | – |
No output schema declared.
No examples provided.
set_equipment_visibility ~93
Hide an equipment item from the boat's public listing and search, or show it again; the same item under another wording follows it. Use the item's name as get_boat lists it in `equipment_items`. Returns the new state.
| Name | Type | Req | Description |
|---|---|---|---|
| hidden | boolean | yes | – |
| id | string | yes | Boat id, from list_boats. |
| name | string | yes | The item as get_boat lists it. |
No output schema declared.
No examples provided.
sync_calendar ~44
Pull one external calendar now. Returns how many events it brought in, or the error the feed gave.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Source id, from list_calendars. |
No output schema declared.
No examples provided.
update_boat ~387
Change details of one of the operator's boats; only the fields sent change, and a field listed in `locked_fields` is ignored because the partner sync owns it. The answer carries `is_published` and `missing`, what the boat still lacks to be listed. Read the current value with its read tool first; this call returns the value as it now stands.
| Name | Type | Req | Description |
|---|---|---|---|
| berths | integer | – | – |
| boat_type | string | – | – |
| cabins | integer | – | – |
| capacity | integer | – | Maximum guests. |
| charter_day | integer | – | Changeover weekday, 0 Sunday to 6 Saturday. |
| check_in_periods | array | – | Check-in rules by date range, in the shape get_boat returns them. |
| checkin_time | string | – | HH:MM |
| checkout_time | string | – | HH:MM |
| deposit_with_waiver | number | – | EUR: the deposit when the guest takes the damage waiver. |
| description | string | – | – |
| features | array | – | The owner-entered equipment slugs, the whole list: it replaces the previous one. |
| id | string | yes | Boat id, from list_boats. |
| instant_book | boolean | – | – |
| length_ft | number | – | On a partner-synced boat this pins the length against the sync. |
| length_unpin | boolean | – | true restores the governed length of a pinned boat. |
| location_id | integer | – | Home marina id. |
| manufacturer_id | string | – | – |
| min_charter_days | integer | – | – |
| model | string | – | – |
| rental_type | string | – | – |
| security_deposit | number | – | EUR. |
| skipper | integer | – | 1 when a skipper is required. |
| title | string | – | – |
| toilets | integer | – | – |
| year | integer | – | – |
No output schema declared.
No examples provided.
update_boat_images ~122
Hide one photo, show a hidden one again, or set the photo order (the first is the cover); send one of the three. Photo ids come from get_boat. Returns the boat with its photos as they now stand. New photos are uploaded on the boat's edit page.
| Name | Type | Req | Description |
|---|---|---|---|
| disable_id | string | – | Photo id to hide. |
| enable_id | string | – | Photo id to show again. |
| id | string | yes | Boat id, from list_boats. |
| image_ids | array | – | Every photo id in the new order. |
No output schema declared.
No examples provided.
update_company ~360
Change company details; only the fields sent change. Any member may change the public profile; contact email, bank, tax and invoicing details are the owner's, and a request naming one from anyone else is refused whole. Read the current value with its read tool first; this call returns the value as it now stands.
| Name | Type | Req | Description |
|---|---|---|---|
| about | string | – | – |
| address_line1 | string | – | – |
| address_line2 | string | – | – |
| bank_name | string | – | Owner only. |
| bic_swift | string | – | Owner only. |
| city | string | – | – |
| company_id | string | yes | Company id, from list_boats (`company_id`) or get_company. |
| country_code | string | – | – |
| cover_image_url | string | – | – |
| description | string | – | – |
| string | – | Owner only: where bookings and guest messages are sent. | |
| iban | string | – | Owner only: the EUR payout account. |
| invoice_email | string | – | Owner only. |
| legal_name | string | – | Owner only. |
| logo_url | string | – | – |
| name | string | – | – |
| phone | string | – | – |
| postal_code | string | – | – |
| registration_number | string | – | Owner only. |
| slug | string | – | The address of the company page. |
| state | string | – | – |
| tax_id | string | – | Owner only. |
| usd_account_number | string | – | Owner only: the USD payout account. |
| usd_bank_name | string | – | Owner only. |
| usd_bic_swift | string | – | Owner only. |
| vat_number | string | – | Owner only. |
| vat_registered | boolean | – | Owner only. |
| website_url | string | – | – |
No output schema declared.
No examples provided.
update_discount ~253
Change a discount; only the fields sent change. Read the current value with its read tool first; this call returns the value as it now stands.
| Name | Type | Req | Description |
|---|---|---|---|
| all_boats | boolean | – | false limits it to `boat_ids`. |
| auto_apply | boolean | – | true applies it without a code. |
| boat_ids | array | – | – |
| code | string | – | – |
| currency | string | – | EUR or USD: the currency a fixed amount is in. |
| description | string | – | Shown to the guest. |
| discount_type | string | – | `percentage` or `fixed`. |
| discount_value | number | – | The percent, or for fixed the amount in `currency` (EUR when omitted). |
| end_date | string | – | Last day it can be booked, YYYY-MM-DD. |
| id | string | yes | Discount id, from list_discounts. |
| is_active | boolean | – | – |
| max_uses | integer | – | – |
| start_date | string | – | First day it can be booked, YYYY-MM-DD. |
| stay_from | string | – | Earliest check-in it covers, YYYY-MM-DD. |
| stay_to | string | – | Latest check-in it covers, YYYY-MM-DD. |
No output schema declared.
No examples provided.
update_fee ~249
Change a direct fee row; only the fields sent change. Read the current value with its read tool first; this call returns the value as it now stands.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | number | – | EUR, or a percent when amount_is_percentage. |
| amount_is_percentage | boolean | – | – |
| calculation_type | string | – | How it is collected: `separate_payment` paid at the base (default), `advance_payment` charged at booking, `included_in_price`. |
| category | string | – | – |
| description | string | – | The fee as guests read it. |
| fee_id | string | yes | Row id, from list_boat_fees. |
| id | string | yes | Boat id, from list_boats. |
| on_request | boolean | – | – |
| percentage_base | string | – | What the percentage is taken on; empty is the charter price. |
| period | string | – | How it is counted, per booking, day, night, person or week; the answer to a wrong value lists the allowed ones. |
| required | boolean | – | true when every guest pays it. |
| valid_from | string | – | YYYY-MM-DD |
| valid_to | string | – | YYYY-MM-DD |
No output schema declared.
No examples provided.
update_price ~140
Change a direct season price; only the fields sent change. Read the current value with its read tool first; this call returns the value as it now stands.
| Name | Type | Req | Description |
|---|---|---|---|
| end_day | integer | – | – |
| end_month | integer | – | – |
| id | string | yes | Boat id, from list_boats. |
| name | string | – | Season name. |
| price_id | string | yes | Row id, from get_pricing. |
| price_per_day | number | – | EUR per day for the boat. |
| priority | integer | – | The higher one wins where two seasons overlap. |
| start_day | integer | – | – |
| start_month | integer | – | – |
No output schema declared.
No examples provided.
How do I install the Charter Boats MCP server?
Charter Boats is a hosted endpoint at https://charter.boats/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · charter.boats
claude mcp add --transport http boats-charter-charter-boats 'https://charter.boats/mcp'
What is the Charter Boats MCP server?
Charter Boats is an MCP server listed in the public MCP registry as boats.charter/charter-boats. Search 14,000+ charter boats with live prices, plus marinas, anchorages, routes and itineraries. This page covers its hosted endpoint (https://charter.boats/mcp).
Is the Charter Boats MCP server safe to use?
Charter Boats scores 59 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Charter Boats MCP server expose?
Charter Boats exposes 45 tools: search_boats, search_locations, search_pois, search_routes, search_trips, and 40 more. Their descriptions and schemas cost roughly 9,490 tokens of context every time the server is loaded.
Does the Charter Boats MCP server require authentication?
No. We connected to Charter Boats without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the Charter Boats MCP server still maintained?
Charter Boats is still listed as active in the MCP registry. We last reached this channel on 18 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.