For agentsMatch 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.
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.