Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Charter Boats

REMOTE · CHARTER.BOATS

Search 14,000+ charter boats with live prices, plus marinas, anchorages, routes and itineraries.

Available components

59 Trust /100

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.

Trust breakdown (7 categories)

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
Transport & Reachability100
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
Changelog

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.

Diagnostics

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
MCP tools · 45 exposed · ~9,490 tokens

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 →

Tool Tokens
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.

NameTypeReqDescription
boat_idstringyesBoat id, from list_boats.
end_atstringyesLast day, YYYY-MM-DD.
notesstring––
reasonstring––
start_atstringyesFirst 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.

NameTypeReqDescription
boat_idstringyesBoat id, from list_boats.
source_namestringyesA name for it.
source_typestring–Default `ical`.
source_urlstringyesThe 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.

NameTypeReqDescription
amountnumberyesEUR, or a percent when amount_is_percentage.
amount_is_percentageboolean––
calculation_typestring–How it is collected: `separate_payment` paid at the base (default), `advance_payment` charged at booking, `included_in_price`.
categorystring––
descriptionstringyesThe fee as guests read it.
idstringyesBoat id, from list_boats.
on_requestboolean––
percentage_basestring–What the percentage is taken on; empty is the charter price.
periodstringyesHow it is counted, per booking, day, night, person or week; the answer to a wrong value lists the allowed ones.
requiredboolean–true when every guest pays it.
valid_fromstring–YYYY-MM-DD
valid_tostring–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.

NameTypeReqDescription
end_dayintegeryes–
end_monthintegeryes–
idstringyesBoat id, from list_boats.
namestringyesSeason name.
price_per_daynumberyesEUR per day for the boat.
priorityinteger–The higher one wins where two seasons overlap.
start_dayintegeryes–
start_monthintegeryes–

No output schema declared.

No examples provided.

compare_boat ~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.

NameTypeReqDescription
berthsnumber–Berths: without id the number to match, with id the minimum.
boat_typestring–Without id: the boat type (required with country).
cabinsnumber–Cabins: without id the number to match; with id the minimum guest cabins, crew cabins not counted (as search_boats).
citystring–Without id, optional: city or town, e.g. Split.
countrystring–Without id: ISO country code, e.g. HR (required with boat_type).
guestsnumber–Guests: without id the number to match, with id the minimum.
idstring–Boat id from search_boats or get_boat_details — copy it verbatim. Omit to describe a boat by its specs.
length_maxinteger–Maximum length in feet.
length_mininteger–Minimum length in feet.
lockarray–With id: keep only peers the same as the boat in these fields — the fields a peer's `same` lists.
makemodelstring–Make and/or model as the guest said it, e.g. "Lagoon 42", "Bali".
regionstring–Without id, optional: sailing region, e.g. Dalmatia.
toiletsnumber–Toilets: without id the number to match, with id the minimum.
year_maxinteger–Maximum build year.
year_mininteger–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.

