Skip to content

RYC yacht charter deals

com.rycrentals/dealsrycrentals.comstreamable-httpv1.4.0Scanned

Live discounted yacht charters in 11 destinations: search, price checks, trip cost, routes.

15 tools: 4 change things and 11 only read.

Tools: 0 delete, 0 irreversible, 4 write, 11 read.
  • Reads private data · 2
  • Reads text others write · 5
  • Can send data out · 7
  • 2 findings

Anlyon alternative

4 of these tools change something. Run those as governed actions.

Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.

Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.

Import an OpenAPI spec →

Tools

Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.

15 tools

Changes things 4Claude Code: ask
  • create_deal_alertA link to set up an alert on the site when nothing current fits the person's dates or budget.1 finding

    Why it is in this group

    • The name "create_deal_alert" says "create": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "create_deal_alert" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":false}; The name "create_deal_alert" says "create": a word for a change.

      What this check looks for
    Description, as the server wrote it
    A link to set up an alert on the site when nothing current fits the person's dates or budget. The answers given here are filled in; the site asks only what is missing. After the person signs in by email, the RYC agent searches charter portals and booking sites at once, repeats the search every week and sends only new discounted boats to the Messages page, by notification or email.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • prices_by_monthPrice per berth per week (median, lower and upper quartile), median whole-boat week, share of boats 20%+ off and boats checked, by destination, month and boat type, from the agent'…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Price per berth per week (median, lower and upper quartile), median whole-boat week, share of boats 20%+ off and boats checked, by destination, month and boat type, from the agent's market scans.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • request_availabilityA link the person opens to ask an RYC manager to check and book one discounted boat-week.Can send data out1 finding

    Why it is in this group

    • The name "request_availability" says "request": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Findings

    • Warn

      The server marks "request_availability" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":false}; The name "request_availability" says "request": a word for a change.

      What this check looks for
    Description, as the server wrote it
    A link the person opens to ask an RYC manager to check and book one discounted boat-week. The link opens the boat page with the request form already open; the person signs in by email and presses Send — the assistant cannot send the request itself. The manager replies on the site's Messages page, by notification or email, within an hour from 10:00 to 20:00 Moscow time. Pass the id or page URL from search_deals or get_boat.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • trip_costWhat one boat-week really costs a group: boat price plus mandatory extras (charter pack, transit log, cleaning, tourist tax…) priced by their unit (per booking, per night, per pers…Can send data outNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    What one boat-week really costs a group: boat price plus mandatory extras (charter pack, transit log, cleaning, tourist tax…) priced by their unit (per booking, per night, per person), plus a skipper and other optional extras on request; total and per person, with what is not included (deposit, fuel, marinas, food).

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
Only reads 11Show 11 read-only tools
  • compare_boats2–5 discounted boat-weeks side by side: dates, base, whole-boat price, price per berth, discount, price with per-booking mandatory extras, verdict against the market, cabins, berth…Reads text others writeCan send data outNo findings

    Why it is in this group

    • The name "compare_boats" says "compare": a word for reading.

    What it can reach

    • untrusted-inputThe input takes a URL (input.urls), and the tool reads it: it reads web pages, which anyone can write.
    • outboundThe input takes a URL (input.urls): a request to a URL can carry data to whoever runs it.

    Claude Code: ask, because it is tagged outbound.

    Description, as the server wrote it
    2–5 discounted boat-weeks side by side: dates, base, whole-boat price, price per berth, discount, price with per-booking mandatory extras, verdict against the market, cabins, berths, year, length and heads, plus which one is cheapest, biggest discount, newest and largest. Pass ids or page URLs from search_deals.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • get_boatEverything known about one discounted boat-week: dates, whole-boat price, list price, discount, per-berth price, price history, specs (length, beam, draft, heads, engine, tanks, sa…Reads text others writeCan send data outNo findings

    Why it is in this group

    • The name "get_boat" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe input takes a URL (input.url), and the tool reads it: it reads web pages, which anyone can write.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Claude Code: ask, because it is tagged outbound.

    Description, as the server wrote it
    Everything known about one discounted boat-week: dates, whole-boat price, list price, discount, per-berth price, price history, specs (length, beam, draft, heads, engine, tanks, sails, charter type), equipment, mandatory and optional extras with prices, photos and the boat's other discounted weeks. Pass the id from search_deals (the number at the end of its page URL) or the page URL itself.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • get_destinationOne destination in depth: the sailing area, bases and winds, the season month by month (peak, shoulder, off season, monsoon, hurricanes), live discounted boats and the five best de…No findings

    Why it is in this group

    • The name "get_destination" says "get": a word for reading.
    Description, as the server wrote it
    One destination in depth: the sailing area, bases and winds, the season month by month (peak, shoulder, off season, monsoon, hurricanes), live discounted boats and the five best deals, market prices by month, one-week routes from its bases and the site pages.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • get_routeFull one-week sailing route: description, day-by-day plan (leg, nautical miles, what to expect), each day's stops with latitude/longitude (decimal degrees, harbour or bay level), p…Reads private dataReads text others writeCan send data outNo findings

    Why it is in this group

    • The name "get_route" says "get": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "note": it reads notes.
    • untrusted-inputThe input takes a URL (input.url), and the tool reads it: it reads web pages, which anyone can write.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Claude Code: ask, because it is tagged outbound.

    Description, as the server wrote it
    Full one-week sailing route: description, day-by-day plan (leg, nautical miles, what to expect), each day's stops with latitude/longitude (decimal degrees, harbour or bay level), practical notes on wind, berths and formalities, total miles, the route page, up to five discounted boats departing from the route's start port and the page of all discounted boats in that destination. Pass country and slug from list_routes, or the route page URL.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • get_yacht_modelOne yacht model in depth: its numbers across all discounted weeks, where it is available and from what price, the ten cheapest weeks, the five biggest discounts and similar models.Reads text others writeCan send data outNo findings

    Why it is in this group

    • The name "get_yacht_model" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe input takes a URL (input.url), and the tool reads it: it reads web pages, which anyone can write.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Claude Code: ask, because it is tagged outbound.

    Description, as the server wrote it
    One yacht model in depth: its numbers across all discounted weeks, where it is available and from what price, the ten cheapest weeks, the five biggest discounts and similar models. Pass the model name (e.g. Lagoon 42) or its page URL.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • is_good_dealCompares one boat-week's price with the market for the same destination, departure month and boat type (the agent's scans of hundreds of boats): verdict excellent / good / fair / e…Reads text others writeCan send data outNo findings

    Why it is in this group

    • The description's first verb is "compare": a word for reading.

    What it can reach

    • untrusted-inputThe input takes a URL (input.url), and the tool reads it: it reads web pages, which anyone can write.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Claude Code: ask, because it is tagged outbound.

    Description, as the server wrote it
    Compares one boat-week's price with the market for the same destination, departure month and boat type (the agent's scans of hundreds of boats): verdict excellent / good / fair / expensive, percent above or below the median price per berth, the market quartiles, a recent price cut and cheaper weeks of the same boat. Use it before recommending a boat or when the person asks whether a price is good.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • list_destinationsAll destinations with the number of discounted boats departing in the next three months, the biggest and median discount, the cheapest week, catamaran/monohull split and the destin…No findings

    Why it is in this group

    • The name "list_destinations" says "list": a word for reading.
    Description, as the server wrote it
    All destinations with the number of discounted boats departing in the next three months, the biggest and median discount, the cheapest week, catamaran/monohull split and the destination page.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • list_routesOne-week sailing routes that start and end at a charter base: title, destination, route label, number of days, total nautical miles, start port, overnight stops in order, a short d…No findings

    Why it is in this group

    • The name "list_routes" says "list": a word for reading.
    Description, as the server wrote it
    One-week sailing routes that start and end at a charter base: title, destination, route label, number of days, total nautical miles, start port, overnight stops in order, a short description and the route page. Use get_route for the day-by-day plan.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • list_yacht_modelsYacht models (Lagoon 42, Bali 4.2, Oceanis 46.1…) that have discounted weeks now: boats and weeks, destinations, lowest whole-boat and per-berth price, biggest and median discount,…No findings

    Why it is in this group

    • The name "list_yacht_models" says "list": a word for reading.
    Description, as the server wrote it
    Yacht models (Lagoon 42, Bali 4.2, Oceanis 46.1…) that have discounted weeks now: boats and weeks, destinations, lowest whole-boat and per-berth price, biggest and median discount, cabins, berths, build years and the model page. Filter by boat type, destination and minimum cabins.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • search_dealsDiscounted boats (one row per boat and week) filtered by destination, departure month or date window, boat type, cabins, group size (berths), minimum discount and maximum whole-boa…No findings

    Why it is in this group

    • The name "search_deals" says "search": a word for reading.
    Description, as the server wrote it
    Discounted boats (one row per boat and week) filtered by destination, departure month or date window, boat type, cabins, group size (berths), minimum discount and maximum whole-boat price. Sorted by discount, whole-boat price or price per berth. With any filter beyond destination/month/type/cabins every matching boat is considered, `matching` says how many there are and `next_offset` pages through them. Without a month or date window each boat appears once (its best week). Returns dates, whole-boat price, list price, discount, per-berth price, photo, source, when the price was checked and the boat page.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • search_guidesSearches the site's own answers: FAQ (licences and documents, skipper, payment and deposit, what is included, cancellation, alerts), destination guides and seasons, and one-week ro…Reads private dataNo findings

    Why it is in this group

    • The name "search_guides" says "search": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "search" and "document": it reads documents.
    Description, as the server wrote it
    Searches the site's own answers: FAQ (licences and documents, skipper, payment and deposit, what is included, cancellation, alerts), destination guides and seasons, and one-week routes. Returns the best-matching passages with their page URLs to quote. Ask in the language you pass as lang.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Exfil surface

Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.

