Compare ocean carrier schedules, transit times and reliability: 60+ carriers, 72,000+ sailings.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Live tropical cyclones (typhoons/hurricanes) currently active on ocean trade lanes — name, basin, category, center position, max wind, pressure and movement, from CMA (NW-Pacific) + NHC (Atlantic/E-Pacific) + JTWC (Indian/Southern Hemisphere) + GDACS (global). Use this to see which storms are at sea right now.
This tool takes no arguments.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Tool list last changed Oct 25, 2026.
Live tropical cyclones (typhoons/hurricanes) currently active on ocean trade lanes — name, basin, category, center position, max wind, pressure and movement, from CMA (NW-Pacific) + NHC (Atlantic/E-Pacific) + JTWC (Indian/Southern Hemisphere) + GDACS (global). Use this to see which storms are at sea right now.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Carrier league table: ocean carriers ranked by overall on-time reliability across all tracked lanes. With Navo Tokens this costs 10 tokens per call; an empty answer is free.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}On-time performance and delay distribution for a specific carrier (by SCAC). With Navo Tokens this costs 10 tokens per call; an empty answer is free.
| Argument | Type | Description |
|---|---|---|
| carrier_code* | string | Carrier SCAC, e.g. MAEU |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"carrier_code"
],
"properties": {
"carrier_code": {
"type": "string",
"description": "Carrier SCAC, e.g. MAEU"
}
},
"additionalProperties": false
}Compare ocean carriers serving an origin→destination port pair, ranked by on-time reliability and transit time. Use this to decide which line to book. With Navo Tokens this costs 10 tokens per call; an empty answer is free.
| Argument | Type | Description |
|---|---|---|
| origin* | string | Origin port UN/LOCODE, e.g. CNSHA |
| destination* | string | Destination port UN/LOCODE, e.g. NLRTM |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"origin",
"destination"
],
"properties": {
"origin": {
"type": "string",
"description": "Origin port UN/LOCODE, e.g. CNSHA"
},
"destination": {
"type": "string",
"description": "Destination port UN/LOCODE, e.g. NLRTM"
}
},
"additionalProperties": false
}Decision query: the best upcoming sailings on a lane, ONE per carrier (next bookable departure), ranked. Filter by date window, max transit days, min on-time reliability, cut-off still open, and direct-vs-transshipment. Use this to answer "what should I book?". etd, eta, cutoff.at and the from/to window are port-local times with no timezone offset (2026-10-01T13:00:00): quote the digits, do not convert; only retrieved_at is UTC. With Navo Tokens this costs 80 tokens for a new port pair and 10 for a repeat of the same pair within 24 hours (shared with the other lane search); an empty answer is free.
| Argument | Type | Description |
|---|---|---|
| to | string | Latest departure date YYYY-MM-DD (default: +60 days) |
| from | string | Earliest departure date YYYY-MM-DD (default: today) |
| sort | string | Ranking (default recommended = reliability blended with transit) |
| cutoff | string | Only sailings whose booking cut-off has not passed. Sailings where no cut-off is held are kept by default; each option carries cutoff_status saying which case it is. |
| origin* | string | Origin port UN/LOCODE or name resolves upstream, e.g. CNSHA |
| destination* | string | Destination port UN/LOCODE, e.g. NLRTM |
| transshipment | boolean |
Published forward sailing schedules on an origin→destination lane: carrier, vessel, voyage, ETD/ETA, cut-offs and routing (leg count, transshipment ports, distance, CO2 per TEU and the port-by-port route_legs where the carrier publishes them; null where they do not), soonest first, from each carrier's own published schedules. Use this to find concrete upcoming departures to book. Every schedule time (published_departure, published_arrival, cut-offs, route_legs times, the from window) is the local time of its own port as the line publishes it, written without a timezone offset (2026-10-01T13:00:00): quote the digits and do not convert them; departure_precision/arrival_precision say minute (a time) or day (a date only); only retrieved_at is UTC and carries an offset; use transit_days for voyage length. The answer also carries carriers: one entry per line with carrier_code, carrier_name and count (its sailings in this answer; the counts add up to count), most first. An entry has error only when that line was asked live for this lane in this request and gave no answer: timeout (no answer in time), failed (error or unreachable), or paused (not asked; it timed out twice in a row here, retried after 6 h). A line that answered it has no sailings carries no error, and a line in error is listed even at count 0. With Navo Tokens this costs 80 tokens for a new port pair and 10 for a repeat of the same pair within 24 hours (shared with the other lane search); an empty answer is free.
| Argument | Type | Description |
|---|---|---|
| from | string | Earliest departure date as YYYY-MM-DD, with no time and no timezone offset. Must be today or later. Sailings are returned from 00:00 of that date, read in each port's local time, onward. Omit for today. |
| origin* | string | Origin port UN/LOCODE, e.g. CNSHA |
| destination* | string | Destination port UN/LOCODE, e.g. NLRTM |
Whether an origin→destination ocean lane currently passes through an active cyclone's forecast gale field (a "storm-exposed" sailing at risk of weather delay). Omit ports to list every exposed lane.
| Argument | Type | Description |
|---|---|---|
| origin | string | Origin port UN/LOCODE, e.g. CNSHA |
| destination | string | Destination port UN/LOCODE, e.g. USLAX |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"origin": {
"type": "string",
"description": "Origin port UN/LOCODE, e.g. CNSHA"
},
"destination": {
"type": "string",
"description": "Destination port UN/LOCODE, e.g. USLAX"
}
},
"additionalProperties": false
}Fused port-congestion signal for a port (UN/LOCODE): effective level (mild/moderate/severe), expected added wait in days (for ETA-band widening), a 0–1 confidence, and the independent readings behind it: measured vessel waiting times, port-call throughput and AIS wait/density. With Navo Tokens this costs 10 tokens per call; an empty answer is free.
| Argument | Type | Description |
|---|---|---|
| port* | string | Port UN/LOCODE, e.g. NLRTM |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"port"
],
"properties": {
"port": {
"type": "string",
"description": "Port UN/LOCODE, e.g. NLRTM"
}
},
"additionalProperties": false
}Watch a lane for schedule alerts (PAID): get emailed when a sailing on it is blanked, a booking cut-off is about to close, or a sailing slips. Also alerts on reliability drops. Returns the created watch. Free with Navo Tokens: a watch is configuration, not data.
| Argument | Type | Description |
|---|---|---|
| origin* | string | Origin port UN/LOCODE, e.g. CNNGB |
| alert_slip | boolean | Alert when a sailing slips vs schedule (default true) |
| alert_blank | boolean | Alert on suspected blank sailings (default true) |
| destination* | string | Destination port UN/LOCODE, e.g. NLRTM |
| alert_cutoff | boolean | Alert when a booking cut-off is closing (default true) |
| carrier_code | string | Optional SCAC to scope the watch to one carrier |
| cutoff_lead_hours | number | Hours before cut-off to alert (default 48) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"origin",
"destination"
],
"properties": {
"origin": {
"type": "string",
"description": "Origin port UN/LOCODE, e.g. CNNGB"
},
"alert_slip": {
"type": "boolean",
"description": "Alert when a sailing slips vs schedule (default true)"
},
"alert_blank": {
"type": "boolean",
"description": "Alert on suspected blank sailings (default true)"
},
"destination": {
"type": "string",
"description": "Destination port UN/LOCODE, e.g. NLRTM"
},
"alert_cutoff": {
"type": "boolean",
"description": "Alert when a booking cut-off is closing (default true)"
},
"carrier_code": {
"type": "string",
"description": "Optional SCAC to scope the watch to one carrier"
},
"cutoff_lead_hours": {
"type": "number",
"description": "Hours before cut-off to alert (default 48)"
}
},
"additionalProperties": false
}| true keeps only sailings that change ship, false only sailings proven direct. Omit it for both: a sailing whose routing we do not hold is returned by neither side, because we will not call a sailing direct without evidence. |
| max_transit_days | number | Maximum transit time in days |
| reliability_floor | number | Minimum 90-day on-time %, 0-100 |
| cutoff_include_unknown | boolean | Default true. false narrows to sailings where a deadline is actually held and still ahead. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"origin",
"destination"
],
"properties": {
"to": {
"type": "string",
"description": "Latest departure date YYYY-MM-DD (default: +60 days)"
},
"from": {
"type": "string",
"description": "Earliest departure date YYYY-MM-DD (default: today)"
},
"sort": {
"enum": [
"recommended",
"reliability",
"fastest",
"soonest"
],
"type": "string",
"description": "Ranking (default recommended = reliability blended with transit)"
},
"cutoff": {
"type": "string",
"const": "open",
"description": "Only sailings whose booking cut-off has not passed. Sailings where no cut-off is held are kept by default; each option carries cutoff_status saying which case it is."
},
"origin": {
"type": "string",
"description": "Origin port UN/LOCODE or name resolves upstream, e.g. CNSHA"
},
"destination": {
"type": "string",
"description": "Destination port UN/LOCODE, e.g. NLRTM"
},
"transshipment": {
"type": "boolean",
"description": "true keeps only sailings that change ship, false only sailings proven direct. Omit it for both: a sailing whose routing we do not hold is returned by neither side, because we will not call a sailing direct without evidence."
},
"max_transit_days": {
"type": "number",
"description": "Maximum transit time in days"
},
"reliability_floor": {
"type": "number",
"description": "Minimum 90-day on-time %, 0-100"
},
"cutoff_include_unknown": {
"type": "boolean",
"description": "Default true. false narrows to sailings where a deadline is actually held and still ahead."
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"origin",
"destination"
],
"properties": {
"from": {
"type": "string",
"description": "Earliest departure date as YYYY-MM-DD, with no time and no timezone offset. Must be today or later. Sailings are returned from 00:00 of that date, read in each port's local time, onward. Omit for today."
},
"origin": {
"type": "string",
"description": "Origin port UN/LOCODE, e.g. CNSHA"
},
"destination": {
"type": "string",
"description": "Destination port UN/LOCODE, e.g. NLRTM"
}
},
"additionalProperties": false
}