Public cruise API & MCP

Sailing research and dated planning quotes for assistants and travel tools.

Search published departures, read sailing details and program guidance, and calculate cruise and dining totals for a party in one cabin. The HTTP endpoints and MCP tools use the same published exports and pricing rules as our readable sailing summaries.

No API key is needed for this public information. Download the OpenAPI 3.1 specification. For travelers, start with the kosher cruise planning guide.

HTTP endpoints

GET endpointPurposeMCP tool
/sailing-data/search.jsonSearch upcoming published sailings; filter dates, destination, port, line, duration and program.search_sailings
/sailing-data/{sailingId}.jsonSailing facts, itinerary and current verified cabin fares for the requested occupancy.get_sailing
/sailing-data/{sailingId}/quote.jsonParty planning quotes using every guest's age at departure.calculate_quote
/sailing-data/policies.jsonPublished program and booking guidance, with source links.get_policies

Base URL: https://freshkosher.cruises. Development: https://fkc.tvlmgnt.com. An individual sailing is also available as /sailing-data/{sailingId}.txt.

Find an Alaska sailing

Open this search.

GET /sailing-data/search.json?destination=Alaska&dateFrom=2027-06-01&dateTo=2027-08-31

Optional filters: q, cruiseLine, destination, departurePort, dateFrom, dateTo, minNights, maxNights, and program. All search words must match. Use limit (default 20, maximum 50) and offset for pagination; nextOffset is null at the end. Catalog results do not verify cabin availability.

Calculate a party quote

Open a two-adult, two-child example. Replace the sailing ID with one returned by search.

GET /sailing-data/wonder-11jan2027/quote.json?ages=40,38,8,4&dining=fresh

ages is required and contains every guest's age at departure, as a comma-separated list of one to four integers. Use dining=fresh (default) or dining=cruise_only. An inclusive fare always retains its included dining; selecting cruise-only never subtracts it. Optional categoryCode selects an exact category returned by sailing details. Each option identifies the lowest verified current cabin fare in that category.

Dining uses the published age bands: 0–5, 6–12 and 13+, or the published all-ages rate. Oceania Fresh Kosher groups require every guest to be 18+. Cabin fares use the exact exported adult/child occupancy; age-specific cruise-line promotions, infant eligibility and minimum booking ages still need revalidation. Unsupported occupancy is never substituted with a different party size.

Interpreting results

  • All amounts are USD. options[].total is the cabin fare plus the selected dining total for the entire party. cruisePerPerson is based on the requested occupancy.
  • Dining gratuity is calculated once on the party subtotal. The dining total follows the website's whole-dollar rounding; dining.roundingAdjustment makes any difference explicit.
  • estimateOnly: true means a planning estimate, not a reservation, hold or guaranteed final booking price. Optional packages, travel extras and charges not expressly included are additional.
  • sourceUpdated, validThrough, retrievedAt and source URLs distinguish source freshness, expiry and retrieval time. Retrieval does not refresh old inventory. Expired source evidence is suppressed.
  • status: available means the requested planning quote can be calculated from current evidence. stale and unavailable do not establish sold-out status.
  • dining_waitlist, fresh_dining_not_offered and dining_rates_unavailable have no combined Fresh Kosher total. An available cabin never guarantees dining space. category_unavailable means the requested category has no verified current fare.
  • HTTP 200 can contain one of these business statuses. HTTP 400 is invalid input; 404 is an unknown or unpublished sailing; 422 is an unsupported party; 429 asks you to retry after Retry-After; 503 means the public source could not be read.

Connect an MCP client

Server URL: https://freshkosher.cruises/mcp. Development: https://fkc.tvlmgnt.com/mcp. Choose Streamable HTTP and no authentication for this public research service.

The four tools above share the HTTP API's schemas and business logic. Results contain both structuredContent and serialized JSON in a text block. Invalid arguments and source failures return isError: true; inspect the business status inside a successful result before quoting prices.

Supported revisions: 2026-07-28 (per-request metadata and server/discover), plus 2025-11-25, 2025-06-18 and 2025-03-26 (legacy initialization). The service uses stateless JSON responses, without subscription streams or session IDs. GET and DELETE return 405.

Legacy initialization example

POST /mcp
Content-Type: application/json
Accept: application/json, text/event-stream

{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"travel-assistant","version":"1.0"}}}

After initialization, send notifications/initialized, then tools/list and tools/call, with the negotiated MCP-Protocol-Version header. No session header is needed.

Current MCP discovery example

POST /mcp
Content-Type: application/json
Accept: application/json, text/event-stream
MCP-Protocol-Version: 2026-07-28
Mcp-Method: server/discover

{"jsonrpc":"2.0","id":1,"method":"server/discover","params":{"_meta":{"io.modelcontextprotocol/protocolVersion":"2026-07-28","io.modelcontextprotocol/clientInfo":{"name":"travel-assistant","version":"1.0"},"io.modelcontextprotocol/clientCapabilities":{}}}}

Current clients send this metadata on every request, with Mcp-Method matching the method. Tool calls also send Mcp-Name matching the tool name. Browser clients must use an allowed site or localhost origin; server clients may omit Origin. These protocol checks do not grant access to any private information.

Scope and request limits

This service reads the published export only. It provides no booking lookup, customer information, provider refresh, cabin hold, payment or reservation action. Do not send names, booking numbers, contact details or credentials.

Each worker instance applies a best-effort limit per client IP: a burst of 60 requests, replenishing at 180 requests per minute. Request bodies are limited to 16 KiB, and upstream reads time out after 10 seconds. Respect 429 responses; cache stable catalog facts locally while observing price expiry. These are application limits, not a global service quota.

General guidance comes from the planning guide. Read the booking terms and each sailing's conditions before making a reservation.