70 paths in this server alone from private data, through text someone else wrote, to a way out. Denying 2 private-data tools breaks every one.

Reads private data2
Reads files, mail, messages, databases, secrets, calendars or repositories.
Reads text others write5
Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
Can send data out7
Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
deny to break every path
{
  "permissions": {
    "deny": [
      "mcp__deals__get_route",
      "mcp__deals__search_guides"
    ]
  }
}

Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.

Findings

Matches of fixed checks, with the text they matched.

2 warn
  • The server marks "request_availability" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":false}; The name "request_availability" says "request": a word for a change.

    What this check looks for
  • The server marks "create_deal_alert" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":false}; The name "create_deal_alert" says "create": a word for a change.

    What this check looks for

History

Changes to its tool definitions and to its remote endpoint, newest first.

No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.

Install

Pinned to version 1.4.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http deals https://www.rycrentals.com/mcp
claude mcp add --transport http deals https://www.rycrentals.com/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__deals__list_destinations",
      "mcp__deals__search_deals",
      "mcp__deals__list_routes",
      "mcp__deals__get_destination",
      "mcp__deals__search_guides",
      "mcp__deals__list_yacht_models"
    ],
    "ask": [
      "mcp__deals__get_boat",
      "mcp__deals__prices_by_month",
      "mcp__deals__get_route",
      "mcp__deals__request_availability",
      "mcp__deals__create_deal_alert",
      "mcp__deals__is_good_deal",
      "mcp__deals__trip_cost",
      "mcp__deals__compare_boats",
      "mcp__deals__get_yacht_model"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as deals. Review it before you use it.

Capability tags behind 8 rules
  • mcp__deals__get_boat untrusted-input, outbound
  • mcp__deals__get_route private-data, untrusted-input, outbound
  • mcp__deals__request_availability outbound
  • mcp__deals__is_good_deal untrusted-input, outbound
  • mcp__deals__trip_cost outbound
  • mcp__deals__compare_boats untrusted-input, outbound
  • mcp__deals__search_guides private-data
  • mcp__deals__get_yacht_model untrusted-input, outbound

Pin

Keep the decision: fail CI when the tools change, follow every change, or show a badge.

Pin in CI

Fail a build when the tools you reviewed are not the tools the server serves today.

curl -s "https://anlyon.dev/api/v1/servers/com.rycrentals/deals/verify?hash=3e4eaf9b3d75b34ac4f8bb0f6dac04f12e7ba9b1b57ac1a73bc20ddf467b1b72" | jq -e '.changed == false'

Pinned hash 3e4eaf9b3d75, from Oct 26, 2026, 11:17 UTC.

Watch

Get told when its tools change: a new tool, a new description, a new class.

https://anlyon.dev/servers/com.rycrentals/deals/changes.xml

An Atom feed. Works in any feed reader or Slack's RSS app.

Badge

anlyon.dev badge for com.rycrentals/deals
[![anlyon.dev](https://anlyon.dev/badge/com.rycrentals/deals.svg)](https://anlyon.dev/servers/com.rycrentals/deals)

Source: MCP Registry. Synced Oct 26, 2026, 11:17 UTC.