# Cruise Planner

> Plans the trip around a cruise you have already chosen: port days, flights, hotels and transfers.

- name: net.travelersmap/cruise-planner
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 83/100 flags: no-repository
- quality: 85/100 (new)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/net.travelersmap%2Fcruise-planner
- tools: https://api.protogrid.dev/v1/servers/net.travelersmap%2Fcruise-planner/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "cruise-planner": {
      "type": "http",
      "url": "https://api.travelersmap.net/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 100
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-100% +updated-1d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 85/100 (new)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 94 (weight 30)

- pass `tools.descriptions`: every tool has a description
- warn `tools.description_length`: 1 tools have descriptions over 1,024 characters, which crowds the context
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 4 of 4 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 2,340 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump
- pass `tools.hidden_text`: no hidden text in tool names, descriptions, schemas or annotations

### stability: n/a (weight 15)

- n/a `stability.changes`, `stability.rug_pull`, `stability.new_links`: tool history recorded for 0 of the 7 days needed

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 4, about 2,340 tokens to load them all
- tool set hash: 7708217ff65e478acb1e947d36801c0f
- badge: [![protogrid quality](https://protogrid.dev/badge/net.travelersmap/cruise-planner.svg)](https://protogrid.dev/servers/net.travelersmap/cruise-planner)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://api.travelersmap.net/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (4)

- `get_plan_status`: Check a Cruise Planner trip plan that the traveler shared with you. Input the share token or the full share link (…/trip/s/<token>). Returns which stages are filled (cruise, brief, flights, hotels, port days), whether the plan is complete, and links to the shared plan and its PDF. Plans of signed-in members are private: only their existence and the link are returned. ui_language describes the shared-page UI requested by user_language. plan_language is the stored language of the plan content and its PDF.
- `plan_cruise_connections`: Plan how to get to and from a cruise. Given the embarkation and disembarkation ports and dates, returns for each port the gateway airport (IATA code and distance), the recommended arrival date (the day before embarkation) and the same-day arrival rule, the earliest safe flight time on disembarkation day, terminal↔airport transfer options from the Cruise Planner port guide, the cruise terminals and where to stay (city centre vs. near the terminal). date_plan gives the traveler-input embarkation/disembarkation dates, a recommended pre-cruise hotel check-in/check-out, and a separate same-day-arrival alternative. The recommended pre-cruise hotel checks out on embark_date. Does not search live flights or hotel prices. origin (the traveler's home city or airport) is optional and has no default; no country is assumed when it is missing. Fields listed in text_fields are in Korean (text_language "ko").
- `port_day_guide`: Plan one time-boxed day in an unfamiliar port city — typically a cruise port day, or any stop with a fixed arrival and departure time. Given the port and the ship's local arrival and departure times, returns: the usable time ashore (after disembarking, keeping a safe return margin before all-aboard), each nearby destination with its round-trip travel time, the time left there and a good/tight/skip verdict, up to 8 recommended places, transport routes from the pier with durations and fares, the cruise terminals, and verified facts (closures, entry rules, prices) with source links. Use it for questions like "We are in Livorno 07:00–19:00 — can we see Florence?" or "What can we do in Keelung from 13:00 to 18:00?". Covers 200+ cruise ports from the Cruise Planner port guide; for a port that does not match it returns the time window and up to 5 similar guide ports. Fields listed in text_fields are in Korean (text_language "ko"). No ratings, reviews or opening hours.
- `start_cruise_plan`: For a traveler who has already chosen a specific cruise (ship + departure date) and wants the whole trip planned around it: flights, hotels before and after the cruise, and every port day. Checks whether Cruise Planner knows this sailing and returns a link to the planner where the traveler continues. Ship names are matched exactly. A name that does not match returns catalog_ships (exact English names by cruise line) with reason ship_not_in_catalog. Returns found / ambiguous / not_found. When found, sailing shows only nights and embarkation port (UN/LOCODE) so the traveler can confirm the match. When ambiguous, each candidate shows only departure date, nights and embarkation port (UN/LOCODE); nights and embark_port narrow the match. Does not search, compare or price cruises and returns no itinerary, prices, cabins, ship details or sailing identifiers. planner.ui_language reports the actual UI language ("en" or "ko") of the returned link. planner.url carries the selection token and query parameters that keep the chosen cruise selected.
