Skip to main content
Glama

Vessels by MMSI

get_vessels
Read-onlyIdempotent

Last known position and particulars of specific vessels by MMSI (Maritime Mobile Service Identity), or by IMO number with a feeder or partner token: the last report heard for each, however long ago, with destination, ETA, draught, and dimensions once its static data has been heard, and which identifiers match no vessel the network has heard. A vessel whose IMO number has a Wikidata item also carries its type, builder, year built, tonnage, registered dimensions, registry, home port, owner, operator, former names, and Wikipedia and Commons links from there, and a documented US vessel its service type, status, official number, registered dimensions, and tonnage from the US Coast Guard. Use search_vessels_by_name first when you only have a name.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
imoNoIMO numbers to look up, counted with mmsi against the same cap; needs a feeder or partner token. Each returns up to 10 vessels that reported it, most recently heard first, and a vessel is found by IMO only once its static data has been heard
mmsiNoMMSIs to look up; anonymous calls may pass 10 identifiers per call, a personal token 50

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
totalYesvessels matched before the limit was applied
vesselsYes
truncatedYestrue when rows were left out: total exceeds the rows returned, so narrow the query or raise limit, or an IMO number is reported by more than the 10 vessels returned for it
attributionYescredit line per source kind in the rows, to show with the data
unknown_imoNorequested IMO numbers matching no vessel the network has heard
unknown_mmsiNorequested MMSIs matching no vessel the network has heard

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / imo / description
      Previous value: -"IMO numbers to look up, counted with mmsi against the same cap; a vessel is found by IMO only once its static data has been heard"New value: +"IMO numbers to look up, counted with mmsi against the same cap; needs a feeder or partner token. Each returns up to 10 vessels that reported it, most recently heard first, and a vessel is found by IMO only once its static data has been heard"
    • changedOutput schema / properties / truncated / description
      Previous value: -"true when total exceeds the rows returned; narrow the query or raise limit"New value: +"true when rows were left out: total exceeds the rows returned, so narrow the query or raise limit, or an IMO number is reported by more than the 10 vessels returned for it"
  2. Changed1 schema field changed
    • changedOutput schema / properties / vessels / items / properties / sources / additionalProperties / properties / url / description
      Previous value: -"the source's own page for this vessel"New value: +"the source's page for this vessel, or its public search when the source keeps no per-vessel pages"
  3. Changed1 schema field changed
    • addedOutput schema / properties / vessels / items / properties / particulars / properties / callsign
      Added value: +{
      +  "description": "call sign as registered; the callsign in the vessel's own properties is the one AIS reports",
      +  "type": "string"
      +}
  4. Changed5 schema fields changed
    • addedOutput schema / properties / vessels / items / properties / particulars
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "particulars as registered, merged from the enrichment sources into one vocabulary (get_vessels)",
      +  "properties": {
      +    "beam": {
      +      "description": "beam as registered, metres",
      +      "type": "number"
      +    },
      +    "builder": {
      +      "description": "shipyard or builder",
      +      "type": "string"
      +    },
      +    "commons_category": {
      +      "description": "the category of the ship's photos on Wikimedia Commons",
      +      "type": "string"
      +    },
      +    "deadweight": {
      +      "description": "deadweight, tonnes",
      +      "type": "integer"
      +    },
      +    "depth": {
      +      "description": "registered depth, metres",
      +      "type": "number"
      +    },
      +    "draught": {
      +      "description": "design draught, metres; AIS reports the draught on the current voyage",
      +      "type": "number"
      +    },
      +    "former_names": {
      +      "description": "names the vessel has carried before, oldest first",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": [
      +        "null",
      +        "array"
      +      ]
      +    },
      +    "gross_tonnage": {
      +      "type": "integer"
      +    },
      +    "home_port": {
      +      "description": "port of registry",
      +      "type": "string"
      +    },
      +    "identification": {
      +      "description": "the flag state's number for the vessel: a documented vessel's official number, else its state registration",
      +      "type": "string"
      +    },
      +    "image": {
      +      "description": "the Commons page of a photo of the ship, which shows its license and credit",
      +      "type": "string"
      +    },
      +    "length": {
      +      "description": "length as registered, metres; may differ from the AIS length",
      +      "type": "number"
      +    },
      +    "net_tonnage": {
      +      "type": "integer"
      +    },
      +    "operator": {
      +      "type": "string"
      +    },
      +    "owner": {
      +      "type": "string"
      +    },
      +    "registered_name": {
      +      "description": "name as documented with the flag state, when it differs from what AIS reports",
      +      "type": "string"
      +    },
      +    "registry": {
      +      "description": "country of registry, in English",
      +      "type": "string"
      +    },
      +    "service": {
      +      "description": "flag-state service type, e.g. Towing Vessel, Passenger (Inspected), Recreational",
      +      "type": "string"
      +    },
      +    "ship_type": {
      +      "description": "kind of ship, e.g. bulk carrier, container ship, ferry",
      +      "type": "string"
      +    },
      +    "status": {
      +      "description": "flag-state status, e.g. Active, Laid Up",
      +      "type": "string"
      +    },
      +    "tonnage_measure": {
      +      "description": "how a tonnage from the flag state was measured: Convention (the international system), Regulatory (the older US system, in register tons), or Simplified (small vessels)",
      +      "type": "string"
      +    },
      +    "wikipedia": {
      +      "description": "the ship's English Wikipedia article",
      +      "type": "string"
      +    },
      +    "yard_number": {
      +      "description": "the builder's hull number",
      +      "type": "string"
      +    },
      +    "year_built": {
      +      "type": "integer"
      +    }
      +  },
      +  "type": [
      +    "null",
      +    "object"
      +  ]
      +}
    • addedOutput schema / properties / vessels / items / properties / provenance
      Added value: +{
      +  "additionalProperties": {
      +    "type": "string"
      +  },
      +  "description": "the source of each particulars field, by the field's name; values are keys of sources (get_vessels)",
      +  "type": "object"
      +}
    • addedOutput schema / properties / vessels / items / properties / sources
      Added value: +{
      +  "additionalProperties": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "credit": {
      +        "description": "display credit for the source",
      +        "type": "string"
      +      },
      +      "license": {
      +        "type": "string"
      +      },
      +      "url": {
      +        "description": "the source's own page for this vessel",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "credit",
      +      "license"
      +    ],
      +    "type": "object"
      +  },
      +  "description": "each contributing source's credit, license, and its own page for this vessel (get_vessels)",
      +  "type": "object"
      +}
    • removedOutput schema / properties / vessels / items / properties / uscg
      Removed value: -{
      -  "additionalProperties": false,
      -  "description": "particulars as documented with the US Coast Guard, for a US-flag vessel whose call sign and name match a vessel in its PSIX database (get_vessels)",
      -  "properties": {
      -    "beam": {
      -      "description": "registered breadth, metres",
      -      "type": "number"
      -    },
      -    "depth": {
      -      "description": "registered depth, metres",
      -      "type": "number"
      -    },
      -    "gross_tonnage": {
      -      "type": "integer"
      -    },
      -    "id": {
      -      "description": "the vessel's ID in PSIX",
      -      "type": "integer"
      -    },
      -    "identification": {
      -      "description": "the official number of a documented vessel, else its state registration",
      -      "type": "string"
      -    },
      -    "length": {
      -      "description": "registered length, metres",
      -      "type": "number"
      -    },
      -    "license": {
      -      "description": "public domain (U.S. government work), no credit required",
      -      "type": "string"
      -    },
      -    "name": {
      -      "description": "name as documented with the Coast Guard",
      -      "type": "string"
      -    },
      -    "net_tonnage": {
      -      "type": "integer"
      -    },
      -    "service": {
      -      "description": "service type, e.g. Towing Vessel, Passenger (Inspected), Commercial Fishing Vessel, Recreational",
      -      "type": "string"
      -    },
      -    "status": {
      -      "description": "Coast Guard status, e.g. Active, Laid Up",
      -      "type": "string"
      -    },
      -    "tonnage_measure": {
      -      "description": "how the tonnage was measured: Convention (the international system), Regulatory (the older US system, in register tons), or Simplified (small vessels)",
      -      "type": "string"
      -    },
      -    "year_built": {
      -      "type": "integer"
      -    }
      -  },
      -  "required": [
      -    "id",
      -    "license",
      -    "name"
      -  ],
      -  "type": [
      -    "null",
      -    "object"
      -  ]
      -}
    • removedOutput schema / properties / vessels / items / properties / wikidata
      Removed value: -{
      -  "additionalProperties": false,
      -  "description": "particulars as registered, from the vessel's Wikidata item found by its IMO number (get_vessels)",
      -  "properties": {
      -    "beam": {
      -      "description": "beam as registered, metres",
      -      "type": "number"
      -    },
      -    "builder": {
      -      "description": "shipyard or builder",
      -      "type": "string"
      -    },
      -    "commons_category": {
      -      "description": "the category of the ship's photos on Wikimedia Commons",
      -      "type": "string"
      -    },
      -    "deadweight": {
      -      "description": "deadweight, tonnes",
      -      "type": "integer"
      -    },
      -    "draught": {
      -      "description": "design draught, metres; AIS reports the draught on the current voyage",
      -      "type": "number"
      -    },
      -    "former_names": {
      -      "description": "names the vessel has carried before, oldest first",
      -      "items": {
      -        "type": "string"
      -      },
      -      "type": [
      -        "null",
      -        "array"
      -      ]
      -    },
      -    "gross_tonnage": {
      -      "type": "integer"
      -    },
      -    "home_port": {
      -      "description": "port of registry",
      -      "type": "string"
      -    },
      -    "id": {
      -      "description": "Wikidata item ID",
      -      "type": "string"
      -    },
      -    "image": {
      -      "description": "the Commons page of a photo of the ship, which shows its license and credit",
      -      "type": "string"
      -    },
      -    "length": {
      -      "description": "length as registered, metres; may differ from the AIS length",
      -      "type": "number"
      -    },
      -    "license": {
      -      "description": "CC0-1.0: public domain, no credit required; the photos image and commons_category lead to carry their own licenses",
      -      "type": "string"
      -    },
      -    "operator": {
      -      "type": "string"
      -    },
      -    "owner": {
      -      "type": "string"
      -    },
      -    "registry": {
      -      "description": "country of registry, in English",
      -      "type": "string"
      -    },
      -    "ship_type": {
      -      "description": "kind of ship, e.g. bulk carrier, container ship, oil tanker, ferry",
      -      "type": "string"
      -    },
      -    "url": {
      -      "description": "the item's page on Wikidata",
      -      "type": "string"
      -    },
      -    "wikipedia": {
      -      "description": "the ship's English Wikipedia article",
      -      "type": "string"
      -    },
      -    "yard_number": {
      -      "description": "the builder's hull number",
      -      "type": "string"
      -    },
      -    "year_built": {
      -      "description": "year the vessel entered service",
      -      "type": "integer"
      -    }
      -  },
      -  "required": [
      -    "id",
      -    "url",
      -    "license"
      -  ],
      -  "type": [
      -    "null",
      -    "object"
      -  ]
      -}
  5. Changed2 schema fields changed
    • addedOutput schema / properties / vessels / items / properties / uscg
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "particulars as documented with the US Coast Guard, for a US-flag vessel whose call sign and name match a vessel in its PSIX database (get_vessels)",
      +  "properties": {
      +    "beam": {
      +      "description": "registered breadth, metres",
      +      "type": "number"
      +    },
      +    "depth": {
      +      "description": "registered depth, metres",
      +      "type": "number"
      +    },
      +    "gross_tonnage": {
      +      "type": "integer"
      +    },
      +    "id": {
      +      "description": "the vessel's ID in PSIX",
      +      "type": "integer"
      +    },
      +    "identification": {
      +      "description": "the official number of a documented vessel, else its state registration",
      +      "type": "string"
      +    },
      +    "length": {
      +      "description": "registered length, metres",
      +      "type": "number"
      +    },
      +    "license": {
      +      "description": "public domain (U.S. government work), no credit required",
      +      "type": "string"
      +    },
      +    "name": {
      +      "description": "name as documented with the Coast Guard",
      +      "type": "string"
      +    },
      +    "net_tonnage": {
      +      "type": "integer"
      +    },
      +    "service": {
      +      "description": "service type, e.g. Towing Vessel, Passenger (Inspected), Commercial Fishing Vessel, Recreational",
      +      "type": "string"
      +    },
      +    "status": {
      +      "description": "Coast Guard status, e.g. Active, Laid Up",
      +      "type": "string"
      +    },
      +    "tonnage_measure": {
      +      "description": "how the tonnage was measured: Convention (the international system), Regulatory (the older US system, in register tons), or Simplified (small vessels)",
      +      "type": "string"
      +    },
      +    "year_built": {
      +      "type": "integer"
      +    }
      +  },
      +  "required": [
      +    "id",
      +    "license",
      +    "name"
      +  ],
      +  "type": [
      +    "null",
      +    "object"
      +  ]
      +}
    • addedOutput schema / properties / vessels / items / properties / wikidata
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "particulars as registered, from the vessel's Wikidata item found by its IMO number (get_vessels)",
      +  "properties": {
      +    "beam": {
      +      "description": "beam as registered, metres",
      +      "type": "number"
      +    },
      +    "builder": {
      +      "description": "shipyard or builder",
      +      "type": "string"
      +    },
      +    "commons_category": {
      +      "description": "the category of the ship's photos on Wikimedia Commons",
      +      "type": "string"
      +    },
      +    "deadweight": {
      +      "description": "deadweight, tonnes",
      +      "type": "integer"
      +    },
      +    "draught": {
      +      "description": "design draught, metres; AIS reports the draught on the current voyage",
      +      "type": "number"
      +    },
      +    "former_names": {
      +      "description": "names the vessel has carried before, oldest first",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": [
      +        "null",
      +        "array"
      +      ]
      +    },
      +    "gross_tonnage": {
      +      "type": "integer"
      +    },
      +    "home_port": {
      +      "description": "port of registry",
      +      "type": "string"
      +    },
      +    "id": {
      +      "description": "Wikidata item ID",
      +      "type": "string"
      +    },
      +    "image": {
      +      "description": "the Commons page of a photo of the ship, which shows its license and credit",
      +      "type": "string"
      +    },
      +    "length": {
      +      "description": "length as registered, metres; may differ from the AIS length",
      +      "type": "number"
      +    },
      +    "license": {
      +      "description": "CC0-1.0: public domain, no credit required; the photos image and commons_category lead to carry their own licenses",
      +      "type": "string"
      +    },
      +    "operator": {
      +      "type": "string"
      +    },
      +    "owner": {
      +      "type": "string"
      +    },
      +    "registry": {
      +      "description": "country of registry, in English",
      +      "type": "string"
      +    },
      +    "ship_type": {
      +      "description": "kind of ship, e.g. bulk carrier, container ship, oil tanker, ferry",
      +      "type": "string"
      +    },
      +    "url": {
      +      "description": "the item's page on Wikidata",
      +      "type": "string"
      +    },
      +    "wikipedia": {
      +      "description": "the ship's English Wikipedia article",
      +      "type": "string"
      +    },
      +    "yard_number": {
      +      "description": "the builder's hull number",
      +      "type": "string"
      +    },
      +    "year_built": {
      +      "description": "year the vessel entered service",
      +      "type": "integer"
      +    }
      +  },
      +  "required": [
      +    "id",
      +    "url",
      +    "license"
      +  ],
      +  "type": [
      +    "null",
      +    "object"
      +  ]
      +}
  6. Changed2 schema fields changed
    • changedOutput schema / properties / unknown_imo / description
      Previous value: -"requested IMO numbers matching no vessel heard in the last 30 minutes"New value: +"requested IMO numbers matching no vessel the network has heard"
    • changedOutput schema / properties / unknown_mmsi / description
      Previous value: -"requested MMSIs not heard in the last 30 minutes"New value: +"requested MMSIs matching no vessel the network has heard"
  7. Changed12 schema fields changed
    • addedInput schema / properties / imo
      Added value: +{
      +  "description": "IMO numbers to look up, counted with mmsi against the same cap; a vessel is found by IMO only once its static data has been heard",
      +  "items": {
      +    "maximum": 4294967295,
      +    "minimum": 0,
      +    "type": "integer"
      +  },
      +  "type": [
      +    "null",
      +    "array"
      +  ]
      +}
    • changedInput schema / properties / mmsi / description
      Previous value: -"MMSIs to look up; anonymous calls may pass 10, a personal token 50"New value: +"MMSIs to look up; anonymous calls may pass 10 identifiers per call, a personal token 50"
    • removedInput schema / required
      Removed value: -[
      -  "mmsi"
      -]
    • addedOutput schema / properties / unknown_imo
      Added value: +{
      +  "description": "requested IMO numbers matching no vessel heard in the last 30 minutes",
      +  "items": {
      +    "maximum": 4294967295,
      +    "minimum": 0,
      +    "type": "integer"
      +  },
      +  "type": [
      +    "null",
      +    "array"
      +  ]
      +}
    • addedOutput schema / properties / vessels / items / properties / beam
      Added value: +{
      +  "description": "beam, metres",
      +  "maximum": 65535,
      +  "minimum": 0,
      +  "type": [
      +    "null",
      +    "integer"
      +  ]
      +}
    • addedOutput schema / properties / vessels / items / properties / callsign
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / vessels / items / properties / destination
      Added value: +{
      +  "description": "destination as typed by the crew: a port name, a UN/LOCODE, or nothing useful",
      +  "type": "string"
      +}
    • addedOutput schema / properties / vessels / items / properties / draught
      Added value: +{
      +  "description": "maximum static draught, metres",
      +  "type": [
      +    "null",
      +    "number"
      +  ]
      +}
    • addedOutput schema / properties / vessels / items / properties / eta
      Added value: +{
      +  "description": "estimated arrival as sent, MM-DD HH:MM UTC or MM-DD; AIS carries no year, so read it as the next occurrence",
      +  "type": "string"
      +}
    • addedOutput schema / properties / vessels / items / properties / flag
      Added value: +{
      +  "description": "ISO 3166-1 alpha-2 code of the flag state, from the MMSI's maritime identification digits",
      +  "type": "string"
      +}
    • addedOutput schema / properties / vessels / items / properties / imo
      Added value: +{
      +  "description": "IMO number, once the vessel's static data has been heard",
      +  "maximum": 4294967295,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedOutput schema / properties / vessels / items / properties / length
      Added value: +{
      +  "description": "overall length, metres",
      +  "maximum": 65535,
      +  "minimum": 0,
      +  "type": [
      +    "null",
      +    "integer"
      +  ]
      +}
  8. First observed

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly/idempotent safety, so the bar is lower, yet the description adds real behavioral context: reports are the last heard however long ago, static-data-dependent fields only appear once heard, and enrichment varies by Wikidata presence or US registry. It also notes the feeder/partner token requirement for IMO lookups. It stops short of pagination or truncation behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The whole description is one sprawling run-on sentence that enumerates Wikidata and US Coast Guard fields in detail even though an output schema already exists. The most actionable routing advice ('use search_vessels_by_name first') is buried at the very end rather than front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the return-field detail is redundant but not harmful; the description still covers identifier types, token prerequisites, unmatched-identifier behavior, and the name-search fallback. An agent has enough to invoke it correctly, though scope relative to the area/track siblings is unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters and their token limits are already documented in structured form. The description gestures at the same constraints (IMO needs a feeder/partner token, per-call identifier caps) without adding format or semantics beyond the schema; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (last known position and particulars of specific vessels) and names the two identifiers it accepts (MMSI, IMO). It also distinguishes itself from the name-based sibling by telling the agent to use search_vessels_by_name when only a name is available.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent to search_vessels_by_name when only a name is known, and implies identifier-based lookup otherwise. It gives no guidance against the other siblings (find_vessels_near, find_vessels_in_area, get_vessel_track), so the alternative coverage is partial rather than complete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.