Get the Ship O'Hoi appOpen
For agents

Match boats from your agent

Our catalog of about 7,000 boats across Scandinavia and the Mediterranean is available to AI agents over the Model Context Protocol (MCP). An agent can match boats to a trip, check an owner's calendar and hand a person a matched offer page. The tools use the same matching as the Ship O'Hoi Matchmaker on this site.

Three tools

search_boats

Boats for a trip, ranked by fit for the party rather than filtered and sorted by popularity.

You send
guests, couples, area (a region, country, island or town), checkin and checkout or a month or season, nights, budget and currency, captain, boat_type, wishes, language
You get
3 to 5 boats, each with its fit ("4 guests · 2 cabins"), a one-line reason, the match signals behind it, and an estimated total from the owner's listed rates. Missing dates become a labelled sample week.
check_availability

The owner's calendar for one boat and a date range, with an estimate from listed rates.

You send
listing_id, checkin, checkout, captain
You get
Whether the calendar is open for every night, the number of nights, the estimate and how it was priced (the listed price for that charter week, or the daily or weekly rate).
build_offer

Turns a trip into a shareable offer page for a person, and keeps it up to date.

You send
the same trip fields as search_boats, plus a session_id. Later calls with the same session_id refine the trip and update the same page.
You get
The offer page link on shipohoi.palisade.run, the boats on it and what is still assumed.

How a boat is matched

Every boat is scored on the signals below. Each card and each tool result lists only the signals that were actually measured for that boat, so an agent can explain the choice to a person in plain words.

  • partyHow well the boat's capacity fits the group. Best at the group size to two more; a boat for twice the group only when asked for room, a catamaran or luxury.
  • cabinsCabins from the listing, or from its description. Two couples do best with one cabin each.
  • budgetThe estimated total against the stated budget, in the same currency.
  • availabilityThe owner's calendar for the exact nights. Boats that are not open are left out.
  • flexibilityWhen the dates are assumed or flexible, how many weeks of that month are open.
  • distanceDistance from the town or sailing area that was asked for.
  • trendThe listed price for that charter week against the weeks around it.
  • browsingWhat this visitor has been looking at on the site, for example two catamarans.
  • reviewsRenter reviews, when the boat has any.

The offer JSON

build_offer returns the offer below (shortened to one boat). The same object renders the page at the url. Prices are estimates from each owner's listed rates; assumed says which parts of the trip were filled in, and revision goes up each time the trip is refined.

{
  "slug": "italy-ca33bd",
  "url": "https://shipohoi.palisade.run/offers/italy-ca33bd",
  "title": "A week in Italy for 4",
  "revision": 2,
  "trip": {
    "area": "Italy", "country": "IT", "guests": 4, "couples": 2,
    "checkin": "2027-07-17", "checkout": "2027-07-24", "nights": 7,
    "flexible": true, "assumed": ["dates"]
  },
  "items": [
    {
      "listing": { "id": 4197, "name": "Dufour 310 Grand Large Expensive Toy",
                   "place": "Palermo", "country": "IT", "url": "/rent/boat/4197" },
      "fit": { "guests": 4, "sleeps": 4, "cabins": 2, "label": "4 guests · 2 cabins" },
      "why": "Sleeps 4 with 2 cabins, so each couple gets its own.",
      "signals": [
        { "key": "party", "label": "Party fit: sleeps 4, you are 4" },
        { "key": "cabins", "label": "Cabins: 2, one for each couple" },
        { "key": "availability", "label": "Availability: the owner's calendar is open 17 to 24 July 2027" },
        { "key": "flexibility", "label": "Flexible dates: open 5 of the 5 July weeks" },
        { "key": "trend", "label": "Price trend: this week is listed 6% below the weeks around it" }
      ],
      "total": { "amount": 1924, "currency": "EUR", "basis": "week_prices" },
      "indicative": true,
      "booking_mode": "instant",
      "checkout_path": "/book/4197?checkin=2027-07-17&checkout=2027-07-24&guests=4&mode=instant"
    }
  ]
}

Plug it in

The server runs over stdio. In Claude Desktop, add it to the MCP servers in the config file:

{
  "mcpServers": {
    "shipohoi": {
      "command": "python3",
      "args": ["/path/to/shipohoi-backend/mcp/server.py"],
      "env": {
        "SHIPOHOI_LISTING_READ_BASE_URL": "https://…",
        "SHIPOHOI_LISTING_READ_TOKEN": "…",
        "SHIPOHOI_CHATBOT_BASE_URL": "https://…",
        "SHIPOHOI_CHATBOT_TOKEN": "…"
      }
    }
  }
}

Then ask it something like “Two couples, a week in Italy in July, what boats would suit us?”. Nothing is booked or charged by these tools: checkout links open the normal booking page for a person to finish.

Browse the boats or open the Matchmaker from the button in the corner to see the same matching on this site.