# Datalastic Vessel Tracking & Maritime Intelligence (remote · mcp.datalastic.com)

Vessel tracking for 750,000+ ships, with ownership, inspections, port records, routes, and more.

- Trust score: 77/100 (medium)
- Change this week: +8
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `mcp.datalastic.com`: 77/100 (this document), [markdown](https://verifymcp.io/servers/com-datalastic-vessel-tracking/mcp.md), [page](https://verifymcp.io/servers/com-datalastic-vessel-tracking/mcp)

## Channel facts

- Endpoint: `https://mcp.datalastic.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 89/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
  - The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 61/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 5872 tokens (~234/item across 25 items; 25 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http com-datalastic-vessel-tracking https://mcp.datalastic.com/mcp
```

### Codex

```toml
[mcp_servers.com-datalastic-vessel-tracking]
url = "https://mcp.datalastic.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-datalastic-vessel-tracking": {
      "type": "remote",
      "url": "https://mcp.datalastic.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-datalastic-vessel-tracking --url https://mcp.datalastic.com/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  com-datalastic-vessel-tracking:
    url: "https://mcp.datalastic.com/mcp"
```

### Other

```json
{
  "mcpServers": {
    "com-datalastic-vessel-tracking": {
      "type": "http",
      "url": "https://mcp.datalastic.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 77, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-01 (score 76, +1)

No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 75, +5)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 70, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-29 (score 70, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 69, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 68)

First indexed and scored.

## MCP tools (25)

### `estimated_vessel_position` (~340 tokens)

Estimate a vessel's current position (SAT-E)

Estimate where a vessel is right now when its last AIS position is stale — Datalastic uses terrestrial AIS only, so a ship in open ocean can be many hours old. The position is calculated from the last known fix, the recognized destination port, and the route-based ETA. It is an ESTIMATE, not an observed position.

Tool selection — use this LAST: prefer get_vessel for a live position (cheapest); prefer get_vessel_pro when the user wants the ETA or recognized destination. Only reach for this tool when BOTH hold: (1) a prior get_vessel/get_vessel_pro lookup shows the last known position is old, and (2) the vessel has a destination and an ETA. It is the heaviest call (it builds a route) and adds nothing when get_vessel already returns a recent position.

Because it is an estimate, OFFER it to the user first rather than calling it silently, and when you present the result make clear it is an estimated position, not a real fix. If estimated_position equals the last known lat/lon, the system could not extrapolate (the position is recent, or the ETA is missing/outdated) — say so instead of implying movement.

Input parameters:

- `imo` (string): Vessel IMO number, exactly 7 digits. Provide exactly one of mmsi, imo, or uuid.
- `mmsi` (string): Vessel MMSI identifier, exactly 9 digits. Provide exactly one of mmsi, imo, or uuid.
- `uuid` (string): Datalastic internal vessel UUID. Provide exactly one of mmsi, imo, or uuid.

Output parameters:

- `atd_UTC` (null|string)
- `atd_epoch` (null|integer)
- `country_iso` (null|string)
- `course` (null|number)
- `current_draught` (null|number)
- `dep_port` (null|string)
- `dep_port_unlocode` (null|string)
- `dep_port_uuid` (null|string)
- `dest_port` (null|string)
- `dest_port_unlocode` (null|string)
- `dest_port_uuid` (null|string)
- `destination` (null|string)
- `eni` (null|string)
- `estimated_position` (null|object)
- `eta_UTC` (null|string)
- `eta_epoch` (null|integer)
- `heading` (null|integer)
- `imo` (null|string)
- `last_position_UTC` (null|string)
- `last_position_epoch` (null|integer)
- `lat` (null|number)
- `lon` (null|number)
- `mmsi` (null|string)
- `name` (null|string)
- `navigation_status` (null|string)
- `speed` (null|number)
- `timezone` (null|string)
- `timezone_offset_sec` (null|integer)
- `type` (null|string)
- `type_specific` (null|string)
- `uuid` (string)

### `find_ports` (~290 tokens)

Search for ports

Search the port registry and return matching ports (identity, country, UN/LOCODE, classification, coordinates, maritime area). Search by name (optionally fuzzy), UN/LOCODE, classification, country, or geographically (lat + lon + radius in nautical miles). Always returns a list, even for a single match. Use this to discover ports or resolve a name to a UN/LOCODE/uuid; for full detail on one known port (including terminals) use get_port.

Input parameters:

- `country_iso` (string): 2-letter ISO country code (e.g. GB).
- `fuzzy` (boolean): Match the name approximately instead of exactly.
- `lat` (null|number): Center latitude for a geographic search (use with lon and radius).
- `lon` (null|number): Center longitude for a geographic search (use with lat and radius).
- `name` (string): Port name to search for (set fuzzy for approximate matching).
- `port_type` (string): Filter by classification. One of: Port, Anchorage, Marina, Offshore Terminal, Shelter, Demolition Yard, Canal, Fishing Harbour.
- `radius` (number): Search radius in nautical miles (max 50); requires lat and lon.
- `unlocode` (string): Port UN/LOCODE: 5 alphanumeric characters (case-insensitive).
- `uuid` (string): Datalastic port UUID.

Output parameters:

- `ports` (null|array)

### `find_vessels` (~460 tokens)

Find vessels (registry search)

Search the vessel registry by any combination of name (optionally fuzzy), type, flag country, dimensions, tonnage, or year built — no MMSI or IMO needed. Returns up to 500 static specification records per page (tonnage, dimensions, year built, home port, callsign, etc.) — this is reference data, NOT live position. Provide at least one search criterion; use the response's next token via the next argument to page. Credits: 1 per vessel found. For a vessel's live position use get_vessel; for vessels currently in an area use get_vessels_in_radius.

Input parameters:

- `breadth_max` (null|number): Maximum breadth (meters).
- `breadth_min` (null|number): Minimum breadth (meters).
- `country_iso` (string): Filter by flag country, 2-letter ISO code (e.g. MT).
- `deadweight_max` (null|integer): Maximum deadweight (tonnes).
- `deadweight_min` (null|integer): Minimum deadweight (tonnes).
- `fuzzy` (boolean): If true, match similar/approximate names; if false (default) the name must match exactly. Only meaningful together with name.
- `gross_tonnage_max` (null|integer): Maximum gross tonnage.
- `gross_tonnage_min` (null|integer): Minimum gross tonnage.
- `include_unknown_type` (null|boolean): Include vessels with no/unknown type. Maps to the API's _empty_.
- `length_max` (null|number): Maximum length (meters).
- `length_min` (null|number): Minimum length (meters).
- `name` (string): Vessel name to search for. Combine with fuzzy for similar-name matching.
- `next` (string): Pagination token from a previous response's next field, to fetch the next page (up to 500 results per page).
- `type` (string): Filter by vessel type (e.g. Cargo, Tanker).
- `type_specific` (string): Filter by vessel subtype (e.g. Bulk Carrier).
- `year_built_max` (null|integer): Latest year built.
- `year_built_min` (null|integer): Earliest year built.

Output parameters:

- `next` (null|string)
- `vessels` (null|array)

### `get_port` (~157 tokens)

Get one port with its terminals

Return detailed information for a single port — identity, country, UN/LOCODE, classification, coordinates, maritime area, and the list of terminals (name, operating company, coordinates, address, website). Look up the port by its Datalastic uuid or its UN/LOCODE (exactly one). To search for a port by name or location, or when you don't have an exact identifier, use find_ports first.

Input parameters:

- `unlocode` (string): Port UN/LOCODE: 5 alphanumeric characters, e.g. ESMPG (case-insensitive). Provide exactly one of uuid or unlocode.
- `uuid` (string): Datalastic port UUID. Provide exactly one of uuid or unlocode.

Output parameters:

- `area_lvl1` (null|string)
- `area_lvl2` (null|string)
- `country_iso` (null|string)
- `country_name` (null|string)
- `lat` (null|number)
- `lon` (null|number)
- `port_name` (null|string)
- `port_type` (null|string)
- `terminals` (null|array)
- `unlocode` (null|string)
- `uuid` (string)

### `get_vessel` (~215 tokens)

Get vessel position

Return the current position and basic information for a single vessel, identified by exactly one of: MMSI (9 digits), IMO (7 digits), or Datalastic UUID. Includes live coordinates, speed, course, heading, navigation status and the raw AIS destination text. This is the default tool for vessel lookups. For the recognized destination or origin port (name + UNLOCODE), actual departure time (ATD), a reliable estimated time of arrival (ETA), or draught, use get_vessel_pro instead.

Input parameters:

- `imo` (string): Vessel IMO number, exactly 7 digits (e.g. 9839179). Provide exactly one of mmsi, imo, or uuid.
- `mmsi` (string): Vessel MMSI identifier, exactly 9 digits (e.g. 477553000). Provide exactly one of mmsi, imo, or uuid.
- `uuid` (string): Datalastic internal vessel UUID. Provide exactly one of mmsi, imo, or uuid.

Output parameters:

- `country_iso` (null|string)
- `course` (null|number)
- `destination` (null|string)
- `eni` (null|string)
- `eta_UTC` (null|string)
- `eta_epoch` (null|integer)
- `heading` (null|integer)
- `imo` (null|string)
- `last_position_UTC` (null|string)
- `last_position_epoch` (null|integer)
- `lat` (null|number)
- `lon` (null|number)
- `mmsi` (null|string)
- `name` (null|string)
- `navigation_status` (null|string)
- `speed` (null|number)
- `type` (null|string)
- `type_specific` (null|string)
- `uuid` (string)

### `get_vessel_history` (~292 tokens)

Get vessel history

Return the historical track (ordered position records) for a single vessel, identified by exactly one of: MMSI (9 digits), IMO (7 digits), or Datalastic UUID. Specify the time range with either 'days' (last N days) or 'from'/'to' dates (YYYY-MM-DD, 'to' at most 30 days after 'from'). Data is available since 2021-08-10; only position changes are stored, so stationary periods may have gaps.

Input parameters:

- `days` (integer): Number of past days from today to include (e.g. 3). Use either days OR from/to, not both.
- `from` (string): Start date YYYY-MM-DD. Data is available since 2021-08-10. Use either from/to OR days, not both.
- `imo` (string): Vessel IMO number, exactly 7 digits. Provide exactly one of mmsi, imo, or uuid.
- `mmsi` (string): Vessel MMSI identifier, exactly 9 digits. Provide exactly one of mmsi, imo, or uuid.
- `to` (string): End date YYYY-MM-DD (at most 30 days after 'from'). Requires 'from'. Defaults to now if omitted.
- `uuid` (string): Datalastic internal vessel UUID. Provide exactly one of mmsi, imo, or uuid.

Output parameters:

- `country_iso` (null|string)
- `eni` (null|string)
- `imo` (null|string)
- `mmsi` (null|string)
- `name` (null|string)
- `positions` (null|array)
- `type` (null|string)
- `type_specific` (null|string)
- `uuid` (string)

### `get_vessel_info` (~217 tokens)

Get vessel specifications

Return static specifications for a single vessel, identified by exactly one of: MMSI (9 digits), IMO (7 digits), or Datalastic UUID. Includes physical dimensions (length, breadth, draught), tonnage and cargo capacity (gross tonnage, deadweight, TEU, liquid gas), speed characteristics, year built, flag country, callsign and home port. This is reference data, NOT live position — use get_vessel for the current position, or find_vessels to search the registry by attributes.

Input parameters:

- `imo` (string): Vessel IMO number, exactly 7 digits (e.g. 9525338). Provide exactly one of mmsi, imo, or uuid.
- `mmsi` (string): Vessel MMSI identifier, exactly 9 digits (e.g. 566093000). Provide exactly one of mmsi, imo, or uuid.
- `uuid` (string): Datalastic internal vessel UUID. Provide exactly one of mmsi, imo, or uuid.

Output parameters:

- `breadth` (null|number)
- `callsign` (null|string)
- `country_iso` (null|string)
- `country_name` (null|string)
- `deadweight` (null|integer)
- `draught_avg` (null|number)
- `draught_max` (null|number)
- `eni` (null|string)
- `gross_tonnage` (null|integer)
- `home_port` (null|string)
- `imo` (null|string)
- `is_navaid` (null|boolean)
- `length` (null|number)
- `liquid_gas` (null|string)
- `mmsi` (null|string)
- `name` (null|string)
- `name_ais` (null|string)
- `speed_avg` (null|number)
- `speed_max` (null|number)
- `teu` (null|string)
- `type` (null|string)
- `type_specific` (null|string)
- `uuid` (string)
- `year_built` (null|string)

### `get_vessel_pro` (~284 tokens)

Get vessel position (enriched)

Richer, heavier variant of get_vessel for a single vessel, identified by exactly one of: MMSI (9 digits), IMO (7 digits), or Datalastic UUID. In addition to the basic position and identity, it returns the recognized destination port and origin port (name + UNLOCODE), the actual time of departure (ATD), a reliable estimated time of arrival (ETA), and current draught. Prefer get_vessel for ordinary position or identity lookups; use get_vessel_pro only when the user asks about the destination or origin port, departure time, arrival time or ETA, or draught, as it is heavier on the backend. If the last known position is stale (the vessel may be out of terrestrial AIS range) and it has a destination and ETA, consider offering estimated_vessel_position to estimate where it is now.

Input parameters:

- `imo` (string): Vessel IMO number, exactly 7 digits (e.g. 9839179). Provide exactly one of mmsi, imo, or uuid.
- `mmsi` (string): Vessel MMSI identifier, exactly 9 digits (e.g. 477553000). Provide exactly one of mmsi, imo, or uuid.
- `uuid` (string): Datalastic internal vessel UUID. Provide exactly one of mmsi, imo, or uuid.

Output parameters:

- `atd_UTC` (null|string)
- `atd_epoch` (null|integer)
- `country_iso` (null|string)
- `course` (null|number)
- `current_draught` (null|number)
- `dep_port` (null|string)
- `dep_port_unlocode` (null|string)
- `dep_port_uuid` (null|string)
- `dest_port` (null|string)
- `dest_port_unlocode` (null|string)
- `dest_port_uuid` (null|string)
- `destination` (null|string)
- `eni` (null|string)
- `eta_UTC` (null|string)
- `eta_epoch` (null|integer)
- `heading` (null|integer)
- `imo` (null|string)
- `last_position_UTC` (null|string)
- `last_position_epoch` (null|integer)
- `lat` (null|number)
- `lon` (null|number)
- `mmsi` (null|string)
- `name` (null|string)
- `navigation_status` (null|string)
- `speed` (null|number)
- `timezone` (null|string)
- `timezone_offset_sec` (null|integer)
- `type` (null|string)
- `type_specific` (null|string)
- `uuid` (string)

### `get_vessels_bulk` (~159 tokens)

Get many vessels at once (bulk position)

Return the current position and basic information for many vessels in a single call — supply any mix of MMSI, IMO and UUID lists, up to 100 identifiers in total. Each result has the same fields as get_vessel. Only successfully found vessels are returned (the response includes how many were found). Use this instead of many get_vessel calls when looking up a known set of vessels; for a single vessel use get_vessel.

Input parameters:

- `imo` (null|array): List of vessel IMO numbers (each exactly 7 digits).
- `mmsi` (null|array): List of vessel MMSI identifiers (each exactly 9 digits).
- `uuid` (null|array): List of Datalastic vessel UUIDs.

Output parameters:

- `total` (null|integer)
- `vessels` (null|array)

### `get_vessels_in_radius` (~507 tokens)

Get vessels in radius (area scan)

Scan a circular area and return all vessels currently within a given radius (nautical miles, greater than 0 and at most 50). Specify the center in exactly one way: lat+lon coordinates, a port (port_unlocode or port_uuid), or a vessel to center on (mmsi/imo/uuid). Optional filters: type, type_specific, exclude, nav_status, and include_unknown_type. Returns up to 500 vessels per page, each with its distance (nautical miles) from the center; if more remain, pass the response's 'next' token via the 'next' argument to page through them. Credits are charged per vessel found.

Input parameters:

- `exclude` (string): Optional: exclude vessels of this type.
- `imo` (string): Center the scan on a vessel, by IMO (exactly 7 digits).
- `include_unknown_type` (null|boolean): Optional: include vessels that have no/unknown type. Defaults to the API default when omitted.
- `lat` (null|number): Center latitude (-90..90). Must be used together with lon. Provide exactly one center: lat+lon, a port, or a vessel identifier.
- `lon` (null|number): Center longitude (-180..180). Must be used together with lat.
- `mmsi` (string): Center the scan on a vessel, by MMSI (exactly 9 digits).
- `nav_status` (null|integer): Optional: filter by AIS navigational status number (e.g. 0 = under way using engine).
- `next` (string): Optional: pagination token from a previous response's 'next' field, to fetch the next page (up to 500 vessels per page).
- `port_unlocode` (string): Center the scan on a port, by UN/LOCODE (e.g. ESVLC).
- `port_uuid` (string): Center the scan on a port, by Datalastic port UUID.
- `radius` (number, required): Required. Scan radius in nautical miles, greater than 0 and at most 50.
- `type` (string): Optional: only include vessels of this type (e.g. Tanker, Cargo).
- `type_specific` (string): Optional: only include vessels of this specific subtype (e.g. LPG Tanker).
- `uuid` (string): Center the scan on a vessel, by Datalastic vessel UUID.

Output parameters:

- `next` (null|string)
- `point` (null|object)
- `total` (null|integer)
- `vessels` (null|array)

### `get_weather` (~333 tokens)

Get weather for a location

Return weather for one location: marine conditions (wave height/direction/period, swell, sea-surface temperature, ocean currents, sea level, …) plus general atmospheric conditions (air temperature, precipitation, wind speed/direction/gusts, humidity, cloud cover, visibility, pressure, weather code, …). Specify the location as exactly one of: coordinates (lat+lon), a vessel (mmsi/imo/uuid — weather near its last known position), or a port (port_unlocode/port_uuid). Use mode to choose current conditions (default), a 7-day daily forecast, a 7-day hourly forecast, or any combination. Each weather field has a matching entry in the corresponding *_units object.

Input parameters:

- `imo` (string): Weather near this vessel by IMO (7 digits).
- `lat` (null|number): Latitude of the location (use together with lon).
- `lon` (null|number): Longitude of the location (use together with lat).
- `mmsi` (string): Weather near this vessel by MMSI (9 digits).
- `mode` (null|array): Forecast mode(s); omit for current. One or more of: current (now), daily (7-day daily forecast), hourly (7-day hourly forecast). Combine for several at once.
- `port_unlocode` (string): Weather near this port by UN/LOCODE (5 alphanumeric, case-insensitive).
- `port_uuid` (string): Weather near this port by Datalastic port UUID.
- `uuid` (string): Weather near this vessel by Datalastic UUID.

Output parameters:

- `location` (null|object)
- `weather` (object)

### `intel_casualties` (~157 tokens)

Vessel casualty & incident history

Retrieve a vessel's recorded maritime incidents — groundings, collisions, fires, machinery breakdowns, detentions and similar events — each with a date, category and a narrative description. Useful for risk and condition assessment. Identify the vessel by imo or name, and optionally bound the period with from / to. Part of the Maritime Reports add-on.

Input parameters:

- `from` (string): Only include incidents on or after this date (YYYY-MM-DD).
- `imo` (string): Vessel IMO number (exactly 7 digits) to look up.
- `name` (string): Vessel name to look up (use when the IMO is unknown).
- `to` (string): Only include incidents on or before this date (YYYY-MM-DD).

Output parameters:

- `records` (null|array)

### `intel_class` (~225 tokens)

Vessel classification & technical particulars

Return a vessel's classification society together with its principal technical particulars: gross and net tonnage, deadweight, length overall, length between perpendiculars, beam, depth, design draft, propulsion and engine maker, plus owner/manager and next survey dates. Identify the vessel by imo or name (set fuzzy for loose name matching), or filter by owner/manager. Part of the Maritime Reports add-on.

Input parameters:

- `beneficial_owner` (string): Filter by beneficial owner company name.
- `beneficial_owner_imo` (string): Filter by beneficial owner company IMO number.
- `fuzzy` (boolean): Match the name loosely instead of exactly.
- `imo` (string): Vessel IMO number (exactly 7 digits) to look up.
- `name` (string): Vessel name to look up (use when the IMO is unknown).
- `technical_manager` (string): Filter by technical manager company name.
- `technical_manager_imo` (string): Filter by technical manager company IMO number.
- `updated_from` (string): Only include records updated on or after this date (YYYY-MM-DD).

Output parameters:

- `records` (null|array)

### `intel_companies` (~168 tokens)

Maritime company profile

Look up a maritime company profile — owners, operators, managers and charterers — returning its full and short name, company type, registration country, operating status, contact details, and parent company. Search by the company's own IMO number (company_imo) or by name. This is a company directory, so company_imo refers to the company (not a vessel); to find the companies behind a specific ship use intel_ownership. Part of the Maritime Reports add-on.

Input parameters:

- `company_imo` (string): Company IMO number (exactly 7 digits). Note this is the company's own IMO, not a vessel IMO.
- `name` (string): Company name to search for.
- `updated_from` (string): Only include records updated on or after this date (YYYY-MM-DD).

Output parameters:

- `records` (null|array)

### `intel_drydock` (~191 tokens)

Vessel drydock & survey schedule

Look up planned and past dry-dock dates, special-survey dates, and IOPP (oil-pollution) certificate dates for a vessel, along with its technical manager's contact details. Target a single vessel by imo or name, or scan a forward window across the fleet with dry_dock_from / dry_dock_to to find vessels due for drydocking in a date range. Part of the Maritime Reports add-on.

Input parameters:

- `dry_dock_from` (string): Only include vessels whose next dry dock falls on or after this date (YYYY-MM-DD).
- `dry_dock_to` (string): Only include vessels whose next dry dock falls on or before this date (YYYY-MM-DD).
- `imo` (string): Vessel IMO number (exactly 7 digits) to look up.
- `name` (string): Vessel name to look up (use when the IMO is unknown).

Output parameters:

- `records` (null|array)

### `intel_engine` (~140 tokens)

Vessel main-engine specifications

Return the main-engine specification for a vessel: engine designation (model), builder and designer, propulsion type, and maximum continuous output (MCO) with its unit and rpm. Identify the vessel by imo or name (set fuzzy for loose name matching). Part of the Maritime Reports add-on.

Input parameters:

- `fuzzy` (boolean): Match the name loosely instead of exactly.
- `imo` (string): Vessel IMO number (exactly 7 digits) to look up.
- `name` (string): Vessel name to look up (use when the IMO is unknown).
- `updated_from` (string): Only include records updated on or after this date (YYYY-MM-DD).

Output parameters:

- `records` (null|array)

### `intel_info` (~119 tokens)

Maritime Reports add-on status

Check whether the Maritime Reports add-on is active on the connected Datalastic account, and what it offers: vessel ownership/management, classification, engine specs, Port State Control inspections, casualties, drydock schedules, sale & purchase records, company profiles, sea routes, estimated out-of-AIS positions, and bulk dataset exports. Use this when the user asks whether they have (or what is included in) the add-on, when an intel_* tool reports the add-on is missing, or after the user says they have purchased or updated their subscription.

Output parameters:

- `addon_active` (boolean)
- `capabilities` (null|array)
- `message` (string)

### `intel_inspections` (~153 tokens)

Vessel Port State Control inspections

Retrieve a vessel's Port State Control (PSC) inspection record: the inspecting authority and port, the inspection type and date, whether the vessel was detained, and the number and description of any deficiencies found. Identify the vessel by imo or name, and optionally bound the period with from / to. Part of the Maritime Reports add-on.

Input parameters:

- `from` (string): Only include inspections on or after this date (YYYY-MM-DD).
- `imo` (string): Vessel IMO number (exactly 7 digits) to look up.
- `name` (string): Vessel name to look up (use when the IMO is unknown).
- `to` (string): Only include inspections on or before this date (YYYY-MM-DD).

Output parameters:

- `records` (null|array)

### `intel_ownership` (~234 tokens)

Vessel ownership & management chain

Reveal the commercial control behind a vessel: beneficial owner, operator, technical manager and commercial manager — each with its company IMO and country — plus the P&I club and flag. Look up one vessel by imo or name, or turn the question around and pass a company name (beneficial_owner, operator, technical_manager or commercial_manager) to list every vessel that company controls. Part of the Maritime Reports add-on.

Input parameters:

- `beneficial_owner` (string): Company name of the beneficial owner; returns every vessel under that owner.
- `commercial_manager` (string): Company name of the commercial manager; returns every vessel under that manager.
- `imo` (string): Vessel IMO number (exactly 7 digits) to look up.
- `name` (string): Vessel name to look up (use when the IMO is unknown).
- `operator` (string): Company name of the operator; returns every vessel under that operator.
- `technical_manager` (string): Company name of the technical manager; returns every vessel under that manager.
- `updated_from` (string): Only include records updated on or after this date (YYYY-MM-DD).

Output parameters:

- `records` (null|array)

### `intel_report_request` (~199 tokens)

Request a bulk intelligence report (async)

Submit an async job to export a FULL bulk dataset for one of the Maritime Reports add-on datasets (dry_dock_dates, casualty, inspections, sales_purchase_demolitions, ownership, class_society, engine, companies). This returns the ENTIRE dataset (all records), not one vessel — for a single vessel use the matching lookup tool instead (e.g. intel_ownership, intel_inspections). Like all reports it is asynchronous: this returns a report_id and a _PENDING_ status without waiting; submit ONCE, then poll report_status with that report_id until _DONE_, which yields a result_url to hand to the user to download. The server never downloads the file itself. Part of the Maritime Reports add-on.

Input parameters:

- `report_type` (string, required): Which bulk dataset report to generate. One of: dry_dock_dates, casualty, inspections, sales_purchase_demolitions, ownership, class_society, engine, companies.

Output parameters:

- `created_at` (null|string)
- `report_id` (string)
- `report_type` (null|string)
- `result_url` (null|string)
- `status` (null|string)
- `updated_at` (null|string)

### `intel_spd` (~165 tokens)

Ship sale & purchase / demolition records

Retrieve ship sale-and-purchase transactions for a vessel: second-hand sales, newbuilding deliveries and demolition (scrap) sales, including seller, buyer, reported price, price per lightweight ton, and demolition destination. Useful for asset valuation and market tracking. Identify the vessel by imo or name, and optionally bound the period with from / to. Part of the Maritime Reports add-on.

Input parameters:

- `from` (string): Only include transactions reported on or after this date (YYYY-MM-DD).
- `imo` (string): Vessel IMO number (exactly 7 digits) to look up.
- `name` (string): Vessel name to look up (use when the IMO is unknown).
- `to` (string): Only include transactions reported on or before this date (YYYY-MM-DD).

Output parameters:

- `records` (null|array)

### `report_list` (~56 tokens)

List async reports

List the caller's recent async report jobs with their statuses (and result_url once _DONE_). Use this to recover a report_id or see which reports have finished — for example if a report was submitted earlier and its id was lost.

Output parameters:

- `reports` (null|array)

### `report_request` (~402 tokens)

Request an async report

Submit an async report job. Reports are generated in the background and can take a while (seconds to many minutes), so this returns a report_id and an initial status (_PENDING_) — it does NOT wait. Submit ONCE, then poll report_status with the returned report_id until _DONE_, which yields a result_url. Do not resubmit while a job is running. When done, give the user the result_url to download; the server never downloads report files itself.

Supported report_type values:
\- request_usage: a FREE log of your account's API usage (endpoint, credits, timestamp); optional from/to (<=31 days), default last month.
\- vessel_list: the full vessel database (no other parameters).
\- port_list: the full ports database (no other parameters).
\- inradius_history: all vessels that passed through an area in a time window; REQUIRES lat, lon, radius (<=50 NM), from and to (<=7 days apart).

Note: vessel_list, port_list and inradius_history consume API credits (vessel_list and inradius_history can be substantial) — it's good to tell the user before submitting. For the add-on bulk datasets (ownership, inspections, etc.) use intel_report_request instead.

Input parameters:

- `from` (string): Start date YYYY-MM-DD. Optional for request_usage; required for inradius_history.
- `lat` (null|number): Center latitude. Required for inradius_history.
- `lon` (null|number): Center longitude. Required for inradius_history.
- `radius` (null|number): Radius in nautical miles, max 50. Required for inradius_history.
- `report_type` (string, required): Which report to generate: request_usage, vessel_list, port_list, or inradius_history.
- `to` (string): End date YYYY-MM-DD. Optional for request_usage (<=31 days after from); required for inradius_history (<=7 days after from).

Output parameters:

- `created_at` (null|string)
- `report_id` (string)
- `report_type` (null|string)
- `result_url` (null|string)
- `status` (null|string)
- `updated_at` (null|string)

### `report_status` (~122 tokens)

Check an async report

Check an async report job by report_id (from report_request or report_list). Returns its status: _PENDING_ or _IN_PROGRESS_ (still generating — wait a bit and check again) or _DONE_. When _DONE_, result_url is a download link for the result ZIP; hand it to the user. Links are time-limited — if one has expired, run report_status again for a fresh link. The server never downloads the file itself.

Input parameters:

- `report_id` (string, required): The report_id returned by report_request (or seen in report_list).

Output parameters:

- `created_at` (null|string)
- `report_id` (string)
- `report_type` (null|string)
- `result_url` (null|string)
- `status` (null|string)
- `updated_at` (null|string)

### `sea_route` (~287 tokens)

Schematic sea route between two points

Calculate a schematic sea route between two points and return it as GeoJSON (a LineString of waypoints) with the total distance in kilometres and nautical miles. Specify the origin and destination each as either coordinates (lat+lon), a port UUID, or a port UN/LOCODE. ⚠️ This is a SCHEMATIC sea route, not a navigable one. It does not account for actual navigation, hazards, traffic separation, drafts or local rules — do NOT use it for real-world sailing. Use it for estimating distance and travel time, visualizing the approximate path/shape, and similar analysis. Part of the Maritime Reports add-on.

Input parameters:

- `lat_from` (null|number): Origin latitude (use together with lon_from).
- `lat_to` (null|number): Destination latitude (use together with lon_to).
- `lon_from` (null|number): Origin longitude (use together with lat_from).
- `lon_to` (null|number): Destination longitude (use together with lat_to).
- `port_unlocode_from` (string): Origin port UN/LOCODE (5 alphanumeric, case-insensitive).
- `port_unlocode_to` (string): Destination port UN/LOCODE (5 alphanumeric, case-insensitive).
- `port_uuid_from` (string): Origin port UUID.
- `port_uuid_to` (string): Destination port UUID.

Output parameters:

- `from` (null|object)
- `route` (null|object)
- `to` (null|object)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/com-datalastic-vessel-tracking/mcp#diagnostics

## Score history

- 2026-08-03: 77
- 2026-08-02: 76
- 2026-08-01: 76
- 2026-07-31: 75
- 2026-07-30: 70
- 2026-07-29: 70
- 2026-07-28: 69
- 2026-07-27: 69
- 2026-07-26: 68

## Links

- Remote endpoint: https://mcp.datalastic.com/mcp
- Repository: https://github.com/datalastic/mcp-server-datalastic
- Changelog RSS feed: https://verifymcp.io/servers/com-datalastic-vessel-tracking/mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-datalastic-vessel-tracking/mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/com-datalastic-vessel-tracking/mcp
