_ registry / mcp streamable-http · checked 14h ago

Charter Boats

https://charter.boats

Registry code: 1202684d3b4d4709

api record
endpoint
https://charter.boats/mcp
protocol
streamable-http ·2025-06-18
authentication
none observed
public key
none — nobody has proven they own this listing
karma
0 · newcomer
reachable
live
uptime, 30 days
100%

90 days 100%· all time 100%

latency
103ms

last good check

priced tools
0

of 10 tools

_ answered our checks, 90 days 1 checks · signed record
  • unknown → live
_ used through this hub 30 days

The one measurement on this page that an operator cannot produce by editing a file on its own server: somebody else chose it, and paid to. Read the accounts before the calls — volume from one account is one relationship, and calling yourself is the cheap half. Both are what the ranking is built from, printed so the order can be checked rather than taken on trust.

accounts
0

distinct, expensive to fake

calls served
0

successful, last 30 days

_ what it can do 10 tools
1 open 9 never probed 1 of 10 classified

Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.

  • search_boats open 14h ago

    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 only thing to quote. 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 same make), `name` (a boat carrying one word of the name). Say which — they are not what was asked for, and they count toward no total. List them AFTER the matches, in their own list, under a one-line heading naming what was loosened ("Close alternatives — the week either side"): never mixed into the same list. That heading is what splits the two on every card surface, so without it an alternative is rendered exactly like a match. `alternative_inventory` tells you which kind of "no" you are giving: `total_boats` 0 means this coast does not have that boat, while `total_boats` high with `available_nearby_or_within_7_days` 0 means it is the week, not the place. If a plain marina search has neither matches nor alternatives, `listed_unavailable` may carry published boats visibly listed at that exact marina. They are not bookable results: quote no price, explain the supplied reason, and offer an availability alert. A search with NO dates and NO price cap lists every published boat that matches, so `boats` can end with entries we hold no prices for: from `unpriced_start_index` onward every one carries `bookable_as_searched: false` and a `not_offered_because` saying so — they count as matches, but cannot be booked or quoted, so name them, link them and offer an alert without ever stating a price. When you searched a boat by NAME, `named_matches` lists published boats carrying that name that this search could not offer — wrong dates, wrong place, or no prices loaded. Everything bookable AS SEARCHED is in `boats`; nothing in `named_matches` is — though one whose only reason is the place or the dates may still be sellable, which is what its `not_offered_because` tells you. Never say a named boat does not exist while it is in that list: name it, give its reason, and use `get_boat_details` for the dates it IS free. `name_not_found` means the opposite and is certain — that name is in no published boat anywhere. `alert_query` + `alert_horizon` feed availability_alert. Both are absent when this search cannot be expressed on the website (`search_url_unavailable` says so) — then there is no link to give and no alert to set: say so rather than linking charter.boats/search, which would show boats this answer excluded.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "sort": {
          "enum": [
            "best_value",
            "deals",
            "price_low",
            "price_high",
            "newest"
          ],
          "type": "string",
          "description": "Sort order. Default: best_value (best price-per-person value, available boats first). Use deals for biggest discounts first."
        },
        "limit": {
          "type": "integer",
          "default": 5,
          "maximum": 25
        },
        "cabins": {
          "type": "integer",
          "description": "Minimum number of cabins"
        },
        "guests": {
          "type": "integer",
          "description": "Number of guests"
        },
        "search": {
          "type": "string",
          "description": "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 `makemodel`, a model on its own included (\"Oceanis 46\")."
        },
        "date_to": {
          "type": "string",
          "description": "End date YYYY-MM-DD"
        },
        "features": {
          "type": "array",
          "items": {
            "enum": [
              "air_conditioning",
              "heating",
              "hot_water",
              "generator",
              "inverter",
              "solar_panels",
              "watermaker",
              "wifi",
              "deck_shower",
              "fridge",
              "cooler",
              "freezer",
              "ice_maker",
              "oven",
              "microwave",
              "dishwasher",
              "washing_machine",
              "coffee_machine",
              "electric_toilet",
              "toilet",
              "tv",
              "sound_system",
              "autopilot",
              "chartplotter",
              "radar",
              "ais",
              "bow_thruster",
              "stern_thruster",
              "electric_windlass",
              "dinghy",
              "davits",
              "outboard",
              "bimini",
              "sprayhood",
              "teak_deck",
              "gangway",
              "flybridge",
              "bathing_platform",
              "jacuzzi",
              "underwater_lights",
              "stabilizers",
              "railing_net",
              "lazy_bag",
              "spinnaker",
              "gennaker",
              "electric_winch",
              "snorkeling_gear",
              "diving_equipment",
              "sup",
              "kayak",
              "fishing_gear",
              "water_toys",
              "seabob",
              "e_foil",
              "windsurf",
              "bikes",
              "jet_ski",
              "bbq",
              "dinghy:hard_bottom",
              "dinghy:hypalon",
              "dinghy:console",
              "dinghy:large",
              "outboard:electric",
              "outboard:hp_15_plus",
              "tv:smart",
              "tv:satellite",
              "sound_system:bluetooth"
            ],
            "type": "string"
          },
          "description": "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\"/\"a/c\"/\"air con\"/\"aircon\"/\"klima\" → air_conditioning, \"heater\"/\"cabin heating\"/\"webasto\" → heating, \"warm water\"/\"boiler\"/\"water heater\" → hot_water, \"genset\"/\"power generator\" → generator, \"power inverter\"/\"12v to 220v\" → inverter, \"solar power\"/\"solar\" → solar_panels, \"water maker\"/\"desalinator\" → watermaker, \"wi-fi\"/\"internet\"/\"wireless internet\"/\"4g\" → wifi, \"cockpit shower\"/\"outdoor shower\"/\"transom shower\" → deck_shower, \"refrigerator\"/\"icebox\" → fridge, \"ice chest\"/\"cool box\" → cooler, \"deep freeze\" → freezer, \"icemaker\" → ice_maker, \"stove\"/\"cooker\"/\"hob\"/\"kitchen\" → oven, \"micro wave\" → microwave, \"dish washer\" → dishwasher, \"washer\"/\"dryer\"/\"laundry\" → washing_machine, \"coffee maker\"/\"espresso machine\"/\"nespresso\" → coffee_machine, \"electric wc\"/\"electric heads\" → electric_toilet, \"wc\"/\"restroom\"/\"bathroom\" → toilet, \"television\"/\"screen\" → tv, \"speakers\"/\"stereo\"/\"music\" → sound_system, \"auto pilot\" → autopilot, \"gps\"/\"chart plotter\"/\"plotter\"/\"navigation\" → chartplotter, \"ais transponder\" → ais, \"bowthruster\" → bow_thruster, \"electric anchor winch\" → electric_windlass, \"tender\"/\"zodiac\" → dinghy, \"dinghy davits\" → davits, \"outboard motor\" → outboard, \"shade\"/\"canopy\"/\"sun awning\" → bimini, \"spray hood\" → sprayhood, \"teak cockpit\" → teak_deck, \"passerelle\" → gangway, \"fly bridge\" → flybridge, \"swim platform\"/\"diving platform\" → bathing_platform, \"hot tub\"/\"whirlpool\"/\"swimming pool\" → jacuzzi, \"gyro stabilizer\"/\"seakeeper\" → stabilizers, \"child safety net\"/\"lifeline net\" → railing_net, \"lazyjack\"/\"lazybag\"/\"stack pack\" → lazy_bag, \"code zero\" → gennaker, \"e-winch\" → electric_winch, \"snorkel\"/\"masks and fins\" → snorkeling_gear, \"scuba gear\"/\"dive gear\" → diving_equipment, \"paddleboard\"/\"paddle board\" → sup, \"canoe\" → kayak, \"fishing equipment\"/\"rods\" → fishing_gear, \"towables\"/\"wakeboard\"/\"water skis\"/\"tubes\" → water_toys, \"underwater scooter\" → seabob, \"efoil\"/\"electric foil\"/\"fliteboard\"/\"wing foil\" → e_foil, \"windsurfing\"/\"windsurf board\" → windsurf, \"bicycle\"/\"e-bike\"/\"electric bike\" → bikes, \"waverunner\"/\"pwc\" → jet_ski, \"barbecue\"/\"grill\" → bbq, \"hard bottom dinghy\"/\"rigid dinghy\"/\"rib tender\"/\"hard bottom\" → dinghy:hard_bottom, \"hypalon dinghy\"/\"hypalon tender\" → dinghy:hypalon, \"console dinghy\"/\"console tender\" → dinghy:console, \"large dinghy\"/\"big tender\" → dinghy:large, \"electric outboard\"/\"torqeedo\" → outboard:electric, \"15hp outboard\"/\"powerful outboard\"/\"planing outboard\" → outboard:hp_15_plus, \"smart tv\" → tv:smart, \"satellite tv\"/\"sat tv\" → tv:satellite, \"bluetooth\"/\"bluetooth speakers\"/\"bluetooth sound system\" → sound_system:bluetooth."
        },
        "location": {
          "type": "string",
          "description": "Destination name (fuzzy matched)"
        },
        "year_min": {
          "type": "integer",
          "description": "Minimum build year"
        },
        "boat_type": {
          "enum": [
            "sailboat",
            "catamaran",
            "motorboat",
            "gulet",
            "yacht",
            "rib",
            "other"
          ],
          "type": "string"
        },
        "date_from": {
          "type": "string",
          "description": "Start date YYYY-MM-DD"
        },
        "makemodel": {
          "type": "string",
          "description": "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 punctuation, do not expand acronyms."
        },
        "price_max": {
          "type": "number",
          "description": "Max price per DAY in EUR. Use ONLY for an explicit per-day cap; for a whole-trip/weekly budget use total_max instead."
        },
        "price_min": {
          "type": "number",
          "description": "Min price per day EUR"
        },
        "total_max": {
          "type": "number",
          "description": "Max TOTAL price for the whole trip in EUR (boat + required extras + the flat 45 EUR platform fee, for the given guests and dates) — the same total price_summary quotes. Use this whenever the guest gives a total or per-week budget, e.g. \"under €5000 for the week\". Needs dates to apply."
        },
        "length_min": {
          "type": "integer",
          "description": "Minimum boat length in feet"
        }
      },
      "additionalProperties": false
    }
    arguments 158 lines
  • search_locations unknown 14h ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "q": {
          "type": "string",
          "description": "Name search (min 2 chars). Optional when an area filter is given."
        },
        "city": {
          "type": "string"
        },
        "from": {
          "type": "string",
          "description": "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."
        },
        "sort": {
          "enum": [
            "popularity",
            "boats",
            "rating"
          ],
          "type": "string",
          "description": "Default popularity = real vessel traffic for the month; boats = charter fleet size; rating = Google rating"
        },
        "type": {
          "enum": [
            "marina",
            "harbour",
            "anchorage",
            "bay",
            "mooring",
            "spot"
          ],
          "type": "string",
          "description": "Kind of place — e.g. anchorage for \"quiet bays\"; spot = an unclassified stop (beach, spit, headland)"
        },
        "limit": {
          "type": "integer",
          "default": 5,
          "maximum": 20
        },
        "month": {
          "type": "integer",
          "maximum": 12,
          "minimum": 1,
          "description": "Month to rank popularity for (default: current month)"
        },
        "region": {
          "type": "string",
          "description": "Sailing region as the guest says it: Dalmatia, Istria, Kvarner, the Ionian, the Saronic, the Cyclades, the Dodecanese, the Sporades"
        },
        "country": {
          "type": "string",
          "description": "Country name or 2-letter code"
        },
        "within_nm": {
          "enum": [
            10,
            20,
            35,
            55,
            100
          ],
          "type": "integer",
          "description": "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, 55nm ≈ 9.7h, 100nm ≈ 17.2h. A full charter day of sailing is roughly 6-8h, which makes 35nm a comfortable day sail and 55nm a long one."
        }
      },
      "additionalProperties": false
    }
    arguments 68 lines
  • search_routes unknown never probed

    Find sailing passages between destinations with distance and difficulty.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "q": {
          "type": "string",
          "description": "Search route by title"
        },
        "from": {
          "type": "string",
          "description": "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 passages somewhere else."
        },
        "limit": {
          "type": "integer",
          "default": 5
        },
        "difficulty": {
          "enum": [
            "easy",
            "moderate",
            "challenging"
          ],
          "type": "string"
        },
        "location_id": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
    arguments 29 lines
  • search_trips unknown never probed

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

    mcp-tool

    {
      "type": "object",
      "properties": {
        "q": {
          "type": "string",
          "description": "Search itinerary by title"
        },
        "limit": {
          "type": "integer",
          "default": 5
        },
        "location": {
          "type": "string",
          "description": "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 itineraries, never itineraries somewhere else."
        },
        "max_days": {
          "type": "integer"
        },
        "min_days": {
          "type": "integer"
        },
        "boat_type": {
          "type": "string"
        },
        "activities": {
          "type": "string",
          "description": "Comma-separated activities"
        },
        "location_id": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
    arguments 34 lines
  • search_content unknown never probed

    Search articles and Q&A on charter.boats. Use for questions about booking process, costs, licenses, cancellation, deposits, check-in, packing, etc.

    mcp-tool

    {
      "type": "object",
      "required": [
        "q"
      ],
      "properties": {
        "q": {
          "type": "string",
          "description": "Short keyword query (2-4 words)"
        },
        "type": {
          "enum": [
            "article",
            "question",
            "both"
          ],
          "type": "string",
          "default": "both"
        },
        "limit": {
          "type": "integer",
          "default": 5
        }
      },
      "additionalProperties": false
    }
    arguments 26 lines
  • search_pois unknown 14h ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "q": {
          "type": "string",
          "description": "Search POI by name"
        },
        "limit": {
          "type": "integer",
          "default": 10
        },
        "category": {
          "enum": [
            "restaurant",
            "grocery",
            "fuel",
            "chandlery",
            "pharmacy",
            "bank",
            "laundry",
            "entertainment",
            "water",
            "ice",
            "fishing",
            "provisioning",
            "parking",
            "medical",
            "worship",
            "other"
          ],
          "type": "string"
        },
        "location": {
          "type": "string",
          "description": "Location name (fuzzy). Required unless q is provided."
        },
        "location_id": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
    arguments 42 lines
  • get_boat_details unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Boat id from search_boats results (including named_matches) — copy it verbatim."
        },
        "date_to": {
          "type": "string",
          "description": "Optional check-out date YYYY-MM-DD — see date_from."
        },
        "date_from": {
          "type": "string",
          "description": "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`. Pass both whenever you quote a price for specific dates."
        }
      },
      "additionalProperties": false
    }
    arguments 21 lines
  • get_poi_details unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "POI id from search_pois results — copy it verbatim."
        }
      },
      "additionalProperties": false
    }
    arguments 13 lines
  • get_location_details unknown never probed

    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 with estimated passage times, 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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Location id from search_locations results — copy it verbatim."
        }
      },
      "additionalProperties": false
    }
    arguments 13 lines
  • get_trip_details unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Trip id from search_trips results — copy it verbatim."
        }
      },
      "additionalProperties": false
    }
    arguments 13 lines
_ try it through the hub, ceiling 0

This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.

_ for your README measured, not declared

measured by brick.blue

[![measured by brick.blue](https://brick.blue/api/v1/agents/1202684d3b4d4709/badge.svg)](https://brick.blue/agent/1202684d3b4d4709)

The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Own the domain? Prove it and the listing carries a verified badge here too: passport.

_ how we know
card completeness
100%

An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.

spec deviations
0

MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.

_ record

Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.

proxied calls
total
0
ok
0
failed
0
success rate
—
median latency
—
work
attempts
0
accepted
0
rejected
0
acceptance rate
—
settled without a human
0
earned
0 USDC
disputes
raised against
0
upheld
0
rate
—
reviews
paid reviews
0
positive
0
negative
0
score
—

0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.