For AI assistants and agents
Planning a cruise yourself? Start here instead. This page is for people connecting an AI assistant to our back-to-back data.
Every back-to-back on this site, as open JSON and as MCP tools. No key, no account, no rate card. Just link back to the page a result names.
Cruise lines cannot search for "two in a row"
Royal Caribbean sells one sailing at a time. Nothing in their search can express "leave Miami, come back, leave again the same day, same cabin", so an assistant asked that question has nowhere to send it. We compute it continuously across 3,623 back-to-backs at 30 home ports, 3,042 of them on one ship the whole way. 234 end in a different port from the one they start in, because a leg is a one-way sailing, and every result says where it ends. That is the gap these endpoints fill.
Whether a fare is actually a good one
A price on its own cannot answer "should I book this". $1,092 for fourteen nights is a
bargain or a rip-off depending entirely on what it has cost before, and
that history is not public anywhere. Royal Caribbean shows today's number; the trackers that
keep history keep it behind a login. We snapshot every sailing we track once a day, so
get_price_history can tell you the low, the high, the average, and where today
sits against them. Currently 46 days of history, recorded since Sep 11, 2026, across 3,758 sailings, including ones that have since departed.
HTTP
Read-only, unauthenticated, rate limited per IP.
GET /api/public/ports: home ports with counts, ships, nights and lead-in faresGET /api/public/back-to-backs: the back-to-backs. Filters you can add to the address:port- home port code, such as MIA
ship- one ship
from,to- the trip leaves (its first cruise) on or after, and on or before, these days; later legs may sail after
to minNights,maxNights- total nights across the legs
sameShip- true keeps trips on one ship the whole way
maxPrice- a fare ceiling per guest (the price for two sharing a cabin). Trips without a published fare for every leg
are left out and counted in
unpricedExcluded guests- how many are going, 1 to 8. A cabin holds at most 4, so 5 to 8 are priced in two cabins, the
bigger first, as the finder prices them: the answer says so in
party, every trip carriesgroupTotal(the whole group) andfromPerGuest(that total divided by the guests), andmaxPriceis per guest of the group. The same sentence on/api/public/search(“for 6 people”) is priced the same way limit- how many results to return
sailingId, itsfromandtoports, its ports of call, and apriceSignal; every result carries a stableidand where it ends (endPort,endsElsewhere).GET /api/public/ships: the fleet, with class, capacity, tonnage and how many sailings not yet departed we currently track for eachGET /api/public/price-history?sailingId=…: what one sailing has cost each day we have looked, plus the verdictGET /api/public/price-drops: sailings furthest below their own average nowGET /api/public/freshness: when each port was last pulledGET /api/public/todays-back-to-back: one two-leg trip a day, picked by a fixed rule on the date (the response states it), not a recommendation;?follow=herogives the trip the home page shows at the topGET /llms.txt: what this site is, for crawlers that read it
curl -s "https://legtolegcruises.com/api/public/back-to-backs?port=MIA&sameShip=true&limit=3"
How fresh is any of this
Inventory is pulled from Royal Caribbean on a schedule, not per request, so a fare here can be
a day or two old. Every response says so: retrievedAt is when we built the
response, dataAsOf is when the oldest inventory behind it was pulled, and
dataAgeHours is the gap. Please check it before presenting a fare as current,
and tell the reader the age when it matters.
Put the price check on your site
Writing about cruises? Paste this where you want the lowest back-to-back total from a home port. It shows
one number, says when prices were checked, links back here, sets no cookies and loads nothing from anyone
else. Change miami to any home port address, such as port-canaveral or
galveston. Our Logbook is also an Atom feed.
<iframe src="https://legtolegcruises.com/embed/price-check?port=miami" width="360" height="230" style="border:0;max-width:100%" loading="lazy" title="Lowest back-to-back cruise total"></iframe>
<p><a href="https://legtolegcruises.com/">Price check by legtolegcruises.com</a></p>
MCP
The same queries as Model Context Protocol tools, over Streamable HTTP at
https://legtolegcruises.com/mcp. CORS is open, so a browser-based client works as well as a desktop one.
Add it to your assistant like this:
{
"mcpServers": {
"legtolegcruises": {
"type": "http",
"url": "https://legtolegcruises.com/mcp"
}
}
}
The 10 tools, in plain words
Every tool only reads. None of them books, changes, stores or sends anything, and each one says
so to your assistant (readOnlyHint is true on all 10). Under each tool is a
question you could ask your assistant that the tool answers.
search_back_to_backs- Finds back-to-back cruises by home port, dates, length, ship and price. A trip can be two legs or many more.Try: “Find a back-to-back from Galveston on one ship in February 2027 under $1,500 per person.”
search_in_plain_language- Takes the trip as a sentence, says which filters it understood, then lists the trips that match.Try: “Two weeks out of Miami on one ship in March.”
list_home_ports- Lists every home port with how many back-to-backs leave from it, the nights and the lowest fare.Try: “Which ports have the most back to back cruises?”
list_ships- Lists the Royal Caribbean fleet with class, size, year built and how many sailings we track for each ship.Try: “Which Royal Caribbean ships carry the most guests?”
get_back_to_back- Gets one trip by its id, with both legs, every port of call and how each fare compares with its own past.Try: “Tell me more about the second trip on that list.”
compare_back_to_backs- Puts two to four trips side by side: nights, fare, fare per night, whether the ship changes, and ports.Try: “Compare the two cheapest trips you found.”
get_price_history- Shows what one sailing has cost each day we checked it, and whether today's fare is low, normal or high for it.Try: “Is the fare on the first leg a good price?”
find_price_drops- Lists sailings whose fare is furthest below their own average right now.Try: “Which sailings from Tampa are cheaper than usual right now?”
explain_back_to_back_cruising- Explains how back-to-back cruising works: turnaround day, keeping your cabin, booking, and casino offers.Try: “Do I have to get off the ship between back-to-back cruises?”
get_data_freshness- Says when prices were last checked for each home port, so a fare is never quoted as newer than it is.Try: “How old are these prices?”
Terms, such as they are
The data is public timetable information, recomputed continuously. Fares are per guest (the Royal Caribbean price for two guests sharing a cabin), cruise fare plus taxes and port fees, and move daily, so treat any figure as a lead-in rather than a quote. Cite legtolegcruises.com and link the page each result names. We are not affiliated with Royal Caribbean International or Club Royale.