NameTypeReqDescription
all_boatsboolean–false limits it to `boat_ids`.
auto_applyboolean–true applies it without a code.
boat_idsarray––
codestring–The code guests type; required unless trigger is pay_in_full.
company_idstringyesCompany id, from list_boats (`company_id`) or get_company.
currencystring–EUR or USD: the currency a fixed amount is in.
descriptionstring–Shown to the guest.
discount_typestringyes`percentage` or `fixed`.
discount_valuenumberyesThe percent, or for fixed the amount in `currency` (EUR when omitted).
end_datestring–Last day it can be booked, YYYY-MM-DD.
max_usesinteger––
start_datestring–First day it can be booked, YYYY-MM-DD.
stay_fromstring–Earliest check-in it covers, YYYY-MM-DD.
stay_tostring–Latest check-in it covers, YYYY-MM-DD.
triggerstring–`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.

NameTypeReqDescription
idstringyesBoat id, from list_boats.
image_idstringyes–

No output schema declared.

No examples provided.

delete_discount ~39

End a discount: guests can no longer use it; bookings already made keep it.

NameTypeReqDescription
idstringyesDiscount id, from list_discounts.

No output schema declared.

No examples provided.

delete_fee ~45

Delete a direct fee row.

NameTypeReqDescription
fee_idstringyesRow id, from list_boat_fees.
idstringyesBoat 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.

NameTypeReqDescription
idstringyesBoat id, from list_boats.
price_idstringyesRow 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.

NameTypeReqDescription
company_idstringyesCompany 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.

NameTypeReqDescription
idstringyesBoat id, from list_boats.

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
date_fromstring–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_tostring–Optional check-out date YYYY-MM-DD — see date_from.
guestsnumber–Optional: the party the stay is priced for; without it, the boat's capacity.
idstringyesBoat id from search_boats results (including named_matches) — copy it verbatim.

No output schema declared.

No examples provided.

get_boat_standouts ~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.

NameTypeReqDescription
compare_bystring–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_pctnumber–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_fromstring–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…
fallbackboolean–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.
idstringyesBoat 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.

NameTypeReqDescription
idstringyesBooking 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.

NameTypeReqDescription
idstringyesCompany 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.

NameTypeReqDescription
company_idstringyesCompany 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.

NameTypeReqDescription
company_idstringyesCompany id, from list_boats (`company_id`) or get_company.

No output schema declared.

No examples provided.

get_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.

NameTypeReqDescription
idstringyesLocation id from search_locations results — copy it verbatim.

No output schema declared.

No examples provided.

get_poi_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.

NameTypeReqDescription
idstringyesPOI 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.

NameTypeReqDescription
company_idstring–Optional: one company only.

No output schema declared.

No examples provided.

get_trip_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.

NameTypeReqDescription
idstringyesTrip 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.

NameTypeReqDescription
idstringyesBoat 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.

NameTypeReqDescription
company_idstring–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.

NameTypeReqDescription
boat_idstring–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.

NameTypeReqDescription
boat_idstringyesBoat 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.

NameTypeReqDescription
company_idstringyesCompany 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.

NameTypeReqDescription
idstringyesBlock 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.

NameTypeReqDescription
idstringyesSource id, from list_calendars.

No output schema declared.

No examples provided.

search_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…

NameTypeReqDescription
boat_typestring––
cabinsinteger–Minimum number of guest cabins (crew cabins are not counted)
date_fromstring–Start date YYYY-MM-DD
date_tostring–End date YYYY-MM-DD
featuresarray–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"/…
guestsinteger–Number of guests
length_mininteger–Minimum boat length in feet
limitinteger––
locationstring–Destination name (fuzzy matched)
makemodelstring–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_maxnumber–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_minnumber–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…
searchstring–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 `…
sortstring–Sort order. Default: best_value (best value, available boats first). Use deals for biggest discounts first.
total_maxnumber–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_mininteger–Minimum build year

No output schema declared.

No examples provided.

search_content ~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.

NameTypeReqDescription
limitinteger––
qstringyesShort keyword query (2-4 words)
typestring––

No output schema declared.

No examples provided.

search_locations ~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.

NameTypeReqDescription
citystring––
countrystring–Country name or 2-letter code
fromstring–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.
limitinteger––
monthinteger–Month to rank popularity for (default: current month)
qstring–Name search (min 2 chars). Optional when an area filter is given.
regionstring–Sailing region as the guest says it: Dalmatia, Istria, Kvarner, the Ionian, the Saronic, the Cyclades, the Dodecanese, the Sporades
sortstring–Default popularity = real vessel traffic for the month; boats = charter fleet size; rating = Google rating
typestring–Kind of place — e.g. anchorage for "quiet bays"; spot = an unclassified stop (beach, spit, headland)
within_nminteger–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 ~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.

NameTypeReqDescription
categorystring––
limitinteger––
locationstring–Location name (fuzzy). Required unless q is provided.
location_idstring––
qstring–Search POI by name

No output schema declared.

No examples provided.

search_routes ~115

Find sailing passages between destinations with distance and difficulty.

NameTypeReqDescription
difficultystring––
fromstring–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…
limitinteger––
location_idstring––
qstring–Search route by title

No output schema declared.

No examples provided.

search_trips ~151

Find existing curated sailing itineraries by location, name, duration, activities.

NameTypeReqDescription
activitiesstring–Comma-separated activities
boat_typestring––
limitinteger––
locationstring–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_idstring––
max_daysinteger––
min_daysinteger––
qstring–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.

NameTypeReqDescription
cancel_refund_daysintegeryesDays before the charter the guest must cancel by, 1 to 90.
cancel_refund_percentintegeryesShare of the charter price refunded, 0 to 100.
company_idstringyesCompany 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.

NameTypeReqDescription
company_idstringyesCompany id, from list_boats (`company_id`) or get_company.
enabledbooleanyes–
sync_existingboolean––

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.

NameTypeReqDescription
hiddenbooleanyes–
idstringyesBoat id, from list_boats.
namestringyesThe 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.

NameTypeReqDescription
idstringyesSource 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.

NameTypeReqDescription
berthsinteger––
boat_typestring––
cabinsinteger––
capacityinteger–Maximum guests.
charter_dayinteger–Changeover weekday, 0 Sunday to 6 Saturday.
check_in_periodsarray–Check-in rules by date range, in the shape get_boat returns them.
checkin_timestring–HH:MM
checkout_timestring–HH:MM
deposit_with_waivernumber–EUR: the deposit when the guest takes the damage waiver.
descriptionstring––
featuresarray–The owner-entered equipment slugs, the whole list: it replaces the previous one.
idstringyesBoat id, from list_boats.
instant_bookboolean––
length_ftnumber–On a partner-synced boat this pins the length against the sync.
length_unpinboolean–true restores the governed length of a pinned boat.
location_idinteger–Home marina id.
manufacturer_idstring––
min_charter_daysinteger––
modelstring––
rental_typestring––
security_depositnumber–EUR.
skipperinteger–1 when a skipper is required.
titlestring––
toiletsinteger––
yearinteger––

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.

NameTypeReqDescription
disable_idstring–Photo id to hide.
enable_idstring–Photo id to show again.
idstringyesBoat id, from list_boats.
image_idsarray–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.

NameTypeReqDescription
aboutstring––
address_line1string––
address_line2string––
bank_namestring–Owner only.
bic_swiftstring–Owner only.
citystring––
company_idstringyesCompany id, from list_boats (`company_id`) or get_company.
country_codestring––
cover_image_urlstring––
descriptionstring––
emailstring–Owner only: where bookings and guest messages are sent.
ibanstring–Owner only: the EUR payout account.
invoice_emailstring–Owner only.
legal_namestring–Owner only.
logo_urlstring––
namestring––
phonestring––
postal_codestring––
registration_numberstring–Owner only.
slugstring–The address of the company page.
statestring––
tax_idstring–Owner only.
usd_account_numberstring–Owner only: the USD payout account.
usd_bank_namestring–Owner only.
usd_bic_swiftstring–Owner only.
vat_numberstring–Owner only.
vat_registeredboolean–Owner only.
website_urlstring––

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.

NameTypeReqDescription
all_boatsboolean–false limits it to `boat_ids`.
auto_applyboolean–true applies it without a code.
boat_idsarray––
codestring––
currencystring–EUR or USD: the currency a fixed amount is in.
descriptionstring–Shown to the guest.
discount_typestring–`percentage` or `fixed`.
discount_valuenumber–The percent, or for fixed the amount in `currency` (EUR when omitted).
end_datestring–Last day it can be booked, YYYY-MM-DD.
idstringyesDiscount id, from list_discounts.
is_activeboolean––
max_usesinteger––
start_datestring–First day it can be booked, YYYY-MM-DD.
stay_fromstring–Earliest check-in it covers, YYYY-MM-DD.
stay_tostring–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.

NameTypeReqDescription
amountnumber–EUR, or a percent when amount_is_percentage.
amount_is_percentageboolean––
calculation_typestring–How it is collected: `separate_payment` paid at the base (default), `advance_payment` charged at booking, `included_in_price`.
categorystring––
descriptionstring–The fee as guests read it.
fee_idstringyesRow id, from list_boat_fees.
idstringyesBoat id, from list_boats.
on_requestboolean––
percentage_basestring–What the percentage is taken on; empty is the charter price.
periodstring–How it is counted, per booking, day, night, person or week; the answer to a wrong value lists the allowed ones.
requiredboolean–true when every guest pays it.
valid_fromstring–YYYY-MM-DD
valid_tostring–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.

NameTypeReqDescription
end_dayinteger––
end_monthinteger––
idstringyesBoat id, from list_boats.
namestring–Season name.
price_idstringyesRow id, from get_pricing.
price_per_daynumber–EUR per day for the boat.
priorityinteger–The higher one wins where two seasons overlap.
start_dayinteger––
start_monthinteger––

No output schema declared.

No examples provided.

Install

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

# add to Claude Code
claude mcp add --transport http boats-charter-charter-boats 'https://charter.boats/mcp'
Common questions

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.